# nodes

node_type: n8n-nodes-joggai.joggAiNode
package_name: n8n-nodes-joggai
display_name: JoggAI
description: Interact with the JoggAI API to create and manage AI videos
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: joggai
author_github_url: https://github.com/joggaiteam/
npm_package_name: n8n-nodes-joggai
npm_version: 1.0.10
community_fetched_at: 2026-04-16T09:43:35.971Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "video",
      "options": [
        {
          "name": "Video",
          "value": "video"
        },
        {
          "name": "Avatar",
          "value": "avatar"
        },
        {
          "name": "Voice",
          "value": "voice"
        },
        {
          "name": "Template",
          "value": "template"
        },
        {
          "name": "Product",
          "value": "product"
        },
        {
          "name": "AI Script",
          "value": "aiScript"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Music",
          "value": "music"
        },
        {
          "name": "Visual Style",
          "value": "visualStyle"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create from Avatar",
          "value": "createFromAvatar",
          "action": "Create a video from an avatar and a script",
          "description": "Creates a new video using an avatar and a script"
        },
        {
          "name": "Create from Product",
          "value": "createFromProduct",
          "action": "Create a video from a product",
          "description": "Creates a new video by summarizing a product like a product details page"
        },
        {
          "name": "Create from Template",
          "value": "createFromTemplate",
          "action": "Create a video from a template",
          "description": "Creates a new video from a pre-defined template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a generated video",
          "description": "Retrieves information about a generated video"
        },
        {
          "name": "Generate Preview",
          "value": "generatePreview",
          "action": "Generate a video preview from a product",
          "description": "Generates a video preview from a product without creating the final video"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLibraryAvatars",
      "options": [
        {
          "name": "Get Library Avatars",
          "value": "getLibraryAvatars",
          "action": "Get Library Avatars",
          "description": "Retrieves a list of public available avatars"
        },
        {
          "name": "Get Instant Avatars",
          "value": "getInstantAvatars",
          "action": "Get Instant Avatars",
          "description": "Retrieves a list of your clone avatars"
        },
        {
          "name": "Get Photo Avatars",
          "value": "getPhotoAvatars",
          "action": "Get Photo Avatars",
          "description": "Retrieves a list of your photo avatars"
        },
        {
          "name": "Generate AI Photo",
          "value": "generateAiPhoto",
          "action": "Generate AI Photo",
          "description": "Generates four new AI photos based on a description"
        },
        {
          "name": "Check Photo Generation Status",
          "value": "checkPhotoStatus",
          "action": "Check Photo Generation Status",
          "description": "Checks the generation status of the AI photo"
        },
        {
          "name": "Create Photo Avatar",
          "value": "createPhotoAvatar",
          "action": "Create Photo Avatar",
          "description": "Create a photo avatar based on the specified description"
        },
        {
          "name": "Check Photo Avatar Generation Status",
          "value": "checkPhotoAvatarStatus",
          "action": "Check Photo Avatar Generation Status",
          "description": "Checks the generation status of an avatar task"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "avatar"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLibraryVoices",
      "options": [
        {
          "name": "Get Library Voices",
          "value": "getLibraryVoices",
          "action": "Get a list of Library voices",
          "description": "Retrieves a list of all public available voices"
        },
        {
          "name": "Get My Voices",
          "value": "getMyVoices",
          "action": "Get my voices",
          "description": "Retrieves a list of your custom voices"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMyTemplates",
      "options": [
        {
          "name": "Get Library Templates",
          "value": "getLibraryTemplates",
          "action": "Get template list from library",
          "description": "Retrieves a list of all public templates voices"
        },
        {
          "name": "Get My Templates",
          "value": "getMyTemplates",
          "action": "Get my templates",
          "description": "Retrieves a list of your custom templates"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "template"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadProduct",
      "options": [
        {
          "name": "Upload product",
          "value": "uploadProduct",
          "action": "Upload a product for video creation",
          "description": "Uploads and processes a product to be used for video creation"
        },
        {
          "name": "Update product",
          "value": "updateProduct",
          "action": "Update a product",
          "description": "Update the information of a product"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate an AI script",
          "description": "Generates a script from a product or description using AI"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiScript"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "description": "Uploads a file for use in video generation"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get music",
          "description": "Retrieves a list of available background music"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "music"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get visual styles",
          "description": "Retrieves a list of available visual styles for use in video generation"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "visualStyle"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "webhook:list",
      "options": [
        {
          "name": "List of Webhook Endpoints",
          "value": "webhook:list",
          "action": "List of Webhook Endpoints",
          "description": "Get a list of configured webhook endpoints"
        },
        {
          "name": "Add a Webhook Endpoint",
          "value": "webhook:add",
          "action": "Add a Webhook Endpoint",
          "description": "Add a new webhook endpoint configuration"
        },
        {
          "name": "Update a Webhook Endpoint",
          "value": "webhook:update",
          "action": "Update a Webhook Endpoint",
          "description": "Update an existing webhook endpoint configuration"
        },
        {
          "name": "Delete a Webhook Endpoint",
          "value": "webhook:delete",
          "action": "Delete a Webhook Endpoint",
          "description": "Delete an existing webhook endpoint"
        },
        {
          "name": "List of Available Webhook Events",
          "value": "webhook:events",
          "action": "List of Available Webhook Events",
          "description": "Get a list of available webhook events"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create from Avatar",
      "value": "createFromAvatar",
      "action": "Create a video from an avatar and a script",
      "description": "Creates a new video using an avatar and a script",
      "resource": "video"
    },
    {
      "name": "Create from Product",
      "value": "createFromProduct",
      "action": "Create a video from a product",
      "description": "Creates a new video by summarizing a product like a product details page",
      "resource": "video"
    },
    {
      "name": "Create from Template",
      "value": "createFromTemplate",
      "action": "Create a video from a template",
      "description": "Creates a new video from a pre-defined template",
      "resource": "video"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a generated video",
      "description": "Retrieves information about a generated video",
      "resource": "video"
    },
    {
      "name": "Generate Preview",
      "value": "generatePreview",
      "action": "Generate a video preview from a product",
      "description": "Generates a video preview from a product without creating the final video",
      "resource": "video"
    },
    {
      "name": "Get Library Avatars",
      "value": "getLibraryAvatars",
      "action": "Get Library Avatars",
      "description": "Retrieves a list of public available avatars",
      "resource": "avatar"
    },
    {
      "name": "Get Instant Avatars",
      "value": "getInstantAvatars",
      "action": "Get Instant Avatars",
      "description": "Retrieves a list of your clone avatars",
      "resource": "avatar"
    },
    {
      "name": "Get Photo Avatars",
      "value": "getPhotoAvatars",
      "action": "Get Photo Avatars",
      "description": "Retrieves a list of your photo avatars",
      "resource": "avatar"
    },
    {
      "name": "Generate AI Photo",
      "value": "generateAiPhoto",
      "action": "Generate AI Photo",
      "description": "Generates four new AI photos based on a description",
      "resource": "avatar"
    },
    {
      "name": "Check Photo Generation Status",
      "value": "checkPhotoStatus",
      "action": "Check Photo Generation Status",
      "description": "Checks the generation status of the AI photo",
      "resource": "avatar"
    },
    {
      "name": "Create Photo Avatar",
      "value": "createPhotoAvatar",
      "action": "Create Photo Avatar",
      "description": "Create a photo avatar based on the specified description",
      "resource": "avatar"
    },
    {
      "name": "Check Photo Avatar Generation Status",
      "value": "checkPhotoAvatarStatus",
      "action": "Check Photo Avatar Generation Status",
      "description": "Checks the generation status of an avatar task",
      "resource": "avatar"
    },
    {
      "name": "Get Library Voices",
      "value": "getLibraryVoices",
      "action": "Get a list of Library voices",
      "description": "Retrieves a list of all public available voices",
      "resource": "voice"
    },
    {
      "name": "Get My Voices",
      "value": "getMyVoices",
      "action": "Get my voices",
      "description": "Retrieves a list of your custom voices",
      "resource": "voice"
    },
    {
      "name": "Get Library Templates",
      "value": "getLibraryTemplates",
      "action": "Get template list from library",
      "description": "Retrieves a list of all public templates voices",
      "resource": "template"
    },
    {
      "name": "Get My Templates",
      "value": "getMyTemplates",
      "action": "Get my templates",
      "description": "Retrieves a list of your custom templates",
      "resource": "template"
    },
    {
      "name": "Upload product",
      "value": "uploadProduct",
      "action": "Upload a product for video creation",
      "description": "Uploads and processes a product to be used for video creation",
      "resource": "product"
    },
    {
      "name": "Update product",
      "value": "updateProduct",
      "action": "Update a product",
      "description": "Update the information of a product",
      "resource": "product"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate an AI script",
      "description": "Generates a script from a product or description using AI",
      "resource": "aiScript"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file",
      "description": "Uploads a file for use in video generation",
      "resource": "file"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get music",
      "description": "Retrieves a list of available background music",
      "resource": "music"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get visual styles",
      "description": "Retrieves a list of available visual styles for use in video generation",
      "resource": "visualStyle"
    },
    {
      "name": "List of Webhook Endpoints",
      "value": "webhook:list",
      "action": "List of Webhook Endpoints",
      "description": "Get a list of configured webhook endpoints",
      "resource": "webhook"
    },
    {
      "name": "Add a Webhook Endpoint",
      "value": "webhook:add",
      "action": "Add a Webhook Endpoint",
      "description": "Add a new webhook endpoint configuration",
      "resource": "webhook"
    },
    {
      "name": "Update a Webhook Endpoint",
      "value": "webhook:update",
      "action": "Update a Webhook Endpoint",
      "description": "Update an existing webhook endpoint configuration",
      "resource": "webhook"
    },
    {
      "name": "Delete a Webhook Endpoint",
      "value": "webhook:delete",
      "action": "Delete a Webhook Endpoint",
      "description": "Delete an existing webhook endpoint",
      "resource": "webhook"
    },
    {
      "name": "List of Available Webhook Events",
      "value": "webhook:events",
      "action": "List of Available Webhook Events",
      "description": "Get a list of available webhook events",
      "resource": "webhook"
    }
  ]

npm_readme:
  # n8n-nodes-joggai

  Automate the creation of digital human and marketing videos in your n8n workflows via API.

  ---

  JoggAI transforms the days-long manual process of video creation into an automated task that takes just a few minutes. Whether you're batch-producing personalized marketing videos or automatically converting blog posts into videos, you can do it all effortlessly within n8n.

  ## ✨ Features

  - ✅ **Create Video from Digital Human:** Generate talking head videos using Avatars you've created in your JoggAI dashboard or free ones from the public library.
  - ✅ **Create Video from Template:** Dynamically populate content into preset templates from your JoggAI dashboard to generate videos.
  - ✅ **URL to Video:** Instantly convert any product link into a marketing video.
  - ✅ **Create Digital Human:** Supports various digital human likenesses and voice cloning.
  - ✅ **Check Video Status:** Asynchronously fetch video generation progress, suitable for long rendering tasks.

  ## Prerequisites

  Before using this node, please ensure you have:

  - A running n8n instance.
  - A JoggAI account. If you don't have one, you can [register for free here](https://app.jogg.ai/register).

  ## 🚀 Quick Start

  1.  **Install the Node in n8n:**
      - Go to `Settings > Community Nodes`.
      - Click `Install` and search for `n8n-nodes-jogg-ai`.

  2.  **Configure JoggAI Credentials:**
      - In the `Credentials` section of n8n, click `Add Credential`.
      - Search for and select `JoggAI API`.
      - Go to your [JoggAI API settings page](https://app.jogg.ai/home) to copy your API Key and paste it.
        ![Find your JoggAI API Key](https://res.jogg.ai/upload/sam/2025-07-11/292683374000458e91c7a55c4a3915b5.png)

  ## 💡 Example: Automatically Generate Videos from Google Sheets Content

  This workflow automatically creates an Talking avatar video using data from n8n Form.
  ![N8N Form to JoggAI Workflow Example](https://res.jogg.ai/upload/sam/2025-07-11/3be2a12eb38a468594af1e9dd474a917.png)

  1.  Use the `N8N Form Trigger` node to monitor for new rows.
  2.  Connect the `JoggAI` node.
  3.  In the "Text Script" field of the JoggAI node, use an expression to reference column data from the N8N Form, for example: `{{ $json.script }} welcome to joggAI`.
  4.  Execute the workflow, and the video will be created automatically.

  > Want to use this template directly? [Click here to copy the workflow in one click](https://gist.githubusercontent.com/joggaiteam/ab4065803111fd860584deb3dd245689/raw/ef28aa8d6c85bd2213c7c9a177b0c8c3d9e953b0/joggai-example.json).

  ## 🔗 Resources

  - ⚙️ **Full JoggAI API Documentation:** [docs.jogg.ai](https://docs.jogg.ai/api-reference/QuickStart/GettingStarted)

  ## 💬 Support & Feedback

  - For any bugs or feature requests, please raise them in [GitHub Issues](https://github.com/joggaiteam/n8n-nodes-joggai/issues).
  - If you have questions about usage, feel free to ask and @mention us on the [n8n Community Forum](https://community.n8n.io/).

ai_documentation_summary:
  {"purpose":"Automates the creation of digital human and marketing videos within n8n workflows by interacting with the JoggAI API.","capabilities":["Create talking head videos from digital human avatars (custom or public library)","Generate videos by populating preset templates with dynamic content","Convert product URLs into marketing videos","Create and manage digital human likenesses with voice cloning","Check asynchronous video generation status and progress","Batch-produce personalized marketing videos"],"authentication":"API Key required (configured via n8n Credentials section)","commonUseCases":["Automatically generating personalized marketing videos from form submissions or database records","Converting blog posts or text content into video format","Batch processing product links to create promotional videos","Integrating with Google Sheets or other data sources to trigger video creation"],"limitations":["Requires a separate JoggAI account with an API key","Video generation is asynchronous and requires status checking for long tasks","Depends on external JoggAI API availability and rate limits"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-github","n8n-nodes-google-sheets","n8n-nodes-form"]}


node_type: n8n-nodes-neo.neo
package_name: n8n-nodes-neo
display_name: docunite® NEO
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: patrickpenn
author_github_url: https://github.com/docunite/neo-n8n-node.git
npm_package_name: n8n-nodes-neo
npm_version: 0.1.9
community_fetched_at: 2026-04-16T09:43:35.977Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Manage documents and use AI features with the docunite® NEO API. Supports upload, OCR extraction, classification, enrichment, chat and more. Perfect for automated document processing and intelligent data extraction.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Entity",
          "value": "entity"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getBalance",
      "options": [
        {
          "name": "Get Balance",
          "value": "getBalance",
          "action": "Get balance",
          "description": "Retrieve the credit balance of the current tenant"
        },
        {
          "name": "Get Usage",
          "value": "getUsage",
          "action": "Get usage",
          "description": "Retrieve usage data with daily, monthly, and yearly breakdowns"
        },
        {
          "name": "Get Usage With Process Steps",
          "value": "getUsageWithProcessSteps",
          "action": "Get usage with process steps",
          "description": "Retrieve detailed usage information with process step breakdowns"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload document",
          "description": "Upload and process documents"
        },
        {
          "name": "Get document",
          "value": "get",
          "action": "Get document",
          "description": "Get a document by ID"
        },
        {
          "name": "Get document batch",
          "value": "getBatch",
          "action": "Get batch documents",
          "description": "Get documents by correlation ID f.e. extracted attachments from a document"
        },
        {
          "name": "Get Document PDF Blob",
          "value": "getBlob",
          "action": "Get document blob",
          "description": "Get a PDF version of the document blob"
        },
        {
          "name": "Get Document Original Blob",
          "value": "getBlobOriginal",
          "action": "Get original blob",
          "description": "Get a original version of the document blob"
        },
        {
          "name": "Get Document OCR",
          "value": "getContent",
          "action": "Get OCR content",
          "description": "Get document OCR content"
        },
        {
          "name": "Get Document Markdown",
          "value": "getMarkdown",
          "action": "Get markdown content",
          "description": "Get document markdown content"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete documents",
          "description": "Delete documents"
        },
        {
          "name": "Chat",
          "value": "chat",
          "action": "Chat with documents",
          "description": "Chat with documents using AI"
        },
        {
          "name": "Classify",
          "value": "classify",
          "action": "Classify documents",
          "description": "Classify documents"
        },
        {
          "name": "Enrichment",
          "value": "enrichment",
          "action": "Enrich documents",
          "description": "Initiate document enrichment"
        },
        {
          "name": "Extraction",
          "value": "extraction",
          "action": "OCR documents",
          "description": "Extract OCR from documents"
        },
        {
          "name": "Split",
          "value": "split",
          "action": "Split documents",
          "description": "Split documents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create entity",
          "description": "Create a new entity"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete entity",
          "description": "Delete an entity"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get entity",
          "description": "Get an entity by ID"
        },
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all entities",
          "description": "Get all entities"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update entity",
          "description": "Update an entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "entity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create webhook",
          "description": "Create a new webhook"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete webhook",
          "description": "Delete a webhook"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get webhook",
          "description": "Get a webhook by ID"
        },
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all webhooks",
          "description": "Get all webhooks"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update webhook",
          "description": "Update a webhook"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Balance",
      "value": "getBalance",
      "action": "Get balance",
      "description": "Retrieve the credit balance of the current tenant",
      "resource": "account"
    },
    {
      "name": "Get Usage",
      "value": "getUsage",
      "action": "Get usage",
      "description": "Retrieve usage data with daily, monthly, and yearly breakdowns",
      "resource": "account"
    },
    {
      "name": "Get Usage With Process Steps",
      "value": "getUsageWithProcessSteps",
      "action": "Get usage with process steps",
      "description": "Retrieve detailed usage information with process step breakdowns",
      "resource": "account"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload document",
      "description": "Upload and process documents",
      "resource": "document"
    },
    {
      "name": "Get document",
      "value": "get",
      "action": "Get document",
      "description": "Get a document by ID",
      "resource": "document"
    },
    {
      "name": "Get document batch",
      "value": "getBatch",
      "action": "Get batch documents",
      "description": "Get documents by correlation ID f.e. extracted attachments from a document",
      "resource": "document"
    },
    {
      "name": "Get Document PDF Blob",
      "value": "getBlob",
      "action": "Get document blob",
      "description": "Get a PDF version of the document blob",
      "resource": "document"
    },
    {
      "name": "Get Document Original Blob",
      "value": "getBlobOriginal",
      "action": "Get original blob",
      "description": "Get a original version of the document blob",
      "resource": "document"
    },
    {
      "name": "Get Document OCR",
      "value": "getContent",
      "action": "Get OCR content",
      "description": "Get document OCR content",
      "resource": "document"
    },
    {
      "name": "Get Document Markdown",
      "value": "getMarkdown",
      "action": "Get markdown content",
      "description": "Get document markdown content",
      "resource": "document"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete documents",
      "description": "Delete documents",
      "resource": "document"
    },
    {
      "name": "Chat",
      "value": "chat",
      "action": "Chat with documents",
      "description": "Chat with documents using AI",
      "resource": "document"
    },
    {
      "name": "Classify",
      "value": "classify",
      "action": "Classify documents",
      "description": "Classify documents",
      "resource": "document"
    },
    {
      "name": "Enrichment",
      "value": "enrichment",
      "action": "Enrich documents",
      "description": "Initiate document enrichment",
      "resource": "document"
    },
    {
      "name": "Extraction",
      "value": "extraction",
      "action": "OCR documents",
      "description": "Extract OCR from documents",
      "resource": "document"
    },
    {
      "name": "Split",
      "value": "split",
      "action": "Split documents",
      "description": "Split documents",
      "resource": "document"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create entity",
      "description": "Create a new entity",
      "resource": "entity"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete entity",
      "description": "Delete an entity",
      "resource": "entity"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get entity",
      "description": "Get an entity by ID",
      "resource": "entity"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all entities",
      "description": "Get all entities",
      "resource": "entity"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update entity",
      "description": "Update an entity",
      "resource": "entity"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create webhook",
      "description": "Create a new webhook",
      "resource": "webhook"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete webhook",
      "description": "Delete a webhook",
      "resource": "webhook"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get webhook",
      "description": "Get a webhook by ID",
      "resource": "webhook"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all webhooks",
      "description": "Get all webhooks",
      "resource": "webhook"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update webhook",
      "description": "Update a webhook",
      "resource": "webhook"
    }
  ]

npm_readme:
  # n8n-nodes-neo

  This is an n8n Community Node for integrating the **docunite® NEO API** by [docunite.com](https://docunite.com/neo).

  **docunite® NEO** is an intelligent document management platform with AI-powered classification, extraction, and processing. This node allows you to use all docunite® NEO API features directly in your n8n workflows.

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

  ## 🚀 Installation

  ### For n8n Cloud Users

  **Note**: This community node will be available in n8n Cloud after it has been verified by n8n. We have submitted it for verification and will update this section once approved.

  Once verified, you will be able to install it directly from the n8n node panel.

  ### For Self-hosted n8n Instances

  You can install this node manually on your self-hosted n8n instance (requires n8n v0.187+):

  #### Option 1: Using Community Nodes Feature

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-neo` in the "Enter npm package name" field
  4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using Community Nodes
  5. Install the node

  After installation, the docunite® NEO node will be available in your n8n instance.

  #### Option 2: Manual Installation

  For self-hosted n8n instances, you can also install the node manually:

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

  Restart n8n for the changes to take effect.

  ## 🔑 Credentials

  To use the docunite® NEO node, you need:

  1. **API Key**: Your docunite® NEO API Key
  2. **Base URL**: Defaults to `https://api.docunite.ai`

  ### Setting up Credentials

  1. Go to **Credentials > New**
  2. Search for "docunite® NEO API"
  3. Enter your API Key
  4. Save the credentials

  ## 📚 Nodes

  This package provides two nodes:

  ### 1. **docunite® NEO** (Regular Node)
  The main node for API operations.

  ### 2. **docunite® NEO Trigger** (Trigger Node)
  Automatically starts workflows when docunite® NEO sends events.

  ## 📚 Operations

  The **docunite® NEO** node supports the following resources and operations:

  ### 📊 Account Management

  - **Get Balance**: Retrieve credit balance
  - **Get Usage**: Retrieve usage statistics (daily, monthly, yearly)
  - **Get Usage With Process Steps**: Detailed usage information with process step breakdown

  ### 📄 Document Management

  - **Upload**: Upload and process documents
    - Supports automatic classification
    - Intelligent document splitting
    - Custom prompts
    - Optional original path storage
  - **Get**: Retrieve document by ID
  - **Get Batch**: Retrieve documents by correlation ID (e.g., extracted attachments)
  - **Get Document PDF Blob**: Get a PDF version of the document
  - **Get Document Original Blob**: Get the original version of the document
  - **Get Document OCR**: Get document OCR content
  - **Get Document Markdown**: Get document markdown content
  - **Delete**: Delete single document
  - **Chat**: Chat with a document using AI
    - Supports custom prompts
    - Optional chat history
  - **Classify**: Classify documents
    - Custom prompt support
    - Batch processing with file IDs
  - **Enrichment**: Initiate document enrichment
    - Batch processing with file IDs
  - **Extraction**: Extract OCR from documents
    - Batch processing with file IDs
  - **Split**: Split documents into multiple parts
    - Batch processing with file IDs

  ### 🏢 Entity Management

  - **Get All**: Retrieve all entities
  - **Get**: Retrieve entity by ID
  - **Create**: Create new entity
  - **Update**: Update entity
  - **Delete**: Delete entity

  ### 🔔 Webhook Management

  - **Get All**: Retrieve all webhooks
  - **Get**: Retrieve webhook by ID
  - **Create**: Create new webhook
  - **Update**: Update webhook
  - **Delete**: Delete webhook

  ## 💻 Usage Examples

  ### Example 1: Upload and Classify a Document

  ```json
  {
    "nodes": [
      {
        "parameters": {
          "resource": "document",
          "operation": "upload",
          "entityId": "your-entity-id",
          "binaryPropertyName": "data",
          "classify": true,
          "splitDocuments": false
        },
        "name": "docunite® NEO - Upload Document",
        "type": "n8n-nodes-neo.neo",
        "credentials": {
          "neoApi": "docunite® NEO API Credentials"
        }
      }
    ]
  }
  ```

  ### Example 2: Chat with a Document

  ```json
  {
    "nodes": [
      {
        "parameters": {
          "resource": "document",
          "operation": "chat",
          "documentId": "document-id-here",
          "prompt": "What are the key points in this document?"
        },
        "name": "docunite® NEO - Chat with Document",
        "type": "n8n-nodes-neo.neo",
        "credentials": {
          "neoApi": "docunite® NEO API Credentials"
        }
      }
    ]
  }
  ```

  ### Example 3: Classify Multiple Documents

  ```json
  {
    "nodes": [
      {
        "parameters": {
          "resource": "document",
          "operation": "classify",
          "fileIds": "[\"file-id-1\", \"file-id-2\"]",
          "promptId": "your-classification-prompt-id"
        },
        "name": "docunite® NEO - Classify Documents",
        "type": "n8n-nodes-neo.neo",
        "credentials": {
          "neoApi": "docunite® NEO API Credentials"
        }
      }
    ]
  }
  ```

  ### Example 4: Manage Entities

  ```json
  {
    "nodes": [
      {
        "parameters": {
          "resource": "entity",
          "operation": "create",
          "entityName": "My Project"
        },
        "name": "docunite® NEO - Create Entity",
        "type": "n8n-nodes-neo.neo",
        "credentials": {
          "neoApi": "docunite® NEO API Credentials"
        }
      }
    ]
  }
  ```

  ### Example 5: Extract OCR from Documents

  ```json
  {
    "nodes": [
      {
        "parameters": {
          "resource": "document",
          "operation": "extraction",
          "fileIds": "[\"file-id-1\", \"file-id-2\"]"
        },
        "name": "docunite® NEO - Extract OCR",
        "type": "n8n-nodes-neo.neo",
        "credentials": {
          "neoApi": "docunite® NEO API Credentials"
        }
      }
    ]
  }
  ```

  ## 🔔 docunite® NEO Trigger Node

  The **docunite® NEO Trigger** node automatically starts your workflow when NEO sends events.

  ### Features

  - ✅ Automatic webhook registration when activating workflow
  - ✅ Automatic webhook removal when deactivating workflow
  - ✅ Event type filtering (EXTRACTION, CLASSIFICATION, ENRICHMENT)
  - ✅ Secret validation via x-neo-secret header
  - ✅ Test mode support with "Listen for Test Event"
  - ✅ No generic webhook setup required

  ### Configuration

  1. Add the **docunite® NEO Trigger** node to your workflow
  2. Configure credentials (docunite® NEO API)
  3. Select event types to listen for
  4. Set a webhook name
  5. Choose a secret for authentication
  6. Activate the workflow → Webhook is automatically registered in NEO

  ### Test Mode

  Click "Listen for Test Event" to get a test webhook URL. You must manually register this URL in NEO for testing. Secret validation is automatically disabled in test mode.

  ### Production Mode

  When you activate the workflow, the webhook is automatically registered in NEO with the production URL. The webhook is removed when you deactivate the workflow.

  ## 📖 API Documentation

  The complete API documentation can be found at:
  - Swagger UI: [https://api.docunite.ai/](https://api.docunite.ai/)
  - Swagger JSON: [https://api.docunite.ai/swagger.json](https://api.docunite.ai/swagger.json)

  ## 🛠️ Compatibility

  - Tested with n8n v0.187.0+
  - Node.js 18.17.0+
  - n8n-workflow 1.0.0+

  ## 📝 License

  [MIT](LICENSE.md)

  ## 🤝 Support

  For questions or issues:
  - GitHub Issues: [https://github.com/docunite/neo-n8n-node/issues](https://github.com/docunite/neo-n8n-node/issues)
  - docunite Support: [support@docunite.com](mailto:support@docunite.com)

  ## 🔗 Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [docunite.com Website](https://docunite.com)
  - [docunite® NEO API Documentation](https://api.docunite.ai/)

  ## 🌟 Features

  - ✅ Full docunite® NEO API integration for core resources
  - ✅ **NEO Trigger Node** - Automatic workflow starts on NEO events
  - ✅ Account Management (Balance & Usage tracking)
  - ✅ Document Management (Upload, Processing, Chat, OCR, etc.)
  - ✅ Entity Management (Full CRUD operations)
  - ✅ Webhook Management (Full CRUD operations)
  - ✅ API Key authentication
  - ✅ Comprehensive error handling
  - ✅ Binary Data support (Upload/Download)
  - ✅ AI-powered document processing and chat
  - ✅ Batch operations support
  - ✅ Automatic webhook registration and cleanup

  ## 📦 Version History

  ### 0.1.0 (Initial Release)
  - Full integration of core docunite® NEO API endpoints
  - Account Management (Balance, Usage, Usage with Process Steps)
  - Document Management (Upload, Get, Chat, Classify, Enrichment, Extraction, Split, etc.)
  - Entity Management (CRUD operations)
  - Webhook Management (CRUD operations)

  ## 👨‍💻 Development

  If you want to contribute to development:

  ```bash
  # Clone repository
  git clone https://github.com/docunite/neo-n8n-node.git
  cd neo-n8n-node

  # Install dependencies
  npm install

  # Build
  npm run build

  # Link to local n8n instance
  npm link
  ```

  Start n8n in development mode:

  ```bash
  n8n start
  ```

  ## ⚠️ Important Notes

  - File uploads use Binary Data from n8n workflows
  - Chat operations support streaming responses
  - All JSON parameters can be set dynamically via n8n expressions
  - Document processing operations support batch processing with file IDs

  ---

  Developed with ❤️ for the n8n community by [docunite GmbH](https://docunite.com)

ai_documentation_summary:
  {"purpose":"This n8n node integrates with the docunite® NEO API to automate document processing tasks including upload, OCR extraction, classification, enrichment, and AI-powered document chat.","capabilities":["Document upload with automatic classification and intelligent splitting","OCR extraction and text retrieval from documents","Document classification with custom prompts","Document enrichment and data extraction","AI-powered document chat and Q&A","Entity management (create, update, delete, retrieve)","Webhook management and event triggering","Usage statistics and balance tracking","Batch processing for multiple documents","PDF and original blob retrieval"],"authentication":"API Key required","commonUseCases":["Automated invoice processing and data extraction","Contract review and clause identification","Document indexing and search optimization","Automated customer support document Q&A","Compliance document classification"],"limitations":["Community node status may affect availability in n8n Cloud until verified","Requires n8n v0.187+ for manual installation","Base URL defaults to https://api.docunite.ai"],"relatedNodes":["docunite® NEO Trigger","HTTP Request","Code"]}


node_type: @handelsregister/n8n-nodes-handelsregister-ai.handelsregisterAi
package_name: @handelsregister/n8n-nodes-handelsregister-ai
display_name: handelsregister.ai
description: Interact with handelsregister.ai API to query German business registry data
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: padho
author_github_url: https://github.com/Handelsregister-AI/n8n-nodes-handelsregister-ai.git
npm_package_name: @handelsregister/n8n-nodes-handelsregister-ai
npm_version: 0.2.1
community_fetched_at: 2026-04-16T09:43:35.978Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "fetchOrganization",
      "options": [
        {
          "name": "Fetch Organization",
          "value": "fetchOrganization",
          "action": "Fetch organization details",
          "description": "Get comprehensive information about a German company"
        },
        {
          "name": "Search Organizations",
          "value": "searchOrganizations",
          "action": "Search organizations",
          "description": "Search German companies with filters and pagination"
        },
        {
          "name": "Fetch Document",
          "value": "fetchDocument",
          "action": "Fetch document",
          "description": "Download official PDF documents from the German business registry"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Fetch Organization",
      "value": "fetchOrganization",
      "action": "Fetch organization details",
      "description": "Get comprehensive information about a German company"
    },
    {
      "name": "Search Organizations",
      "value": "searchOrganizations",
      "action": "Search organizations",
      "description": "Search German companies with filters and pagination"
    },
    {
      "name": "Fetch Document",
      "value": "fetchDocument",
      "action": "Fetch document",
      "description": "Download official PDF documents from the German business registry"
    }
  ]

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

  This is an n8n community node that allows you to interact with the [Handelsregister.ai](https://handelsregister.ai) API to query German business registry data.

  ## Installation

  ### Community Node

  1. In n8n, go to **Settings** > **Community Nodes**
  2. Click **Install**
  3. Enter `@handelsregister/n8n-nodes-handelsregister-ai`
  4. Click **Install**

  ### Manual Installation

  ```bash
  npm install @handelsregister/n8n-nodes-handelsregister-ai
  ```

  ## Features

  - **Fetch Organization**: Get comprehensive information about a German company including financial data, related persons, and publications
  - **Search Organizations**: Search German companies with filters and pagination
  - **Fetch Document**: Download official PDF documents from the German business registry

  ## Setup

  1. Get your API key from [Handelsregister.ai](https://handelsregister.ai)
  2. In n8n, add credentials:
     - Go to **Credentials** > **New**
     - Select **Handelsregister.ai API**
     - Enter your API key
     - Save the credentials

  ## Usage

  ### Fetch Organization

  Get comprehensive information about a German company:
  - **Query**: Company name, registration number or search query (e.g., "Konux GmbH aus München")
  - **Features**: Select additional data to include:
    - Financial KPI (1 Credit)
    - Balance Sheet Accounts (3 Credits)
    - Profit and Loss Account (3 Credits)
    - Related Persons (2 Credits)
    - Shareholders (5 Credits)
    - Publications (1 Credit)
    - News (10 Credits)
    - Insolvency Publications (1 Credit)
    - Annual Financial Statements (5 Credits)
    - Website Content (0 Credits - requires AI Mode to be enabled)
  - **AI Mode**: Enable AI-powered search for better results (enabled by default)

  ### Search Organizations

  Search German companies with filters and pagination:
  - **Query**: Search query (minimum 2 characters, e.g., "Konux")
  - **Additional Fields**:
    - Skip: Number of results to skip
    - Limit: Results per page (1-100)
    - Postal Code Filter: Filter by postal code

  ### Fetch Document

  Download official PDF documents from the German business registry:
  - **Company ID**: Unique company entity ID from search results
  - **Document Type**: 
    - Shareholders List
    - Current Extract (AD)
    - Historical Extract (CD)

  ## Example Workflows

  ### Fetch Organization with Features
  ```json
  {
    "nodes": [
      {
        "parameters": {
          "operation": "fetchOrganization",
          "q": "Konux GmbH aus München",
          "features": ["financial_kpi", "related_persons"],
          "ai_search": true
        },
        "name": "handelsregister.ai",
        "type": "@handelsregister/n8n-nodes-handelsregister-ai.handelsregisterAi",
        "typeVersion": 1,
        "position": [250, 300]
      }
    ]
  }
  ```

  ### Search Organizations with Filters
  ```json
  {
    "nodes": [
      {
        "parameters": {
          "operation": "searchOrganizations",
          "q": "tech",
          "additionalFields": {
            "limit": 20,
            "postal_code": "80331"
          }
        },
        "name": "Search Organizations",
        "type": "@handelsregister/n8n-nodes-handelsregister-ai.handelsregisterAi",
        "typeVersion": 1,
        "position": [250, 300]
      }
    ]
  }
  ```

  ### Fetch Document Workflow
  ```json
  {
    "nodes": [
      {
        "parameters": {
          "operation": "fetchDocument",
          "company_id": "{{ $json.entity_id }}",
          "document_type": "shareholders_list"
        },
        "name": "Fetch Document",
        "type": "@handelsregister/n8n-nodes-handelsregister-ai.handelsregisterAi",
        "typeVersion": 1,
        "position": [450, 300]
      }
    ]
  }
  ```

  ### Batch Company Processing
  Use this workflow to process multiple companies from a spreadsheet or database:

  1. **Spreadsheet/Database Node** → Read company names
  2. **handelsregister.ai Node** → Use `searchOrganizations` to find companies
  3. **Filter Node** → Filter results based on criteria
  4. **handelsregister.ai Node** → Use `fetchOrganization` to get detailed data
  5. **Output Node** → Save results to database or file

  ## Development

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Run in development mode
  npm run dev
  ```

  ## License

  [MIT](LICENSE.md)

  ## Support

  For issues and feature requests, please visit the [GitHub repository](https://github.com/Handelsregister-AI/n8n-nodes-handelsregister-ai).

ai_documentation_summary:
  {"purpose":"This n8n community node enables querying German business registry data via the Handelsregister.ai API, supporting organization searches, detailed company information retrieval, and official document downloads.","capabilities":["Fetch comprehensive organization data including financial KPIs, balance sheets, profit/loss, related persons, shareholders, publications, news, and annual financial statements","Search German companies with customizable filters (postal code) and pagination (skip/limit)","Download official PDF documents (Shareholders List, Current Extract, Historical Extract)","AI-powered search for enhanced query results","Batch processing support for multiple companies"],"authentication":"API key required","commonUseCases":["Comprehensive company due diligence and background checks","Automated German business registry data collection","Financial data extraction for business intelligence","Document retrieval for legal or compliance verification"],"limitations":["Website Content feature requires AI Mode to be enabled","Some data features have associated credit costs","Search query minimum length of 2 characters required","Community node (may require manual installation)"],"relatedNodes":["Spreadsheet Node","Database Node","Filter Node","Output Node"]}


node_type: @ionos-cloud/n8n-nodes-ionos-cloud.ionosCloudAiModelHub
package_name: @ionos-cloud/n8n-nodes-ionos-cloud
display_name: IONOS Cloud (AI Model Hub)
description: Interact with IONOS Cloud AI Model Hub API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: rijeshharidas
author_github_url: https://github.com/ionos-cloud/n8n-nodes-ionos-cloud.git
npm_package_name: @ionos-cloud/n8n-nodes-ionos-cloud
npm_version: 1.0.8
community_fetched_at: 2026-04-16T09:43:35.979Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "collection",
      "options": [
        {
          "name": "Collection",
          "value": "collection",
          "description": "Manage document collections in a vector database"
        },
        {
          "name": "Document",
          "value": "document",
          "description": "Manage documents in collections"
        },
        {
          "name": "Model",
          "value": "model",
          "description": "Browse and call foundation models"
        },
        {
          "name": "OpenAI Compatible",
          "value": "openai",
          "description": "Use OpenAI-compatible API endpoints"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a collection",
          "description": "Create a new document collection"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a collection",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/collections/{{$parameter.collectionId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a collection and all its documents"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a collection",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionId}}",
              "method": "GET"
            }
          },
          "description": "Get a collection by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many collections",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "/collections",
              "method": "GET"
            }
          },
          "description": "Retrieve many stored document collections"
        },
        {
          "name": "Query",
          "value": "query",
          "action": "Query a collection",
          "description": "Search a collection for related content"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a collection",
          "description": "Update collection details and metadata"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "collection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add documents to collection",
          "description": "Add documents to a collection"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/collections/{{$parameter.collectionId}}/documents/{{$parameter.documentId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a document from a collection"
        },
        {
          "name": "Delete All",
          "value": "deleteAll",
          "action": "Delete all documents",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/collections/{{$parameter.collectionId}}/documents",
              "method": "DELETE"
            }
          },
          "description": "Delete all documents from a collection"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a document",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionId}}/documents/{{$parameter.documentId}}",
              "method": "GET"
            }
          },
          "description": "Get document details"
        },
        {
          "name": "Get Chunks",
          "value": "getChunks",
          "action": "Get document chunks",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "=/collections/{{$parameter.collectionId}}/documents/{{$parameter.documentId}}/chunks",
              "method": "GET"
            }
          },
          "description": "Get document chunks details"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many documents",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "=/collections/{{$parameter.collectionId}}/documents",
              "method": "GET"
            }
          },
          "description": "Get the list of documents stored in a collection"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a document",
          "description": "Update a document"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many models",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "/models",
              "method": "GET"
            }
          },
          "description": "Retrieve available AI models"
        },
        {
          "name": "Predict",
          "value": "predict",
          "action": "Predict with model",
          "description": "Send a request to an AI model and receive the result"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "model"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "chatCompletion",
      "options": [
        {
          "name": "Chat Completion",
          "value": "chatCompletion",
          "action": "Create chat completion",
          "routing": {
            "request": {
              "url": "=/v1/chat/completions",
              "method": "POST",
              "baseURL": "https://openai.inference.de-txl.ionos.com"
            }
          },
          "description": "Create chat completions using OpenAI-compatible API"
        },
        {
          "name": "Completion",
          "value": "completion",
          "action": "Create completion",
          "routing": {
            "request": {
              "url": "=/v1/completions",
              "method": "POST",
              "baseURL": "https://openai.inference.de-txl.ionos.com"
            }
          },
          "description": "Create text completions using OpenAI-compatible API"
        },
        {
          "name": "Create Embeddings",
          "value": "embeddings",
          "action": "Create embeddings",
          "routing": {
            "request": {
              "url": "=/v1/embeddings",
              "method": "POST",
              "baseURL": "https://openai.inference.de-txl.ionos.com"
            }
          },
          "description": "Create embedding vectors from text"
        },
        {
          "name": "Generate Image",
          "value": "generateImage",
          "action": "Generate image",
          "routing": {
            "request": {
              "url": "=/v1/images/generations",
              "method": "POST",
              "baseURL": "https://openai.inference.de-txl.ionos.com"
            }
          },
          "description": "Generate images from text prompts"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many models",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "data"
                  }
                }
              ]
            },
            "request": {
              "url": "=/v1/models",
              "method": "GET",
              "baseURL": "https://openai.inference.de-txl.ionos.com"
            }
          },
          "description": "List available models in OpenAI-compatible format"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "openai"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a collection",
      "description": "Create a new document collection",
      "resource": "collection"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a collection",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/collections/{{$parameter.collectionId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a collection and all its documents",
      "resource": "collection"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a collection",
      "routing": {
        "request": {
          "url": "=/collections/{{$parameter.collectionId}}",
          "method": "GET"
        }
      },
      "description": "Get a collection by ID",
      "resource": "collection"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many collections",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "/collections",
          "method": "GET"
        }
      },
      "description": "Retrieve many stored document collections",
      "resource": "collection"
    },
    {
      "name": "Query",
      "value": "query",
      "action": "Query a collection",
      "description": "Search a collection for related content",
      "resource": "collection"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a collection",
      "description": "Update collection details and metadata",
      "resource": "collection"
    },
    {
      "name": "Add",
      "value": "add",
      "action": "Add documents to collection",
      "description": "Add documents to a collection",
      "resource": "document"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a document",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/collections/{{$parameter.collectionId}}/documents/{{$parameter.documentId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a document from a collection",
      "resource": "document"
    },
    {
      "name": "Delete All",
      "value": "deleteAll",
      "action": "Delete all documents",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/collections/{{$parameter.collectionId}}/documents",
          "method": "DELETE"
        }
      },
      "description": "Delete all documents from a collection",
      "resource": "document"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a document",
      "routing": {
        "request": {
          "url": "=/collections/{{$parameter.collectionId}}/documents/{{$parameter.documentId}}",
          "method": "GET"
        }
      },
      "description": "Get document details",
      "resource": "document"
    },
    {
      "name": "Get Chunks",
      "value": "getChunks",
      "action": "Get document chunks",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "=/collections/{{$parameter.collectionId}}/documents/{{$parameter.documentId}}/chunks",
          "method": "GET"
        }
      },
      "description": "Get document chunks details",
      "resource": "document"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many documents",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "=/collections/{{$parameter.collectionId}}/documents",
          "method": "GET"
        }
      },
      "description": "Get the list of documents stored in a collection",
      "resource": "document"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a document",
      "description": "Update a document",
      "resource": "document"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many models",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "/models",
          "method": "GET"
        }
      },
      "description": "Retrieve available AI models",
      "resource": "model"
    },
    {
      "name": "Predict",
      "value": "predict",
      "action": "Predict with model",
      "description": "Send a request to an AI model and receive the result",
      "resource": "model"
    },
    {
      "name": "Chat Completion",
      "value": "chatCompletion",
      "action": "Create chat completion",
      "routing": {
        "request": {
          "url": "=/v1/chat/completions",
          "method": "POST",
          "baseURL": "https://openai.inference.de-txl.ionos.com"
        }
      },
      "description": "Create chat completions using OpenAI-compatible API",
      "resource": "openai"
    },
    {
      "name": "Completion",
      "value": "completion",
      "action": "Create completion",
      "routing": {
        "request": {
          "url": "=/v1/completions",
          "method": "POST",
          "baseURL": "https://openai.inference.de-txl.ionos.com"
        }
      },
      "description": "Create text completions using OpenAI-compatible API",
      "resource": "openai"
    },
    {
      "name": "Create Embeddings",
      "value": "embeddings",
      "action": "Create embeddings",
      "routing": {
        "request": {
          "url": "=/v1/embeddings",
          "method": "POST",
          "baseURL": "https://openai.inference.de-txl.ionos.com"
        }
      },
      "description": "Create embedding vectors from text",
      "resource": "openai"
    },
    {
      "name": "Generate Image",
      "value": "generateImage",
      "action": "Generate image",
      "routing": {
        "request": {
          "url": "=/v1/images/generations",
          "method": "POST",
          "baseURL": "https://openai.inference.de-txl.ionos.com"
        }
      },
      "description": "Generate images from text prompts",
      "resource": "openai"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many models",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "data"
              }
            }
          ]
        },
        "request": {
          "url": "=/v1/models",
          "method": "GET",
          "baseURL": "https://openai.inference.de-txl.ionos.com"
        }
      },
      "description": "List available models in OpenAI-compatible format",
      "resource": "openai"
    }
  ]

npm_readme:
  <div align="center">

  <img src="./credentials/ionos.svg" alt="IONOS Cloud" height="80" />&nbsp;&nbsp;&nbsp;&nbsp;<picture><source media="(prefers-color-scheme: dark)" srcset="https://n8n.io/brandguidelines/logo-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://n8n.io/brandguidelines/logo-dark.svg"><img src="https://n8n.io/brandguidelines/logo-dark.svg" alt="n8n" height="80" /></picture>

  # n8n Nodes for IONOS Cloud

  [![npm version](https://img.shields.io/npm/v/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![License](https://img.shields.io/npm/l/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/blob/master/LICENSE)
  [![npm downloads](https://img.shields.io/npm/dm/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![n8n](https://img.shields.io/badge/n8n-community-blue.svg)](https://n8n.io)
  ![Official](https://img.shields.io/badge/IONOS%20Cloud-Official-00BFFF.svg)

  **Official IONOS Cloud n8n community nodes**

  Automate your cloud infrastructure, DNS, CDN, certificates, and AI workflows with [n8n](https://n8n.io/)

  [Installation](#installation) • [Operations](#operations) • [Credentials](#credentials) • [Usage](#usage) • [Examples](#common-patterns) • [Resources](#resources)

  </div>

  ---

  ## Overview

  This is the **official** n8n community node package for IONOS Cloud, developed and maintained by the IONOS Cloud team. [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  The package provides comprehensive integration with key IONOS Cloud services, enabling you to automate infrastructure provisioning, certificate management, DNS operations, CDN distribution, and AI-powered workflows directly from n8n.

  ## Included Nodes

  This package provides seven separate nodes for different IONOS Cloud services:

  1. **IONOS Cloud (Infrastructure)** - Core infrastructure management
  2. **IONOS Cloud (Certificate Manager)** - SSL/TLS certificate management  
  3. **IONOS Cloud (Cloud DNS)** - Domain name system management
  4. **IONOS Cloud (CDN)** - Content delivery network management
  5. **IONOS Cloud (AI Model Hub)** - AI model inference and RAG capabilities
  6. **IONOS Cloud Chat Model** ⚡ - LangChain sub-node for n8n's AI Agent (language model)
  7. **IONOS Cloud Embeddings** ⚡ - LangChain sub-node for n8n's AI Agent (text embeddings)

  ---

  ## Getting Started

  ### Prerequisites

  Before you begin, you will need:

  1. A [IONOS Cloud account](https://www.ionos.com/enterprise-cloud/signup)
  2. A Cloud API Bearer token ([learn how to generate tokens](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager))
  3. n8n installed (version 2.1.5 or higher)

  ### Installation

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

  #### Quick Installation Steps

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

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

  ## Operations

  ### Overview

  | Node | Resources | Operations | Description |
  |------|-----------|------------|-------------|
  | **Infrastructure** | 21 | 153 | Complete infrastructure management (compute, networking, storage, Kubernetes) |
  | **Certificate Manager** | 3 | 15 | SSL/TLS certificate lifecycle management with ACME support |
  | **Cloud DNS** | 7 | 28 | DNS zones, records (15 types), DNSSEC, zone transfers |
  | **CDN** | 2 | 7 | Content delivery with custom routing and geo-restrictions |
  | **AI Model Hub** | 4 | 20 | Foundation model inference, RAG capabilities, and OpenAI-compatible API |
  | **Chat Model** ⚡ | — | supplyData | LangChain chat model sub-node for n8n AI Agent |
  | **Embeddings** ⚡ | — | supplyData | LangChain embeddings sub-node for n8n AI Agent |

  > ⚡ **Sub-nodes**: The Chat Model and Embeddings nodes are LangChain sub-nodes that plug into n8n's built-in AI nodes (AI Agent, AI Chain, Vector Stores, etc.) rather than operating as standalone workflow nodes.

  > **✨ v1.0.2**: Patch release with enhanced subresource support for load balancers, NAT gateways, security groups, and target groups. Added request monitoring capabilities.


  <details>
  <summary><b>Infrastructure - Detailed Operations</b></summary>

  #### Account & Global Resources (12 operations)
  - **Contract** (1): Get Many
  - **Location** (2): Get, Get Many
  - **Image** (2): Get, Get Many  
  - **IP Block** (4): Create, Delete, Get, Get Many
  - **Request** (3): Get, Get All, Get Status

  #### Core Infrastructure (10 operations)
  - **Datacenter** (5): Create, Delete, Get, Get Many, Update
  - **LAN** (5): Create, Delete, Get, Get Many, Update

  #### Compute Resources (41 operations)
  - **Server** (21): Attach/Detach CDROM/Volume, Create, Delete, Get (+ CDROM/CDROMs/Volume/Volumes/Remote Console/Token), Get Many, Reboot, Resume, Start, Stop, Suspend, Update, Upgrade
  - **Volume** (6): Create, Create Snapshot, Delete, Get, Get Many, Update
  - **Snapshot** (4): Delete, Get, Get Many, Update
  - **NIC** (5): Create, Delete, Get, Get Many, Update
  - **Firewall Rule** (5): Create, Delete, Get, Get Many, Update

  #### Kubernetes (11 operations)
  - **Kubernetes Cluster** (6): Create, Delete, Get, Get Many, Get Kubeconfig, Update
  - **Node Pool** (5): Create, Delete, Get, Get Many, Update

  #### Networking (34 operations)
  - **Private Cross-Connect** (5): Create, Delete, Get, Get Many, Update
  - **Load Balancer** (9): Attach/Detach NIC, Create, Delete, Get (+ Balanced NIC/NICs), Get Many, Update
  - **Network Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources
  - **Application Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources with HTTP rules
  - **Target Group** (5): Create, Delete, Get, Get Many, Update
    - Enhanced with location and protocolVersion properties
  - **NAT Gateway** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Rules subresources

  #### Security (5 operations)
  - **Security Group** (5): Create, Delete, Get, Get Many, Update
    - Full support for Rules subresource with comprehensive rule properties

  </details>

  <details>
  <summary><b>Certificate Manager - Detailed Operations</b></summary>

  #### Certificate Resource (5 operations)
  Upload and manage SSL/TLS certificates manually with full chain and private key support.
  - Create, Delete, Get, Get Many, Update

  #### AutoCertificate Resource (5 operations)
  Configure automatic certificate renewal via ACME providers (Let's Encrypt, etc.).
  - Create, Delete, Get, Get Many, Update
  - **Key Algorithms**: RSA (2048/4096), ECDSA (256/384)
  - **Features**: Subject Alternative Names (SANs), common name, provider selection

  #### Provider Resource (5 operations)
  Configure ACME certificate providers with External Account Binding (EAB) support.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>Cloud DNS - Detailed Operations</b></summary>

  #### Zone Resource (5 operations)
  Manage primary DNS zones.
  - Create, Delete, Get, Get Many, Update

  #### Record Resource (5 operations)
  Manage DNS records with 15 supported types: A, AAAA, ALIAS, CAA, CNAME, DS, HTTPS, MX, NS, SMIMEA, SRV, SSHFP, SVCB, TLSA, TXT
  - Create, Delete, Get, Get Many, Update

  #### SecondaryZone Resource (7 operations)
  Secondary zones with AXFR (zone transfer) support.
  - Create, Delete, Get, Get Many, Update, AXFR Get, AXFR Start

  #### ZoneFile Resource (2 operations)
  Import/export zones in BIND format (RFC 1035).
  - Get (export), Update (import)

  #### Quota Resource (1 operation)
  View DNS resource usage and limits.
  - Get

  #### DNSSEC Resource (3 operations)
  Enable and manage DNSSEC for zones.
  - Create (enable), Delete (disable), Get

  #### ReverseRecord Resource (5 operations)
  Manage reverse DNS (PTR) records for IPv4/IPv6.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>CDN - Detailed Operations</b></summary>

  #### Distribution Resource (5 operations)
  Configure CDN distributions with custom routing rules.
  - Create, Delete, Get, Get Many, Update
  - **Features**: Domain routing, SSL/TLS integration, HTTP/HTTPS schemes, geo-restrictions, upstream origins

  #### Ip Resource (2 operations)
  Get CDN edge server IPs for origin whitelisting.
  - Get, Get Many

  </details>

  <details>
  <summary><b>AI Model Hub - Detailed Operations</b></summary>

  #### Model Resource (2 operations)
  Browse and invoke foundation models for AI inference.
  - Get Many (list available models), Predict (run inference)
  - **Features**: RAG support via collection queries, custom model options, streaming responses

  #### Collection Resource (6 operations)
  Manage vector database collections for document storage and retrieval.
  - Create, Delete, Get, Get Many, Update, Query
  - **Features**: Chunking strategies (sentence/fixed/recursive), embedding models, database types (chromadb/pgvector), semantic search

  #### Document Resource (7 operations)
  Manage documents within collections for RAG applications.
  - Add, Delete, Delete All, Get, Get Many, Get Chunks, Update
  - **Features**: Base64 content encoding, metadata management, chunk retrieval, batch operations

  #### OpenAI Compatible Resource (5 operations)
  Use OpenAI-compatible API endpoints for standardized AI interactions.

  **Chat Completion** - Create chat completions with message history
  - Supports system, user, and assistant message roles
  - Parameters: model, messages (required), temperature, top_p, max_tokens, max_completion_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, response_format, tools, tool_choice, user
  - Compatible with OpenAI chat completion API format

  **Completion** - Simple text completion
  - Parameters: model, prompt (required), temperature, top_p, max_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, user
  - Compatible with OpenAI completion API format

  **Create Embeddings** - Generate vector embeddings from text
  - Parameters: model (default: BAAI/bge-large-en-v1.5), input (single text or comma-separated multiple texts)
  - Returns embedding vectors for semantic search and similarity

  **Generate Image** - Text-to-image generation
  - Parameters: model (default: black-forest-labs/FLUX.1-schnell), prompt (required), n, size (1024x1024, 1024x1792, 1792x1024), response_format (b64_json), user
  - Generates images from text descriptions

  **Get Many** - List available models
  - Returns all models in OpenAI-compatible format
  - Shows model capabilities and availability

  **API Endpoint**: `https://openai.inference.de-txl.ionos.com` (path: `/v1/*`)

  **Features**: Full OpenAI API compatibility, drop-in replacement for OpenAI in existing workflows, comprehensive parameter support

  > **Note:** Model dropdowns are populated dynamically from the IONOS API at runtime (`GET /v1/models`). When models are added or retired, the dropdown lists update automatically without requiring a node update.

  </details>

  ---

  ## Credentials

  All nodes in this package share a single credential type: **IONOS Cloud API**

  Authentication uses the [Cloud API Bearer token](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager).

  The same token works across all IONOS Cloud services (Infrastructure, Certificate Manager, DNS, CDN, and AI Model Hub).

  ## Compatibility

  Tested against n8n version 2.1.5+

  ## Usage

  ### Authentication
  1. Create new credentials in n8n and select "IONOS Cloud API"
  2. Provide your API token (generated from IONOS Cloud Console)
  3. The same credential works for all five nodes

  ### Using the Nodes

  #### Infrastructure
  * Add the "IONOS Cloud (Infrastructure)" node to your workflow
  * Select the resource (e.g., Server, Volume, Datacenter)
  * Choose the operation and configure the required fields

  #### Certificate Manager
  * Add the "IONOS Cloud (Certificate Manager)" node to your workflow
  * Select the resource (Certificate, AutoCertificate, or Provider)
  * Configure certificate properties, domains, and ACME providers

  #### DNS
  * Add the "IONOS Cloud (Cloud DNS)" node to your workflow
  * Select the resource (Zone, Record, SecondaryZone, etc.)
  * Configure DNS zones, records, and DNSSEC settings

  #### CDN
  * Add the "IONOS Cloud (CDN)" node to your workflow
  * Select the resource (Distribution or Ip)
  * Configure CDN distributions with routing rules and upstream origins

  #### AI Model Hub
  * Add the "IONOS Cloud (AI Model Hub)" node to your workflow
  * Select the resource (Model, Collection, Document, or OpenAI Compatible)
  * **Model**: AI inference with native IONOS API
  * **Collection**: Vector database management for RAG
  * **Document**: Manage documents in collections
  * **OpenAI Compatible**: Use OpenAI-compatible endpoints (chat, completions, embeddings, images)

  #### AI Agent Integration (Chat Model & Embeddings Sub-Nodes)

  The **IONOS Cloud Chat Model** and **IONOS Cloud Embeddings** are LangChain sub-nodes that integrate with n8n's built-in AI nodes.

  **Chat Model** — Use IONOS AI Model Hub as the LLM brain for the AI Agent:
  1. Add an **AI Agent** node to your workflow
  2. Click **+** on the AI Agent's **Language Model** input
  3. Select **IONOS Cloud Chat Model**
  4. Choose your credential and pick a model from the auto-populated dropdown
  5. The agent now uses IONOS AI Model Hub for all LLM reasoning

  **Embeddings** — Use IONOS AI Model Hub for text embeddings in RAG pipelines:
  1. Add an **In-Memory Vector Store** (or any vector store node)
  2. Click **+** on the vector store's **Embedding** input
  3. Select **IONOS Cloud Embeddings**
  4. Choose your credential and pick an embedding model

  **Example: AI Agent with RAG**
  ```
  Chat Trigger → AI Agent
                   ├── Language Model: IONOS Cloud Chat Model
                   ├── Memory: Window Buffer Memory
                   └── Tool: Vector Store Tool
                                └── In-Memory Vector Store (Load)
                                         └── Embedding: IONOS Cloud Embeddings
  ```

  > **Note:** The model dropdowns are populated dynamically from the IONOS API at runtime. Both sub-nodes reuse the same **IONOS Cloud API** credential as all other nodes in this package.

  ### Common Patterns

  **Automated SSL Certificate Deployment:**
  1. Use Certificate Manager to create an AutoCertificate
  2. Use CDN node to create a Distribution referencing the certificate ID
  3. Automate certificate renewal with n8n scheduling

  **Infrastructure Provisioning:**
  1. Use Infrastructure node to create Datacenter, Server, and Volume
  2. Use DNS node to create Zone and A/AAAA Records pointing to server IPs
  3. Use Certificate Manager to provision SSL certificates for domains

  **DNS Management:**
  1. Use DNS Zone resource to create zones
  2. Use Record resource to manage DNS records (A, CNAME, MX, TXT, etc.)
  3. Use DNSSEC resource to enable DNSSEC signing
  4. Use ReverseRecord for PTR records

  **AI-Powered Applications with RAG:**
  1. Use AI Model Hub Collection resource to create a vector database
  2. Use Document resource to add knowledge base documents
  3. Use Model Predict operation with collection query for context-aware responses
  4. Automate document updates and model inference in workflows

  **OpenAI-Compatible AI Integration:**
  1. Use OpenAI Compatible Chat Completion for conversational AI
  2. Use Create Embeddings for semantic search and similarity
  3. Use Generate Image for text-to-image generation
  4. Drop-in replacement for OpenAI API in existing n8n workflows

  **AI Agent with IONOS Cloud (native n8n AI integration):**
  1. Use IONOS Cloud Chat Model as the language model for n8n's AI Agent
  2. Use IONOS Cloud Embeddings with Vector Stores for RAG pipelines
  3. Combine with Window Buffer Memory for conversational context
  4. Add Vector Store Tool to give the agent access to your knowledge base
  5. See `examples/ionos-ai-agent-workflow.json` for a ready-to-import workflow

  ### Avoiding Rate Limits

  The IONOS AI Model Hub API enforces rate limits (300 requests/min, 5 requests/sec with a burst of 10). When a node receives multiple input items (e.g., from a preceding "Get All" operation), n8n executes the node once per item, which can trigger `429 Too Many Requests` errors.

  To prevent this, configure **batching** in the node's **Settings** tab:

  1. Open the AI Model Hub node and go to the **Settings** tab
  2. Under **Request Options**, click **Add Option** and select **Batching**
  3. Set **Items per Batch** to `2` (or lower)
  4. Set **Batch Interval (ms)** to `1000` (or higher)

  This ensures n8n processes only a few items at a time with a delay between batches, staying within the API rate limits.

  > **Tip:** If your workflow only needs a single API call (e.g., one Chat Completion), use a **Limit** node before the AI Model Hub node to reduce the input to 1 item.

  ## API Endpoints

  Each node connects to:

  - **Infrastructure**: `https://api.ionos.com/cloudapi/v6/`
  - **Certificate Manager**: `https://certificate-manager.de-fra.ionos.com`
  - **Cloud DNS**: `https://dns.de-fra.ionos.com`
  - **CDN**: `https://cdn.de-fra.ionos.com`
  - **AI Model Hub (Inference API)**: `https://inference.de-txl.ionos.com`
  - **AI Model Hub (OpenAI Compatible API)**: `https://openai.inference.de-txl.ionos.com`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [IONOS Cloud Documentation](https://docs.ionos.com/cloud)
  * [Infrastructure API Documentation](https://api.ionos.com/docs/cloud/v6/)
  * [Certificate Manager API Documentation](https://api.ionos.com/docs/certmanager/v2/)
  * [Cloud DNS API Documentation](https://api.ionos.com/docs/dns/v1/)
  * [CDN API Documentation](https://api.ionos.com/docs/cdn/v1/)
  * [AI Model Hub API Documentation](https://api.ionos.com/docs/inference-modelhub/v1/)
  * [AI Model Hub OpenAI-compatible API Documentation](https://api.ionos.com/docs/inference-openai/v1/)

  ## Contributing

  We welcome contributions! If you find a bug or have a feature request:

  1. Check the [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues) to see if it's already been reported
  2. Open a new issue with a clear description and reproduction steps
  3. For feature requests, explain the use case and expected behavior

  ### Development

  To contribute code:

  1. Fork the repository
  2. Create a feature branch (`git checkout -b feature/amazing-feature`)
  3. Make your changes and test thoroughly
  4. Commit your changes (`git commit -m 'Add amazing feature'`)
  5. Push to the branch (`git push origin feature/amazing-feature`)
  6. Open a Pull Request

  ## License

  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

  ## Support

  - 📖 [Documentation](https://docs.ionos.com/cloud)
  - 💬 [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues)
  - 🌐 [IONOS Cloud](https://www.ionos.com/cloud)
  - 📧 [Support](https://docs.ionos.com/cloud/support/general-information/contact-information)

  ---

  <div align="center">

  Made with ❤️ by the IONOS Cloud team

  </div>

ai_documentation_summary:
  {"purpose":"The IONOS Cloud (AI Model Hub) node enables interaction with the IONOS Cloud AI Model Hub API for foundation model inference, RAG capabilities, and OpenAI-compatible API operations.","capabilities":["Foundation model inference","RAG (Retrieval-Augmented Generation) capabilities","OpenAI-compatible API interface","AI model management","Text generation and completion","Model parameter configuration"],"authentication":"API key required (Cloud API Bearer token)","commonUseCases":["Integrating IONOS AI models into n8n workflows","Building RAG-based applications with IONOS models","Automating AI-powered content generation","Connecting n8n AI agents to IONOS model inference"],"limitations":["Requires IONOS Cloud account and API Bearer token setup","Requires n8n version 2.1.5 or higher","Limited to IONOS Cloud AI Model Hub services only"],"relatedNodes":["IONOS Cloud (Infrastructure)","IONOS Cloud (Certificate Manager)","IONOS Cloud (Cloud DNS)","IONOS Cloud (CDN)","IONOS Cloud Chat Model"]}


node_type: @klardaten/n8n-nodes-datevconnect.masterData
package_name: @klardaten/n8n-nodes-datevconnect
display_name: Klardaten DATEVconnect: Master Data
description: Interact with master data resources
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: johannespfeiffer
author_github_url: https://github.com/Klardaten/n8n-nodes-datevconnect.git
npm_package_name: @klardaten/n8n-nodes-datevconnect
npm_version: 1.0.12
community_fetched_at: 2026-04-16T09:43:35.980Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "client",
      "options": [
        {
          "name": "Addressee",
          "value": "addressee"
        },
        {
          "name": "Area of Responsibility",
          "value": "areaOfResponsibility"
        },
        {
          "name": "Bank",
          "value": "bank"
        },
        {
          "name": "Client",
          "value": "client"
        },
        {
          "name": "Client Category Type",
          "value": "clientCategoryType"
        },
        {
          "name": "Client Group Type",
          "value": "clientGroupType"
        },
        {
          "name": "Corporate Structure",
          "value": "corporateStructure"
        },
        {
          "name": "Country Code",
          "value": "countryCode"
        },
        {
          "name": "Employee",
          "value": "employee"
        },
        {
          "name": "Legal Form",
          "value": "legalForm"
        },
        {
          "name": "Relationship",
          "value": "relationship"
        },
        {
          "name": "Tax Authority",
          "value": "taxAuthority"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a client",
          "description": "Create a new client"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a client",
          "description": "Retrieve a specific client"
        },
        {
          "name": "Get Categories",
          "value": "getClientCategories",
          "action": "Get client categories",
          "description": "Retrieve client categories"
        },
        {
          "name": "Get Deletion Log",
          "value": "getDeletionLog",
          "action": "Get client deletion log",
          "description": "Retrieve deleted clients"
        },
        {
          "name": "Get Groups",
          "value": "getClientGroups",
          "action": "Get client groups",
          "description": "Retrieve client groups"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many clients",
          "description": "Retrieve a list of clients"
        },
        {
          "name": "Get Next Free Number",
          "value": "getNextFreeNumber",
          "action": "Get next free client number",
          "description": "Retrieve the next available client number"
        },
        {
          "name": "Get Responsibilities",
          "value": "getResponsibilities",
          "action": "Get client responsibilities",
          "description": "Retrieve responsibilities for a client"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a client",
          "description": "Update a specific client"
        },
        {
          "name": "Update Categories",
          "value": "updateClientCategories",
          "action": "Update client categories",
          "description": "Replace a client's category assignments"
        },
        {
          "name": "Update Groups",
          "value": "updateClientGroups",
          "action": "Update client groups",
          "description": "Replace a client's group assignments"
        },
        {
          "name": "Update Responsibilities",
          "value": "updateResponsibilities",
          "action": "Update client responsibilities",
          "description": "Replace a client's responsibilities"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tax authorities",
          "description": "Retrieve a list of tax authorities"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "taxAuthority"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many relationships",
          "description": "Retrieve a list of relationships"
        },
        {
          "name": "Get Types",
          "value": "getTypes",
          "action": "Get relationship types",
          "description": "Retrieve a list of relationship types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "relationship"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many legal forms",
          "description": "Retrieve a list of legal forms"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "legalForm"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many corporate structures",
          "description": "Retrieve a list of corporate structures"
        },
        {
          "name": "Get Organization",
          "value": "get",
          "action": "Get an organization",
          "description": "Retrieve a specific organization"
        },
        {
          "name": "Get Establishment",
          "value": "getEstablishment",
          "action": "Get an establishment",
          "description": "Retrieve a specific establishment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "corporateStructure"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many employees",
          "description": "Retrieve a list of employees"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an employee",
          "description": "Retrieve a specific employee"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create an employee",
          "description": "Create a new employee"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an employee",
          "description": "Update a specific employee"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "employee"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many countries",
          "description": "Retrieve a list of countries"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "countryCode"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many client group types",
          "description": "Retrieve a list of client group types"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a client group type",
          "description": "Retrieve a specific client group type"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a client group type",
          "description": "Create a new client group type"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a client group type",
          "description": "Update a specific client group type"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clientGroupType"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many client category types",
          "description": "Retrieve a list of client category types"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a client category type",
          "description": "Retrieve a specific client category type"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a client category type",
          "description": "Create a new client category type"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a client category type",
          "description": "Update a specific client category type"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clientCategoryType"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many banks",
          "description": "Retrieve a list of banks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bank"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many areas of responsibility",
          "description": "Retrieve a list of areas of responsibility"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "areaOfResponsibility"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an addressee",
          "description": "Create a new addressee"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an addressee",
          "description": "Retrieve a specific addressee"
        },
        {
          "name": "Get Deletion Log",
          "value": "getDeletionLog",
          "action": "Get addressee deletion log",
          "description": "Retrieve a list of deleted addressees"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many addressees",
          "description": "Retrieve a list of addressees"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an addressee",
          "description": "Update a specific addressee"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "addressee"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a client",
      "description": "Create a new client",
      "resource": "client"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a client",
      "description": "Retrieve a specific client",
      "resource": "client"
    },
    {
      "name": "Get Categories",
      "value": "getClientCategories",
      "action": "Get client categories",
      "description": "Retrieve client categories",
      "resource": "client"
    },
    {
      "name": "Get Deletion Log",
      "value": "getDeletionLog",
      "action": "Get client deletion log",
      "description": "Retrieve deleted clients",
      "resource": "client"
    },
    {
      "name": "Get Groups",
      "value": "getClientGroups",
      "action": "Get client groups",
      "description": "Retrieve client groups",
      "resource": "client"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many clients",
      "description": "Retrieve a list of clients",
      "resource": "client"
    },
    {
      "name": "Get Next Free Number",
      "value": "getNextFreeNumber",
      "action": "Get next free client number",
      "description": "Retrieve the next available client number",
      "resource": "client"
    },
    {
      "name": "Get Responsibilities",
      "value": "getResponsibilities",
      "action": "Get client responsibilities",
      "description": "Retrieve responsibilities for a client",
      "resource": "client"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a client",
      "description": "Update a specific client",
      "resource": "client"
    },
    {
      "name": "Update Categories",
      "value": "updateClientCategories",
      "action": "Update client categories",
      "description": "Replace a client's category assignments",
      "resource": "client"
    },
    {
      "name": "Update Groups",
      "value": "updateClientGroups",
      "action": "Update client groups",
      "description": "Replace a client's group assignments",
      "resource": "client"
    },
    {
      "name": "Update Responsibilities",
      "value": "updateResponsibilities",
      "action": "Update client responsibilities",
      "description": "Replace a client's responsibilities",
      "resource": "client"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many tax authorities",
      "description": "Retrieve a list of tax authorities",
      "resource": "taxAuthority"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many relationships",
      "description": "Retrieve a list of relationships",
      "resource": "relationship"
    },
    {
      "name": "Get Types",
      "value": "getTypes",
      "action": "Get relationship types",
      "description": "Retrieve a list of relationship types",
      "resource": "relationship"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many legal forms",
      "description": "Retrieve a list of legal forms",
      "resource": "legalForm"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many corporate structures",
      "description": "Retrieve a list of corporate structures",
      "resource": "corporateStructure"
    },
    {
      "name": "Get Organization",
      "value": "get",
      "action": "Get an organization",
      "description": "Retrieve a specific organization",
      "resource": "corporateStructure"
    },
    {
      "name": "Get Establishment",
      "value": "getEstablishment",
      "action": "Get an establishment",
      "description": "Retrieve a specific establishment",
      "resource": "corporateStructure"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many employees",
      "description": "Retrieve a list of employees",
      "resource": "employee"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an employee",
      "description": "Retrieve a specific employee",
      "resource": "employee"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an employee",
      "description": "Create a new employee",
      "resource": "employee"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an employee",
      "description": "Update a specific employee",
      "resource": "employee"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many countries",
      "description": "Retrieve a list of countries",
      "resource": "countryCode"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many client group types",
      "description": "Retrieve a list of client group types",
      "resource": "clientGroupType"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a client group type",
      "description": "Retrieve a specific client group type",
      "resource": "clientGroupType"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a client group type",
      "description": "Create a new client group type",
      "resource": "clientGroupType"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a client group type",
      "description": "Update a specific client group type",
      "resource": "clientGroupType"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many client category types",
      "description": "Retrieve a list of client category types",
      "resource": "clientCategoryType"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a client category type",
      "description": "Retrieve a specific client category type",
      "resource": "clientCategoryType"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a client category type",
      "description": "Create a new client category type",
      "resource": "clientCategoryType"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a client category type",
      "description": "Update a specific client category type",
      "resource": "clientCategoryType"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many banks",
      "description": "Retrieve a list of banks",
      "resource": "bank"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many areas of responsibility",
      "description": "Retrieve a list of areas of responsibility",
      "resource": "areaOfResponsibility"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an addressee",
      "description": "Create a new addressee",
      "resource": "addressee"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an addressee",
      "description": "Retrieve a specific addressee",
      "resource": "addressee"
    },
    {
      "name": "Get Deletion Log",
      "value": "getDeletionLog",
      "action": "Get addressee deletion log",
      "description": "Retrieve a list of deleted addressees",
      "resource": "addressee"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many addressees",
      "description": "Retrieve a list of addressees",
      "resource": "addressee"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an addressee",
      "description": "Update a specific addressee",
      "resource": "addressee"
    }
  ]

npm_readme:
[cell repeats an earlier one in this file: 3558 characters]

ai_documentation_summary:
  {"purpose":"The Klardaten DATEVconnect: Master Data node allows users to fetch and manage master data entities from DATEV systems via the DATEVconnect API.","capabilities":["Fetch master data entities from DATEV","Access DATEV client information","Retrieve fiscal year data","Access account receivable records","Access account postings","Access accounting sequences"],"authentication":"OAuth2 (via email, password, and clientInstanceId credentials)","commonUseCases":["Automating client master data retrieval","Synchronizing accounting data with external systems","Managing DATEV-based business entity records"],"limitations":["Requires a Klardaten DATEVconnect Gateway setup","Requires a Klardaten account and valid DATEV instance ID","Requires n8n restart after installation"],"relatedNodes":["Klardaten DATEVconnect: Accounting","Klardaten DATEVconnect: Document Management","Klardaten DATEVconnect: Order Management","Klardaten DATEVconnect: Identity & Access Management"]}


node_type: @trustify-da/n8n-nodes-dependency-analytics.dependencyAnalytics
package_name: @trustify-da/n8n-nodes-dependency-analytics
display_name: Dependency Analytics
description: Get data from Dependency Analytics API
category: Community
development_style: declarative
version: 2
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: adva_oren
author_github_url: https://github.com/trustification/n8n-nodes-dependency-analytics.git
npm_package_name: @trustify-da/n8n-nodes-dependency-analytics
npm_version: 1.0.2
community_fetched_at: 2026-04-16T09:43:35.984Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "vulnerability",
      "options": [
        {
          "name": "SBOM",
          "value": "sbom"
        },
        {
          "name": "Vulnerability",
          "value": "vulnerability"
        },
        {
          "name": "Advisory",
          "value": "advisory"
        }
      ],
      "description": "Choose which Trustify resource to work with. This affects available operations and fields.",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get sbom",
          "description": "Retrieve an sbom"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many sboms",
          "description": "Retrieve a list of sboms"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sbom"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get vulnerability",
          "description": "Retrieve a vulnerability"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many vulnerabilities",
          "description": "Retrieve a list of vulnerabilities"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vulnerability"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get advisory",
          "description": "Retrieve an advisory"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many advisories",
          "description": "Retrieve a list of advisories"
        },
        {
          "name": "Analyze",
          "value": "analyze",
          "action": "Analyze advisories",
          "description": "Analyze advisories from purls or an SBOM"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "advisory"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get sbom",
      "description": "Retrieve an sbom",
      "resource": "sbom"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many sboms",
      "description": "Retrieve a list of sboms",
      "resource": "sbom"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get vulnerability",
      "description": "Retrieve a vulnerability",
      "resource": "vulnerability"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many vulnerabilities",
      "description": "Retrieve a list of vulnerabilities",
      "resource": "vulnerability"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get advisory",
      "description": "Retrieve an advisory",
      "resource": "advisory"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many advisories",
      "description": "Retrieve a list of advisories",
      "resource": "advisory"
    },
    {
      "name": "Analyze",
      "value": "analyze",
      "action": "Analyze advisories",
      "description": "Analyze advisories from purls or an SBOM",
      "resource": "advisory"
    }
  ]

npm_readme:
  [![ci](https://github.com/trustification/n8n-nodes-dependency-analytics/actions/workflows/ci.yaml/badge.svg)](https://github.com/trustification/n8n-nodes-dependency-analytics/actions/workflows/ci.yaml)
  [![codecov](https://codecov.io/gh/trustification/n8n-nodes-dependency-analytics/graph/badge.svg?token=WIH8MUMZ7T)](https://codecov.io/gh/trustification/n8n-nodes-dependency-analytics)
  # n8n-nodes-dependency-analytics

  This is an [n8n](https://n8n.io/) community node for [Red Hat Dependency Analytics](https://github.com/trustification).

  Dependency Analytics helps organizations explore the relationships between applications, dependencies, and vulnerabilities by consuming and managing:

  - **Software Bill of Materials (SBOMs)**
  - **Vulnerability Exploitability eXchange (VEX)** data
  - **Vendor advisories** from vulnerability databases

  It is designed for **DevSecOps teams and developers** to better understand and reduce organizational risk exposure.

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

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

  ## Installation

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

  ## Operations

  This node provides three operation groups that mirror the Dependency Analytics API:

  **SBOM operations**

  - **Get SBOM** - Retrieve metadata for a single SBOM by its SHA (supports `sha256:`, `sha384:`, `sha512:` prefixes).
  - **Get Many SBOMs** - List SBOMs in your instance with optional limit/sorting.

  **Advisory operations**

  - **Get Advisory** - Fetch a specific advisory (includes identifiers, issuer, dates, and CVE links where available).
  - **Get Many Advisories** - List advisories with optional sorting.
  - **Analyze** - Resolve advisories for supplied packages:
    - From **PURLs**: send one or more PURLs and receive advisories per package.
    - From an **SBOM SHA**: look up the SBOM, then return advisories associated with that SBOM.

  **Vulnerability operations**

  - **Get Vulnerability** - Retrieve a single vulnerability record (e.g., by CVE).
  - **Get Many Vulnerabilities** - List vulnerability records with optional sorting.

  ### Sorting and limits

  - List-style operations accept multiple sort rules; they are applied in order after the items are fetched.
  - Supported sort fields:
    - `SBOMs (Get Many)`: published, name, packages (count), size
    - `Advisories (Get Many)`: published, title, size
    - `Advisories (Analyze)`: published, title, average score, average severity (Critical > High > Medium > Low > None > Unknown)
    - `Vulnerabilities (Get Many)`: published, title, average severity, average score
  - The `Limit` option caps results (default 50, minimum 1). 

  ### Output modes

  - `Simplified` (default): minimal, stable shape for each resource to keep payloads small.
  - `Raw`: returns the API response as-is (use when you need every field).
  - `Selected Fields`: pick the properties you want; identifiers are always included.
  - Tip: When chaining nodes or using AI tools, prefer `Simplified` or a narrow `Selected Fields` set to avoid oversized items.


  ## Credentials

  This node supports Client Credentials OAuth2 type for authenticating with Red Hat Dependency Analytics.

  ### RHTPA Client Credentials

  - Use when connecting to RHTPA cloud services
  - Required parameters: (Provided by the RHTPA team upon request)
    - Client ID
    - Client Secret

  ### Trustify Client Credentials

  - Use when connecting to:
    - On premise Trustify instance
    - Local development
  - It requires that in your SSO provider a confidential client exists
    - The Trustify instance accepts this client id
    - The Trustify instance can map the client or scope to the necessary permissions

  For more information refer to the [Trustify - OIDC Docs](https://github.com/guacsec/trustify/blob/main/docs/oidc.md)

  > **Note:** If you are running n8n locally and see the error *"The connection cannot be established, this usually occurs due to an incorrect host (domain) value"*, try:
  > ```bash
  > export NODE_TLS_REJECT_UNAUTHORIZED=0
  > n8n start
  > ```



  ## Usage

  1. Add the Dependency Analytics node to your n8n workflow

  2. Select an operation (e.g., “List SBOMs”)

  3. Provide required inputs (e.g., SBOM SHA)

  4. Run the workflow and process the results

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Dependency Analytics GitHub](https://github.com/trustification)
  * [Trustify Documantation](https://docs.guac.sh/trustify/)

ai_documentation_summary:
  {"purpose":"A n8n community node that retrieves and analyzes data from Red Hat Dependency Analytics, including SBOMs, advisories, and vulnerabilities.","capabilities":["Retrieve SBOM metadata by SHA","List SBOMs with sorting and pagination","Fetch specific advisories","List advisories with sorting","Resolve advisories from PURLs","Resolve advisories from SBOM SHA","Retrieve specific vulnerability records","List vulnerability records with sorting","Apply sorting rules (e.g., by severity, score, title)","Control output mode (Simplified, Raw, Selected Fields)"],"authentication":"OAuth2 (Client Credentials)","commonUseCases":["DevSecOps risk exposure analysis","Dependency vulnerability scanning","SBOM management and compliance","VEX (Vulnerability Exploitability eXchange) data retrieval","Vendor advisory monitoring"],"limitations":["Requires specific OAuth2 setup (Client Credentials) for both cloud and on-premise instances","Local n8n execution may require disabling TLS verification for certain connection issues","Default limit is 50 items per list operation","Output payload size can be large if 'Raw' mode is used without field selection"],"relatedNodes":["HTTP Request","OAuth2 Authentication","JSON to JSON","Split In Batches"]}


node_type: @openemm/n8n-nodes-openemm.openEmmTrigger
package_name: @openemm/n8n-nodes-openemm
display_name: OpenEMM Trigger
description: Interact with EMM
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: agnitas
author_github_url: https://github.com/agnitas-org/n8n-nodes-openemm.git
npm_package_name: @openemm/n8n-nodes-openemm
npm_version: 0.3.2
community_fetched_at: 2026-04-16T09:43:35.985Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # @openemm/n8n-nodes-openemm

  These are OpenEMM community nodes for n8n. They let you use OpenEMM in your n8n workflows.

  [OpenEMM](https://www.agnitas.de/openemm-wiki/) is a web based enterprise application for email and marketing automation. It is used for automated email communication with customers, leads, members and employees. It can be operated via a web browser or in headless mode via its SOAP or REST API. OpenEMM is published under open source license [APGLv3](https://www.gnu.org/licenses/agpl-3.0.html).

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


  ## Installation

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


  ## Operations

  The OpenEMM community nodes are extended from time to time. You can find the up-to-date functionality of all triggers and actions along with input and output parameters in the [OpenEMM Wiki](https://wiki-iframe.agnitas.de/doku.php?id=integration-apis).


  ## Credentials

  The OpenEMM community nodes use the REST API of OpenEMM for its action nodes and the callback API (webhooks) of OpenEMM for trigger nodes. Create credentials in n8n for the REST API so that an n8n workflow can access your OpenEMM instance. Copy the webhook URLs generated by n8n into the settings of the events in your OpenEMM instance so that OpenEMM can trigger workflows in n8n.


  ## Compatibility

  To be able to use all triggers and actions provided by the OpenEMM community nodes for n8n you have to use at least version 25.11 of OpenEMM.


  ## Usage

  Use the trigger nodes to receive event data from OpenEMM like mail openings, link clicks or profile field changes (via OpenEMM's callback API/webhooks).
  Use the action nodes to send data to OpenEMM like mailing or recipient data or to initiate an action like sending out a mailing (via OpenEMM's REST API).


  ## Resources
  * [OpenEMM integrations documenation](https://wiki-iframe.agnitas.de/doku.php?id=start#integrations)
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)


  ## History

  0.3.0 update license to MIT
  0.2.0 initial public release

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the OpenEMM enterprise email and marketing automation platform, allowing workflows to trigger on events and send actions via REST API and webhooks.","capabilities":["Receive event triggers via OpenEMM callback API/webhooks (e.g., mail openings, link clicks, profile changes)","Send data to OpenEMM via REST API (e.g., mailing, recipient data)","Initiate actions like sending out mailings","Monitor customer, lead, member, and employee communication events"],"authentication":"API key required (REST API credentials) and webhook URL configuration","commonUseCases":["Automated email marketing campaigns","Tracking email engagement (opens, clicks)","Automated customer communication workflows","Lead management and profile updates"],"limitations":["Requires OpenEMM version 25.11 or higher for full functionality","Requires manual configuration of webhook URLs in OpenEMM settings"],"relatedNodes":["OpenEMM Action","OpenEMM Trigger","n8n HTTP Request","n8n Webhook"]}


node_type: n8n-nodes-jaasai.jaasai
package_name: n8n-nodes-jaasai
display_name: JaaS AI
description: Evaluate AI Agents with JaaS
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: hljaasai
author_github_url: https://github.com/jaas-a1/
npm_package_name: n8n-nodes-jaasai
npm_version: 0.3.2
community_fetched_at: 2026-04-16T09:43:35.986Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "evaluate",
      "options": [
        {
          "name": "Evaluate",
          "value": "evaluate",
          "description": "Evaluate AI agents and outputs"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "evaluate",
      "options": [
        {
          "name": "Evaluate",
          "value": "evaluate",
          "action": "Evaluate AI agent responses",
          "description": "Evaluate AI agent responses"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "evaluate"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Evaluate",
      "value": "evaluate",
      "action": "Evaluate AI agent responses",
      "description": "Evaluate AI agent responses",
      "resource": "evaluate"
    }
  ]

npm_readme:
  ## JAAS AI 

  JaaS AI is a turnkey evaluationAI service that scores, analyzes, validates and monitors any AI-generated text in seconds. Plug JaaS AI into your workflow to ensure accuracy, consistency, and quality—without needing extra reviewers. The system evaluates responses based on customizable criteria and provides detailed scoring and reasoning.
  JaaS AI has been proven to detect Hallucination in AI Agents and chat bots.

  *Put your workflows and chat bots under the microscope and understand when they start to derail, hallucinate or degrade their accuracy.*

  ### Requirements

  To configure you n8n node, you need a JaaS API key. For that you have to register for the service at jaas-ai.net.You will also need a LLM Provider API key.


  ### Understanding the evaluation process

  The evaluation process is very simple. It compares an *answer* to a specific *question* to a *ground truth answer* in a *context* given. A *score* and *reasoning* is provided based on a *criteria* or criterion given to evaluate.

  #### Inputs to the evaluation
  - . **question:** The question that you want to evaluate. Example: *Which is capital of France?*

  - . **answer:** This is the answer that is going to be evaluated. Example: *Paris*.

  - . **ground_truth_answer**: This is the source of truth. It is used as rubric to for the evaluation process to score the criterion. Example: *The capital of France is Paris.*

  - . **context:** Additional information that is used to evaluate. The context becomes more relevant in non-direct comparison criterion. As an example in cases of **hallucination:** The context is key to understand if the evaluated answer related to the conversation that has been happening. Example: *Paris is the capital and largest city of France, with an estimated population of 2,048,472 in January 2025 in an area of more than 105 km2 (41 sq mi).*

  - . **criteria:** The criteria or criterion is the base of the scoring process. The evaluation tool scores the *answer* based on the criteria given. Example: *Accuracy, Hallucination.*

  - . **type:** This is the type of evaluation. There are 4 types: *Simple (S), Conversational Simple (D),
    -  The main differences are: *conversational or non-conversations*: the *conversational* types detect chit-chat conversations that are not evaluated. This is key when evaluating or monitoring *chat bots* or transcripts of *voice conversations*.  

  - . **cohort:** The *cohort* helps in the monitoring and analysis process. It does not intervene in the evaluation itself, while indicates a grouping of evaluation. As an example, if the tool is evaluating conversations from a chat bot, each conversation can have its own cohort for better tracking and monitoring.


  #### Example of a Information for an evaluation
  ```json

  From Input to the Node:	
    "question": "What is the capital of France?",
    "answer": "Paris.",
    "ground_truth_answer": "Paris is the capital of France.",
    "context": "",

  From Configuration:
  	"evaluation_criteria": ["Accuracy", "Hallucination"],
    "type": "S",
    "cohort":"ChatBot1"

  ```
  After the evaluation is completed almost in real time, the system returns the score for each of the metrics and the reasoning behind.


  ### Using the n8n JaaS Module

  ***Configuration:*** The module requires the corresponding configuration:
  	- JaaS API Key: linked to you account in jaas-ai.com
  	- Criteria: you can enter up to 3 criteria for each node. The criteria should be available in teh Criteria Database in jaas-ai.com.
  	- Type of Evaluation: S - Simple, or C- Conversational
  	- Cohort: to groupe the evaluations in groups for better tracking
    
  ***Input:*** You should provide the no de the fields needed for the evaluation:
  	- question: question to answer
  	- answer: answer that has to be evaluated
  	- ground_truth_answer: source of truth for the answer to be evaluated
  	- context: additional information to help the evaluation process
  The inputs should be in Json Format.

  Obtain the results and monitor what is going on with your tools!

  Look for more information and examples in our website!!

  support: support@jaas-ai.com
  website: jaas-ai.net

ai_documentation_summary:
  {"purpose":"Evaluates AI-generated text by scoring it against ground truth answers and customizable criteria to detect hallucinations and ensure quality.","capabilities":["Scoring AI responses based on accuracy, hallucination, and other criteria","Analyzing conversational vs. non-conversational inputs","Grouping evaluations into cohorts for tracking","Providing detailed reasoning for evaluation scores","Supporting Simple (S) and Conversational (C) evaluation types","Accepting context to improve evaluation accuracy"],"authentication":"JaaS API key required (registered at jaas-ai.net) and LLM Provider API key required","commonUseCases":["Monitoring chatbot accuracy and hallucination rates","Validating AI agent responses against known ground truth","Quality assurance for AI-generated content","Tracking performance degradation in AI systems"],"limitations":["Only up to 3 criteria can be configured per node","Criteria must be selected from the JaaS Criteria Database","Requires external API keys for both JaaS and LLM provider services"],"relatedNodes":["n8n-nodes-jaaai.jaasai"]}


node_type: n8n-nodes-tiiny-host.tiiny
package_name: n8n-nodes-tiiny-host
display_name: Tiiny Host
description: Manage sites on Tiiny Host
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: tiinyhost
author_github_url: https://github.com/Tiiny-Host/n8n-node.git
npm_package_name: n8n-nodes-tiiny-host
npm_version: 0.1.15
community_fetched_at: 2026-04-16T09:43:35.987Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Site",
          "value": "create",
          "action": "Create a site",
          "description": "Upload a new file to create a site on Tiiny"
        },
        {
          "name": "Create Site from HTML",
          "value": "createHtml",
          "action": "Create a site from HTML",
          "description": "Create a new site from raw HTML content"
        },
        {
          "name": "Update Site",
          "value": "update",
          "action": "Update a site",
          "description": "Update an existing site on Tiiny"
        },
        {
          "name": "Update Site from HTML",
          "value": "updateHtml",
          "action": "Update a site from HTML",
          "description": "Update an existing site using raw HTML content"
        },
        {
          "name": "Delete Site",
          "value": "delete",
          "action": "Delete a site",
          "description": "Delete a site from Tiiny"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Site",
      "value": "create",
      "action": "Create a site",
      "description": "Upload a new file to create a site on Tiiny"
    },
    {
      "name": "Create Site from HTML",
      "value": "createHtml",
      "action": "Create a site from HTML",
      "description": "Create a new site from raw HTML content"
    },
    {
      "name": "Update Site",
      "value": "update",
      "action": "Update a site",
      "description": "Update an existing site on Tiiny"
    },
    {
      "name": "Update Site from HTML",
      "value": "updateHtml",
      "action": "Update a site from HTML",
      "description": "Update an existing site using raw HTML content"
    },
    {
      "name": "Delete Site",
      "value": "delete",
      "action": "Delete a site",
      "description": "Delete a site from Tiiny"
    }
  ]

npm_readme:
  # n8n-nodes-tiiny-host

  This is an n8n community node that lets you use [Tiiny Host](https://tiiny.host) in your n8n workflows.

  Tiiny Host is the simplest way to share your static website. Upload your HTML, PDF, or ZIP files and get an instant live link in seconds!

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

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

  ## Installation

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

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes** in n8n
  2. Select **Install a community node**
  3. Enter `n8n-nodes-tiiny-host` in the npm Package Name
  4. Agree to the risks and select **Install**

  After installing the node, you can use it like any other node. n8n displays the node in search results in the **Nodes** panel.

  ### Manual Installation

  To get started, install the package in your n8n root directory:

  ```bash
  npm install n8n-nodes-tiiny-host
  ```

  For Docker-based deployments, add the following line before the font installation command in your [n8n Dockerfile](https://github.com/n8n-io/n8n/blob/master/docker/images/n8n/Dockerfile):

  ```dockerfile
  RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-tiiny-host
  ```

  ## Operations

  The Tiiny Host node supports the following operations:

  ### Create Site

  - Upload HTML, PDF, or ZIP files to create a new site
  - Optionally set a custom subdomain
  - Enable password protection for your site
  - Choose from available domain suffixes

  ### Update Site

  - Update an existing site with new files
  - Maintains the same URL while replacing the content
  - Automatically removes old files before uploading new ones
  - Update password protection settings

  ### Delete Site

  - Permanently delete a site from Tiiny Host
  - Removes all associated files and data

  ## Credentials

  To use this node, you need a Tiiny Host API key. You can obtain your API key from your [Tiiny Host account settings](https://tiiny.host/manage/accoun).

  ### Setting up credentials in n8n:

  1. Go to **Credentials** in n8n
  2. Click **Create New** and select **Tiiny API**
  3. Enter your API key from Tiiny Host
  4. Click **Save**

  ## Compatibility

  - Minimum n8n version: **1.0.0**
  - Tested against n8n version: **1.68.0**

  ## Usage

  ### Example: Upload a Website

  1. Add a **Read Binary File** node to read your HTML file or ZIP archive
  2. Add the **Tiiny** node
  3. Select the **Create Site** operation
  4. Configure:
     - **Binary Property**: `data` (or your binary property name)
     - **Subdomain** (optional): Your desired subdomain
     - **Domain Suffix**: Select from available options
     - **Password Protected**: Enable if needed
  5. Execute the workflow
  6. The node will return the live URL of your site

  ### Example: Update an Existing Site

  1. Get the binary file you want to upload (using **Read Binary File** or **HTTP Request** node)
  2. Add the **Tiiny** node
  3. Select the **Update Site** operation
  4. Configure:
     - **Site Link**: The full URL of the site to update (e.g., `my-site.tiiny.site`)
     - **Binary Property**: The name of the binary property containing your file
     - **Password Protected**: Update protection settings if needed
  5. Execute the workflow
  6. Your site will be updated with the new content

  ### Example: Delete a Site

  1. Add the **Tiiny** node
  2. Select the **Delete Site** operation
  3. Configure:
     - **Site Link**: The full URL of the site to delete (e.g., `my-site.tiiny.site`)
  4. Execute the workflow
  5. The site will be permanently deleted

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Tiiny Host](https://tiiny.host)
  - [Tiiny Host Documentation](https://tiiny.host/docs)
  - [Tiiny Host API Documentation](https://tiiny.host/api)

  ## Support

  If you have any issues or questions:

  - Check the [n8n forum](https://community.n8n.io/)
  - Visit [Tiiny Host support](https://tiiny.host/support)
  - Open an issue on [GitHub](https://github.com/Tiiny-Host/n8n-node/issues)

  ## License

  [MIT](LICENSE.md)

  ## Version History

  ### 0.1.0

  - Initial release
  - Create, Update, and Delete site operations
  - API key authentication
  - Password protection support
  - Custom subdomain and domain suffix support

ai_documentation_summary:
  {"purpose":"A community n8n node that manages static website hosting on Tiiny Host, allowing users to create, update, and delete hosted sites with instant live links.","capabilities":["Create new sites by uploading HTML, PDF, or ZIP files","Update existing sites with new file content","Permanently delete hosted sites","Set custom subdomains","Enable password protection for sites","Select from available domain suffixes","Maintain existing URLs during updates"],"authentication":"API key required (Tiiny Host API key)","commonUseCases":["Quickly share static websites or documents via a live link","Automate website deployment workflows","Manage temporary project hosting","Securely share sensitive documents with password protection"],"limitations":["Requires a Tiiny Host account and API key","Limited to static file hosting (HTML, PDF, ZIP)","Community node (may have less support than official nodes)","Minimum n8n version 1.0.0 required"],"relatedNodes":["Read Binary File","HTTP Request","Wait","If","Set"]}


node_type: n8n-nodes-pdf-api-hub.pdfSplitMerge
package_name: n8n-nodes-pdf-api-hub
display_name: PDF API Hub
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: htmlcsstoimage
author_github_url: https://github.com/Pdfapihub/
npm_package_name: n8n-nodes-pdf-api-hub
npm_version: 4.0.20
community_fetched_at: 2026-04-16T09:43:35.988Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  HTML/URL to PDF API, OCR, merge/split/compress PDFs, convert formats, and website screenshots. Complete PDF processing toolkit.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "pdfCreation",
      "options": [
        {
          "name": "HTML / URL to PDF",
          "value": "pdfCreation",
          "description": "Turn any webpage or HTML into a polished PDF"
        },
        {
          "name": "Sign & Watermark PDF",
          "value": "watermark",
          "description": "Stamp a signature or add text/image watermarks onto your PDFs"
        },
        {
          "name": "Screenshot Website to Image",
          "value": "imageGeneration",
          "description": "Capture any webpage or HTML as a PNG screenshot"
        },
        {
          "name": "OCR — Read Scanned PDFs & Image",
          "value": "ocrParsing",
          "description": "Extract text from scanned documents and photos using OCR"
        },
        {
          "name": "Extract PDF Text & Table",
          "value": "pdfParsing",
          "description": "Pull out text, tables, or structured data from any PDF"
        },
        {
          "name": "PDF to Excel / CSV / Word / PowerPoint",
          "value": "documentConversion",
          "description": "Convert PDFs into editable formats — Excel, Word, CSV, HTML, PPTX"
        },
        {
          "name": "Merge / Split PDF",
          "value": "pdfManipulation",
          "description": "Combine multiple PDFs or split one into parts"
        },
        {
          "name": "Compress PDF",
          "value": "compressResource",
          "description": "Shrink PDF file size without losing quality"
        },
        {
          "name": "Protect / Unlock PDF",
          "value": "pdfSecurity",
          "description": "Add or remove password protection on PDFs"
        },
        {
          "name": "Scrape Website HTML",
          "value": "urlToHtml",
          "description": "Fetch the fully-rendered HTML of any page — great for SPAs"
        },
        {
          "name": "Images to PDF",
          "value": "imageToPdf",
          "description": "Combine JPG, PNG, or WebP images into a single PDF"
        },
        {
          "name": "PDF to Image",
          "value": "pdfToImage",
          "description": "Render PDF pages as PNG, JPG, or WebP images"
        },
        {
          "name": "Compare Document",
          "value": "documentIntelligence",
          "description": "Check how similar two PDFs or images are"
        },
        {
          "name": "File Management",
          "value": "fileManagement",
          "description": "Upload, list, or delete files in your cloud storage"
        },
        {
          "name": "Template",
          "value": "templates",
          "description": "Save and manage reusable HTML/CSS templates for PDF and image generation"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "urlToPdf",
      "options": [
        {
          "name": "URL to PDF",
          "value": "urlToPdf",
          "action": "Capture a screenshot of a website in PDF format",
          "description": "Capture website screenshot to PDF"
        },
        {
          "name": "HTML to PDF",
          "value": "htmlToPdf",
          "action": "Convert HTML to PDF",
          "description": "Generate PDF from HTML/CSS"
        },
        {
          "name": "Template to PDF",
          "value": "templateToPdf",
          "action": "Generate PDF from a saved template",
          "description": "Generate PDF from a saved reusable template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfCreation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "urlToImage",
      "options": [
        {
          "name": "URL to Image",
          "value": "urlToImage",
          "action": "Capture a screenshot of a website as an image",
          "description": "Capture website screenshot as image"
        },
        {
          "name": "HTML to Image",
          "value": "htmlToImage",
          "action": "Convert HTML to image",
          "description": "Generate image from HTML/CSS"
        },
        {
          "name": "Template to Image",
          "value": "templateToImage",
          "action": "Generate image from a saved template",
          "description": "Generate image from a saved reusable template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "imageGeneration"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "pdfOcrParse",
      "options": [
        {
          "name": "PDF OCR Parse",
          "value": "pdfOcrParse",
          "action": "Parse text from scanned PDF images",
          "description": "Parse text from PDFs, including scanned pages"
        },
        {
          "name": "Image OCR Parse",
          "value": "imageOcrParse",
          "action": "Parse text from images",
          "description": "Extract text from image using OCR"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ocrParsing"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "pngToPdf",
      "options": [
        {
          "name": "PNG to PDF",
          "value": "pngToPdf",
          "action": "Convert PNG images to PDF",
          "description": "Convert PNG image(s) to PDF"
        },
        {
          "name": "WebP to PDF",
          "value": "webpToPdf",
          "action": "Convert webp images to PDF",
          "description": "Convert WebP image(s) to PDF"
        },
        {
          "name": "JPG to PDF",
          "value": "jpgToPdf",
          "action": "Convert JPG images to PDF",
          "description": "Convert JPG image(s) to PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "imageToPdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "docxToPdf",
      "options": [
        {
          "name": "PDF to Excel (XLSX)",
          "value": "pdfToXlsx",
          "action": "Convert pdf to excel",
          "description": "Extract tables and text from PDF into an Excel spreadsheet — one sheet per page"
        },
        {
          "name": "PDF to DOCX",
          "value": "pdfToDocx",
          "action": "Convert a pdf to docx",
          "description": "Convert PDF to DOCX"
        },
        {
          "name": "PDF to CSV",
          "value": "pdfToCsv",
          "action": "Convert PDF to CSV",
          "description": "Extract tables and text from PDF into CSV format"
        },
        {
          "name": "PDF to Text",
          "value": "pdfToTxt",
          "action": "Convert PDF to plain text",
          "description": "Extract plain text from all or selected PDF pages"
        },
        {
          "name": "PDF to HTML",
          "value": "pdfToHtml",
          "action": "Convert PDF to HTML",
          "description": "Convert PDF pages to a styled HTML document"
        },
        {
          "name": "PDF to PowerPoint (PPTX)",
          "value": "pdfToPptx",
          "action": "Convert pdf to power point",
          "description": "Convert each PDF page into a PowerPoint slide"
        },
        {
          "name": "DOCX / Document to PDF",
          "value": "docxToPdf",
          "action": "Convert a document to PDF",
          "description": "Convert Office-like documents (DOCX, PPTX, XLSX, etc.) to PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentConversion"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "documentSimilarity",
      "options": [
        {
          "name": "Similarity Check",
          "value": "documentSimilarity",
          "action": "Compare similarity between two documents",
          "description": "Compare similarity between two images/PDF documents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentIntelligence"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "pdfToPng",
      "options": [
        {
          "name": "PDF to PNG",
          "value": "pdfToPng",
          "action": "Convert PDF to PNG images",
          "description": "Convert PDF pages to PNG images"
        },
        {
          "name": "PDF to WebP",
          "value": "pdfToWebp",
          "action": "Convert pdf to webp images",
          "description": "Convert PDF pages to WebP images"
        },
        {
          "name": "PDF to JPG",
          "value": "pdfToJpg",
          "action": "Convert PDF to JPG images",
          "description": "Convert PDF pages to JPG images"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfToImage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchHtml",
      "options": [
        {
          "name": "Fetch HTML",
          "value": "fetchHtml",
          "action": "Fetch rendered HTML from a URL",
          "description": "Navigate to a URL and return the fully-rendered HTML"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "urlToHtml"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "signPdf",
      "options": [
        {
          "name": "Sign PDF",
          "value": "signPdf",
          "action": "Sign a PDF with a signature image",
          "description": "Stamp a signature image onto one or all pages"
        },
        {
          "name": "Add Watermark",
          "value": "addWatermark",
          "action": "Add watermark to PDF or image",
          "description": "Overlay text or a logo across every page"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "watermark"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "mergePdf",
      "options": [
        {
          "name": "Merge PDF",
          "value": "mergePdf",
          "action": "Merge multiple pd fs into one",
          "description": "Combine multiple PDFs into one document"
        },
        {
          "name": "Split PDF",
          "value": "splitPdf",
          "action": "Split a PDF into parts",
          "description": "Split a PDF into separate pages or chunks"
        },
        {
          "name": "Compress PDF",
          "value": "compressPdf",
          "action": "Compress a PDF file",
          "description": "Reduce PDF file size — choose from low to max compression"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfManipulation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "compressPdf",
      "options": [
        {
          "name": "Compress PDF",
          "value": "compressPdf",
          "action": "Compress a PDF file",
          "description": "Reduce PDF file size — choose from low to max compression"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "compressResource"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "lockPdf",
      "options": [
        {
          "name": "Lock PDF",
          "value": "lockPdf",
          "action": "Password protect a pdf file",
          "description": "Add password protection to a PDF"
        },
        {
          "name": "Unlock PDF",
          "value": "unlockPdf",
          "action": "Remove password protection from PDF",
          "description": "Remove password protection from a PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfSecurity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "parsePdf",
      "options": [
        {
          "name": "Extract Text / Parse PDF",
          "value": "parsePdf",
          "action": "Parse PDF to JSON",
          "description": "Extract text or structured data from a PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdfParsing"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadFile",
      "options": [
        {
          "name": "Upload File",
          "value": "uploadFile",
          "action": "Upload a file",
          "description": "Upload a file to cloud storage — auto-deleted after 30 days"
        },
        {
          "name": "List Files",
          "value": "listFiles",
          "action": "List uploaded files",
          "description": "List all files uploaded with your API key"
        },
        {
          "name": "Delete File",
          "value": "deleteFile",
          "action": "Delete an uploaded file",
          "description": "Delete a file from cloud storage by URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fileManagement"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createTemplate",
      "options": [
        {
          "name": "Create Template",
          "value": "createTemplate",
          "action": "Create a template",
          "description": "Save a reusable HTML/CSS template with optional default parameters"
        },
        {
          "name": "Delete Template",
          "value": "deleteTemplate",
          "action": "Delete a template",
          "description": "Permanently delete a template"
        },
        {
          "name": "Get Template",
          "value": "getTemplate",
          "action": "Get a template",
          "description": "Retrieve the full template including HTML and CSS content"
        },
        {
          "name": "List Templates",
          "value": "listTemplates",
          "action": "List all templates",
          "description": "List all templates owned by your API key"
        },
        {
          "name": "Update Template",
          "value": "updateTemplate",
          "action": "Update a template",
          "description": "Update one or more fields on an existing template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "templates"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "URL to PDF",
      "value": "urlToPdf",
      "action": "Capture a screenshot of a website in PDF format",
      "description": "Capture website screenshot to PDF",
      "resource": "pdfCreation"
    },
    {
      "name": "HTML to PDF",
      "value": "htmlToPdf",
      "action": "Convert HTML to PDF",
      "description": "Generate PDF from HTML/CSS",
      "resource": "pdfCreation"
    },
    {
      "name": "Template to PDF",
      "value": "templateToPdf",
      "action": "Generate PDF from a saved template",
      "description": "Generate PDF from a saved reusable template",
      "resource": "pdfCreation"
    },
    {
      "name": "URL to Image",
      "value": "urlToImage",
      "action": "Capture a screenshot of a website as an image",
      "description": "Capture website screenshot as image",
      "resource": "imageGeneration"
    },
    {
      "name": "HTML to Image",
      "value": "htmlToImage",
      "action": "Convert HTML to image",
      "description": "Generate image from HTML/CSS",
      "resource": "imageGeneration"
    },
    {
      "name": "Template to Image",
      "value": "templateToImage",
      "action": "Generate image from a saved template",
      "description": "Generate image from a saved reusable template",
      "resource": "imageGeneration"
    },
    {
      "name": "PDF OCR Parse",
      "value": "pdfOcrParse",
      "action": "Parse text from scanned PDF images",
      "description": "Parse text from PDFs, including scanned pages",
      "resource": "ocrParsing"
    },
    {
      "name": "Image OCR Parse",
      "value": "imageOcrParse",
      "action": "Parse text from images",
      "description": "Extract text from image using OCR",
      "resource": "ocrParsing"
    },
    {
      "name": "PNG to PDF",
      "value": "pngToPdf",
      "action": "Convert PNG images to PDF",
      "description": "Convert PNG image(s) to PDF",
      "resource": "imageToPdf"
    },
    {
      "name": "WebP to PDF",
      "value": "webpToPdf",
      "action": "Convert webp images to PDF",
      "description": "Convert WebP image(s) to PDF",
      "resource": "imageToPdf"
    },
    {
      "name": "JPG to PDF",
      "value": "jpgToPdf",
      "action": "Convert JPG images to PDF",
      "description": "Convert JPG image(s) to PDF",
      "resource": "imageToPdf"
    },
    {
      "name": "PDF to Excel (XLSX)",
      "value": "pdfToXlsx",
      "action": "Convert pdf to excel",
      "description": "Extract tables and text from PDF into an Excel spreadsheet — one sheet per page",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to DOCX",
      "value": "pdfToDocx",
      "action": "Convert a pdf to docx",
      "description": "Convert PDF to DOCX",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to CSV",
      "value": "pdfToCsv",
      "action": "Convert PDF to CSV",
      "description": "Extract tables and text from PDF into CSV format",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to Text",
      "value": "pdfToTxt",
      "action": "Convert PDF to plain text",
      "description": "Extract plain text from all or selected PDF pages",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to HTML",
      "value": "pdfToHtml",
      "action": "Convert PDF to HTML",
      "description": "Convert PDF pages to a styled HTML document",
      "resource": "documentConversion"
    },
    {
      "name": "PDF to PowerPoint (PPTX)",
      "value": "pdfToPptx",
      "action": "Convert pdf to power point",
      "description": "Convert each PDF page into a PowerPoint slide",
      "resource": "documentConversion"
    },
    {
      "name": "DOCX / Document to PDF",
      "value": "docxToPdf",
      "action": "Convert a document to PDF",
      "description": "Convert Office-like documents (DOCX, PPTX, XLSX, etc.) to PDF",
      "resource": "documentConversion"
    },
    {
      "name": "Similarity Check",
      "value": "documentSimilarity",
      "action": "Compare similarity between two documents",
      "description": "Compare similarity between two images/PDF documents",
      "resource": "documentIntelligence"
    },
    {
      "name": "PDF to PNG",
      "value": "pdfToPng",
      "action": "Convert PDF to PNG images",
      "description": "Convert PDF pages to PNG images",
      "resource": "pdfToImage"
    },
    {
      "name": "PDF to WebP",
      "value": "pdfToWebp",
      "action": "Convert pdf to webp images",
      "description": "Convert PDF pages to WebP images",
      "resource": "pdfToImage"
    },
    {
      "name": "PDF to JPG",
      "value": "pdfToJpg",
      "action": "Convert PDF to JPG images",
      "description": "Convert PDF pages to JPG images",
      "resource": "pdfToImage"
    },
    {
      "name": "Fetch HTML",
      "value": "fetchHtml",
      "action": "Fetch rendered HTML from a URL",
      "description": "Navigate to a URL and return the fully-rendered HTML",
      "resource": "urlToHtml"
    },
    {
      "name": "Sign PDF",
      "value": "signPdf",
      "action": "Sign a PDF with a signature image",
      "description": "Stamp a signature image onto one or all pages",
      "resource": "watermark"
    },
    {
      "name": "Add Watermark",
      "value": "addWatermark",
      "action": "Add watermark to PDF or image",
      "description": "Overlay text or a logo across every page",
      "resource": "watermark"
    },
    {
      "name": "Merge PDF",
      "value": "mergePdf",
      "action": "Merge multiple pd fs into one",
      "description": "Combine multiple PDFs into one document",
      "resource": "pdfManipulation"
    },
    {
      "name": "Split PDF",
      "value": "splitPdf",
      "action": "Split a PDF into parts",
      "description": "Split a PDF into separate pages or chunks",
      "resource": "pdfManipulation"
    },
    {
      "name": "Compress PDF",
      "value": "compressPdf",
      "action": "Compress a PDF file",
      "description": "Reduce PDF file size — choose from low to max compression",
      "resource": "pdfManipulation"
    },
    {
      "name": "Compress PDF",
      "value": "compressPdf",
      "action": "Compress a PDF file",
      "description": "Reduce PDF file size — choose from low to max compression",
      "resource": "compressResource"
    },
    {
      "name": "Lock PDF",
      "value": "lockPdf",
      "action": "Password protect a pdf file",
      "description": "Add password protection to a PDF",
      "resource": "pdfSecurity"
    },
    {
      "name": "Unlock PDF",
      "value": "unlockPdf",
      "action": "Remove password protection from PDF",
      "description": "Remove password protection from a PDF",
      "resource": "pdfSecurity"
    },
    {
      "name": "Extract Text / Parse PDF",
      "value": "parsePdf",
      "action": "Parse PDF to JSON",
      "description": "Extract text or structured data from a PDF",
      "resource": "pdfParsing"
    },
    {
      "name": "Upload File",
      "value": "uploadFile",
      "action": "Upload a file",
      "description": "Upload a file to cloud storage — auto-deleted after 30 days",
      "resource": "fileManagement"
    },
    {
      "name": "List Files",
      "value": "listFiles",
      "action": "List uploaded files",
      "description": "List all files uploaded with your API key",
      "resource": "fileManagement"
    },
    {
      "name": "Delete File",
      "value": "deleteFile",
      "action": "Delete an uploaded file",
      "description": "Delete a file from cloud storage by URL",
      "resource": "fileManagement"
    },
    {
      "name": "Create Template",
      "value": "createTemplate",
      "action": "Create a template",
      "description": "Save a reusable HTML/CSS template with optional default parameters",
      "resource": "templates"
    },
    {
      "name": "Delete Template",
      "value": "deleteTemplate",
      "action": "Delete a template",
      "description": "Permanently delete a template",
      "resource": "templates"
    },
    {
      "name": "Get Template",
      "value": "getTemplate",
      "action": "Get a template",
      "description": "Retrieve the full template including HTML and CSS content",
      "resource": "templates"
    },
    {
      "name": "List Templates",
      "value": "listTemplates",
      "action": "List all templates",
      "description": "List all templates owned by your API key",
      "resource": "templates"
    },
    {
      "name": "Update Template",
      "value": "updateTemplate",
      "action": "Update a template",
      "description": "Update one or more fields on an existing template",
      "resource": "templates"
    }
  ]

npm_readme:
  [![Banner image](images/bannerpdfapihub.png)](https://pdfapihub.com)

  # n8n-nodes-pdf-api-hub

  > **The most powerful PDF toolkit for n8n** — 30+ operations, one node.

  Turn any webpage into a PDF, sign documents, extract tables to Excel, OCR scanned pages, merge/split/compress PDFs, and much more — all inside your n8n workflows.

  🔑 **[Get your free API key →](https://pdfapihub.com)**

  ---

  ## 🚀 Install

  1. In n8n, go to **Settings → Community Nodes**
  2. Click **Install a community node**
  3. Enter: `n8n-nodes-pdf-api-hub`
  4. Click **Install**

  > Official guide: [n8n Community Nodes Installation](https://docs.n8n.io/integrations/community-nodes/installation/)

  ## 🔑 Get your API key

  1. Go to **[pdfapihub.com](https://pdfapihub.com)** and sign up (free tier available)
  2. Copy your **API key** from the dashboard

  > 📖 Full API docs: [pdfapihub.com/docs](https://pdfapihub.com/docs)

  ## 🔐 Set up credentials in n8n

  1. In n8n, go to **Credentials → New**
  2. Search for **PDF API Hub API**
  3. Paste your API key → **Save**

  That's it! The node handles everything automatically.

  ---

  ## ✨ What you can do

  | # | Resource | Operations | What it does |
  |---|----------|-----------|-------------|
  | 1 | **HTML / URL to PDF** | HTML to PDF, URL to PDF | Render HTML or capture any webpage as a pixel-perfect PDF with custom paper size, margins, fonts, and viewport |
  | 2 | **Sign PDF** | Sign PDF, Add Watermark | Stamp a signature image or overlay text/logo watermarks on every page |
  | 3 | **Screenshot to Image** | URL to Image, HTML to Image | Capture full-page screenshots or render HTML to PNG with retina support |
  | 4 | **OCR** | PDF OCR, Image OCR | Extract text from scanned documents and photos — supports English, Portuguese, Russian, and custom languages |
  | 5 | **Extract Text & Tables** | Parse PDF | Pull text, tables, or structured layout data from any PDF |
  | 6 | **PDF to Excel & More** | PDF → XLSX, CSV, DOCX, TXT, HTML, PPTX | Convert PDFs into editable spreadsheets, Word docs, presentations, and more |
  | 7 | **Merge / Split** | Merge PDF, Split PDF | Combine multiple PDFs or split one into pages, ranges, or equal chunks |
  | 8 | **Compress PDF** | Compress PDF | Shrink file size with 4 compression levels (low → max) |
  | 9 | **Protect / Unlock** | Lock PDF, Unlock PDF | Add AES-256 encryption with granular permissions, or remove password protection |
  | 10 | **Scrape Website** | Fetch HTML | Get fully-rendered HTML from any URL using a headless browser — perfect for SPAs |
  | 11 | **Images to PDF** | PNG/JPG/WebP to PDF | Combine images into a PDF with page size, orientation, and fit mode options |
  | 12 | **PDF to Image** | PDF to PNG/JPG/WebP | Render PDF pages as images with DPI, resize, and background color control |
  | 13 | **Compare Documents** | Similarity Check | Compare two PDFs or images for visual similarity |
  | 14 | **File Management** | Upload, List, Delete | Manage your cloud-stored files |

  ---

  ## 📖 Operations in detail

  ### 1. HTML / URL to PDF

  Convert HTML or capture any webpage as a PDF.

  | Parameter | Description |
  |-----------|-------------|
  | **HTML Content** | Your HTML template (supports `{{placeholders}}`) |
  | **CSS Content** | Optional CSS injected before rendering |
  | **URL** | Any public webpage URL |
  | **Paper Size** | A0–A6, Letter, Legal, Tabloid, Ledger |
  | **Orientation** | Portrait / Landscape |
  | **Margins** | None, Small, Medium, Large, or Custom (px/mm/cm/in) |
  | **Viewport Size** | Standard, Laptop, Desktop, Mobile, Tablet, or Custom |
  | **Output Format** | URL (hosted 30 days), Base64, or Binary File |
  | **Load Google Fonts** | Pipe-separated font names (e.g. `Roboto|Inter`) |
  | **Dynamic Params** | Key/value pairs for `{{placeholder}}` substitution |
  | **Cookie Accept Text** | Auto-click cookie consent popups (URL mode) |
  | **Wait Until** | Fully Loaded, DOM Ready, Network Quiet, or First Response |
  | **Advanced** | Print background, header/footer, CSS page size, max pages, navigation timeout |

  ---

  ### 2. Sign PDF & Watermark

  **Sign PDF** — stamp a signature image onto your documents.

  | Parameter | Description |
  |-----------|-------------|
  | **PDF Input** | URL, Base64, or Binary File |
  | **Signature** | Image URL or Base64 (PNG/JPG/WebP, transparent PNGs supported) |
  | **Page** | Specific page number, or sign all pages |
  | **Position** | Bottom Right, Bottom Left, Center, Top Right, etc. |
  | **Advanced** | Custom X/Y coordinates, width/height, opacity |

  **Add Watermark** — overlay text or a logo across every page.

  | Parameter | Description |
  |-----------|-------------|
  | **Watermark Text** | Any text (default: CONFIDENTIAL) |
  | **Opacity** | 0 (invisible) to 1 (fully opaque) |
  | **Position** | Center, Top/Bottom Left/Right/Center |
  | **Mode** | Single placement or Tiled (repeats diagonally) |
  | **Advanced** | Text color, font size, image watermark URL |

  ---

  ### 3. Screenshot Website to Image

  Capture webpages or render HTML as PNG images.

  | Parameter | Description |
  |-----------|-------------|
  | **URL / HTML** | Webpage URL or HTML content |
  | **Output Format** | URL, Base64, Both (URL + Base64), or Binary File |
  | **Image Size** | Width × Height in pixels (HTML mode) |
  | **Viewport** | Desktop, Laptop, Mobile, Tablet, or Custom |
  | **Full Page** | Capture the entire scrollable page (URL mode) |
  | **Cookie Accept** | Auto-dismiss consent popups |
  | **Advanced** | Device scale factor (2× for retina), quality (30–100) |

  ---

  ### 4. OCR — Read Scanned PDFs & Images

  Extract text from scanned documents using Tesseract OCR.

  | Parameter | Description |
  |-----------|-------------|
  | **Input** | URL or Binary File (PDF or Image) |
  | **Language** | English, Portuguese, Russian, or custom code (e.g. `eng+hin`) |
  | **Pages** | All, single page, range (`1-3`), or mixed (`1,3,5-8`) |
  | **Detail Level** | Text Only, or Words + Bounding Boxes |
  | **Response Format** | JSON (structured) or Plain Text |
  | **Advanced (PDF)** | DPI (72–400), character whitelist, PSM, OEM |
  | **Advanced (Image)** | Grayscale, sharpen, binarization threshold, resize scale |

  ---

  ### 5. Extract PDF Text & Tables

  Pull structured data from any PDF — no OCR needed for digital PDFs.

  | Parameter | Description |
  |-----------|-------------|
  | **Input** | URL or Binary File |
  | **Parse Mode** | Text Only, Layout (with bounding boxes), Tables, or Full |
  | **Pages** | All or specific page selection |

  ---

  ### 6. PDF to Excel / CSV / Word / PowerPoint

  Convert PDFs into editable formats.

  | Operation | Output | Description |
  |-----------|--------|-------------|
  | **PDF to Excel (XLSX)** | `.xlsx` | Tables extracted into spreadsheet — one sheet per page |
  | **PDF to CSV** | `.csv` | Table data in CSV format |
  | **PDF to Word (DOCX)** | `.docx` | Editable Word document with optional page selection |
  | **PDF to Text** | `.txt` | Plain extracted text |
  | **PDF to HTML** | `.html` | Styled HTML document |
  | **PDF to PowerPoint** | `.pptx` | Each page becomes a slide |
  | **Document to PDF** | `.pdf` | Convert DOCX, PPTX, XLSX, CSV, TXT, ODT → PDF |

  All operations support: URL / Binary File input, URL / Base64 / Binary output, optional page selection, and custom output filename.

  ---

  ### 7. Merge / Split PDF

  **Merge** — combine multiple PDFs into one.

  | Parameter | Description |
  |-----------|-------------|
  | **Input** | PDF URLs (Google Drive links supported) or Binary Files |
  | **Output Format** | URL, Base64, or Binary File |
  | **Output Filename** | Custom name for the merged file |
  | **Advanced** | PDF metadata (title, author, subject, keywords) |

  **Split** — break a PDF into parts.

  | Parameter | Description |
  |-----------|-------------|
  | **Split Mode** | Each Page, Specific Pages (`1-3,5,8-`), or Equal Chunks (2–100) |
  | **Output** | URL (individual + ZIP), Base64 (ZIP), or Binary (ZIP) |

  ---

  ### 8. Compress PDF

  Reduce file size with configurable compression.

  | Parameter | Description |
  |-----------|-------------|
  | **Compression Level** | Low, Medium, High (default), or Max |
  | **Output Format** | URL, Base64, or Binary File |

  > 💡 URL/Base64 responses include compression statistics — original size, compressed size, ratio, and bytes saved.

  ---

  ### 9. Protect / Unlock PDF

  **Lock** — add password protection with enterprise-grade encryption.

  | Parameter | Description |
  |-----------|-------------|
  | **Password** | Required to open the PDF |
  | **Advanced** | Owner password, encryption (AES-256/128, RC4), 8 granular permissions (print, copy, modify, annotate, forms, extract, assemble, high-res print) |

  **Unlock** — remove password protection using multiple decryption engines.

  ---

  ### 10. Scrape Website HTML

  Fetch fully-rendered HTML from any URL using a headless browser.

  | Parameter | Description |
  |-----------|-------------|
  | **URL** | Any public webpage |
  | **Wait Until** | Fully Loaded, DOM Ready, Network Quiet, or First Response |
  | **Wait for Element** | CSS selector to wait for (great for SPAs) |
  | **Extra Delay** | Additional milliseconds after page load |
  | **Viewport** | Desktop, Laptop, Mobile, Tablet, or Custom |
  | **Advanced** | Navigation timeout, custom User-Agent, extra HTTP headers |

  ---

  ### 11–12. Images ↔ PDF

  **Images to PDF** — combine images into a document.

  | Parameter | Description |
  |-----------|-------------|
  | **Page Size** | Original (match image), A3, A4, A5, Letter, Legal, Tabloid |
  | **Fit Mode** | Fit (preserve aspect), Fill (may crop), Stretch, or Original |
  | **Orientation** | Portrait / Landscape |
  | **Margin** | 0–200 points padding |

  **PDF to Image** — render pages as PNG, JPG, or WebP.

  | Parameter | Description |
  |-----------|-------------|
  | **DPI** | 72–300 (higher = sharper) |
  | **Quality** | 1–100 (JPG/WebP) |
  | **Advanced** | Resize width/height, background color for transparent PNGs |

  ---

  ### 13. Compare Documents

  Check visual similarity between two PDFs or images.

  | Parameter | Description |
  |-----------|-------------|
  | **Input** | Two URLs, two Base64 strings, or two Binary Files |
  | **Method** | Auto (default), Feature Match, SSIM, or PHash |

  ---

  ### 14. File Management

  Manage files in your cloud storage.

  | Operation | Description |
  |-----------|-------------|
  | **Upload File** | Upload any file — returns hosted URL (auto-deleted after 30 days) |
  | **List Files** | List all your uploaded files (newest first, limit 1–500) |
  | **Delete File** | Delete a file by URL (ownership enforced) |

  ---

  ## 🔌 How output formats work

  Most operations let you choose how to receive the result:

  | Format | Best for | What you get |
  |--------|---------|-------------|
  | **URL (Hosted Link)** | Sharing, webhooks, storing | A downloadable URL — file hosted for 30 days |
  | **Base64 (Inline Data)** | Embedding in emails, chaining nodes | The file as a base64 string inside JSON |
  | **Binary File** | Piping to Google Drive, S3, Email, etc. | Raw binary data you can pass to any n8n file node |

  > 💡 **Tip**: Choose **Binary File** when you want to pass the output directly to nodes like Write Binary File, Google Drive, AWS S3, or Send Email.

  ---

  ## 💬 Support & resources

  - 🔑 **Get API key**: [pdfapihub.com](https://pdfapihub.com)
  - 📖 **API documentation**: [pdfapihub.com/docs](https://pdfapihub.com/docs)
  - 🐛 **Report a bug**: [GitHub Issues](https://github.com/Pdfapihub/n8n-nodes-pdf-api-hub/issues)
  - 💬 **Questions**: [support@pdfapihub.com](mailto:support@pdfapihub.com)

  ---

  ## 📄 License

  [MIT](LICENSE.md)

  ---

  <p align="center">
    <a href="https://pdfapihub.com">
      <img src="images/bannerpdfapihub.png" alt="PDF API Hub" width="600">
    </a>
    <br>
    <strong>Made with ❤️ by <a href="https://pdfapihub.com">PDF API Hub</a></strong>
  </p>

ai_documentation_summary:
  {"purpose":"A community n8n node that provides a comprehensive toolkit for PDF processing, including parsing, OCR, merging, splitting, compressing, converting formats, and generating screenshots from URLs.","capabilities":["Extract text and structured data from PDFs","Perform OCR on PDFs and images to create searchable text","Merge multiple PDFs into one","Split PDFs by pages, chunks, or individual pages","Compress PDF files","Lock and unlock password-protected PDFs","Convert images (PNG/WebP/JPG) to PDF","Convert PDFs to images (PNG/WebP/JPG)","Convert Office documents (DOCX/DOC/PPTX/XLSX) to PDF","Convert PDFs to DOCX"],"authentication":"API key required (Header: CLIENT-API-KEY)","commonUseCases":["Extracting text from scanned documents using OCR","Combining multiple PDF reports into a single document","Converting website content to PDF for offline viewing","Splitting large PDFs into smaller, manageable files","Converting image files to PDF format for sharing"],"limitations":["OCR on PDFs is limited to a maximum of 8 pages per operation","Requires an active API key from PDF API Hub","Some operations may return ZIP files instead of single PDFs when splitting","URL normalization only handles http/https protocols"],"relatedNodes":["Write Binary File","Google Drive","S3","Email","Read Binary File"]}


node_type: n8n-nodes-paubox.paubox
package_name: n8n-nodes-paubox
display_name: Paubox
description: Send HIPAA-compliant email via Paubox Email API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: paubox_engineering
author_github_url: https://github.com/Paubox/
npm_package_name: n8n-nodes-paubox
npm_version: 1.0.4
community_fetched_at: 2026-04-16T09:43:35.989Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send a message",
          "description": "Send an email message"
        },
        {
          "name": "Get Disposition",
          "value": "getDisposition",
          "action": "Get message disposition",
          "description": "Get email delivery status and tracking information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send",
      "value": "send",
      "action": "Send a message",
      "description": "Send an email message",
      "resource": "message"
    },
    {
      "name": "Get Disposition",
      "value": "getDisposition",
      "action": "Get message disposition",
      "description": "Get email delivery status and tracking information",
      "resource": "message"
    }
  ]

npm_readme:
  # n8n-nodes-paubox

  This is an n8n community node that lets you send HIPAA-compliant email using the [Paubox Email API](https://www.paubox.com/) in your n8n workflows.

  Paubox enables healthcare organizations to send secure, encrypted email without requiring recipients to use portals or passwords.

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

  ## Table of Contents

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

  ## Installation

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

  ### For n8n Cloud or Self-Hosted:

  1. Go to **Settings** > **Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-paubox` in the **Enter npm package name** field
  4. Click **Install**

  ### For Local Development:

  ```bash
  # Navigate to your n8n installation's node_modules directory
  cd ~/.n8n/nodes

  # Clone or install the package
  npm install n8n-nodes-paubox

  # Restart n8n
  ```

  ### Manual Installation for Testing:

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

  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Link for local testing
  npm link

  # In your n8n installation directory
  cd ~/.n8n
  npm link n8n-nodes-paubox

  # Restart n8n
  ```

  ## Prerequisites

  To use this node, you need:

  1. **A Paubox Account**: Sign up at [paubox.com](https://www.paubox.com/)
  2. **API Credentials**:
     - API Username (your API endpoint username)
     - API Key (your authentication token)
  3. **Verified Domain**: Your sending email domain must be verified with Paubox
  4. **n8n Installation**: Version 0.187.0 or later

  ## Operations

  The Paubox node supports the following operations:

  ### Message

  #### Send

  Send a HIPAA-compliant email message.

  **Required Fields:**

  - **From**: Sender email address (must match your verified domain)
  - **To**: Recipient email address(es) - comma-separated for multiple recipients
  - **Subject**: Email subject line
  - **Content**: Either plain text, HTML, or both

  **Optional Fields:**

  - **CC**: Carbon copy recipients
  - **BCC**: Blind carbon copy recipients
  - **Reply To**: Reply-to email address
  - **Attachments**: File attachments (base64-encoded)
  - **Allow Non-TLS**: Allow delivery over non-TLS (not HIPAA-compliant for PHI)
  - **Force Secure Notification**: Force Paubox Secure Message delivery
  - **Override Open Tracking**: Enable open tracking for this message
  - **Override Link Tracking**: Enable click tracking (up to 1000 links)
  - **Unsubscribe URL**: URL for unsubscribe tracking
  - **List-Unsubscribe Header**: Standard unsubscribe header
  - **Custom Headers**: Additional email headers (must start with X-)

  **Returns:**

  - `sourceTrackingId`: Unique identifier for tracking the message
  - `data`: Status message
  - `customHeaders`: Any custom headers that were set

  #### Get Disposition

  Retrieve delivery status and tracking information for a sent message.

  **Required Fields:**

  - **Source Tracking ID**: The tracking ID returned when the message was sent

  **Returns:**

  - Delivery status (delivered, bounced, processing, etc.)
  - Open tracking information (if enabled)
  - Click tracking information (if enabled)
  - Unsubscribe status
  - Delivery timestamps

  ## Credentials

  The Paubox node requires the following credentials:

  ### Paubox API Credentials

  1. In n8n, go to **Credentials** > **New**
  2. Search for **Paubox API**
  3. Enter your credentials:
     - **API Username**: Your Paubox Email API endpoint username
     - **API Key**: Your Paubox authentication token

  To obtain these credentials:

  1. Log in to your [Paubox account](https://paubox.com/login)
  2. Navigate to your API settings
  3. Copy your API Username and API Key

  **Note**: The Paubox API uses a custom authentication format with the prefix `Token token=`. This is handled automatically by the node.

  ## Compatibility

  - **n8n Version**: 0.187.0 or later
  - **Tested With**: n8n 1.0.0+
  - **Node Version**: Requires Node.js 16.x or later

  ## Usage

  ### Example 1: Send a Simple Email

  ```
  1. Add a Paubox node to your workflow
  2. Select Operation: Send
  3. Configure:
     - From: doctor@yourhospital.com
     - To: patient@email.com
     - Subject: Your Lab Results
     - Content Type: HTML
     - HTML Content: <h1>Your results are ready</h1><p>Please log in to view them.</p>
  4. Execute the node
  ```

  ### Example 2: Send Email with Attachment

  ```
  1. Use a "Read Binary File" node to read your file
  2. Use a "Function" node to convert to base64:
     return items.map(item => ({
       json: {
         fileContent: item.binary.data.toString('base64'),
         fileName: 'results.pdf'
       }
     }));
  3. Add Paubox node with:
     - Basic fields (From, To, Subject, Content)
     - In Additional Fields > Attachments:
       - File Name: {{ $json.fileName }}
       - Content Type: application/pdf
       - Content (Base64): {{ $json.fileContent }}
  ```

  ### Example 3: Check Message Status

  ```
  1. After sending a message, save the sourceTrackingId
  2. Add another Paubox node
  3. Select Operation: Get Disposition
  4. Source Tracking ID: {{ $json.sourceTrackingId }}
  5. Execute to see delivery status
  ```

  ### Example 4: Send Secure Email to Multiple Recipients

  ```
  1. Add Paubox node
  2. Configure:
     - From: admin@clinic.com
     - To: patient1@email.com, patient2@email.com
     - Subject: Monthly Health Newsletter
     - CC: doctor@clinic.com
     - Force Secure Notification: true (recipients get secure pickup link)
     - Override Open Tracking: true
  ```

  ## API Notes and Limitations

  - **Base URL**: The API endpoint includes your username: `https://api.paubox.net/v1/{api_username}`
  - **Authentication**: Custom format `Authorization: Token token={api_key}`
  - **Content Requirement**: At least one of `text/plain` or `text/html` must be provided
  - **Attachments**: Must be base64-encoded
  - **Batch Sending**: For bulk messages, use multiple executions or implement bulk endpoint
  - **Tracking**: The `sourceTrackingId` from send operation is needed for disposition checks
  - **Rate Limits**: Check Paubox documentation for current API rate limits
  - **HIPAA Compliance**: Setting `allowNonTLS` to `true` is not HIPAA-compliant if the message contains PHI

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Paubox Email API Documentation](https://docs.paubox.com/)
  - [Paubox Support](https://www.paubox.com/support/)

  ## Development

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Watch mode for development
  npm run dev

  # Lint code
  npm run lint

  # Format code
  npm run format
  ```

  ## Version History

  - **1.0.0**: Initial release
    - Send Message operation
    - Get Message Disposition operation
    - Full support for attachments, custom headers, and tracking

  ## Contributing

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

  ## License

  [MIT](LICENSE)

  ## Support

  If you encounter any issues or have questions:

  1. Check the [n8n community forum](https://community.n8n.io/)
  2. Review [Paubox API documentation](https://docs.paubox.com/)
  3. Open an issue in this repository

  ## Disclaimer

  This is a community-created node and is not officially supported by Paubox or n8n. Use at your own discretion.

ai_documentation_summary:
  {"purpose":"Sends HIPAA-compliant, encrypted emails via the Paubox Email API, enabling secure healthcare communication without requiring recipients to use portals or passwords.","capabilities":["Send encrypted emails with plain text, HTML, or both content types","Support for multiple recipients (To, CC, BCC)","Attach files (base64-encoded)","Track message delivery status","Track email opens and clicks","Manage unsubscribe links","Custom email headers","Force secure notification delivery"],"authentication":"API key required (API Username and API Key)","commonUseCases":["Sending lab results to patients","Healthcare provider notifications","Secure patient communications","HIPAA-compliant email campaigns","Monitoring email delivery and engagement"],"limitations":["Requires n8n version 0.187.0 or later","Requires Node.js 16.x or later","Requires a verified domain with Paubox","Allows non-TLS delivery which is not HIPAA-compliant for PHI","Custom headers must start with X-"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.binaryFile","n8n-nodes-base.function"]}


node_type: @openhab/n8n-nodes-openhab.openHab
package_name: @openhab/n8n-nodes-openhab
display_name: openHAB
category: Community
development_style: declarative
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: openhabfoundation
author_github_url: https://github.com/openhab/openhab-n8n.git
npm_package_name: @openhab/n8n-nodes-openhab
npm_version: 0.4.7
community_fetched_at: 2026-04-16T09:43:35.990Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Interact with openHAB through its REST API, including remote access via myopenHAB.org. Inline docs explain typical flows (send commands, query states, trigger rules, etc.).

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "item",
      "options": [
        {
          "name": "Item",
          "value": "item",
          "description": "Work with items: list, read state, send command, or update state. Great for toggling lights, reading sensors, or writing virtual switches."
        },
        {
          "name": "Thing",
          "value": "thing",
          "description": "Inspect things and their status."
        },
        {
          "name": "Rule",
          "value": "rule",
          "description": "List or trigger automation rules."
        },
        {
          "name": "System",
          "value": "system",
          "description": "Check system info for quick health checks."
        }
      ],
      "displayName": "Resource"
    }
  ]

npm_readme:
  # n8n openHAB Community Node

  <img align="right" width="220" src="./nodes/openHAB/openhab.svg" type="image/svg+xml"/>

  [![GitHub Actions Build Status](https://github.com/openhab/openhab-n8n/actions/workflows/ci-build.yml/badge.svg?branch=main)](https://github.com/openhab/openhab-n8n/actions/workflows/ci-build.yml)
  [![MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  Custom n8n node for interacting with the openHAB REST API, with optional myopenHAB cloud access.

  ## Features

  - Send commands or update state for items (lights, sensors, virtual switches, etc.).
  - Read item state, metadata, and list/filter items by tags.
  - Inspect things and their status.
  - List, trigger, enable/disable rules.
  - Fetch system info for quick health checks.
  - Works against local openHAB or remotely through `myopenhab.org`.

  ## Requirements

  - openHAB with REST API enabled (default on openHAB 3+).
  - For local: openHAB API token (Settings → API Security → Create Token).
  - For remote via myopenHAB: myopenHAB account email + password. Optionally add an openHAB API token for admin-level endpoints.
  - n8n 1.0+ with custom nodes enabled.

  ## Installation

  1. Install from npm in n8n:
     - **n8n UI**: Settings -> Community Nodes -> Install and enter `@openhab/n8n-nodes-openhab`
     - **CLI (in your n8n deployment)**: `npm install @openhab/n8n-nodes-openhab`
  2. Restart n8n so it discovers the new node.

  ### Local development install

  1. Build the node:
     ```bash
     npm install
     npm run build
     ```
  2. Point n8n custom extensions to this project path with `N8N_CUSTOM_EXTENSIONS` (or copy `dist` into your custom nodes directory).
  3. Restart n8n.

  ## Usage

  1. Add the **openHAB** node to a workflow.
  2. Set credentials:
     - **Local**: Base URL (e.g., `http://localhost:8080`) + API token.
     - **Cloud (myopenHAB)**: Choose “myopenHAB Account” in credentials and enter your myopenHAB login. If needed, set optional **openHAB API Token (optional)** to send `X-OPENHAB-TOKEN`.
  3. Choose a resource:
     - **Item**: list/get/state/command/update/metadata.
     - **Thing**: list/get/status.
     - **Rule**: list/run/enable/disable.
     - **System**: system info.
  4. Execute the node; outputs are JSON objects ready for downstream n8n steps.

  ### Usage examples

  1. Read a light state:
     - Resource: `Item`
     - Operation: `Get State`
     - Item Name: `LivingRoomLight`
  2. Turn a switch on:
     - Resource: `Item`
     - Operation: `Send Command`
     - Item Name: `KitchenSwitch`
     - Command: `ON`
  3. Run a rule:
     - Resource: `Rule`
     - Operation: `Run`
     - Rule UID: `evening_scene`

  ### Notes

  - Authentication is applied through the credential type (used by `httpRequestWithAuthentication`), so each request automatically uses the selected auth mode.
  - In myopenHAB cloud mode, you can add an optional openHAB API token for endpoints that require elevated permissions.
  - Self-signed certificates are supported only for local openHAB HTTPS, not for myopenHAB cloud authentication.
  - When sending commands, use values your item accepts (e.g., `ON`, `OFF`, `22`, `50%`, `UP`, `DOWN`).

  ## Development

  - Lint: `npm run lint`
  - Build: `npm run build`
  - TypeScript config targets Node 18+.

  ## License

  MIT. See [LICENSE](LICENSE).

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with openHAB systems via its REST API, supporting both local installations and remote access through myopenHAB cloud services.","capabilities":["Send commands to update item states (lights, sensors, virtual switches)","Read item state, metadata, and list/filter items by tags","Inspect things and their current status","List, trigger, enable, and disable automation rules","Fetch system information for health checks","Support for local openHAB instances and myopenHAB cloud","Authentication via API tokens or myopenHAB account credentials"],"authentication":"API token (local) or myopenHAB account credentials (cloud); optional openHAB API token for elevated permissions","commonUseCases":["Automate smart home device control (turn on/off lights, adjust thermostats)","Monitor sensor states and trigger actions based on thresholds","Execute automation rules remotely from n8n workflows","Perform system health checks on openHAB instances"],"limitations":["Self-signed certificates are only supported for local openHAB HTTPS, not for myopenHAB cloud","Requires openHAB with REST API enabled (default on openHAB 3+)","Requires n8n 1.0+ with custom nodes enabled"],"relatedNodes":["httpRequest","if","delay","trigger"]}


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

updated_at: 2026-04-16 09:43:35
author_name: jhumanj
author_github_url: https://github.com/OpnForm/
npm_package_name: n8n-nodes-opnform
npm_version: 0.1.7
community_fetched_at: 2026-04-16T09:43:35.990Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # OpnForm n8n Trigger (Community Node)

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

  ## What is OpnForm?

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

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

  ## What this integration does

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

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

  ## API Endpoints Used

  This integration uses the following OpnForm API endpoints:

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

  ## Install (local development)

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

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

  ## Release your node

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

  ```bash
  n8n-node release
  ```

  Or using npm:

  ```bash
  npm run release
  ```

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

  ```bash
  npm login
  ```

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

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

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

  ## Authentication

  ### Creating a Personal Access Token

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

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

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

  ### Required Abilities

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

  ### Configuring Credentials in n8n

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

  ## Usage Instructions

  ### Setting Up the Trigger

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

  ### Workflow Activation

  When you activate your n8n workflow:

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

  ### Workflow Deactivation

  When you deactivate your n8n workflow:

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

  ## Example Workflows

  ### Example 1: Send Form Submission to Slack

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

  **Workflow Steps:**

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

  ### Example 2: Save Submissions to Google Sheets

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

  **Workflow Steps:**

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

  ### Example 3: Conditional Email Notifications

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

  **Workflow Steps:**

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

  ## How it works

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

  ## License

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

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows automatically when new form submissions are received in an OpnForm instance by creating and managing webhook integrations.","capabilities":["Receive real-time form submission data via webhooks","Automatically process form submissions","Integrate with other services and tools","Transform and route submission data","Trigger complex multi-step workflows","Create webhook integration subscriptions","Delete webhook integration subscriptions when workflow is deactivated","List available workspaces and forms for configuration"],"authentication":"Personal Access Token (API Key) with specific abilities required","commonUseCases":["Send form submission data to Slack or other messaging platforms","Save form submissions to Google Sheets or databases","Automate follow-up emails based on form responses","Route submissions to different internal systems based on form fields","Create automated reports from form data"],"limitations":["Requires OpnForm Personal Access Token with 'manage-integrations', 'workspaces-read', and 'forms-read' abilities","Webhook integration is created/destroyed based on workflow activation state","Requires OpnForm instance access (self-hosted or cloud)","Community node status (may not be officially maintained)"],"relatedNodes":["OpnForm Form","OpnForm Form Fields","OpnForm Form Actions","OpnForm Form Templates","OpnForm Form Submissions"]}


node_type: n8n-nodes-postproxy.postProxy
package_name: n8n-nodes-postproxy
display_name: PostProxy
description: Publish and schedule posts across multiple social media platforms
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: dmitrysereda
author_github_url: https://github.com/postproxy/
npm_package_name: n8n-nodes-postproxy
npm_version: 0.2.8
community_fetched_at: 2026-04-16T09:43:35.991Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Post",
          "value": "post"
        },
        {
          "name": "Profile",
          "value": "profile"
        },
        {
          "name": "Profile Group",
          "value": "profileGroup"
        }
      ],
      "description": "The resource to operate on",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a post",
          "description": "Create and publish or schedule a post"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a post",
          "description": "Delete a post"
        },
        {
          "name": "Get Post Details",
          "value": "get",
          "action": "Get post details",
          "description": "Get a post by ID"
        },
        {
          "name": "List Posts",
          "value": "getMany",
          "action": "List posts",
          "description": "Get many posts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a post",
          "description": "Update a post"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a draft post",
          "description": "Publish a draft post"
        }
      ],
      "description": "The operation to perform",
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "post"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Profile Details",
          "value": "get",
          "action": "Get profile details",
          "description": "Get a profile by ID"
        },
        {
          "name": "List Profiles",
          "value": "getMany",
          "action": "List profiles",
          "description": "Get many profiles"
        }
      ],
      "description": "The operation to perform",
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "profile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "List Profile Groups",
          "value": "getMany",
          "action": "List profile groups",
          "description": "Get many profile groups"
        }
      ],
      "description": "The operation to perform",
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "profileGroup"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a post",
      "description": "Create and publish or schedule a post",
      "resource": "post"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a post",
      "description": "Delete a post",
      "resource": "post"
    },
    {
      "name": "Get Post Details",
      "value": "get",
      "action": "Get post details",
      "description": "Get a post by ID",
      "resource": "post"
    },
    {
      "name": "List Posts",
      "value": "getMany",
      "action": "List posts",
      "description": "Get many posts",
      "resource": "post"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a post",
      "description": "Update a post",
      "resource": "post"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish a draft post",
      "description": "Publish a draft post",
      "resource": "post"
    },
    {
      "name": "Get Profile Details",
      "value": "get",
      "action": "Get profile details",
      "description": "Get a profile by ID",
      "resource": "profile"
    },
    {
      "name": "List Profiles",
      "value": "getMany",
      "action": "List profiles",
      "description": "Get many profiles",
      "resource": "profile"
    },
    {
      "name": "List Profile Groups",
      "value": "getMany",
      "action": "List profile groups",
      "description": "Get many profile groups",
      "resource": "profileGroup"
    }
  ]

npm_readme:
  # n8n-nodes-postproxy

  Community n8n node for the PostProxy API.

  PostProxy provides a unified API to publish and schedule posts across multiple social media platforms (X/Twitter, Facebook, Instagram, etc.) with built-in retries, quota handling, and per-account status tracking.

  ## What is PostProxy?

  PostProxy is a unified API that simplifies social media content publishing by:
  - **Unified API**: Post to multiple platforms (X, Facebook, Instagram, etc.) through a single interface
  - **Built-in Scheduling**: Schedule posts for future publishing with automatic timezone handling
  - **Error Management**: Automatic retries and quota management - PostProxy handles rate limits and retries automatically
  - **Per-Account Status Tracking**: Get detailed status for each account when publishing to multiple accounts

  ## Features

  - **List Profile Groups**: Get all your profile groups to organize your social media profiles
  - **List Profiles**: Get all connected social media profiles across all platforms with pagination
  - **Get Profile Details**: Get detailed information about a specific profile (including `expires_at` and `post_count`)
  - **Create Posts**: Publish posts to multiple profiles via profile groups
  - **Get Post Details**: Get detailed information about a specific post with platform-specific status and insights
  - **List Posts**: Get all your posts with full pagination support (`page`, `per_page`, `total`)
  - **Update Posts**: Update post content and scheduled time
  - **Delete Posts**: Delete posts by ID
  - **Media Support**: Attach images or videos to your posts via URLs
  - **Platform Parameters**: Pass platform-specific parameters (e.g., alt text, captions) when creating posts
  - **Scheduled Publishing**: Schedule posts for specific dates and times
  - **Post Status Tracking**: Track post status (`pending`, `processed`, `draft`) and platform-specific statuses
  - **Insights**: Access platform insights (impressions, engagement) when available
  - **Error Handling**: Comprehensive error handling with request ID logging

  ## Requirements

  - n8n v1.0.0 or higher
  - PostProxy API key (see [Getting Started](#getting-started))

  ## Installation

  ### For n8n Cloud or Self-hosted

  ```bash
  npm install n8n-nodes-postproxy
  ```

  After installation, restart n8n. The PostProxy node will appear in the node list under "Transform" category.

  ### For n8n Desktop

  1. Open n8n Desktop
  2. Go to Settings → Community Nodes
  3. Click "Install a community node"
  4. Enter: `n8n-nodes-postproxy`
  5. Click "Install"

  ## Getting Started

  ### 1. Get Your PostProxy API Key

  1. Sign up at [postproxy.dev](https://postproxy.dev)
  2. Navigate to your account settings
  3. Generate or copy your API key
  4. For detailed instructions, see the [PostProxy Authentication documentation](https://postproxy.dev/getting-started/authentication/)

  ### 2. Configure Credentials in n8n

  1. Add a PostProxy node to your workflow
  2. Click on "Credential to connect with" → "Create New Credential"
  3. Enter your PostProxy API key
  4. Save the credential

  ### 3. Use the Node

  #### List Profile Groups

  1. Add a PostProxy node
  2. Select **Resource**: Profile Group
  3. Select **Operation**: List Profile Groups
  4. Execute the node to see all your profile groups

  #### List Profiles

  1. Add a PostProxy node
  2. Select **Resource**: Profile
  3. Select **Operation**: List Profiles
  4. Execute the node to see all connected social media profiles

  #### Create a Post

  1. Add a PostProxy node
  2. Select **Resource**: Post
  3. Select **Operation**: Create
  4. Choose **Publish Type**:
     - **Publish now**: Post immediately
     - **Schedule**: Set a specific date and time
  5. Fill in:
     - **Profile Group**: Select the profile group to publish to
     - **Profile**: Select one or more profiles from the group
     - **Content**: The text content of your post
     - **Media URLs** (optional): URLs of images or videos to attach
     - **Publish At** (if scheduled): The date and time to publish
  6. Execute the node

  #### Get Post Details

  1. Add a PostProxy node
  2. Select **Resource**: Post
  3. Select **Operation**: Get Post Details
  4. Enter the **Post ID**
  5. Execute to get detailed information about the post

  #### List Posts

  1. Add a PostProxy node
  2. Select **Resource**: Post
  3. Select **Operation**: List Posts
  4. Choose whether to **Return All** posts or set a **Limit**
  5. Execute to get a list of your posts

  ## Examples

  ### Example 1: Simple Post

  Create a simple text post to profiles in a group:

  ```json
  {
    "resource": "post",
    "operation": "create",
    "publishType": "publish_now",
    "profileGroup": "zbNFmz",
    "profiles": ["yqWUvR", "y7dU5N"],
    "content": "Hello from n8n! 🚀",
    "media": []
  }
  ```

  **Note**: IDs are now alphanumeric strings (e.g., `"zbNFmz"`, `"yqWUvR"`), not numeric.

  ### Example 2: Scheduled Post with Media

  Schedule a post with an image for multiple profiles:

  ```json
  {
    "resource": "post",
    "operation": "create",
    "publishType": "schedule",
    "publish_at": "2024-12-25T10:00:00Z",
    "profileGroup": "zbNFmz",
    "profiles": ["yqWUvR"],
    "content": "Check out our new product!",
    "media": ["https://example.com/image.jpg"]
  }
  ```

  ### Example 3: Post with Platform Parameters

  Create a post with platform-specific parameters:

  ```json
  {
    "resource": "post",
    "operation": "create",
    "publishType": "publish_now",
    "profileGroup": "zbNFmz",
    "profiles": ["yqWUvR"],
    "content": "Check out our new product!",
    "media": ["https://example.com/image.jpg"],
    "platformParams": "{\"alt_text\": \"Product image description\"}"
  }
  ```

  ### Example 4: List Posts with Pagination

  Get a list of your posts with pagination:

  ```json
  {
    "resource": "post",
    "operation": "getMany",
    "returnAll": false,
    "limit": 10,
    "page": 0,
    "per_page": 10
  }
  ```

  **Response includes**:
  - `total`: Total number of posts
  - `page`: Current page number (0-indexed)
  - `per_page`: Items per page
  - `data`: Array of posts with fields: `id`, `content`, `status`, `draft`, `scheduled_at`, `created_at`, `platforms` (with `network`, `status`, `params`, `attempted_at`, `insights`)

  ### Example 5: Get Post Details

  Get details of a specific post:

  ```json
  {
    "resource": "post",
    "operation": "get",
    "postId": "NWLtbA",
    "simplify": true
  }
  ```

  **Response fields**:
  - `id`: Post ID (alphanumeric string)
  - `content`: Post content
  - `status`: Post status (`pending`, `processed`, etc.)
  - `draft`: Whether post is a draft
  - `scheduled_at`: Scheduled publish time (if scheduled)
  - `created_at`: Creation timestamp
  - `platforms`: Array with platform-specific information including `network`, `status`, `params`, `attempted_at`, and `insights`

  ## Understanding Profile Groups

  PostProxy organizes your social media profiles into groups. This allows you to:
  - **Publish to multiple platforms at once** by selecting a group
  - **Organize profiles by campaign, client, or purpose** for better management
  - **Easily manage which profiles receive each post** with granular control

  When creating a post, you first select a Profile Group, then choose one or more Profiles from that group. This two-step approach gives you flexibility while maintaining organization.

  For more details on selecting profiles, see [Choosing Account IDs](docs/choosing-account-ids.md).

  ## Workflow Examples

  ### RSS Feed → PostProxy

  1. **RSS Feed Read** node: Fetch latest articles
  2. **Code** node: Extract title and link
  3. **PostProxy** node (List Profile Groups): Get your profile groups
  4. **PostProxy** node (Create Post): Create post with article title and link, selecting profile group and profiles

  ### Airtable → PostProxy

  1. **Airtable Trigger** node: Watch for new rows
  2. **PostProxy** node (Create Post): Create post from Airtable data
     - Store profile group ID in Airtable
     - Map profile selections from Airtable columns
  3. **Airtable Update** node: Mark row as published with post ID

  ### Webhook Queue → Scheduled Posts

  1. **Webhook** node: Receive post requests (including profile group and profile IDs)
  2. **PostProxy** node (Create Post): Create scheduled post with data from webhook
  3. **Response** node: Return post status and post ID

  ### Profile Discovery Workflow

  1. **PostProxy** node (List Profile Groups): Get all profile groups
  2. **PostProxy** node (List Profiles): Get all available profiles
  3. **Code** node: Filter profiles by platform (e.g., only Twitter/X profiles)
  4. **PostProxy** node (Create Post): Create posts for filtered profiles

  For more detailed examples, see the [examples/](examples/) directory.

  ## Documentation

  - [Choosing Account IDs](docs/choosing-account-ids.md) - How to select the right accounts for your posts
  - [Scheduling Posts](docs/scheduling-posts.md) - Understanding immediate vs scheduled publishing

  ## Rate Limits and Processing

  PostProxy automatically manages rate limits and retries for you. When you create a post:

  - If rate limits are hit, PostProxy will queue the post and publish it when quota is available
  - Posts may show as "pending" or "processing" initially - this is normal
  - PostProxy handles retries automatically, so you don't need to worry about temporary failures

  The node returns the full API response, including per-platform statuses in the `platforms` array, so you can see the status of each platform's publication.

  ### Post Status Values

  - **`pending`**: Post is queued and waiting to be published
  - **`processed`**: Post has been processed (may be published or failed)
  - **`draft`**: Post is saved as a draft

  ### Platform Status Values (in `platforms` array)

  - **`pending`**: Platform-specific publication is pending
  - **`published`**: Successfully published to the platform
  - **`failed`**: Publication failed (check error details if available)

  ### Response Structure

  Posts now include:
  - `platforms`: Array of platform-specific information with `network`, `status`, `params`, `attempted_at`, and `insights` (when available)
  - `draft`: Boolean indicating if post is a draft
  - `status`: Overall post status
  - `insights`: Platform insights (impressions, engagement) when available from the platform

  ## Error Handling

  The node provides clear error messages for common issues:

  - **Invalid API Key**: Clear error message with request ID
  - **Network Issues**: Helpful messages for connection problems
  - **API Errors**: Detailed error messages from PostProxy API (4xx/5xx)
  - **Request Timeouts**: Automatic timeout handling (30 seconds)

  All errors include request IDs when available for easier debugging.

  ## Support

  - **Documentation**: [PostProxy API Docs](https://postproxy.dev/getting-started/overview/)
  - **Issues**: Report bugs in the GitHub repository
  - **SLA**: Best effort support
  - **API Version**: Compatible with PostProxy API v1

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"A community n8n node that connects to the PostProxy API to publish and schedule posts across multiple social media platforms (X/Twitter, Facebook, Instagram) with unified management and automatic error handling.","capabilities":["Publish posts to multiple social media platforms via a single interface","Schedule posts for future publishing with automatic timezone handling","List and manage profile groups and social media profiles","Create posts with text content and media attachments (images/videos via URLs)","Update and delete existing posts by ID","Retrieve detailed post information including platform-specific status and insights","Handle platform-specific parameters (e.g., alt text, captions)","Automatic retries and quota management for rate limits","Track per-account status and post status (pending, processed, draft)","Pagination support for listing posts and profiles"],"authentication":"API key required (PostProxy API key)","commonUseCases":["Automated social media content publishing across multiple accounts","Scheduled social media campaigns with time-based publishing","Centralized management of posts across X, Facebook, and Instagram","Monitoring post performance and status across platforms","Batch posting to multiple profile groups simultaneously"],"limitations":["Community node (may not be maintained by n8n core team)","Requires external PostProxy API account and key","Media must be provided via URLs (no direct file upload)","Platform-specific parameters require JSON formatting in platformParams field"],"relatedNodes":["HTTP Request","Set","Split In Batches","Wait Until"]}


node_type: n8n-nodes-pagepixels-screenshots.pagePixelsScreenshots
package_name: n8n-nodes-pagepixels-screenshots
display_name: PagePixels Screenshots
description: Capture website screenshots using the PagePixels API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: pagepixels
author_github_url: https://github.com/PagePixels/
npm_package_name: n8n-nodes-pagepixels-screenshots
npm_version: 1.0.0
community_fetched_at: 2026-04-16T09:43:35.992Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "screenshot",
      "options": [
        {
          "name": "Screenshot",
          "value": "screenshot"
        },
        {
          "name": "Metadata",
          "value": "metadata"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "quickSnap",
      "options": [
        {
          "name": "AI Analysis Screenshot",
          "value": "aiAnalysisScreenshot",
          "action": "Take a screenshot and analyze it with AI",
          "routing": {
            "request": {
              "qs": {
                "analyze_image_with_ai": true
              },
              "url": "/snap",
              "method": "POST"
            }
          },
          "description": "Capture a web page screenshot and run AI analysis with a custom prompt"
        },
        {
          "name": "Quick Snap",
          "value": "quickSnap",
          "action": "Take a screenshot of a web page",
          "routing": {
            "request": {
              "url": "/snap",
              "method": "POST"
            }
          },
          "description": "Capture an instant screenshot from a URL"
        },
        {
          "name": "Real Location Screenshot",
          "value": "realLocationScreenshot",
          "action": "Capture a screenshot from a real geographic location",
          "routing": {
            "request": {
              "url": "/snap",
              "method": "POST"
            }
          },
          "description": "Capture screenshots using residential IPs within a chosen location"
        },
        {
          "name": "Snap HTML",
          "value": "snapHtml",
          "action": "Take a screenshot of custom HTML",
          "routing": {
            "request": {
              "url": "/snap_html",
              "method": "POST"
            }
          },
          "description": "Render supplied HTML and capture it as an image"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "screenshot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listRealLocations",
      "options": [
        {
          "name": "List Real Locations",
          "value": "listRealLocations",
          "action": "List real locations",
          "routing": {
            "request": {
              "url": "/real_locations",
              "method": "GET"
            }
          },
          "description": "Retrieve the available residential proxy locations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "metadata"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "AI Analysis Screenshot",
      "value": "aiAnalysisScreenshot",
      "action": "Take a screenshot and analyze it with AI",
      "routing": {
        "request": {
          "qs": {
            "analyze_image_with_ai": true
          },
          "url": "/snap",
          "method": "POST"
        }
      },
      "description": "Capture a web page screenshot and run AI analysis with a custom prompt",
      "resource": "screenshot"
    },
    {
      "name": "Quick Snap",
      "value": "quickSnap",
      "action": "Take a screenshot of a web page",
      "routing": {
        "request": {
          "url": "/snap",
          "method": "POST"
        }
      },
      "description": "Capture an instant screenshot from a URL",
      "resource": "screenshot"
    },
    {
      "name": "Real Location Screenshot",
      "value": "realLocationScreenshot",
      "action": "Capture a screenshot from a real geographic location",
      "routing": {
        "request": {
          "url": "/snap",
          "method": "POST"
        }
      },
      "description": "Capture screenshots using residential IPs within a chosen location",
      "resource": "screenshot"
    },
    {
      "name": "Snap HTML",
      "value": "snapHtml",
      "action": "Take a screenshot of custom HTML",
      "routing": {
        "request": {
          "url": "/snap_html",
          "method": "POST"
        }
      },
      "description": "Render supplied HTML and capture it as an image",
      "resource": "screenshot"
    },
    {
      "name": "List Real Locations",
      "value": "listRealLocations",
      "action": "List real locations",
      "routing": {
        "request": {
          "url": "/real_locations",
          "method": "GET"
        }
      },
      "description": "Retrieve the available residential proxy locations",
      "resource": "metadata"
    }
  ]

npm_readme:
  # n8n-nodes-pagepixels-screenshots

  This n8n community node lets you trigger the PagePixels Screenshots API directly from your workflows. Capture high-fidelity website screenshots, render custom HTML, request real location captures (from countries and states around the world), and pair each image with AI-powered analysis, no custom HTTP node required.

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

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

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation, then install this package with:

  ```bash
  npm install n8n-nodes-pagepixels-screenshots
  ```

  Restart n8n and the node will appear in the editor.

  ## Operations

  All operations return the raw PagePixels response, including the screenshot asset URLs, embed links, job IDs, and AI metadata when available.

  - **Quick Snap** – Capture an instant screenshot from any public URL.
  - **Snap HTML** – Render supplied HTML (with optional CSS/JS injection) and capture the output.
  - **Real Location Screenshot** – Capture a page through PagePixels’ residential proxy network (countries, regions, and major cities).
  - **AI Analysis Screenshot** – Take a screenshot and run an AI visual analysis using your custom prompt.

  Each operation exposes the full set of optional PagePixels parameters — viewport size, wait conditions, multi-step actions, ad/cookie blocking, geolocation overrides, headers, cookies, caching, and more.

  ## Credentials

  Configure one of the two supported authentication strategies in n8n.

  ### API key

  1. Sign in to [PagePixels](https://pagepixels.com) and create an API key in the dashboard.
  2. Add the **PagePixels API** credential in n8n and paste the key.
  3. Leave “Use Bearer Prefix” enabled unless your key must be sent in plain text.
  4. (Optional) Provide extra headers in the node if you need to override the default `Authorization: Bearer` header.

  ### OAuth2

  1. Register an OAuth app by contacting support for production credentials.
  2. In n8n, create a **PagePixels OAuth2 API** credential.
  3. Use `https://pagepixels.com/oauth/authorize` as the authorization URL and `https://pagepixels.com/oauth/token` as the access token URL (defaults are pre-filled).
  4. Enter your client ID and client secret, then complete the OAuth handshake when prompted in a workflow.

  ## Compatibility

  Compatible with n8n v1.60.0 or later.

  ## Usage

  1. Drop the **PagePixels Screenshots** node into your workflow and select the desired operation.
  2. Choose the authentication method and credential.
  3. Provide the required fields (`URL`, `HTML Content`, `AI Prompt`, or `Proxy Location`, depending on the operation).
  4. Expand **Options** to set advanced rendering controls (multi-step actions, viewport, selectors, blocking flags, etc.).
  5. Execute the workflow to receive the screenshot metadata, including direct download links and analysis output.

  Tip: Chain the output into an **HTTP Request**, **Webhook**, or **Drive** node to archive images, notify teams, or trigger downstream automations.

  ## Resources

  - [PagePixels Screenshots API documentation](https://pagepixels.com/app/screenshots-api-documentation)
  - [PagePixels support](https://pagepixels.com/support)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

ai_documentation_summary:
  {"purpose":"Captures high-fidelity website screenshots, renders custom HTML, performs real-world location captures, and generates AI-powered visual analysis directly from n8n workflows.","capabilities":["Quick Snap: Capture screenshots from public URLs","Snap HTML: Render custom HTML with optional CSS/JS injection","Real Location Screenshot: Capture pages via residential proxy network from specific countries/regions","AI Analysis Screenshot: Generate screenshots with custom AI visual analysis prompts","Custom viewport and size control","Multi-step actions and selectors","Ad and cookie blocking","Geolocation overrides","Custom headers and cookies","Caching support"],"authentication":"API key or OAuth2","commonUseCases":["Automated website monitoring and archiving","Product page visual analysis for e-commerce","Competitor landscape tracking with location-specific views","Generating visual reports with AI insights","Automated content rendering and testing"],"limitations":["Community node (not core n8n)","Requires external API key or OAuth2 setup","Requires n8n v1.60.0 or later","Real location captures require residential proxy network access"],"relatedNodes":["HTTP Request","Webhook","Google Drive","File Node"]}


node_type: @preyproject/n8n-nodes-prey.prey
package_name: @preyproject/n8n-nodes-prey
display_name: Prey
description: Manage devices and account data in Prey
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: luisra51
author_github_url: https://github.com/prey/n8n-nodes-prey.git
npm_package_name: @preyproject/n8n-nodes-prey
npm_version: 0.1.2
community_fetched_at: 2026-04-16T09:43:35.993Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "device",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Automation",
          "value": "automation"
        },
        {
          "name": "Device",
          "value": "device"
        },
        {
          "name": "Label",
          "value": "label"
        },
        {
          "name": "Mass Action",
          "value": "massAction"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Zone",
          "value": "zone"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAccountSummary",
      "options": [
        {
          "name": "Get Account Summary",
          "value": "getAccountSummary",
          "action": "Get account summary",
          "routing": {
            "request": {
              "url": "/account",
              "method": "GET"
            }
          },
          "description": "Get account information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ],
          "permissionLevel": [
            "read"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAccountSummary",
      "options": [
        {
          "name": "Get Account Summary",
          "value": "getAccountSummary",
          "action": "Get account summary",
          "routing": {
            "request": {
              "url": "/account",
              "method": "GET"
            }
          },
          "description": "Get account information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ],
          "permissionLevel": [
            "write"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listUsers",
      "options": [
        {
          "name": "List Users",
          "value": "listUsers",
          "action": "List users",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "users"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/users",
              "method": "GET"
            }
          },
          "description": "List users in the account"
        },
        {
          "name": "Get User",
          "value": "getUser",
          "action": "Get a user",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}",
              "method": "GET"
            }
          },
          "description": "Get a user by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "permissionLevel": [
            "read"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listUsers",
      "options": [
        {
          "name": "List Users",
          "value": "listUsers",
          "action": "List users",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "users"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/users",
              "method": "GET"
            }
          },
          "description": "List users in the account"
        },
        {
          "name": "Get User",
          "value": "getUser",
          "action": "Get a user",
          "routing": {
            "request": {
              "url": "=/users/{{$parameter.userId}}",
              "method": "GET"
            }
          },
          "description": "Get a user by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "permissionLevel": [
            "write"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listDevices",
      "options": [
        {
          "name": "Get Device",
          "value": "getDevice",
          "action": "Get a device",
          "routing": {
            "request": {
              "url": "=/devices/{{$parameter.deviceId}}",
              "method": "GET"
            }
          },
          "description": "Get a device by ID"
        },
        {
          "name": "Get Device Location History",
          "value": "getDeviceLocationHistory",
          "action": "Get device location history",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "binaryData",
                  "enabled": "={{$parameter.locationFormat === \"csv\"}}",
                  "properties": {
                    "destinationProperty": "data"
                  }
                },
                {
                  "type": "rootProperty",
                  "enabled": "={{$parameter.locationFormat !== \"csv\"}}",
                  "properties": {
                    "property": "latest_locations"
                  }
                }
              ]
            },
            "request": {
              "url": "=/devices/{{$parameter.deviceId}}/location_activity{{$parameter.locationFormat === \"csv\" ? \".csv\" : \"\"}}",
              "method": "GET"
            }
          },
          "description": "Get device location history (JSON or CSV)"
        },
        {
          "name": "Get Device Report",
          "value": "getDeviceReport",
          "action": "Get a device report",
          "routing": {
            "request": {
              "url": "=/devices/{{$parameter.deviceId}}/reports/{{$parameter.reportId}}",
              "method": "GET"
            }
          },
          "description": "Get a single report for a device"
        },
        {
          "name": "Get Device Reports",
          "value": "getDeviceReports",
          "action": "Get device reports",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "reports"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "=/devices/{{$parameter.deviceId}}/reports",
              "method": "GET"
            }
          },
          "description": "List reports for a device"
        },
        {
          "name": "List Devices",
          "value": "listDevices",
          "action": "List devices",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "devices"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/devices",
              "method": "GET"
            }
          },
          "description": "List devices in the account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "device"
          ],
          "permissionLevel": [
            "read"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listDevices",
      "options": [
        {
          "name": "Get Device",
          "value": "getDevice",
          "action": "Get a device",
          "routing": {
            "request": {
              "url": "=/devices/{{$parameter.deviceId}}",
              "method": "GET"
            }
          },
          "description": "Get a device by ID"
        },
        {
          "name": "Get Device Location History",
          "value": "getDeviceLocationHistory",
          "action": "Get device location history",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "binaryData",
                  "enabled": "={{$parameter.locationFormat === \"csv\"}}",
                  "properties": {
                    "destinationProperty": "data"
                  }
                },
                {
                  "type": "rootProperty",
                  "enabled": "={{$parameter.locationFormat !== \"csv\"}}",
                  "properties": {
                    "property": "latest_locations"
                  }
                }
              ]
            },
            "request": {
              "url": "=/devices/{{$parameter.deviceId}}/location_activity{{$parameter.locationFormat === \"csv\" ? \".csv\" : \"\"}}",
              "method": "GET"
            }
          },
          "description": "Get device location history (JSON or CSV)"
        },
        {
          "name": "Get Device Report",
          "value": "getDeviceReport",
          "action": "Get a device report",
          "routing": {
            "request": {
              "url": "=/devices/{{$parameter.deviceId}}/reports/{{$parameter.reportId}}",
              "method": "GET"
            }
          },
          "description": "Get a single report for a device"
        },
        {
          "name": "Get Device Reports",
          "value": "getDeviceReports",
          "action": "Get device reports",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "reports"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "=/devices/{{$parameter.deviceId}}/reports",
              "method": "GET"
            }
          },
          "description": "List reports for a device"
        },
        {
          "name": "List Devices",
          "value": "listDevices",
          "action": "List devices",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "devices"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/devices",
              "method": "GET"
            }
          },
          "description": "List devices in the account"
        },
        {
          "name": "Trigger Device Action",
          "value": "triggerDeviceAction",
          "action": "Trigger a device action",
          "routing": {
            "request": {
              "url": "=/devices/{{$parameter.deviceId}}/action",
              "body": {
                "command": "={{$parameter.actionCommand}}",
                "options": "={{$parameter.actionOptions}}",
                "action_name": "={{$parameter.deviceAction}}"
              },
              "json": true,
              "method": "PUT"
            }
          },
          "description": "Trigger alarm, alert, or lock on a device"
        },
        {
          "name": "Set Device Status (Missing/Recovered)",
          "value": "setDeviceStatus",
          "action": "Set device status",
          "routing": {
            "request": {
              "url": "=/devices/{{$parameter.deviceId}}/missing",
              "body": {
                "missing": "={{$parameter.missingStatus === \"missing\"}}"
              },
              "json": true,
              "method": "PUT"
            }
          },
          "description": "Mark a device as missing or recovered"
        },
        {
          "name": "Delete Device",
          "value": "deleteDevice",
          "action": "Delete a device",
          "routing": {
            "request": {
              "url": "=/devices/{{$parameter.deviceId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a device from the fleet"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "device"
          ],
          "permissionLevel": [
            "write"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listLabels",
      "options": [
        {
          "name": "List Labels",
          "value": "listLabels",
          "action": "List labels",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "labels"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/labels",
              "method": "GET"
            }
          },
          "description": "List labels in the account"
        },
        {
          "name": "Get Label",
          "value": "getLabel",
          "action": "Get a label",
          "routing": {
            "request": {
              "url": "=/labels/{{$parameter.labelId}}",
              "method": "GET"
            }
          },
          "description": "Get a label by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "label"
          ],
          "permissionLevel": [
            "read"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listLabels",
      "options": [
        {
          "name": "List Labels",
          "value": "listLabels",
          "action": "List labels",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "labels"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/labels",
              "method": "GET"
            }
          },
          "description": "List labels in the account"
        },
        {
          "name": "Get Label",
          "value": "getLabel",
          "action": "Get a label",
          "routing": {
            "request": {
              "url": "=/labels/{{$parameter.labelId}}",
              "method": "GET"
            }
          },
          "description": "Get a label by ID"
        },
        {
          "name": "Create Label",
          "value": "createLabel",
          "action": "Create a label",
          "routing": {
            "request": {
              "url": "/labels",
              "body": {
                "name": "={{$parameter.labelName}}",
                "devices": "={{$parameter.labelDevices}}"
              },
              "json": true,
              "method": "POST"
            }
          },
          "description": "Create a new label"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "label"
          ],
          "permissionLevel": [
            "write"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listZones",
      "options": [
        {
          "name": "List Zones",
          "value": "listZones",
          "action": "List zones",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "zones"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/zones",
              "method": "GET"
            }
          },
          "description": "List zones in the account"
        },
        {
          "name": "Get Zone",
          "value": "getZone",
          "action": "Get a zone",
          "routing": {
            "request": {
              "url": "=/zones/{{$parameter.zoneId}}",
              "method": "GET"
            }
          },
          "description": "Get a zone by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "zone"
          ],
          "permissionLevel": [
            "read"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listZones",
      "options": [
        {
          "name": "List Zones",
          "value": "listZones",
          "action": "List zones",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "zones"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/zones",
              "method": "GET"
            }
          },
          "description": "List zones in the account"
        },
        {
          "name": "Get Zone",
          "value": "getZone",
          "action": "Get a zone",
          "routing": {
            "request": {
              "url": "=/zones/{{$parameter.zoneId}}",
              "method": "GET"
            }
          },
          "description": "Get a zone by ID"
        },
        {
          "name": "Create Zone",
          "value": "createZone",
          "action": "Create a zone",
          "routing": {
            "request": {
              "url": "/zones",
              "body": {
                "name": "={{$parameter.zoneName}}",
                "color": "={{$parameter.zoneColor}}",
                "radius": "={{$parameter.zoneRadius}}",
                "devices": "={{$parameter.zoneDevices}}",
                "latitude": "={{$parameter.zoneLatitude}}",
                "longitude": "={{$parameter.zoneLongitude}}"
              },
              "json": true,
              "method": "POST"
            }
          },
          "description": "Create a control zone"
        },
        {
          "name": "Update Zone",
          "value": "updateZone",
          "action": "Update a zone",
          "routing": {
            "request": {
              "url": "=/zones/{{$parameter.zoneId}}",
              "body": {
                "name": "={{$parameter.zoneName}}",
                "color": "={{$parameter.zoneColor}}",
                "radius": "={{$parameter.zoneRadius}}",
                "latitude": "={{$parameter.zoneLatitude}}",
                "longitude": "={{$parameter.zoneLongitude}}",
                "add_devices": "={{$parameter.zoneAddDevices}}",
                "remove_devices": "={{$parameter.zoneRemoveDevices}}",
                "removed_actions": "={{$parameter.zoneRemovedActions}}"
              },
              "json": true,
              "method": "PUT"
            }
          },
          "description": "Update a control zone"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "zone"
          ],
          "permissionLevel": [
            "write"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAutomations",
      "options": [
        {
          "name": "List Automations",
          "value": "listAutomations",
          "action": "List automations",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "automations"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/automations",
              "method": "GET"
            }
          },
          "description": "List automations in the account"
        },
        {
          "name": "Get Automation",
          "value": "getAutomation",
          "action": "Get an automation",
          "routing": {
            "request": {
              "url": "=/automations/{{$parameter.automationId}}",
              "method": "GET"
            }
          },
          "description": "Get an automation by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "automation"
          ],
          "permissionLevel": [
            "read"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAutomations",
      "options": [
        {
          "name": "List Automations",
          "value": "listAutomations",
          "action": "List automations",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "automations"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/automations",
              "method": "GET"
            }
          },
          "description": "List automations in the account"
        },
        {
          "name": "Get Automation",
          "value": "getAutomation",
          "action": "Get an automation",
          "routing": {
            "request": {
              "url": "=/automations/{{$parameter.automationId}}",
              "method": "GET"
            }
          },
          "description": "Get an automation by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "automation"
          ],
          "permissionLevel": [
            "write"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listMassActions",
      "options": [
        {
          "name": "List Mass Actions",
          "value": "listMassActions",
          "action": "List mass actions",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "mass_actions"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/mass_actions",
              "method": "GET"
            }
          },
          "description": "List mass actions in the account"
        },
        {
          "name": "Get Mass Action",
          "value": "getMassAction",
          "action": "Get a mass action",
          "routing": {
            "request": {
              "url": "=/mass_actions/{{$parameter.massActionId}}",
              "method": "GET"
            }
          },
          "description": "Get a mass action by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "massAction"
          ],
          "permissionLevel": [
            "read"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listMassActions",
      "options": [
        {
          "name": "List Mass Actions",
          "value": "listMassActions",
          "action": "List mass actions",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "mass_actions"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "page": 1
              },
              "url": "/mass_actions",
              "method": "GET"
            }
          },
          "description": "List mass actions in the account"
        },
        {
          "name": "Get Mass Action",
          "value": "getMassAction",
          "action": "Get a mass action",
          "routing": {
            "request": {
              "url": "=/mass_actions/{{$parameter.massActionId}}",
              "method": "GET"
            }
          },
          "description": "Get a mass action by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "massAction"
          ],
          "permissionLevel": [
            "write"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Account Summary",
      "value": "getAccountSummary",
      "action": "Get account summary",
      "routing": {
        "request": {
          "url": "/account",
          "method": "GET"
        }
      },
      "description": "Get account information",
      "resource": "account"
    },
    {
      "name": "Get Account Summary",
      "value": "getAccountSummary",
      "action": "Get account summary",
      "routing": {
        "request": {
          "url": "/account",
          "method": "GET"
        }
      },
      "description": "Get account information",
      "resource": "account"
    },
    {
      "name": "List Users",
      "value": "listUsers",
      "action": "List users",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "users"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/users",
          "method": "GET"
        }
      },
      "description": "List users in the account",
      "resource": "user"
    },
    {
      "name": "Get User",
      "value": "getUser",
      "action": "Get a user",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}",
          "method": "GET"
        }
      },
      "description": "Get a user by ID",
      "resource": "user"
    },
    {
      "name": "List Users",
      "value": "listUsers",
      "action": "List users",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "users"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/users",
          "method": "GET"
        }
      },
      "description": "List users in the account",
      "resource": "user"
    },
    {
      "name": "Get User",
      "value": "getUser",
      "action": "Get a user",
      "routing": {
        "request": {
          "url": "=/users/{{$parameter.userId}}",
          "method": "GET"
        }
      },
      "description": "Get a user by ID",
      "resource": "user"
    },
    {
      "name": "Get Device",
      "value": "getDevice",
      "action": "Get a device",
      "routing": {
        "request": {
          "url": "=/devices/{{$parameter.deviceId}}",
          "method": "GET"
        }
      },
      "description": "Get a device by ID",
      "resource": "device"
    },
    {
      "name": "Get Device Location History",
      "value": "getDeviceLocationHistory",
      "action": "Get device location history",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "binaryData",
              "enabled": "={{$parameter.locationFormat === \"csv\"}}",
              "properties": {
                "destinationProperty": "data"
              }
            },
            {
              "type": "rootProperty",
              "enabled": "={{$parameter.locationFormat !== \"csv\"}}",
              "properties": {
                "property": "latest_locations"
              }
            }
          ]
        },
        "request": {
          "url": "=/devices/{{$parameter.deviceId}}/location_activity{{$parameter.locationFormat === \"csv\" ? \".csv\" : \"\"}}",
          "method": "GET"
        }
      },
      "description": "Get device location history (JSON or CSV)",
      "resource": "device"
    },
    {
      "name": "Get Device Report",
      "value": "getDeviceReport",
      "action": "Get a device report",
      "routing": {
        "request": {
          "url": "=/devices/{{$parameter.deviceId}}/reports/{{$parameter.reportId}}",
          "method": "GET"
        }
      },
      "description": "Get a single report for a device",
      "resource": "device"
    },
    {
      "name": "Get Device Reports",
      "value": "getDeviceReports",
      "action": "Get device reports",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "reports"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "=/devices/{{$parameter.deviceId}}/reports",
          "method": "GET"
        }
      },
      "description": "List reports for a device",
      "resource": "device"
    },
    {
      "name": "List Devices",
      "value": "listDevices",
      "action": "List devices",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "devices"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/devices",
          "method": "GET"
        }
      },
      "description": "List devices in the account",
      "resource": "device"
    },
    {
      "name": "Get Device",
      "value": "getDevice",
      "action": "Get a device",
      "routing": {
        "request": {
          "url": "=/devices/{{$parameter.deviceId}}",
          "method": "GET"
        }
      },
      "description": "Get a device by ID",
      "resource": "device"
    },
    {
      "name": "Get Device Location History",
      "value": "getDeviceLocationHistory",
      "action": "Get device location history",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "binaryData",
              "enabled": "={{$parameter.locationFormat === \"csv\"}}",
              "properties": {
                "destinationProperty": "data"
              }
            },
            {
              "type": "rootProperty",
              "enabled": "={{$parameter.locationFormat !== \"csv\"}}",
              "properties": {
                "property": "latest_locations"
              }
            }
          ]
        },
        "request": {
          "url": "=/devices/{{$parameter.deviceId}}/location_activity{{$parameter.locationFormat === \"csv\" ? \".csv\" : \"\"}}",
          "method": "GET"
        }
      },
      "description": "Get device location history (JSON or CSV)",
      "resource": "device"
    },
    {
      "name": "Get Device Report",
      "value": "getDeviceReport",
      "action": "Get a device report",
      "routing": {
        "request": {
          "url": "=/devices/{{$parameter.deviceId}}/reports/{{$parameter.reportId}}",
          "method": "GET"
        }
      },
      "description": "Get a single report for a device",
      "resource": "device"
    },
    {
      "name": "Get Device Reports",
      "value": "getDeviceReports",
      "action": "Get device reports",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "reports"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "=/devices/{{$parameter.deviceId}}/reports",
          "method": "GET"
        }
      },
      "description": "List reports for a device",
      "resource": "device"
    },
    {
      "name": "List Devices",
      "value": "listDevices",
      "action": "List devices",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "devices"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/devices",
          "method": "GET"
        }
      },
      "description": "List devices in the account",
      "resource": "device"
    },
    {
      "name": "Trigger Device Action",
      "value": "triggerDeviceAction",
      "action": "Trigger a device action",
      "routing": {
        "request": {
          "url": "=/devices/{{$parameter.deviceId}}/action",
          "body": {
            "command": "={{$parameter.actionCommand}}",
            "options": "={{$parameter.actionOptions}}",
            "action_name": "={{$parameter.deviceAction}}"
          },
          "json": true,
          "method": "PUT"
        }
      },
      "description": "Trigger alarm, alert, or lock on a device",
      "resource": "device"
    },
    {
      "name": "Set Device Status (Missing/Recovered)",
      "value": "setDeviceStatus",
      "action": "Set device status",
      "routing": {
        "request": {
          "url": "=/devices/{{$parameter.deviceId}}/missing",
          "body": {
            "missing": "={{$parameter.missingStatus === \"missing\"}}"
          },
          "json": true,
          "method": "PUT"
        }
      },
      "description": "Mark a device as missing or recovered",
      "resource": "device"
    },
    {
      "name": "Delete Device",
      "value": "deleteDevice",
      "action": "Delete a device",
      "routing": {
        "request": {
          "url": "=/devices/{{$parameter.deviceId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a device from the fleet",
      "resource": "device"
    },
    {
      "name": "List Labels",
      "value": "listLabels",
      "action": "List labels",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "labels"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/labels",
          "method": "GET"
        }
      },
      "description": "List labels in the account",
      "resource": "label"
    },
    {
      "name": "Get Label",
      "value": "getLabel",
      "action": "Get a label",
      "routing": {
        "request": {
          "url": "=/labels/{{$parameter.labelId}}",
          "method": "GET"
        }
      },
      "description": "Get a label by ID",
      "resource": "label"
    },
    {
      "name": "List Labels",
      "value": "listLabels",
      "action": "List labels",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "labels"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/labels",
          "method": "GET"
        }
      },
      "description": "List labels in the account",
      "resource": "label"
    },
    {
      "name": "Get Label",
      "value": "getLabel",
      "action": "Get a label",
      "routing": {
        "request": {
          "url": "=/labels/{{$parameter.labelId}}",
          "method": "GET"
        }
      },
      "description": "Get a label by ID",
      "resource": "label"
    },
    {
      "name": "Create Label",
      "value": "createLabel",
      "action": "Create a label",
      "routing": {
        "request": {
          "url": "/labels",
          "body": {
            "name": "={{$parameter.labelName}}",
            "devices": "={{$parameter.labelDevices}}"
          },
          "json": true,
          "method": "POST"
        }
      },
      "description": "Create a new label",
      "resource": "label"
    },
    {
      "name": "List Zones",
      "value": "listZones",
      "action": "List zones",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "zones"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/zones",
          "method": "GET"
        }
      },
      "description": "List zones in the account",
      "resource": "zone"
    },
    {
      "name": "Get Zone",
      "value": "getZone",
      "action": "Get a zone",
      "routing": {
        "request": {
          "url": "=/zones/{{$parameter.zoneId}}",
          "method": "GET"
        }
      },
      "description": "Get a zone by ID",
      "resource": "zone"
    },
    {
      "name": "List Zones",
      "value": "listZones",
      "action": "List zones",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "zones"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/zones",
          "method": "GET"
        }
      },
      "description": "List zones in the account",
      "resource": "zone"
    },
    {
      "name": "Get Zone",
      "value": "getZone",
      "action": "Get a zone",
      "routing": {
        "request": {
          "url": "=/zones/{{$parameter.zoneId}}",
          "method": "GET"
        }
      },
      "description": "Get a zone by ID",
      "resource": "zone"
    },
    {
      "name": "Create Zone",
      "value": "createZone",
      "action": "Create a zone",
      "routing": {
        "request": {
          "url": "/zones",
          "body": {
            "name": "={{$parameter.zoneName}}",
            "color": "={{$parameter.zoneColor}}",
            "radius": "={{$parameter.zoneRadius}}",
            "devices": "={{$parameter.zoneDevices}}",
            "latitude": "={{$parameter.zoneLatitude}}",
            "longitude": "={{$parameter.zoneLongitude}}"
          },
          "json": true,
          "method": "POST"
        }
      },
      "description": "Create a control zone",
      "resource": "zone"
    },
    {
      "name": "Update Zone",
      "value": "updateZone",
      "action": "Update a zone",
      "routing": {
        "request": {
          "url": "=/zones/{{$parameter.zoneId}}",
          "body": {
            "name": "={{$parameter.zoneName}}",
            "color": "={{$parameter.zoneColor}}",
            "radius": "={{$parameter.zoneRadius}}",
            "latitude": "={{$parameter.zoneLatitude}}",
            "longitude": "={{$parameter.zoneLongitude}}",
            "add_devices": "={{$parameter.zoneAddDevices}}",
            "remove_devices": "={{$parameter.zoneRemoveDevices}}",
            "removed_actions": "={{$parameter.zoneRemovedActions}}"
          },
          "json": true,
          "method": "PUT"
        }
      },
      "description": "Update a control zone",
      "resource": "zone"
    },
    {
      "name": "List Automations",
      "value": "listAutomations",
      "action": "List automations",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "automations"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/automations",
          "method": "GET"
        }
      },
      "description": "List automations in the account",
      "resource": "automation"
    },
    {
      "name": "Get Automation",
      "value": "getAutomation",
      "action": "Get an automation",
      "routing": {
        "request": {
          "url": "=/automations/{{$parameter.automationId}}",
          "method": "GET"
        }
      },
      "description": "Get an automation by ID",
      "resource": "automation"
    },
    {
      "name": "List Automations",
      "value": "listAutomations",
      "action": "List automations",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "automations"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/automations",
          "method": "GET"
        }
      },
      "description": "List automations in the account",
      "resource": "automation"
    },
    {
      "name": "Get Automation",
      "value": "getAutomation",
      "action": "Get an automation",
      "routing": {
        "request": {
          "url": "=/automations/{{$parameter.automationId}}",
          "method": "GET"
        }
      },
      "description": "Get an automation by ID",
      "resource": "automation"
    },
    {
      "name": "List Mass Actions",
      "value": "listMassActions",
      "action": "List mass actions",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "mass_actions"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/mass_actions",
          "method": "GET"
        }
      },
      "description": "List mass actions in the account",
      "resource": "massAction"
    },
    {
      "name": "Get Mass Action",
      "value": "getMassAction",
      "action": "Get a mass action",
      "routing": {
        "request": {
          "url": "=/mass_actions/{{$parameter.massActionId}}",
          "method": "GET"
        }
      },
      "description": "Get a mass action by ID",
      "resource": "massAction"
    },
    {
      "name": "List Mass Actions",
      "value": "listMassActions",
      "action": "List mass actions",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "mass_actions"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "page": 1
          },
          "url": "/mass_actions",
          "method": "GET"
        }
      },
      "description": "List mass actions in the account",
      "resource": "massAction"
    },
    {
      "name": "Get Mass Action",
      "value": "getMassAction",
      "action": "Get a mass action",
      "routing": {
        "request": {
          "url": "=/mass_actions/{{$parameter.massActionId}}",
          "method": "GET"
        }
      },
      "description": "Get a mass action by ID",
      "resource": "massAction"
    }
  ]

npm_readme:
  # n8n-nodes-prey

  This is an n8n community node that lets you work with the Prey Developer API in your n8n workflows.

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

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

  ## Installation

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

  ## Operations

  - Account
    - Get account
  - Users
    - List users
    - Get user
  - Devices
    - List devices
    - Get device
    - Get device location history (JSON or CSV)
    - List device reports
    - Get device report
    - Trigger device action (alarm/alert/lock)
    - Set device status (missing/recovered)
    - Delete device
  - Labels
    - List labels
    - Get label
    - Create label
  - Zones
    - List zones
    - Get zone
    - Create zone
    - Update zone
  - Automations
    - List automations
    - Get automation
  - Mass Actions
    - List mass actions
    - Get mass action

  ## Credentials

  This node uses API Key authentication.

  ### API Key

  1. Go to Prey Control Panel → Settings → Developer API.
  2. Create an API key (you can set permissions and expiration).
  3. Use the API key in the Prey API credential inside n8n.

  Note: Creating API keys requires a Personal, Business, or Education plan.

  The credential includes a Permission Level field (Read-only or Read & Write) to hide write operations when the key is read-only.

  ## Usage notes

  - The Prey Developer API is currently in **Beta** and has fewer write endpoints than read ones.
  - Rate limits are per API key:
    - 2 requests/second
    - 60 requests/minute
    - 10,000 requests/hour

  ## Compatibility

  Compatible with n8n@1.60.0 or later

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Prey Developer API (Swagger)](https://api.preyproject.com)
  * [Prey API help article](https://help.preyproject.com/article/308-what-can-i-use-the-prey-api-for)

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by interacting with the Prey Developer API to manage devices, accounts, users, labels, zones, and automations.","capabilities":["Retrieve account information","List and retrieve user details","List, retrieve, and delete devices","Retrieve device location history in JSON or CSV format","List, retrieve, and trigger device reports","Trigger device actions (alarm, alert, lock)","Set device status (missing or recovered)","Manage labels (list, retrieve, create)","Manage zones (list, retrieve, create, update)","Manage automations (list, retrieve)"],"authentication":"API Key","commonUseCases":["Automating device locking or alarming based on scheduled events","Tracking device location history for security monitoring","Managing user access and permissions across devices","Creating and updating device zones for organizational management","Triggering mass actions on multiple devices simultaneously"],"limitations":["Prey Developer API is currently in Beta","Fewer write endpoints compared to read endpoints","Rate limits of 2 requests/second, 60 requests/minute, and 10,000 requests/hour per API key","API key creation requires Personal, Business, or Education plan"],"relatedNodes":["n8n HTTP Request","n8n Code Node"]}


node_type: n8n-nodes-powerbi.powerBi
package_name: n8n-nodes-powerbi
display_name: Power BI
description: Work with the Power BI API
category: Power BI
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: androcha
author_github_url: https://github.com/And-Rochaa/
npm_package_name: n8n-nodes-powerbi
npm_version: 2.3.10
community_fetched_at: 2026-04-16T09:43:35.994Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "dashboard",
      "options": [
        {
          "name": "Admin",
          "value": "admin"
        },
        {
          "name": "Dashboard",
          "value": "dashboard"
        },
        {
          "name": "Dataflow",
          "value": "dataflow"
        },
        {
          "name": "Dataset",
          "value": "dataset"
        },
        {
          "name": "Gateway",
          "value": "gateway"
        },
        {
          "name": "Group",
          "value": "group"
        },
        {
          "name": "Report",
          "value": "report"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getInfo",
      "options": [
        {
          "name": "Get Workspace Information",
          "value": "getInfo",
          "action": "Get workspace information",
          "description": "Get detailed information from workspaces"
        },
        {
          "name": "Get Scan Result",
          "value": "getScanResult",
          "action": "Get scan result",
          "description": "Get the scan result from a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "admin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List a dashboard",
          "description": "List all dashboards"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a dashboard",
          "description": "Get a specific dashboard"
        },
        {
          "name": "Get Tiles",
          "value": "getTiles",
          "action": "Get tiles from a dashboard",
          "description": "Get tiles from a dashboard"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get Dataflow",
          "value": "get",
          "action": "Get dataflow",
          "description": "Exports the specified dataflow definition to a JSON file"
        },
        {
          "name": "Get Dataflow Data Sources",
          "value": "getDatasources",
          "action": "Get dataflow data sources",
          "description": "Returns a list of data sources for the specified dataflow"
        },
        {
          "name": "Get Dataflow Transactions",
          "value": "getTransactions",
          "action": "Get dataflow transactions",
          "description": "Returns a list of transactions for the specified dataflow"
        },
        {
          "name": "Get Dataflows",
          "value": "list",
          "action": "Get dataflows",
          "description": "Returns a list of all dataflows from the specified workspace"
        },
        {
          "name": "Refresh Dataflow",
          "value": "refresh",
          "action": "Refresh dataflow",
          "description": "Triggers a refresh for the specified dataflow"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dataflow"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Add Rows",
          "value": "addRows",
          "action": "Add rows to a dataset",
          "description": "Add rows to a table"
        },
        {
          "name": "Execute Queries",
          "value": "executeQueries",
          "action": "Execute DAX queries on a dataset",
          "description": "Execute DAX queries on a dataset"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a dataset",
          "description": "Get a specific dataset"
        },
        {
          "name": "Get Refresh History",
          "value": "getRefreshHistory",
          "action": "Get refresh history of a dataset",
          "description": "Get the refresh history of a dataset"
        },
        {
          "name": "Get Tables",
          "value": "getTables",
          "action": "Get tables from a dataset",
          "description": "Get tables from a dataset"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List a dataset",
          "description": "List all datasets"
        },
        {
          "name": "Refresh",
          "value": "refresh",
          "action": "Refresh a dataset",
          "description": "Refresh a dataset"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dataset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get Datasource",
          "value": "getDatasource",
          "action": "Get datasource",
          "description": "Returns the specified datasource from the specified gateway"
        },
        {
          "name": "Get Datasource Status",
          "value": "getDatasourceStatus",
          "action": "Get datasource status",
          "description": "Checks the connectivity status of the specified datasource"
        },
        {
          "name": "Get Datasource Users",
          "value": "getDatasourceUsers",
          "action": "Get datasource users",
          "description": "Returns a list of users who have access to the specified datasource"
        },
        {
          "name": "Get Datasources",
          "value": "getDatasources",
          "action": "Get datasources",
          "description": "Returns a list of datasources from the specified gateway"
        },
        {
          "name": "Get Gateway",
          "value": "get",
          "action": "Get gateway",
          "description": "Returns the specified gateway"
        },
        {
          "name": "List Gateways",
          "value": "list",
          "action": "List gateways",
          "description": "Returns a list of gateways for which the user is an administrator"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "gateway"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a group",
          "description": "Get a specific group"
        },
        {
          "name": "Get Dashboards",
          "value": "getDashboards",
          "action": "Get dashboards from a group",
          "description": "Get dashboards from a group"
        },
        {
          "name": "Get Datasets",
          "value": "getDatasets",
          "action": "Get datasets from a group",
          "description": "Get datasets from a group"
        },
        {
          "name": "Get Reports",
          "value": "getReports",
          "action": "Get reports from a group",
          "description": "Get reports from a group"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List a group",
          "description": "List all groups (workspaces)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List a report",
          "description": "List all reports"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a report",
          "description": "Get a specific report"
        },
        {
          "name": "Get Pages",
          "value": "getPages",
          "action": "Get pages from a report",
          "description": "Get pages from a report"
        },
        {
          "name": "Export To File",
          "value": "exportToFile",
          "action": "Export report to file",
          "description": "Export report to various file formats"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Workspace Information",
      "value": "getInfo",
      "action": "Get workspace information",
      "description": "Get detailed information from workspaces",
      "resource": "admin"
    },
    {
      "name": "Get Scan Result",
      "value": "getScanResult",
      "action": "Get scan result",
      "description": "Get the scan result from a workspace",
      "resource": "admin"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List a dashboard",
      "description": "List all dashboards",
      "resource": "dashboard"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a dashboard",
      "description": "Get a specific dashboard",
      "resource": "dashboard"
    },
    {
      "name": "Get Tiles",
      "value": "getTiles",
      "action": "Get tiles from a dashboard",
      "description": "Get tiles from a dashboard",
      "resource": "dashboard"
    },
    {
      "name": "Get Dataflow",
      "value": "get",
      "action": "Get dataflow",
      "description": "Exports the specified dataflow definition to a JSON file",
      "resource": "dataflow"
    },
    {
      "name": "Get Dataflow Data Sources",
      "value": "getDatasources",
      "action": "Get dataflow data sources",
      "description": "Returns a list of data sources for the specified dataflow",
      "resource": "dataflow"
    },
    {
      "name": "Get Dataflow Transactions",
      "value": "getTransactions",
      "action": "Get dataflow transactions",
      "description": "Returns a list of transactions for the specified dataflow",
      "resource": "dataflow"
    },
    {
      "name": "Get Dataflows",
      "value": "list",
      "action": "Get dataflows",
      "description": "Returns a list of all dataflows from the specified workspace",
      "resource": "dataflow"
    },
    {
      "name": "Refresh Dataflow",
      "value": "refresh",
      "action": "Refresh dataflow",
      "description": "Triggers a refresh for the specified dataflow",
      "resource": "dataflow"
    },
    {
      "name": "Add Rows",
      "value": "addRows",
      "action": "Add rows to a dataset",
      "description": "Add rows to a table",
      "resource": "dataset"
    },
    {
      "name": "Execute Queries",
      "value": "executeQueries",
      "action": "Execute DAX queries on a dataset",
      "description": "Execute DAX queries on a dataset",
      "resource": "dataset"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a dataset",
      "description": "Get a specific dataset",
      "resource": "dataset"
    },
    {
      "name": "Get Refresh History",
      "value": "getRefreshHistory",
      "action": "Get refresh history of a dataset",
      "description": "Get the refresh history of a dataset",
      "resource": "dataset"
    },
    {
      "name": "Get Tables",
      "value": "getTables",
      "action": "Get tables from a dataset",
      "description": "Get tables from a dataset",
      "resource": "dataset"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List a dataset",
      "description": "List all datasets",
      "resource": "dataset"
    },
    {
      "name": "Refresh",
      "value": "refresh",
      "action": "Refresh a dataset",
      "description": "Refresh a dataset",
      "resource": "dataset"
    },
    {
      "name": "Get Datasource",
      "value": "getDatasource",
      "action": "Get datasource",
      "description": "Returns the specified datasource from the specified gateway",
      "resource": "gateway"
    },
    {
      "name": "Get Datasource Status",
      "value": "getDatasourceStatus",
      "action": "Get datasource status",
      "description": "Checks the connectivity status of the specified datasource",
      "resource": "gateway"
    },
    {
      "name": "Get Datasource Users",
      "value": "getDatasourceUsers",
      "action": "Get datasource users",
      "description": "Returns a list of users who have access to the specified datasource",
      "resource": "gateway"
    },
    {
      "name": "Get Datasources",
      "value": "getDatasources",
      "action": "Get datasources",
      "description": "Returns a list of datasources from the specified gateway",
      "resource": "gateway"
    },
    {
      "name": "Get Gateway",
      "value": "get",
      "action": "Get gateway",
      "description": "Returns the specified gateway",
      "resource": "gateway"
    },
    {
      "name": "List Gateways",
      "value": "list",
      "action": "List gateways",
      "description": "Returns a list of gateways for which the user is an administrator",
      "resource": "gateway"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a group",
      "description": "Get a specific group",
      "resource": "group"
    },
    {
      "name": "Get Dashboards",
      "value": "getDashboards",
      "action": "Get dashboards from a group",
      "description": "Get dashboards from a group",
      "resource": "group"
    },
    {
      "name": "Get Datasets",
      "value": "getDatasets",
      "action": "Get datasets from a group",
      "description": "Get datasets from a group",
      "resource": "group"
    },
    {
      "name": "Get Reports",
      "value": "getReports",
      "action": "Get reports from a group",
      "description": "Get reports from a group",
      "resource": "group"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List a group",
      "description": "List all groups (workspaces)",
      "resource": "group"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List a report",
      "description": "List all reports",
      "resource": "report"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a report",
      "description": "Get a specific report",
      "resource": "report"
    },
    {
      "name": "Get Pages",
      "value": "getPages",
      "action": "Get pages from a report",
      "description": "Get pages from a report",
      "resource": "report"
    },
    {
      "name": "Export To File",
      "value": "exportToFile",
      "action": "Export report to file",
      "description": "Export report to various file formats",
      "resource": "report"
    }
  ]

npm_readme:
  ![Power BI Logo](https://i.postimg.cc/3hntXFh3/Integra-o-n8n-e-Power-BI.png)

  # n8n-nodes-powerbi

  This package contains nodes for n8n that enable complete integration with Microsoft Power BI REST APIs. These nodes enable automation, integration, and orchestration of data flows with Power BI directly in n8n.

  ## About the Author

  This Community Node was created and made freely available by **Anderson Rocha from Universo Automático** for the community and was designed to simplify and abstract all the complexity of using Power BI APIs.

  ### Social Media

  - Linkedin: [https://www.linkedin.com/in/andersonsantosrocha](https://www.linkedin.com/in/andersonsantosrocha)
  - YouTube: [https://www.youtube.com/@universoautomatico](https://www.youtube.com/@universoautomatico)
  - Instagram: [https://www.instagram.com/universoautomatico/](https://www.instagram.com/universoautomatico/)
  - N8N + Power BI Training: [https://n8npowerbi.com/](https://n8npowerbi.com/)

  ## Table of Contents

  - [Features](#features)
  - [Available Resources](#available-resources)
  - [Authentication Methods](#authentication-methods)
  - [Setting up the Application in Microsoft Entra ID (Azure AD)](#setting-up-the-application-in-microsoft-entra-id-azure-ad)
  - [Using the Nodes](#using-the-nodes)
  - [Limitations and Troubleshooting](#limitations-and-troubleshooting)
  - [Additional Resources](#additional-resources)

  ## Features

  This package offers a unified Power BI node with flexible authentication methods:

  ### Power BI Node

  Comprehensive node that supports two authentication methods:

  1. **OAuth2 Authentication**: Interactive authentication with Microsoft Entra ID (formerly Azure AD)
  2. **Bearer Token Authentication**: Direct token authentication for API integrations

  #### Available Features:
  - Managing reports, dashboards, and datasets
  - Workspace (groups) administration
  - DAX query execution
  - Data refresh operations
  - Report export in multiple formats
  - Gateway management
  - Dataflow operations


  ## Available Resources


  ### Administration Resources
  - **Get Workspace Information**: Retrieves complete details about workspaces, including dataset schema, DAX expressions, lineage, and data sources
  - **Get Scan Results**: Retrieves workspace scan results

  ### Dashboard Resources
  - **List Dashboards**: Retrieves all dashboards in a workspace
  - **Get Dashboard**: Retrieves details of a specific dashboard
  - **Get Tiles**: Retrieves tiles from a dashboard

  ### Dataset Resources
  - **List Datasets**: Retrieves all datasets in a workspace
  - **Get Dataset**: Retrieves details of a specific dataset
  - **Refresh Dataset**: Initiates a dataset refresh operation
  - **Get Tables**: Lists all tables in a dataset
  - **Add Rows**: Adds data to a dataset table
  - **Execute DAX Queries**: Performs DAX language queries on a dataset
  - **Get Refresh History**: Retrieves dataset refresh history

  ### Dataflow Resources
  - **List Dataflows**: Retrieves all dataflows in a workspace
  - **Get Dataflow**: Exports the specified dataflow definition to JSON
  - **Get Dataflow Data Sources**: Returns a list of data sources for the specified dataflow
  - **Get Dataflow Transactions**: Returns a list of transactions for the specified dataflow
  - **Refresh Dataflow**: Triggers a refresh for the specified dataflow

  ### Gateway Resources
  - **List Gateways**: Returns a list of gateways for which the user is an administrator
  - **Get Gateway**: Returns the specified gateway details
  - **Get Datasource**: Returns the specified datasource from the specified gateway
  - **Get Datasources**: Returns a list of datasources from the specified gateway
  - **Get Datasource Status**: Checks the connectivity status of the specified datasource
  - **Get Datasource Users**: Returns a list of users who have access to the specified datasource

  ### Group (Workspace) Resources
  - **List Groups**: Retrieves all accessible workspaces
  - **Get Group**: Retrieves details of a specific workspace
  - **Get Reports**: Lists reports in a workspace
  - **Get Dashboards**: Lists dashboards in a workspace
  - **Get Datasets**: Lists datasets in a workspace

  ### Report Resources
  - **List Reports**: Retrieves all reports in a workspace
  - **Get Report**: Retrieves details of a specific report
  - **Get Pages**: Lists pages in a report
  - **Export File**: Exports a report in various formats

  ## Authentication Methods

  This node supports two authentication methods:

  ### 1. OAuth2 Authentication
  - **Use case**: Applications acting on behalf of a user through interactive authentication flow
  - **Credential type**: Power BI OAuth2 API
  - **Token management**: Automatic refresh when tokens expire

  ### 2. Bearer Token Authentication  
  - **Use case**: Direct API integration with pre-obtained tokens
  - **Credential type**: Power BI API
  - **Token management**: Manual token management required

  ### Choosing Authentication Method

  In the node configuration:
  1. Select **Authentication** type (OAuth2 or Bearer Token)
  2. The appropriate credential field will appear automatically
  3. Configure the matching credential type


  ### AI Tools Integration

  The Power BI node has been configured as an AI tool within n8n, allowing it to:

  1. Be easily accessed by n8n's AI assistant
  2. Be used in natural language-driven automations
  3. Appear in the AI tools palette in the flow editor

  ## Setting up the Application in Microsoft Entra ID (Azure AD)

  To use the Power BI node with OAuth2 authentication, you need to register an application in Microsoft Entra ID (formerly Azure AD). Follow the steps below:

  ### 1. Register a New Application

  1. Access the [Azure Portal](https://portal.azure.com).
  2. Navigate to **Microsoft Entra ID** > **App registrations**.
  3. Click **New registration**.
  4. Provide a name for the application, for example "n8n Power BI Integration".
  5. In **Supported account types**, select **Accounts in this organizational directory only**.
  6. In the **Redirect URI** section, select **Web** and enter: `https://your-n8n-domain/rest/oauth2-credential/callback`.
     - For local development environment, use: `http://localhost:5678/rest/oauth2-credential/callback`
  7. Click **Register**.

  ### 2. Configure API Permissions

  1. In the registered application's side menu, click **API permissions**.
  2. Click **Add a permission**.
  3. Select **Power BI Service**.
  4. You can choose between **Delegated permissions** (for OAuth2) or **Application permissions** (for Service Principal):
     
     **For delegated permissions (recommended for most cases):**
     - Dataset.Read.All
     - Dataset.ReadWrite.All
     - Report.Read.All
     - Report.ReadWrite.All
     - Dashboard.Read.All
     - Dashboard.ReadWrite.All
     - Workspace.Read.All
     - Workspace.ReadWrite.All
     - Content.Create
     - Tenant.Read.All (for administrative functions)
     
     **For application permissions (Service Principal):**
     - Dashboard.Read.All
     - Report.Read.All
     - Dataset.Read.All
     - Workspace.Read.All
     - Tenant.Read.All

  5. Click **Add permissions**.
  6. If using Service Principal, you'll need to request an administrator to **Grant admin consent for [your directory]**.

  ### 3. Create the Client Secret

  1. In the side menu, click **Certificates & secrets**.
  2. In the **Client secrets** section, click **New client secret**.
  3. Add a description and select an expiration period.
  4. Click **Add**.
  5. **IMPORTANT**: Immediately copy the generated secret value, as it cannot be viewed again.

  ### 4. Get Configuration Values

  Note the following values that will be needed to configure the node in n8n:

  - **Client ID**: Found in **Overview** > **Application (client) ID**
  - **Client Secret**: The value you copied when creating the client secret
  - **Tenant ID**: Found in **Overview** > **Directory (tenant) ID**

  ## Using the Node

  ### Power BI Node Configuration

  1. Add the Power BI node to your workflow.
  2. **Select Authentication Method**: Choose between OAuth2 or Bearer Token
  3. **Configure Credentials**:

  #### For OAuth2 Authentication:
  1. Create a "Power BI OAuth2 API" credential with:
     - **Client ID**: The registered application ID
     - **Client Secret**: The generated client secret
     - **Scope**: Leave blank or use `https://analysis.windows.net/powerbi/api/.default`

  #### For Bearer Token Authentication:
  1. Create a "Power BI API" credential with:
     - **Bearer Token**: Your API access token

  4. **Select Resource and Operation**: Choose the desired resource (dashboard, report, dataset, etc.) and operation
  5. **Configure Parameters**: Set operation-specific parameters as needed


  ## Limitations and Troubleshooting

  ### Power BI API Limitations

  - **Rate limits**: The Power BI API imposes rate limits that may vary depending on your license and subscription plan. [Learn more](https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedded-capacity)
  - **Permissions**: Many operations require administrative or owner permissions in the workspace
  - **Some operations require Premium license**: Certain operations like programmatic refresh or DAX queries in large volumes may require Premium capacity


  ## Additional Resources

  - [Official Power BI REST API Documentation](https://docs.microsoft.com/en-us/rest/api/power-bi/)
  - [Power BI Developer Center](https://powerbi.microsoft.com/en-us/developers/)
  - [Power BI API FAQ](https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedded-faq)
  - [Power BI Known Limitations](https://docs.microsoft.com/en-us/power-bi/admin/service-admin-portal-about)
  - [n8n Custom Nodes Documentation](https://docs.n8n.io/integrations/creating-nodes/)

  ## License

  [MIT](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables full integration with Microsoft Power BI REST APIs for automating data workflows, including managing reports, dashboards, datasets, and dataflows.","capabilities":["Manage Power BI reports, dashboards, and datasets","Administer workspaces and groups","Execute DAX queries on datasets","Trigger data refresh operations for datasets and dataflows","Export reports in multiple formats","Manage Power BI gateways and data sources","List and retrieve workspace, dashboard, and dataset information","Add rows to dataset tables","Retrieve workspace scan results and refresh history"],"authentication":"OAuth2 (Microsoft Entra ID/Azure AD) or Bearer Token (manual API token)","commonUseCases":["Automating data refresh schedules in n8n workflows","Executing DAX queries programmatically","Exporting Power BI reports to external systems","Managing Power BI workspace permissions and groups","Integrating Power BI data into AI-driven automations"],"limitations":["OAuth2 requires setting up application registration in Microsoft Entra ID (Azure AD)","Bearer Token requires manual token management and does not auto-refresh","Some advanced features may require specific Power BI admin permissions","README was truncated, so full setup instructions for Azure AD are incomplete"],"relatedNodes":["HTTP Request","Function","AI Tool (n8n AI Assistant)"]}


node_type: n8n-nodes-browserbase.browserbase
package_name: n8n-nodes-browserbase
display_name: Browserbase Agent
category: Community
development_style: declarative
version: 2
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: kylejeong
author_github_url: https://github.com/browserbase/n8n-node.git
npm_package_name: n8n-nodes-browserbase
npm_version: 1.1.3
community_fetched_at: 2026-04-16T09:43:35.996Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  AI-powered browser automation. Provide a URL and instruction, get results. Supports CUA (vision), DOM (selectors), and Hybrid modes.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "agent",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute an agent",
          "description": "Execute an AI agent to perform browser automation tasks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Execute",
      "value": "execute",
      "action": "Execute an agent",
      "description": "Execute an AI agent to perform browser automation tasks",
      "resource": "agent"
    }
  ]

npm_readme:
  # n8n-nodes-browserbase

  This is an n8n community node that lets you automate browsers using [Browserbase](https://browserbase.com) powered by [Stagehand](https://stagehand.dev) in your n8n workflows.

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

  ## Installation

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

  ## Development / Testing with Docker

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Run n8n with your node in Docker
  docker-compose up --build

  # Open http://localhost:5678 and search for "Browserbase" node
  ```

  To rebuild after changes:
  ```bash
  npm run build && docker-compose up --build
  ```

  ## How It Works

  The Browserbase Agent node is a single, self-contained node that:
  1. Creates a browser session
  2. Navigates to your starting URL
  3. Executes an AI agent to complete your task
  4. Closes the session automatically

  Just provide a URL and an instruction - the node handles everything else.

  ## Configuration

  ### Required Fields

  | Field | Description |
  |-------|-------------|
  | **Starting URL** | The page where the agent begins (e.g., `https://example.com`) |
  | **Instruction** | Natural language task for the agent to complete |

  ### Driver Model

  The driver model powers the browser session (navigation, DOM interactions). Choose from:

  - `google/gemini-2.5-flash` (Recommended - fast & cheap)
  - `google/gemini-2.5-pro`
  - `openai/gpt-4o`
  - `openai/gpt-4o-mini`
  - `anthropic/claude-sonnet-4-5-20250929`

  ### Agent Mode

  | Mode | Description | Best For |
  |------|-------------|----------|
  | **CUA** | Computer Use Agent - uses vision and coordinates | Complex UIs, visual interactions |
  | **DOM** | Uses DOM selectors - works with any LLM | Speed, simple pages |
  | **Hybrid** | Combines both approaches | Fallback reliability |

  ### Agent Models

  Models available depend on the selected mode:

  **CUA Mode:**
  - `google/gemini-2.5-computer-use-preview-10-2025`
  - `openai/computer-use-preview`
  - `anthropic/claude-sonnet-4-20250514`
  - `anthropic/claude-sonnet-4-5-20250929`
  - `anthropic/claude-haiku-4-5-20251001`

  **DOM Mode:**
  - `google/gemini-2.5-flash`
  - `google/gemini-2.5-pro`
  - `openai/gpt-4o`
  - `openai/gpt-4o-mini`
  - `anthropic/claude-sonnet-4-5-20250929`

  **Hybrid Mode:**
  - `google/gemini-3-flash-preview`
  - `anthropic/claude-sonnet-4-20250514`
  - `anthropic/claude-haiku-4-5-20251001`

  ## Credentials

  You need three credentials:

  | Credential | Description |
  |------------|-------------|
  | **Browserbase API Key** | Your Browserbase API key |
  | **Browserbase Project ID** | Your Browserbase project ID |
  | **Model API Key** | API key for your chosen model provider |

  > **Important:** The Model API Key must match the provider of your models. If using Google models, provide a Google API key. If using OpenAI, provide an OpenAI key.

  ### Getting Credentials

  1. Sign up at [Browserbase](https://browserbase.com)
  2. Navigate to your dashboard for API key and Project ID
  3. Get an API key from your model provider:
     - [Google AI Studio](https://aistudio.google.com/apikey)
     - [OpenAI](https://platform.openai.com/api-keys)
     - [Anthropic](https://console.anthropic.com/)

  ## Example Usage

  **Simple extraction:**
  - URL: `https://news.ycombinator.com`
  - Instruction: `Find the top 3 stories and return their titles and URLs`

  **Form filling:**
  - URL: `https://example.com/contact`
  - Instruction: `Fill out the contact form with name "John Doe" and email "john@example.com", then submit`

  **Navigation + action:**
  - URL: `https://github.com`
  - Instruction: `Search for "stagehand" and click on the first repository result`

  ## Output

  The node returns an `AgentResult` object:

  ```json
  {
    "success": true,
    "message": "Task completed successfully",
    "actions": [
      { "type": "act", "action": "clicked submit button" }
    ],
    "completed": true,
    "usage": {
      "input_tokens": 1250,
      "output_tokens": 340,
      "inference_time_ms": 2500
    },
    "sessionId": "abc-123"
  }
  ```

  ## Compatibility

  Compatible with n8n@1.60.0 or later

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Browserbase Documentation](https://docs.browserbase.com)
  - [Stagehand Documentation](https://docs.stagehand.dev)

ai_documentation_summary:
  {"purpose":"Automates browser tasks using AI agents powered by Browserbase and Stagehand, allowing users to navigate websites and perform actions via natural language instructions.","capabilities":["Browser session creation and management","Natural language task execution","Computer Use Agent (CUA) mode for visual UI interactions","DOM mode for selector-based interactions","Hybrid mode combining both approaches","Support for multiple LLM providers (Google, OpenAI, Anthropic)","Automatic session cleanup after task completion"],"authentication":"API key required (Browserbase API key, Project ID, and Model provider API key)","commonUseCases":["Web form filling and submission","Data extraction from websites","Navigation and clicking on specific elements","Complex UI automation with visual recognition"],"limitations":["Requires separate credentials for Browserbase and the chosen LLM provider","Model availability depends on the selected agent mode","Requires n8n version 1.60.0 or later","CUA mode may have higher latency compared to DOM mode"],"relatedNodes":["n8n-nodes-browserbase.browserbase","n8n-nodes-http.request","n8n-nodes-webhook.webhook"]}


node_type: n8n-nodes-biron.biron
package_name: n8n-nodes-biron
display_name: Biron
description: Interact with Biron API, for reverse ETL and more
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: pharoz
author_github_url: https://github.com/Biron-BI/n8n-nodes.git
npm_package_name: n8n-nodes-biron
npm_version: 0.2.2
community_fetched_at: 2026-04-16T09:43:35.997Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "nexusQL",
      "options": [
        {
          "name": "Nexus",
          "value": "nexusQL",
          "displayName": "Nexus"
        },
        {
          "name": "Datalake",
          "value": "datalake",
          "displayName": "Datalake"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "queryNexusQL",
      "options": [
        {
          "name": "Query Nexus",
          "value": "queryNexusQL",
          "action": "Execute a nexusql query",
          "description": "Extract qualified data from Biron using NexusQL",
          "displayName": "Query Nexus"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "nexusQL"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "datalakeQuery",
      "options": [
        {
          "name": "Query",
          "value": "datalakeQuery",
          "action": "Execute a clickhouse query",
          "description": "Execute a Clickhouse query on your Biron-built datalake",
          "displayName": "Execute Clickhouse query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "datalake"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Query Nexus",
      "value": "queryNexusQL",
      "action": "Execute a nexusql query",
      "description": "Extract qualified data from Biron using NexusQL",
      "displayName": "Query Nexus",
      "resource": "nexusQL"
    },
    {
      "name": "Query",
      "value": "datalakeQuery",
      "action": "Execute a clickhouse query",
      "description": "Execute a Clickhouse query on your Biron-built datalake",
      "displayName": "Execute Clickhouse query",
      "resource": "datalake"
    }
  ]

npm_readme:
  # n8n-nodes-biron

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

  [Biron Data](https://birondata.com) is an all-in-one data platform.

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

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

  ## Installation

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

  ## Operations

  * Extract metrics and dimensions data using Biron's query language, NexusQL. 
    * The easiest way to write it is to extract it from your existing charts
    * For advanced use cases, [here is the documentation](https://docs.biron-analytics.com/guides/nexus-ql-guide/)
  * Extract data from your data sources extracted by Biron, or from the data warehouse prepared by Biron, by querying the Clickhouse databases
    * [Query documentation](https://docs.biron-analytics.com/guides/connect-datawarehouse/)
    * The parameter node is communicated by Biron upon request

  ## Credentials

  Authenticate with the combo username / password provided when you created either a PAT or an API Key from Biron application. As a reminder:
  * A PAT (Personal Access Token) makes actions on behalf of yourself
  * An API Key makes action on behalf of your organization

  ## Compatibility

  Tested against n8n version 1.123.5

  ## Resources

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

  ## Version history

ai_documentation_summary:
  {"purpose":"A community node that enables interaction with the Biron data platform for reverse ETL, including querying metrics, dimensions, and Clickhouse databases.","capabilities":["Extract metrics and dimensions data using NexusQL","Query data from Biron's Clickhouse databases","Access data sources extracted by Biron","Retrieve data from Biron's prepared data warehouse"],"authentication":"Username and password (PAT or API Key)","commonUseCases":["Reverse ETL workflows","Data extraction from Biron platform","Querying analytics metrics and dimensions"],"limitations":["Community node (not official n8n node)","Requires Biron account with PAT or API Key"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-vntana.vntana
package_name: n8n-nodes-vntana
display_name: VNTANA
description: Interact with VNTANA 3D content management platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: ben-vntana
author_github_url: https://github.com/VNTANA-3D/vntana-n8n-node.git
npm_package_name: n8n-nodes-vntana
npm_version: 0.4.5
community_fetched_at: 2026-04-16T09:43:35.998Z
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "product",
      "options": [
        {
          "name": "Attachment",
          "value": "attachment"
        },
        {
          "name": "Organization",
          "value": "organization"
        },
        {
          "name": "Pipeline",
          "value": "pipeline"
        },
        {
          "name": "Product",
          "value": "product"
        },
        {
          "name": "Render",
          "value": "render"
        },
        {
          "name": "Tag",
          "value": "tag"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Clone",
          "value": "clone",
          "action": "Clone a product",
          "description": "Clone a product to the same or different workspace"
        },
        {
          "name": "Download Model",
          "value": "downloadModel",
          "action": "Download a model",
          "description": "Download a 3D model file"
        },
        {
          "name": "Move",
          "value": "move",
          "action": "Move a product",
          "description": "Move a product to a different workspace"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search products",
          "description": "Search for products in a workspace"
        },
        {
          "name": "Update Product",
          "value": "updateProduct",
          "action": "Update a product",
          "description": "Update product name, description, status, tags, or attributes"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update product status",
          "description": "Update the status of one or more products"
        },
        {
          "name": "Upload 3D Model",
          "value": "upload3DModel",
          "action": "Upload a 3D model",
          "description": "Upload and optimize a 3D model file"
        },
        {
          "name": "Upload Asset",
          "value": "uploadAsset",
          "action": "Upload an asset",
          "description": "Upload an image, video, document, or audio file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "download",
      "options": [
        {
          "name": "Download",
          "value": "download",
          "action": "Download renders",
          "description": "Download renders for a product"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a render",
          "description": "Upload a render to a product"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "render"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload an attachment",
          "description": "Upload an attachment to a product"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "attachment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List organizations",
          "description": "List all organizations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "organization"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List workspaces",
          "description": "List all workspaces in the organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List pipelines",
          "description": "List all available optimization pipelines"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pipeline"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a tag",
          "description": "Create a new tag"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search tags",
          "description": "Search for tags in a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tag"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Clone",
      "value": "clone",
      "action": "Clone a product",
      "description": "Clone a product to the same or different workspace",
      "resource": "product"
    },
    {
      "name": "Download Model",
      "value": "downloadModel",
      "action": "Download a model",
      "description": "Download a 3D model file",
      "resource": "product"
    },
    {
      "name": "Move",
      "value": "move",
      "action": "Move a product",
      "description": "Move a product to a different workspace",
      "resource": "product"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search products",
      "description": "Search for products in a workspace",
      "resource": "product"
    },
    {
      "name": "Update Product",
      "value": "updateProduct",
      "action": "Update a product",
      "description": "Update product name, description, status, tags, or attributes",
      "resource": "product"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update product status",
      "description": "Update the status of one or more products",
      "resource": "product"
    },
    {
      "name": "Upload 3D Model",
      "value": "upload3DModel",
      "action": "Upload a 3D model",
      "description": "Upload and optimize a 3D model file",
      "resource": "product"
    },
    {
      "name": "Upload Asset",
      "value": "uploadAsset",
      "action": "Upload an asset",
      "description": "Upload an image, video, document, or audio file",
      "resource": "product"
    },
    {
      "name": "Download",
      "value": "download",
      "action": "Download renders",
      "description": "Download renders for a product",
      "resource": "render"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a render",
      "description": "Upload a render to a product",
      "resource": "render"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload an attachment",
      "description": "Upload an attachment to a product",
      "resource": "attachment"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List organizations",
      "description": "List all organizations",
      "resource": "organization"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List workspaces",
      "description": "List all workspaces in the organization",
      "resource": "workspace"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List pipelines",
      "description": "List all available optimization pipelines",
      "resource": "pipeline"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a tag",
      "description": "Create a new tag",
      "resource": "tag"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search tags",
      "description": "Search for tags in a workspace",
      "resource": "tag"
    }
  ]

npm_readme:
  # n8n-nodes-vntana

  This is an n8n community node for [VNTANA](https://www.vntana.com/), a product content platform that automates and scales 3D content. It enables n8n workflows to interact with VNTANA's Admin API for automating workflows with 3D products, renders, and attachments.

  [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-vntana
  ```

  ### Manual Installation

  1. Clone or download this repository
  2. Run `npm install` and `npm run build`
  3. Link the package: `npm link`
  4. In your n8n custom nodes directory (`~/.n8n/custom`):
     ```bash
     npm init -y  # if not already initialized
     npm link n8n-nodes-vntana
     ```
  5. Restart n8n

  ## Credentials

  To use this node, you need to configure VNTANA API credentials:

  | Field | Required | Description |
  |-------|----------|-------------|
  | **API Token** | Yes | Organization-specific X-AUTH-TOKEN |
  | **Organization UUID** | Yes | Your VNTANA organization UUID |
  | **Default Workspace UUID** | No | Default workspace to use when not specified |

  ### Obtaining Credentials

  1. Log in to VNTANA with your email/password or personal access token
  2. Get your organization UUID from the organizations list
  3. Refresh your token with the organization UUID to get an org-specific token
  4. Use this org-specific token as your API Token

  For detailed authentication steps, see [VNTANA API Authentication](https://help.vntana.com/api-authentication).

  ## Operations

  ### Product

  | Operation | Description |
  |-----------|-------------|
  | **Search** | Search for products in a workspace with filters |
  | **Download Model** | Download a 3D model file (GLB, USDZ, FBX, OBJ, STEP) |

  #### Search Filters
  - Search term (text search)
  - Status (Draft, Live Public, Live Internal, Approved, Rejected, Waiting Review)
  - Conversion status (Pending, Converting, Completed, Failed, No Asset)
  - Name (exact match)
  - Tag UUIDs

  ### Render

  | Operation | Description |
  |-----------|-------------|
  | **Download** | Download renders (still images or turntable videos) for a product |
  | **Upload** | Upload a render image/video to a product |

  ### Attachment

  | Operation | Description |
  |-----------|-------------|
  | **Upload** | Upload an attachment file to a product |

  ## Usage Examples

  ### Search Products

  1. Add the VNTANA node to your workflow
  2. Select **Product** resource and **Search** operation
  3. Enter your Workspace UUID
  4. Optionally add filters (search term, status, etc.)
  5. Execute to retrieve matching products

  ### Download a 3D Model

  1. Add the VNTANA node to your workflow
  2. Select **Product** resource and **Download Model** operation
  3. Enter the Product UUID and Workspace UUID
  4. Select the format (GLB, USDZ, FBX, OBJ, or STEP)
  5. Execute to download the model as binary data

  ### Upload a Render

  1. Add a node that provides binary data (e.g., HTTP Request, Read Binary File)
  2. Add the VNTANA node
  3. Select **Render** resource and **Upload** operation
  4. Enter the Product UUID and Workspace UUID
  5. Specify the binary property name containing your file
  6. Execute to upload the render to VNTANA

  ## Compatibility

  - **n8n version**: 1.0.0+
  - **Node.js version**: 18.x+

  ## Resources

  - [VNTANA Documentation](https://help.vntana.com/)
  - [VNTANA API Reference](https://help.vntana.com/api-documentation)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## Development

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Watch mode for development
  npm run dev

  # Lint the code
  npm run lint

  # Fix lint issues
  npm run lintfix
  ```

  ## License

  [MIT](LICENSE)


node_type: n8n-nodes-influencersclub.influencersClub
package_name: n8n-nodes-influencersclub
display_name: Influencers Club
description: Interact with Influencers Club API for creator enrichment and discovery
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: influencers.club
author_github_url: https://github.com/Influencers-Club/
npm_package_name: n8n-nodes-influencersclub
npm_version: 1.1.6
community_fetched_at: 2026-04-16T09:43:35.999Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "creator",
      "options": [
        {
          "name": "Creator",
          "value": "creator",
          "description": "Enrich creators or find similar ones"
        },
        {
          "name": "Discovery",
          "value": "discovery",
          "description": "Search and discover creators by filters"
        },
        {
          "name": "Batch Enrichment",
          "value": "batchEnrichment",
          "description": "Create, check status, download, or resume batch enrichment jobs"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "enrichByEmail",
      "options": [
        {
          "name": "Enrich by Email",
          "value": "enrichByEmail",
          "action": "Enrich by Email",
          "description": "Enrich a creator using their email address"
        },
        {
          "name": "Enrich by Handle (Full)",
          "value": "enrichByHandle",
          "action": "Enrich by Handle (Full)",
          "description": "Enrich a creator using their handle/username (full profile)"
        },
        {
          "name": "Enrich by Handle (Raw)",
          "value": "enrichByHandleRaw",
          "action": "Enrich by Handle (Raw)",
          "description": "Enrich a creator using their handle/username (raw data)"
        },
        {
          "name": "Find Similar Creators",
          "value": "findLookalikes",
          "action": "Find Similar Creators",
          "description": "This endpoint helps identify creators who are similar to a given influencer based on their social media presence, niche, engagement patterns, and audience characteristics. It allows businesses to discover new potential partners, expand outreach efforts, and optimize influencer marketing campaigns by targeting lookalike creators."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "creator"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "discovery",
      "options": [
        {
          "name": "Discovery",
          "value": "discovery",
          "action": "Discovery",
          "description": "The Discovery API allows you to filter creators based on the filters available on the dashboard, you can use the AI seach and lookalikes search to find profiles relevant to your targeting."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "discovery"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createBatch",
      "options": [
        {
          "name": "Create Batch Enrichment",
          "value": "createBatch",
          "action": "Create Batch Enrichment",
          "description": "Start a new batch enrichment job with a list of emails. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/create-batch-enrichment"
        },
        {
          "name": "Get Batch Enrichment Status",
          "value": "getBatchStatus",
          "action": "Get Batch Enrichment Status",
          "description": "Check the status of an existing batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/get-batch-enrichment-status"
        },
        {
          "name": "Download Batch Enrichment Results",
          "value": "downloadBatchResults",
          "action": "Download Batch Enrichment Results",
          "description": "Download the results of a completed batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/download-batch-enrichment-results"
        },
        {
          "name": "Resume Batch Enrichment",
          "value": "resumeBatch",
          "action": "Resume Batch Enrichment",
          "description": "Resume a failed or paused batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/resume-batch-enrichment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "batchEnrichment"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Enrich by Email",
      "value": "enrichByEmail",
      "action": "Enrich by Email",
      "description": "Enrich a creator using their email address",
      "resource": "creator"
    },
    {
      "name": "Enrich by Handle (Full)",
      "value": "enrichByHandle",
      "action": "Enrich by Handle (Full)",
      "description": "Enrich a creator using their handle/username (full profile)",
      "resource": "creator"
    },
    {
      "name": "Enrich by Handle (Raw)",
      "value": "enrichByHandleRaw",
      "action": "Enrich by Handle (Raw)",
      "description": "Enrich a creator using their handle/username (raw data)",
      "resource": "creator"
    },
    {
      "name": "Find Similar Creators",
      "value": "findLookalikes",
      "action": "Find Similar Creators",
      "description": "This endpoint helps identify creators who are similar to a given influencer based on their social media presence, niche, engagement patterns, and audience characteristics. It allows businesses to discover new potential partners, expand outreach efforts, and optimize influencer marketing campaigns by targeting lookalike creators.",
      "resource": "creator"
    },
    {
      "name": "Discovery",
      "value": "discovery",
      "action": "Discovery",
      "description": "The Discovery API allows you to filter creators based on the filters available on the dashboard, you can use the AI seach and lookalikes search to find profiles relevant to your targeting.",
      "resource": "discovery"
    },
    {
      "name": "Create Batch Enrichment",
      "value": "createBatch",
      "action": "Create Batch Enrichment",
      "description": "Start a new batch enrichment job with a list of emails. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/create-batch-enrichment",
      "resource": "batchEnrichment"
    },
    {
      "name": "Get Batch Enrichment Status",
      "value": "getBatchStatus",
      "action": "Get Batch Enrichment Status",
      "description": "Check the status of an existing batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/get-batch-enrichment-status",
      "resource": "batchEnrichment"
    },
    {
      "name": "Download Batch Enrichment Results",
      "value": "downloadBatchResults",
      "action": "Download Batch Enrichment Results",
      "description": "Download the results of a completed batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/download-batch-enrichment-results",
      "resource": "batchEnrichment"
    },
    {
      "name": "Resume Batch Enrichment",
      "value": "resumeBatch",
      "action": "Resume Batch Enrichment",
      "description": "Resume a failed or paused batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/resume-batch-enrichment",
      "resource": "batchEnrichment"
    }
  ]

npm_readme:
  # n8n-nodes-influencersclub

  Official n8n node for [Influencers Club enrichment and discovery API](https://influencers.club/influencer-api/).

  ## 🚀 Overview

  This repository provides an official n8n node for Influencers Club with four operations:

  - **Enrich by Email**: Takes an email address and enriches it with public social data, including possible usernames, followers, profile links, bio, and other social metrics. This is useful if you have a list of customer or subscriber emails and want to find their social presence and additional profile information.

  - **Enrich by Handle**: Takes a social media handle (username) and platform, and enriches it with email (if available), followers, bio, links, and additional social metrics. This is useful if you have scraped or collected social handles and want to obtain verified emails or extra data.

  - **Discovery**: Search for creators using advanced filters such as keyword, platform, audience country, follower range, engagement rate, and more. The node provides full flexibility and matches the official API documentation.

  - **Find Lookalikes**: Find similar creators to a given handle on a specified platform. This is useful for building lookalike lists for outreach or audience expansion.

  These operations help marketing and growth teams enrich leads, segment audiences, sync to CRM systems, or prepare personalized outreach workflows.

  ---

  ## 🔑 How to get your API Key

  To use this node, you need an **API Key** from your Influencers Club account.

  ### Steps

  1. **Register** at [Influencers Club Dashboard](https://dashboard.influencers.club/register).
  2. After logging in, open the [API page](https://dashboard.influencers.club/api).
  3. Copy your **API Key** displayed there.

  **All requests require a Bearer token:**

  Paste this key into the "Influencers Club API" credentials in your n8n workflow.

  ---

  ## ⚡ Example workflows

  - Import a list of email addresses from Google Sheets ➜ Influencers Club (Enrich by Email) ➜ Push to CRM or Airtable.
  - Import a list of Instagram handles ➜ Influencers Club (Enrich by Handle) ➜ Get emails ➜ Send personalized outreach via Gmail node.
  - Search for creators in your niche ➜ Influencers Club (Discovery) ➜ Filter and export to spreadsheet.
  - Find similar creators ➜ Influencers Club (Find Lookalikes) ➜ Build outreach lists.

  ---

  ## 🛠️ Installation

  Install via npm:

  ```bash
  npm install n8n-nodes-influencersclub
  ```

  Then, add to your n8n instance as a custom node package.

  ---

  ## 📄 License

  MIT

  ---

  ## 💬 Support

  For questions, contact [Influencers Club Support](https://dashboard.influencers.club) or [open an issue](https://github.com/Influencers-Club/n8n-nodes-influencersclub/issues).

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the Influencers Club API to enrich creator data, discover new creators, and find lookalike profiles for marketing and growth workflows.","capabilities":["Enrich email addresses with social media data (username, followers, bio, profile links)","Enrich social media handles with email addresses and social metrics","Search and discover creators using advanced filters (keywords, platform, audience country, follower range, engagement rate)","Find lookalike creators based on a given handle and platform"],"authentication":"API Key (Bearer token required, stored in 'Influencers Club API' credentials)","commonUseCases":["Lead enrichment for customer or subscriber emails","Audience expansion by finding similar creators","Syncing creator data to CRM systems","Preparing personalized outreach lists"],"limitations":["Requires a paid API Key from Influencers Club","Email enrichment only returns email if available for the given handle"],"relatedNodes":["Gmail","Airtable","Google Sheets","Spreadsheet"]}


node_type: n8n-nodes-seltz.seltz
package_name: n8n-nodes-seltz
display_name: Seltz
description: Search the live web using the Seltz Web Knowledge API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: williamespegren
author_github_url: https://github.com/WilliamEspegren/
npm_package_name: n8n-nodes-seltz
npm_version: 1.0.4
community_fetched_at: 2026-04-16T09:43:35.999Z
npm_readme:
  # n8n-nodes-seltz

  This is an n8n community node for [Seltz](https://seltz.ai/?utm_source=n8n-nodes-seltz&utm_medium=readme) — the Web Knowledge API built for AI agents. It lets you search the live web inside your n8n workflows.

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

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

  ## Installation

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

  ## Operations

  ### Web Search

  - **Query** — The search query to send to Seltz.
  - **Max Documents** — Maximum number of documents to return (1–20).
  - **Output Mode** — Choose between returning one item per document or all documents in a single item.

  ## Credentials

  You need a Seltz API key to use this node.

  1. Sign up at [seltz.ai](https://seltz.ai/?utm_source=n8n-nodes-seltz&utm_medium=readme).
  2. Copy your API key from the dashboard.
  3. In n8n, create a new **Seltz API** credential and paste the key.

  ## Compatibility

  Tested with n8n version 1.x. No known compatibility issues.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Seltz API documentation](https://seltz.ai/?utm_source=n8n-nodes-seltz&utm_medium=readme)
  - [GitHub repository](https://github.com/WilliamEspegren/n8n-nodes-seltz)


node_type: @droidrun/n8n-nodes-droidrun.mobilerun
package_name: @droidrun/n8n-nodes-droidrun
display_name: Mobilerun
description: Access the Mobilerun Cloud Api
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: lukas-droidrun
author_github_url: https://github.com/droidrun/n8n-nodes-droidrun.git
npm_package_name: @droidrun/n8n-nodes-droidrun
npm_version: 1.0.7
community_fetched_at: 2026-04-16T09:43:36.000Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "inspectTask",
      "options": [
        {
          "name": "Appstore",
          "value": "apps"
        },
        {
          "name": "Device",
          "value": "device"
        },
        {
          "name": "Device Credential",
          "value": "credential"
        },
        {
          "name": "Inspect Task",
          "value": "inspectTask"
        },
        {
          "name": "Manage Task",
          "value": "manageTask"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listTasks",
      "options": [
        {
          "name": "Get Task",
          "value": "getTask",
          "action": "Get task",
          "routing": {
            "request": {
              "url": "={{ \"/tasks/\" + $parameter.taskId }}",
              "method": "GET"
            }
          },
          "description": "Get a task"
        },
        {
          "name": "Get Task Gif",
          "value": "getTaskGif",
          "action": "Get task gif",
          "routing": {
            "request": {
              "url": "={{ \"/tasks/\" + $parameter.taskId + \"/gif\" }}",
              "method": "GET"
            }
          },
          "description": "Get a screenshot of a task"
        },
        {
          "name": "Get Task Screenshot",
          "value": "getTaskScreenshot",
          "action": "Get task screenshot",
          "routing": {
            "request": {
              "url": "={{ \"/tasks/\" + $parameter.taskId + \"/screenshots/\" +  $parameter.index }}",
              "method": "GET"
            }
          },
          "description": "Get a screenshot of a task"
        },
        {
          "name": "Get Task Screenshots",
          "value": "getTaskScreenshots",
          "action": "Get task screenshots",
          "routing": {
            "request": {
              "url": "={{ \"/tasks/\" + $parameter.taskId + \"/screenshots\" }}",
              "method": "GET"
            }
          },
          "description": "Get a list of screenshots of a task"
        },
        {
          "name": "Get Task Trajectory",
          "value": "getTaskTrajectory",
          "action": "Get task trajectory",
          "routing": {
            "request": {
              "url": "={{ \"/tasks/\" + $parameter.taskId + \"/trajectory\" }}",
              "method": "GET"
            }
          },
          "description": "Get the trajectory of a task"
        },
        {
          "name": "Get Task UI State",
          "value": "getTaskUIState",
          "action": "Get task UI state",
          "routing": {
            "request": {
              "url": "={{ \"/tasks/\" + $parameter.taskId + \"/ui_states/\" + $parameter.index }}",
              "method": "GET"
            }
          },
          "description": "Get a specific UI state of a task"
        },
        {
          "name": "Get Task UI States",
          "value": "getTaskUIStates",
          "action": "Get task UI states",
          "routing": {
            "request": {
              "url": "={{ \"/tasks/\" + $parameter.taskId + \"/ui_states\" }}",
              "method": "GET"
            }
          },
          "description": "Get UI states of a task"
        },
        {
          "name": "List Tasks",
          "value": "listTasks",
          "action": "List tasks",
          "routing": {
            "request": {
              "url": "/tasks/",
              "method": "GET"
            }
          },
          "description": "List all tasks you’ve created so far"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "inspectTask"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "runTask",
      "options": [
        {
          "name": "Stop Task",
          "value": "stopTask",
          "action": "Stop task",
          "routing": {
            "request": {
              "url": "={{ \"/tasks/\" + $parameter.taskId + \"/cancel\" }}",
              "method": "POST"
            }
          },
          "description": "Stops a task"
        },
        {
          "name": "Run Task",
          "value": "runTask",
          "action": "Run task",
          "routing": {
            "request": {
              "url": "/tasks/",
              "body": {
                "apps": "={{ $parameter.apps }}",
                "task": "={{ $parameter.task }}",
                "files": "={{ $parameter.files }}",
                "vision": "={{ $parameter.vision }}",
                "deviceId": "={{ $parameter.deviceId }}",
                "llmModel": "={{ $parameter.llmModel }}",
                "maxSteps": "={{ $parameter.maxSteps }}",
                "displayId": "={{ $parameter.deviceSelectionMode === \"manual\" ? $parameter.deviceIdManual : $parameter.deviceId }}",
                "reasoning": "={{ $parameter.reasoning }}",
                "vpnCountry": "={{ $parameter.vpnCountry === \"none\" ? undefined : $parameter.vpnCountry }}",
                "credentials": "={{ $parameter.credentials }}",
                "temperature": "={{ $parameter.temperature }}",
                "outputSchema": "={{ $parameter.outputSchema ? JSON.parse($parameter.outputSchema) : undefined }}",
                "executionTimeout": "={{ $parameter.executionTimeout }}"
              },
              "method": "POST"
            }
          },
          "description": "Run a task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "manageTask"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listApps",
      "options": [
        {
          "name": "List Apps",
          "value": "listApps",
          "action": "List apps",
          "routing": {
            "request": {
              "url": "/apps",
              "method": "GET"
            }
          },
          "description": "Retrieves a paginated list of apps with filtering and search capabilities"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "apps"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listCredentials",
      "options": [
        {
          "name": "Add New Field",
          "value": "addCredentialField",
          "action": "Add field to specific credential",
          "routing": {
            "request": {
              "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName + \"/fields\"  }}",
              "body": {
                "value": "={{ $parameter.credentialValue }}",
                "fieldType": "={{ $parameter.credentialType }}"
              },
              "method": "PATCH"
            }
          },
          "description": "Add a new field to an existing credential"
        },
        {
          "name": "Create Credential Field",
          "value": "createCredentialField",
          "action": "Create credential field",
          "routing": {
            "request": {
              "url": "={{ \"/credentials/packages/\" + $parameter.packageName }}",
              "body": {
                "fields": {
                  "value": "={{ $parameter.credentialValue }}",
                  "fieldsType": "={{ $parameter.credentialType }}"
                },
                "credentialName": "={{ $parameter.credentialName }}"
              },
              "method": "POST"
            }
          },
          "description": "Create a credential with fields for a package"
        },
        {
          "name": "Delete Specific Credential",
          "value": "deleteSpecificCredential",
          "action": "Delete specific credential",
          "routing": {
            "request": {
              "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName }}",
              "method": "DELETE"
            }
          },
          "description": "Delete a credential and all its fields"
        },
        {
          "name": "Delete Specific Credential Field",
          "value": "deleteSpecificCredentialField",
          "action": "Delete specific credential field",
          "routing": {
            "request": {
              "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName + \"/fields/\" + $parameter.credentialType  }}",
              "method": "DELETE"
            }
          },
          "description": "Delete a field from a credential"
        },
        {
          "name": "Get Specific Credential",
          "value": "getSpecificCredential",
          "action": "Get specific credential",
          "routing": {
            "request": {
              "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName}}",
              "method": "GET"
            }
          },
          "description": "Get a specific credential with its fields"
        },
        {
          "name": "Initialize Package",
          "value": "initializePackage",
          "action": "Initialize package",
          "routing": {
            "request": {
              "url": "/credentials",
              "body": {
                "packageName": "={{ $parameter.packageName }}"
              },
              "method": "POST"
            }
          },
          "description": "Initialize a new package/app"
        },
        {
          "name": "List Credentials",
          "value": "listCredentials",
          "action": "List credentials",
          "routing": {
            "request": {
              "url": "/credentials",
              "method": "GET"
            }
          },
          "description": "List all credentials for the authenticated user"
        },
        {
          "name": "List Package Credentials",
          "value": "listPackageCredentials",
          "action": "List package credentials",
          "routing": {
            "request": {
              "url": "={{ \"/credentials/packages/\" + $parameter.packageName }}",
              "method": "GET"
            }
          },
          "description": "List credentials for a specific package"
        },
        {
          "name": "Update Specific Credential Field",
          "value": "updateSpecificCredentialField",
          "action": "Update specific credential field",
          "routing": {
            "request": {
              "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName + \"/fields/\" + $parameter.credentialType  }}",
              "body": {
                "value": "={{ $parameter.credentialValue }}"
              },
              "method": "PATCH"
            }
          },
          "description": "Update the value of a credential field"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "credential"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listDevices",
      "options": [
        {
          "name": "Delete Device",
          "value": "deleteDevice",
          "action": "Delete device",
          "routing": {
            "request": {
              "url": "/devices/{{$parameter.deviceId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a specific device"
        },
        {
          "name": "Get Device",
          "value": "getDevice",
          "action": "Get device details",
          "routing": {
            "request": {
              "url": "/devices/{{$parameter.deviceId}}",
              "method": "GET"
            }
          },
          "description": "Get details of a specific device"
        },
        {
          "name": "Get Device Tasks",
          "value": "getDeviceTasks",
          "action": "Get device tasks",
          "routing": {
            "request": {
              "url": "/devices/{{$parameter.deviceId}}/tasks",
              "method": "GET"
            }
          },
          "description": "Get tasks for a specific device"
        },
        {
          "name": "List Devices",
          "value": "listDevices",
          "action": "List devices",
          "routing": {
            "request": {
              "url": "/devices",
              "method": "GET"
            }
          },
          "description": "Retrieves a paginated list of devices with filtering and search capabilities"
        },
        {
          "name": "Provision Device",
          "value": "provisionDevice",
          "action": "Provision a new device",
          "routing": {
            "request": {
              "url": "/devices",
              "method": "POST"
            }
          },
          "description": "Provision a new device"
        },
        {
          "name": "Wait for Device",
          "value": "waitForDevice",
          "action": "Wait for device",
          "routing": {
            "request": {
              "url": "/devices/{{$parameter.deviceId}}/wait",
              "method": "GET"
            }
          },
          "description": "Wait for a device to be ready"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "device"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Task",
      "value": "getTask",
      "action": "Get task",
      "routing": {
        "request": {
          "url": "={{ \"/tasks/\" + $parameter.taskId }}",
          "method": "GET"
        }
      },
      "description": "Get a task",
      "resource": "inspectTask"
    },
    {
      "name": "Get Task Gif",
      "value": "getTaskGif",
      "action": "Get task gif",
      "routing": {
        "request": {
          "url": "={{ \"/tasks/\" + $parameter.taskId + \"/gif\" }}",
          "method": "GET"
        }
      },
      "description": "Get a screenshot of a task",
      "resource": "inspectTask"
    },
    {
      "name": "Get Task Screenshot",
      "value": "getTaskScreenshot",
      "action": "Get task screenshot",
      "routing": {
        "request": {
          "url": "={{ \"/tasks/\" + $parameter.taskId + \"/screenshots/\" +  $parameter.index }}",
          "method": "GET"
        }
      },
      "description": "Get a screenshot of a task",
      "resource": "inspectTask"
    },
    {
      "name": "Get Task Screenshots",
      "value": "getTaskScreenshots",
      "action": "Get task screenshots",
      "routing": {
        "request": {
          "url": "={{ \"/tasks/\" + $parameter.taskId + \"/screenshots\" }}",
          "method": "GET"
        }
      },
      "description": "Get a list of screenshots of a task",
      "resource": "inspectTask"
    },
    {
      "name": "Get Task Trajectory",
      "value": "getTaskTrajectory",
      "action": "Get task trajectory",
      "routing": {
        "request": {
          "url": "={{ \"/tasks/\" + $parameter.taskId + \"/trajectory\" }}",
          "method": "GET"
        }
      },
      "description": "Get the trajectory of a task",
      "resource": "inspectTask"
    },
    {
      "name": "Get Task UI State",
      "value": "getTaskUIState",
      "action": "Get task UI state",
      "routing": {
        "request": {
          "url": "={{ \"/tasks/\" + $parameter.taskId + \"/ui_states/\" + $parameter.index }}",
          "method": "GET"
        }
      },
      "description": "Get a specific UI state of a task",
      "resource": "inspectTask"
    },
    {
      "name": "Get Task UI States",
      "value": "getTaskUIStates",
      "action": "Get task UI states",
      "routing": {
        "request": {
          "url": "={{ \"/tasks/\" + $parameter.taskId + \"/ui_states\" }}",
          "method": "GET"
        }
      },
      "description": "Get UI states of a task",
      "resource": "inspectTask"
    },
    {
      "name": "List Tasks",
      "value": "listTasks",
      "action": "List tasks",
      "routing": {
        "request": {
          "url": "/tasks/",
          "method": "GET"
        }
      },
      "description": "List all tasks you’ve created so far",
      "resource": "inspectTask"
    },
    {
      "name": "Stop Task",
      "value": "stopTask",
      "action": "Stop task",
      "routing": {
        "request": {
          "url": "={{ \"/tasks/\" + $parameter.taskId + \"/cancel\" }}",
          "method": "POST"
        }
      },
      "description": "Stops a task",
      "resource": "manageTask"
    },
    {
      "name": "Run Task",
      "value": "runTask",
      "action": "Run task",
      "routing": {
        "request": {
          "url": "/tasks/",
          "body": {
            "apps": "={{ $parameter.apps }}",
            "task": "={{ $parameter.task }}",
            "files": "={{ $parameter.files }}",
            "vision": "={{ $parameter.vision }}",
            "deviceId": "={{ $parameter.deviceId }}",
            "llmModel": "={{ $parameter.llmModel }}",
            "maxSteps": "={{ $parameter.maxSteps }}",
            "displayId": "={{ $parameter.deviceSelectionMode === \"manual\" ? $parameter.deviceIdManual : $parameter.deviceId }}",
            "reasoning": "={{ $parameter.reasoning }}",
            "vpnCountry": "={{ $parameter.vpnCountry === \"none\" ? undefined : $parameter.vpnCountry }}",
            "credentials": "={{ $parameter.credentials }}",
            "temperature": "={{ $parameter.temperature }}",
            "outputSchema": "={{ $parameter.outputSchema ? JSON.parse($parameter.outputSchema) : undefined }}",
            "executionTimeout": "={{ $parameter.executionTimeout }}"
          },
          "method": "POST"
        }
      },
      "description": "Run a task",
      "resource": "manageTask"
    },
    {
      "name": "List Apps",
      "value": "listApps",
      "action": "List apps",
      "routing": {
        "request": {
          "url": "/apps",
          "method": "GET"
        }
      },
      "description": "Retrieves a paginated list of apps with filtering and search capabilities",
      "resource": "apps"
    },
    {
      "name": "Add New Field",
      "value": "addCredentialField",
      "action": "Add field to specific credential",
      "routing": {
        "request": {
          "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName + \"/fields\"  }}",
          "body": {
            "value": "={{ $parameter.credentialValue }}",
            "fieldType": "={{ $parameter.credentialType }}"
          },
          "method": "PATCH"
        }
      },
      "description": "Add a new field to an existing credential",
      "resource": "credential"
    },
    {
      "name": "Create Credential Field",
      "value": "createCredentialField",
      "action": "Create credential field",
      "routing": {
        "request": {
          "url": "={{ \"/credentials/packages/\" + $parameter.packageName }}",
          "body": {
            "fields": {
              "value": "={{ $parameter.credentialValue }}",
              "fieldsType": "={{ $parameter.credentialType }}"
            },
            "credentialName": "={{ $parameter.credentialName }}"
          },
          "method": "POST"
        }
      },
      "description": "Create a credential with fields for a package",
      "resource": "credential"
    },
    {
      "name": "Delete Specific Credential",
      "value": "deleteSpecificCredential",
      "action": "Delete specific credential",
      "routing": {
        "request": {
          "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName }}",
          "method": "DELETE"
        }
      },
      "description": "Delete a credential and all its fields",
      "resource": "credential"
    },
    {
      "name": "Delete Specific Credential Field",
      "value": "deleteSpecificCredentialField",
      "action": "Delete specific credential field",
      "routing": {
        "request": {
          "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName + \"/fields/\" + $parameter.credentialType  }}",
          "method": "DELETE"
        }
      },
      "description": "Delete a field from a credential",
      "resource": "credential"
    },
    {
      "name": "Get Specific Credential",
      "value": "getSpecificCredential",
      "action": "Get specific credential",
      "routing": {
        "request": {
          "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName}}",
          "method": "GET"
        }
      },
      "description": "Get a specific credential with its fields",
      "resource": "credential"
    },
    {
      "name": "Initialize Package",
      "value": "initializePackage",
      "action": "Initialize package",
      "routing": {
        "request": {
          "url": "/credentials",
          "body": {
            "packageName": "={{ $parameter.packageName }}"
          },
          "method": "POST"
        }
      },
      "description": "Initialize a new package/app",
      "resource": "credential"
    },
    {
      "name": "List Credentials",
      "value": "listCredentials",
      "action": "List credentials",
      "routing": {
        "request": {
          "url": "/credentials",
          "method": "GET"
        }
      },
      "description": "List all credentials for the authenticated user",
      "resource": "credential"
    },
    {
      "name": "List Package Credentials",
      "value": "listPackageCredentials",
      "action": "List package credentials",
      "routing": {
        "request": {
          "url": "={{ \"/credentials/packages/\" + $parameter.packageName }}",
          "method": "GET"
        }
      },
      "description": "List credentials for a specific package",
      "resource": "credential"
    },
    {
      "name": "Update Specific Credential Field",
      "value": "updateSpecificCredentialField",
      "action": "Update specific credential field",
      "routing": {
        "request": {
          "url": "={{ \"/credentials/packages/\" + $parameter.packageName + \"/credentials/\" + $parameter.credentialName + \"/fields/\" + $parameter.credentialType  }}",
          "body": {
            "value": "={{ $parameter.credentialValue }}"
          },
          "method": "PATCH"
        }
      },
      "description": "Update the value of a credential field",
      "resource": "credential"
    },
    {
      "name": "Delete Device",
      "value": "deleteDevice",
      "action": "Delete device",
      "routing": {
        "request": {
          "url": "/devices/{{$parameter.deviceId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a specific device",
      "resource": "device"
    },
    {
      "name": "Get Device",
      "value": "getDevice",
      "action": "Get device details",
      "routing": {
        "request": {
          "url": "/devices/{{$parameter.deviceId}}",
          "method": "GET"
        }
      },
      "description": "Get details of a specific device",
      "resource": "device"
    },
    {
      "name": "Get Device Tasks",
      "value": "getDeviceTasks",
      "action": "Get device tasks",
      "routing": {
        "request": {
          "url": "/devices/{{$parameter.deviceId}}/tasks",
          "method": "GET"
        }
      },
      "description": "Get tasks for a specific device",
      "resource": "device"
    },
    {
      "name": "List Devices",
      "value": "listDevices",
      "action": "List devices",
      "routing": {
        "request": {
          "url": "/devices",
          "method": "GET"
        }
      },
      "description": "Retrieves a paginated list of devices with filtering and search capabilities",
      "resource": "device"
    },
    {
      "name": "Provision Device",
      "value": "provisionDevice",
      "action": "Provision a new device",
      "routing": {
        "request": {
          "url": "/devices",
          "method": "POST"
        }
      },
      "description": "Provision a new device",
      "resource": "device"
    },
    {
      "name": "Wait for Device",
      "value": "waitForDevice",
      "action": "Wait for device",
      "routing": {
        "request": {
          "url": "/devices/{{$parameter.deviceId}}/wait",
          "method": "GET"
        }
      },
      "description": "Wait for a device to be ready",
      "resource": "device"
    }
  ]

npm_readme:
  # n8n-nodes-droidrun

  This is an n8n community node that lets you use Droidrun AI in your n8n workflows to automate tasks on Android devices via the Droidrun Cloud API.

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

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

  ## Installation

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

  ## Operations

  This node exposes the following resources and operations:

  - Inspect Task
    - Get Task
    - Get Task Gif
    - Get Task Screenshot
    - Get Task Screenshots
    - Get Task Status
    - List Tasks

  - Manage Task
    - Run Task
      - Supports LLM model selection (fetched from LiteLLM endpoint)
      - Optional device selection (fetched from API or manual entry)
      - Apps selection (fetched from API for dropdown)
      - Structured output support via JSON schema
      - Optional file attachments
    - Stop Task

  ## Credentials

  This node requires a Droidrun API Token.

  - Create a Droidrun account and obtain an API key from your dashboard.
  - In n8n, create new credentials of type `Droidrun API` and paste your token.
  - The token will be sent as `Authorization: Bearer <token>` to the Droidrun API.

  Reference: `https://docs.mobilerun.ai/api-reference/`

  ## Compatibility

  - Built for the n8n Nodes API v1.
  - Developed with Node.js >= 20.15.

  ## Usage

  1. Add the `Droidrun` node to your workflow.
  2. Select the `Resource` (Inspect Task or Manage Task) and choose an `Operation`.
  3. Provide required parameters (for example, `Task ID` for inspect operations or `Task` and model settings for `Run Task`).
  4. Execute the workflow.

  ## Resources

  - n8n community nodes docs: `https://docs.n8n.io/integrations/#community-nodes`
  - Droidrun API reference: `https://docs.mobilerun.ai/api-reference/`
  - Droidrun website: `https://droidrun.ai/`

  ## Version history

  - 1.0.3: Initial public release of the Droidrun Tasks node

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of tasks on Android devices via the Droidrun Cloud API, allowing users to run, inspect, and manage AI tasks within their workflows.","capabilities":["Inspect tasks (Get Task, Get Task Gif, Get Task Screenshot, Get Task Screenshots, Get Task Status, List Tasks)","Run tasks with LLM model selection from LiteLLM endpoint","Run tasks with optional device selection","Run tasks with apps selection from API","Run tasks with structured output support via JSON schema","Run tasks with optional file attachments","Stop tasks"],"authentication":"API key required (Droidrun API Token sent as Authorization: Bearer <token>)","commonUseCases":["Automating Android device testing in CI/CD pipelines","Running AI models on remote Android devices","Capturing screenshots and GIFs for task verification","Executing mobile app workflows with specific models and devices"],"limitations":["Requires a Droidrun account and API token","Model selection is limited to those available via the LiteLLM endpoint","Device and app selection depends on API availability or manual entry","Requires Node.js >= 20.15"],"relatedNodes":["LiteLLM","Generic HTTP Request","JSON Schema"]}


node_type: @optimizely-campaign/n8n-nodes-optimizely-campaign.optimizelyCampaign
package_name: @optimizely-campaign/n8n-nodes-optimizely-campaign
display_name: Optimizely Campaign
description: Optimizely Campaign
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: optimizely-campaign
author_github_url: https://github.com/optimizely-campaign/campaign-n8n-nodes.git
npm_package_name: @optimizely-campaign/n8n-nodes-optimizely-campaign
npm_version: 0.1.2
community_fetched_at: 2026-04-16T09:43:36.001Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "recipient",
      "options": [
        {
          "name": "Recipient",
          "value": "recipient"
        },
        {
          "name": "Transactional Mail",
          "value": "transactionalMail"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a recipient",
          "description": "Create a recipient"
        },
        {
          "name": "Get Recipient",
          "value": "getRecipient",
          "action": "Get a recipient",
          "description": "Get a recipient with selected attributes"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a recipient",
          "description": "Update a recipient"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "recipient"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send a transactional mail"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transactionalMail"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a recipient",
      "description": "Create a recipient",
      "resource": "recipient"
    },
    {
      "name": "Get Recipient",
      "value": "getRecipient",
      "action": "Get a recipient",
      "description": "Get a recipient with selected attributes",
      "resource": "recipient"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a recipient",
      "description": "Update a recipient",
      "resource": "recipient"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send a transactional mail",
      "resource": "transactionalMail"
    }
  ]

npm_readme:
  # n8n-nodes-optimizely-campaign

  This package provides **n8n community nodes** for interacting with the **Optimizely Campaign API**.

  It enables you to process response data in real time using webhooks, manage recipients, and send transactional emails directly from your n8n workflows.

  ## Features

  - 📡 **Webhook Trigger**
    - Receive and process response data from Optimizely Campaign in real time
    - Ideal for event-driven and reactive workflows

  - 👥 **Recipient Management**
    - Create new recipients
    - Update existing recipients
    - Manage recipient data programmatically

  - ✉️ **Transactional Emails**
    - Send transactional emails via Optimizely Campaign
    - Integrate email delivery into automated workflows


  ## Installation

  ### Community Nodes (self-hosted)

  1. Open **Settings → Community Nodes**
  2. Click **Install**
  3. Enter the package name: `@optimizely-campaign/n8n-nodes-optimizely-campaign`
  4. Click **Install**

  ### Manual Installation (self-hosted)

  ```bash
  npm install @optimizely-campaign/n8n-nodes-optimizely-campaign
  ```

  After installation, restart your n8n instance to load the new nodes.

  ## Credentials

  To use this node, you need **Optimizely Campaign API credentials**. These must be requested from Optimizely Campaign Support.

  ### How to obtain API credentials:

  1. Contact **Optimizely Campaign Support** at [campaignsupport@optimizely.com](mailto:campaignsupport@optimizely.com)
  2. Request an **API user** for your Optimizely Campaign account
  3. You will receive:
     - **API Username** (API-User)
     - **API Password**
     - **Client ID** (mandator ID)

  ### Setting up credentials in n8n:

  1. In n8n, go to **Credentials** → **New**
  2. Search for **Optimizely Campaign API**
  3. Enter your credentials:
     - **API-User**: Your API username
     - **Password**: Your API password
     - **Client**: Your Client/Mandator ID
  4. Click **Save**

  The credentials will be automatically tested by calling the `/users/authenticated` endpoint.

  ## Compatibility

  Tested with:
  - n8n version **1.112.0** and later
  - Optimizely Campaign API (REST API v1)

  ## Usage

  ### Example 1: Create a Recipient

  1. Add the **Optimizely Campaign** node to your workflow
  2. Select **Recipient** as the resource
  3. Select **Create** as the operation
  4. Choose your recipient list
  5. Select the recipient ID field (usually email)
  6. Map your data fields using the Resource Mapper
  7. Optionally trigger an opt-in process

  ### Example 2: Send Transactional Email

  1. Add the **Optimizely Campaign** node
  2. Select **Transactional Mail** as the resource
  3. Choose your transactional mailing
  4. Select the recipient list
  5. Map recipient data including the ID field
  6. Execute to send the email

  ### Example 3: Webhook Trigger for Campaign Events

  1. Add the **Optimizely Campaign Trigger** node
  2. Select the event type (e.g., Click, Open, Bounce)
  3. The webhook URL will be automatically registered with Optimizely Campaign
  4. Process incoming webhook data in your workflow

  ## Operations

  ### Recipient Resource

  - **Create**: Create a new recipient in a recipient list
  - **Get Recipient**: Retrieve recipient data with selected attributes  
  - **Update**: Update an existing recipient's data

  ### Transactional Mail Resource

  - **Send**: Send a transactional email to a recipient

  ### Webhook Trigger

  Available events:
  - Archive, Blocklist, Bounce, Click, Confirmed Opt-In, Double Opt-In
  - Filtered by Blocklist, Open, Sent, Single Opt-In, Spam Complaint, Unsubscribe

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Optimizely Campaign API Documentation](https://support.optimizely.com/hc/en-us/articles/4413200461197)
  - [Optimizely Campaign](https://www.optimizely.com/products/campaign/)
  - [GitHub Repository](https://github.com/optimizely-campaign/campaign-n8n-nodes)

  ## Support

  For issues or questions:
  - **API Access & Credentials**: Contact [campaignsupport@optimizely.com](mailto:campaignsupport@optimizely.com)
  - **General Questions**: Refer to the [Optimizely Campaign Support](https://support.optimizely.com/hc/en-us/categories/4413188107405-Optimizely-Campaign)


  ## License

  [MIT](LICENSE.md)

  ---

  **Developed by:** Optimizely Campaign Integration Management Team

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Optimizely Campaign API to manage recipients, send transactional emails, and process real-time campaign events via webhooks.","capabilities":["Create new recipients in a recipient list","Update existing recipient data","Retrieve recipient data with selected attributes","Send transactional emails via Optimizely Campaign","Receive real-time campaign events (e.g., Click, Open, Bounce) via webhooks","Manage opt-in processes (Single Opt-In, Double Opt-In, Confirmed Opt-In)"],"authentication":"API key required (API Username, Password, and Client/Mandator ID)","commonUseCases":["Automated email marketing campaigns","Real-time processing of campaign engagement events","Managing subscriber lists and opt-in workflows","Sending transactional notifications through Optimizely"],"limitations":["Requires manual API credentials obtained from Optimizely Campaign Support","Compatible with Optimizely Campaign API REST v1 only","Requires n8n version 1.112.0 or later"],"relatedNodes":["Optimizely Campaign Trigger","Optimizely Campaign API"]}


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

updated_at: 2026-04-16 09:43:36
author_name: cobrien704
author_github_url: https://github.com/MercuryTechnologies/
npm_package_name: n8n-nodes-mercury
npm_version: 0.1.2
community_fetched_at: 2026-04-16T09:43:36.002Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-mercury

  This is an n8n community node that provides webhook-based triggers for [Mercury](https://mercury.com) banking events. It lets you automatically start n8n workflows when transactions or account balances change.

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

  [Installation](#installation) |
  [Credentials](#credentials) |
  [Trigger Events](#trigger-events) |
  [Usage](#usage) |
  [Architecture](#architecture) |
  [Compatibility](#compatibility) |
  [Resources](#resources)

  ## Installation

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

  ## Credentials

  1. In Mercury, go to [Settings > API Tokens](https://app.mercury.com/settings/tokens).
  2. Click **Create token** and give it a name (e.g., "n8n").
  3. Copy the token — it's only shown once.
  4. In n8n, go to **Credentials > Add Credential** and search for **Mercury API**.
  5. Paste the token into the **API Token** field and save.

  ## Trigger Events

  The **Mercury** node starts your workflow when one of the following events occurs:

  | Trigger Type | Description |
  |---|---|
  | **Transaction Created** | A new transaction is created on any account |
  | **Transaction Settled** | A transaction status changes to `settled` |
  | **Transaction Failed** | A transaction status changes to `failed` |
  | **Transaction Cancelled** | A transaction status changes to `cancelled` |
  | **Transaction Updated** | Any update to a transaction (all status and metadata changes) |
  | **Account Balance Updated** | A checking or savings account balance changes |

  ## Usage

  1. In n8n, create a new workflow.
  2. Add the **Mercury** node (search for "Mercury" in the nodes panel).
  3. Select your **Mercury API** credential.
  4. Choose a **Trigger Type** from the dropdown (e.g., "Transaction Created").
  5. Connect any downstream nodes to process the data (e.g., send a Slack message, update a spreadsheet).
  6. **Activate** the workflow.

  Once active, the workflow runs automatically whenever the selected event occurs in Mercury. The trigger outputs the full resource — for transaction events, this is the complete [transaction object](https://docs.mercury.com/reference/gettransaction); for balance events, the complete [account object](https://docs.mercury.com/reference/getaccount).

  To stop receiving events, deactivate the workflow. The webhook is cleaned up automatically.

  ## Architecture

  This node uses Mercury's [webhook API](https://docs.mercury.com/reference/createwebhook) with automatic lifecycle management:

  - **Activate workflow** — n8n registers a webhook with Mercury for the selected event type.
  - **Receive event** — Mercury sends a webhook notification. The node verifies the HMAC-SHA256 signature, then fetches the full resource (transaction or account) from the Mercury API.
  - **Deactivate workflow** — n8n deregisters the webhook from Mercury.

  You don't need to create or manage webhooks manually. The node handles registration and cleanup.

  All incoming webhooks are verified using HMAC-SHA256 signatures (`Mercury-Signature` header). Webhooks with missing, invalid, or expired (>5 minutes) signatures are rejected.

  ## Compatibility

  Requires **n8n >= 1.60.0**.

  ## Resources

  - [Mercury API Documentation](https://docs.mercury.com/reference/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Community Nodes Installation Guide](https://docs.n8n.io/integrations/community-nodes/installation/)

ai_documentation_summary:
  {"purpose":"Automatically triggers n8n workflows when specific banking events occur in Mercury, such as transaction status changes or account balance updates.","capabilities":["Monitor for Transaction Created events","Monitor for Transaction Settled events","Monitor for Transaction Failed events","Monitor for Transaction Cancelled events","Monitor for Transaction Updated events","Monitor for Account Balance Updated events","Automatic HMAC-SHA256 signature verification","Automatic webhook registration and deregistration","Output full transaction or account resource objects"],"authentication":"API Token (Mercury API Token)","commonUseCases":["Automated expense tracking and categorization","Real-time balance monitoring alerts","Automated bookkeeping entry creation","Spending limit breach notifications"],"limitations":["Requires n8n version 1.60.0 or higher","Webhook signatures expire after 5 minutes if not verified","Manual webhook management is not required but the node depends on Mercury's webhook API"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-mercury.mercuryWebhook"]}


node_type: n8n-nodes-instaparser.instaparser
package_name: n8n-nodes-instaparser
display_name: Instaparser
description: Extract articles, parse PDFs, and generate summaries using the Instaparser API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: instapaper
author_github_url: https://github.com/Instapaper/
npm_package_name: n8n-nodes-instaparser
npm_version: 1.0.0
community_fetched_at: 2026-04-16T09:43:36.003Z
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "article",
      "options": [
        {
          "name": "Article",
          "value": "article",
          "description": "Parse articles from URLs"
        },
        {
          "name": "PDF",
          "value": "pdf",
          "description": "Parse PDFs from URLs or uploaded files"
        },
        {
          "name": "Summary",
          "value": "summary",
          "description": "Generate AI-powered summaries of articles"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "parse",
      "options": [
        {
          "name": "Parse",
          "value": "parse",
          "action": "Parse an article from a URL",
          "description": "Parse an article from a URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "article"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "parseUrl",
      "options": [
        {
          "name": "Parse From URL",
          "value": "parseUrl",
          "action": "Parse a PDF from a URL",
          "description": "Parse a PDF from a URL"
        },
        {
          "name": "Parse From File",
          "value": "parseFile",
          "action": "Parse an uploaded PDF file",
          "description": "Parse an uploaded PDF file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "summarize",
      "options": [
        {
          "name": "Summarize",
          "value": "summarize",
          "action": "Generate a summary of an article",
          "description": "Generate a summary of an article"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "summary"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Parse",
      "value": "parse",
      "action": "Parse an article from a URL",
      "description": "Parse an article from a URL",
      "resource": "article"
    },
    {
      "name": "Parse From URL",
      "value": "parseUrl",
      "action": "Parse a PDF from a URL",
      "description": "Parse a PDF from a URL",
      "resource": "pdf"
    },
    {
      "name": "Parse From File",
      "value": "parseFile",
      "action": "Parse an uploaded PDF file",
      "description": "Parse an uploaded PDF file",
      "resource": "pdf"
    },
    {
      "name": "Summarize",
      "value": "summarize",
      "action": "Generate a summary of an article",
      "description": "Generate a summary of an article",
      "resource": "summary"
    }
  ]

npm_readme:
  # n8n-nodes-instaparser

  n8n node for using the [Instaparser API](https://instaparser.com/) to extract article content, parse PDFs, and generate AI-powered summaries.

  ## Installation

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

  ## Operations

  - **Article**
      - Parse an article from a URL (returns title, author, body, and metadata)
  - **PDF**
      - Parse a PDF from a URL
      - Parse an uploaded PDF file
  - **Summary**
      - Generate an AI-powered summary of an article from a URL

  All parsing operations support HTML, plain text, and Markdown output formats.

  ## Credentials

  You need an [Instaparser API key](https://instaparser.com/pricing) to use this node.

  1. Go to [instaparser.com](https://instaparser.com/pricing) and sign up for an account.
  2. Navigate to your account dashboard to find your API key.
  3. In n8n, create a new **Instaparser API** credential and paste your API key.

  ## Compatibility

  Tested with n8n v1.60.0 and later.

  ## Resources

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


