# nodes

node_type: n8n-nodes-databar.databar
package_name: n8n-nodes-databar
display_name: Databar
description: Interact with Databar.ai API for data enrichment and table management
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: databar-nocode
author_github_url: https://github.com/databar-ai/
npm_package_name: n8n-nodes-databar
npm_version: 0.2.1
community_fetched_at: 2026-04-16T09:43:35.912Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "enrichment",
      "options": [
        {
          "name": "Enrichment",
          "value": "enrichment"
        },
        {
          "name": "Table",
          "value": "table"
        },
        {
          "name": "Waterfall",
          "value": "waterfall"
        },
        {
          "name": "Other",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMe",
      "options": [
        {
          "name": "Get Account Info",
          "value": "getMe",
          "action": "Get account info",
          "description": "Get information about your current account"
        },
        {
          "name": "Get Task",
          "value": "getTask",
          "action": "Get task result",
          "description": "Retrieve the status and results of a previously run enrichment or waterfall task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "run",
      "options": [
        {
          "name": "Run",
          "value": "run",
          "action": "Run enrichment",
          "description": "Run an enrichment task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "enrichment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "insertRows",
      "options": [
        {
          "name": "Insert Rows",
          "value": "insertRows",
          "action": "Insert rows into table",
          "description": "Insert one or more rows into a table"
        },
        {
          "name": "Upsert Rows",
          "value": "upsertRows",
          "action": "Upsert rows in table",
          "description": "Update rows by key or create new ones if no match is found"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "table"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "run",
      "options": [
        {
          "name": "Run",
          "value": "run",
          "action": "Run waterfall",
          "description": "Run a waterfall task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "waterfall"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Account Info",
      "value": "getMe",
      "action": "Get account info",
      "description": "Get information about your current account",
      "resource": "user"
    },
    {
      "name": "Get Task",
      "value": "getTask",
      "action": "Get task result",
      "description": "Retrieve the status and results of a previously run enrichment or waterfall task",
      "resource": "user"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run enrichment",
      "description": "Run an enrichment task",
      "resource": "enrichment"
    },
    {
      "name": "Insert Rows",
      "value": "insertRows",
      "action": "Insert rows into table",
      "description": "Insert one or more rows into a table",
      "resource": "table"
    },
    {
      "name": "Upsert Rows",
      "value": "upsertRows",
      "action": "Upsert rows in table",
      "description": "Update rows by key or create new ones if no match is found",
      "resource": "table"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run waterfall",
      "description": "Run a waterfall task",
      "resource": "waterfall"
    }
  ]

npm_readme:
  # n8n-nodes-databar

  This is an n8n community node that lets you use [Databar.ai](https://databar.ai) in your n8n workflows.

  Databar.ai provides powerful data enrichment and table management capabilities for your automation workflows — enrich contacts, companies, and more with data from multiple providers, and manage structured data in Databar tables.

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

  [Installation](#installation) · [Configuration](#configuration) · [Operations](#operations) · [Examples](#usage-examples) · [Support](#support)

  ## Installation

  ### Community Nodes (Recommended)

  **For n8n Cloud:**
  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-databar`
  4. Agree to the risks of using community nodes
  5. Select **Install**

  **For Self-Hosted n8n:**
  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-databar`
  4. Select **Install**
  5. Restart your n8n instance

  ### npm Installation

  ```bash
  npm install n8n-nodes-databar
  ```

  Then restart your n8n instance.

  ## Prerequisites

  You need a Databar.ai account and API key:

  1. Sign up at [Databar.ai](https://databar.ai)
  2. Navigate to **Integrations** in your workspace
  3. Copy your API key

  ## Configuration

  ### Setting up Credentials

  1. In n8n, go to **Credentials > New**
  2. Search for **Databar API**
  3. Enter your API Key
  4. Click **Save**

  The credentials are tested automatically to ensure they work.

  ## Operations

  ### User
  - **Get Account Info**: Retrieve your account information, balance, and plan details

  ### Enrichment
  - **Run**: Execute a single enrichment task
    - Browse enrichments from a searchable dropdown with descriptions and pricing
    - Dynamic parameter form generated from enrichment requirements
    - Automatic polling for results (configurable interval and timeout)

  ### Table
  - **Insert Rows**: Insert one or more rows into a Databar table
    - Select table from a searchable dropdown
    - Dynamic column form generated from the table schema
    - Options for deduplication and auto-creating new columns
  - **Upsert Rows**: Update existing rows by key, or insert new ones if no match is found
    - Select match column and value
    - Dynamic column form for fields to update

  ### Waterfall
  - **Run**: Execute a waterfall with multiple data providers
    - Select which data providers to use
    - Dynamic parameter form generated from waterfall requirements
    - Automatic fallback between providers
    - Configurable polling and timeouts

  ## Usage Examples

  ### Example 1: Enrich a Contact

  1. Add a Databar node to your workflow
  2. Select Resource: **Enrichment**, Operation: **Run**
  3. Select an enrichment from the dropdown (e.g., "Get people data from email")
  4. Fill in the required parameters (e.g., email address)
  5. Execute — returns enriched contact data

  ### Example 2: Waterfall with Multiple Providers

  1. Add a Databar node
  2. Resource: **Waterfall**, Operation: **Run**
  3. Select your waterfall from the dropdown
  4. Fill in the parameters (e.g., company domain)
  5. Select data providers to use
  6. Execute — returns data from the first successful provider

  ### Example 3: Insert Data into a Table

  1. Add a Databar node
  2. Resource: **Table**, Operation: **Insert Rows**
  3. Select a table from the dropdown
  4. Fill in column values using the generated form
  5. Execute — row is inserted into the table

  ### Example 4: Workflow Integration

  ```
  Webhook > Databar (Enrich) > Filter > Send Email

  1. Webhook receives a new lead
  2. Databar enriches with company data
  3. Filter checks if company size > 100
  4. Send personalized email to qualified leads
  ```

  ## Troubleshooting

  ### Node Not Appearing

  If the Databar node doesn't appear after installation:
  1. Restart your n8n instance
  2. Clear your browser cache
  3. Check n8n logs for any installation errors

  ### Authentication Errors

  If you see authentication errors:
  - Verify your API key is correct in credentials
  - Check that your Databar account is active
  - Ensure you have sufficient credits

  ### Task Timeout

  If enrichment or waterfall tasks timeout:
  - Increase the timeout in Additional Options
  - Consider disabling "Wait for Completion" and checking status separately

  ## Resources

  - [Databar.ai](https://databar.ai) — Main website
  - [Databar API Documentation](https://databar.ai/docs/api) — API reference
  - [n8n Documentation](https://docs.n8n.io/) — n8n platform docs
  - [GitHub Repository](https://github.com/databar-ai/n8n-nodes-databar) — Source code

  ## Support

  **For Databar API issues:**
  - Email: info@databar.ai
  - Visit: [Databar.ai](https://databar.ai)

  **For node issues:**
  - GitHub Issues: [n8n-nodes-databar/issues](https://github.com/databar-ai/n8n-nodes-databar/issues)

  ## Version History

  ### 0.2.0
  - Added Table resource with Insert Rows and Upsert Rows operations
  - Dynamic column forms via resource mapper for table and all operations
  - Simplified UX: removed selection mode dropdowns, parameter mode switchers
  - Hidden Bulk Run (available in a future release)
  - Removed waterfall List and Get operations (embedded in Run)
  - Filtered enrichment-generated columns from table field forms
  - Cleaned up emoji and stale references per n8n guidelines

  ### 0.1.1
  - Improved documentation
  - Removed internal development scaffolding

  ### 0.1.0
  - Initial release
  - Dynamic enrichment and waterfall selection
  - Guided fields and JSON input modes
  - Automatic async task polling

  ## Contributing

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

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community n8n node that enables data enrichment and table management by interacting with the Databar.ai API.","capabilities":["Retrieve account information, balance, and plan details","Execute single enrichment tasks with automatic polling for results","Insert rows into Databar tables with deduplication options","Upsert rows into tables by matching existing keys","Run waterfall operations with multiple data providers and automatic fallback","Dynamic parameter forms generated from enrichment requirements and table schemas"],"authentication":"API Key required (entered in n8n Credentials > Databar API)","commonUseCases":["Enriching contacts and companies with data from multiple providers","Managing structured data in Databar tables","Automated lead qualification workflows","Data aggregation using waterfall operations"],"limitations":["Requires an active Databar.ai account with sufficient credits","Tasks may timeout if configured intervals are too long","Bulk Run operation is hidden and not yet available","List and Get waterfall operations were removed and are now embedded in Run"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-filter","n8n-nodes-send-email"]}


node_type: @klardaten/n8n-nodes-datevconnect.documentManagement
package_name: @klardaten/n8n-nodes-datevconnect
display_name: Klardaten DATEVconnect: Document Management
description: Interact with document management resources / DMS
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.913Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Document File",
          "value": "documentFile"
        },
        {
          "name": "Document State",
          "value": "documentState"
        },
        {
          "name": "Domain",
          "value": "domain"
        },
        {
          "name": "Individual Property",
          "value": "individualProperty"
        },
        {
          "name": "Individual Reference 1",
          "value": "individualReference1"
        },
        {
          "name": "Individual Reference 2",
          "value": "individualReference2"
        },
        {
          "name": "Info",
          "value": "info"
        },
        {
          "name": "Property Template",
          "value": "propertyTemplate"
        },
        {
          "name": "Secure Area",
          "value": "secureArea"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add Structure Item",
          "value": "addStructureItem",
          "action": "Add structure item",
          "description": "Add a structure item to a document"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document",
          "description": "Create a new document"
        },
        {
          "name": "Create Dispatcher Information",
          "value": "createDispatcherInformation",
          "action": "Create dispatcher information",
          "description": "Create dispatcher information for a document"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document",
          "description": "Delete a document"
        },
        {
          "name": "Delete Permanently",
          "value": "deletePermanently",
          "action": "Delete a document permanently",
          "description": "Permanently delete a document"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a document",
          "description": "Retrieve a specific document"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many documents",
          "description": "Retrieve a list of documents"
        },
        {
          "name": "Get Structure Item",
          "value": "getStructureItem",
          "action": "Get structure item",
          "description": "Get a specific structure item"
        },
        {
          "name": "Get Structure Items",
          "value": "getStructureItems",
          "action": "Get structure items",
          "description": "Get structure items of a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a document",
          "description": "Update a document"
        },
        {
          "name": "Update Structure Item",
          "value": "updateStructureItem",
          "action": "Update structure item",
          "description": "Update a structure item"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a document file",
          "description": "Get a document file"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a document file",
          "description": "Upload a document file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentFile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many domains",
          "description": "Get many domains"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "domain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many document states",
          "description": "Get many document states"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a document state",
          "description": "Get a specific document state"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document state",
          "description": "Create a new document state"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentState"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many secure areas",
          "description": "Retrieve many secure areas"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "secureArea"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many property templates",
          "description": "Retrieve many property templates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "propertyTemplate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many individual properties",
          "description": "Retrieve many individual properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "individualProperty"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many individual references 1",
          "description": "Retrieve many individual references 1"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create individual reference 1",
          "description": "Create a new individual reference 1"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "individualReference1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many individual references 2",
          "description": "Retrieve many individual references 2"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create individual reference 2",
          "description": "Create a new individual reference 2"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "individualReference2"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get system info",
          "description": "Get system information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "info"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Structure Item",
      "value": "addStructureItem",
      "action": "Add structure item",
      "description": "Add a structure item to a document",
      "resource": "document"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a document",
      "description": "Create a new document",
      "resource": "document"
    },
    {
      "name": "Create Dispatcher Information",
      "value": "createDispatcherInformation",
      "action": "Create dispatcher information",
      "description": "Create dispatcher information for a document",
      "resource": "document"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a document",
      "description": "Delete a document",
      "resource": "document"
    },
    {
      "name": "Delete Permanently",
      "value": "deletePermanently",
      "action": "Delete a document permanently",
      "description": "Permanently delete a document",
      "resource": "document"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a document",
      "description": "Retrieve a specific document",
      "resource": "document"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many documents",
      "description": "Retrieve a list of documents",
      "resource": "document"
    },
    {
      "name": "Get Structure Item",
      "value": "getStructureItem",
      "action": "Get structure item",
      "description": "Get a specific structure item",
      "resource": "document"
    },
    {
      "name": "Get Structure Items",
      "value": "getStructureItems",
      "action": "Get structure items",
      "description": "Get structure items of a document",
      "resource": "document"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a document",
      "description": "Update a document",
      "resource": "document"
    },
    {
      "name": "Update Structure Item",
      "value": "updateStructureItem",
      "action": "Update structure item",
      "description": "Update a structure item",
      "resource": "document"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a document file",
      "description": "Get a document file",
      "resource": "documentFile"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a document file",
      "description": "Upload a document file",
      "resource": "documentFile"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many domains",
      "description": "Get many domains",
      "resource": "domain"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many document states",
      "description": "Get many document states",
      "resource": "documentState"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a document state",
      "description": "Get a specific document state",
      "resource": "documentState"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a document state",
      "description": "Create a new document state",
      "resource": "documentState"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many secure areas",
      "description": "Retrieve many secure areas",
      "resource": "secureArea"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many property templates",
      "description": "Retrieve many property templates",
      "resource": "propertyTemplate"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many individual properties",
      "description": "Retrieve many individual properties",
      "resource": "individualProperty"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many individual references 1",
      "description": "Retrieve many individual references 1",
      "resource": "individualReference1"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create individual reference 1",
      "description": "Create a new individual reference 1",
      "resource": "individualReference1"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many individual references 2",
      "description": "Retrieve many individual references 2",
      "resource": "individualReference2"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create individual reference 2",
      "description": "Create a new individual reference 2",
      "resource": "individualReference2"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get system info",
      "description": "Get system information",
      "resource": "info"
    }
  ]

npm_readme:
  # n8n DATEVConnect

  This repository provides custom n8n nodes for integrating with the DATEVconnect APIs. It requires the [Klardaten DATEVconnect Gateway](https://klardaten.com/products/datevconnect-gateway) to be set up.

  ## Available Nodes

  | Node                           | Description                                                                                                             |
  | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
  | `Accounting`                   | Access DATEV Accounting API for clients, fiscal years, accounts receivable, account postings, and accounting sequences. |
  | `MasterData`                   | Fetches master data entities from DATEV using the configured credentials.                                               |
  | `Document Management`          | Access DATEV Document Management or DMS for documents, structure items, property templates.                             |
  | `Order Management`             | Read and manage orders, suborders, invoices, fees, and related employee data.                                           |
  | `Identity & Access Management` | Manage SCIM-based DATEV IAM resources such as service configuration, schemas, users, and groups.                        |

  Refer to the node descriptions inside the n8n editor for input parameters and output structure.

  ## Installation

  ### Through the n8n UI

  1. Navigate to **Settings → Community Nodes → Install** inside your n8n instance.
  2. Enter `@klardaten/n8n-nodes-datevconnect` as the package name.
  3. Confirm the warning prompt and restart n8n so the nodes are registered.

  ### Manual (filesystem) installation

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

  Copy or symlink the contents of the installed `node_modules/@klardaten/n8n-nodes-datevconnect/dist/{nodes,credentials}` directories into your `~/.n8n/custom/` folder if you prefer the legacy custom-nodes workflow, then restart n8n.

  ## Development

  1. **Install dependencies**
     ```bash
     npm install
     ```
  2. **Build** (optional during development; n8n compiles on the fly)
     ```bash
     npm run dev
     ```

  ## Required Credentials

  You need a Klardaten account and an instance id (of the DATEV instance you want to access).

  - `email`
  - `password`
  - `clientInstanceId`

  ## Running Tests

  Use the npm test runner to execute the automated tests:

  ```bash
  npm test
  ```

  ## Usage in n8n

  1. Create a new workflow in n8n.
  2. Add the **Klardaten DATEVconnect: Master Data** or **Accounting** etc. node and choose the credential you configured.
  3. Select the desired operation (e.g., list client entries) and configure any filters.
  4. Execute the workflow or schedule it as part of a larger automation.

  All nodes authenticate using the stored credentials and interact with their respective DATEVconnect APIs.

  ## Additional Notes

  DATEV provides endpoint reference details under

  - [Accounting](https://developer.datev.de/en/product-detail/accounting/1.7.4/reference)
  - [Client Master Data](https://developer.datev.de/en/product-detail/client-master-data/1.7.0/reference).
  - [Document Management](https://developer.datev.de/en/product-detail/document-management/2.3.0/reference)
  - [Order Management](https://developer.datev.de/en/product-detail/order-management/1.4.7/reference)
  - [Identity & Access Management – User Administration](https://developer.datev.de/en/product-detail/identity-and-access-management-user-administration/1.1.2/reference)

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with DATEV Document Management (DMS) resources, allowing users to manage documents, structure items, and property templates within the DATEVconnect ecosystem.","capabilities":["Access DATEV Document Management resources","Retrieve document information","Manage structure items","Handle property templates","Integrate with DATEVconnect APIs"],"authentication":"API key required (via email, password, and clientInstanceId credentials)","commonUseCases":["Automated document retrieval and processing","Document structure management","Property template configuration","Integration with DATEV accounting workflows"],"limitations":["Requires Klardaten DATEVconnect Gateway setup","Requires valid Klardaten account and DATEV instance ID","Additional documentation for specific operations must be referenced in n8n editor"],"relatedNodes":["Klardaten DATEVconnect: Accounting","Klardaten DATEVconnect: MasterData","Klardaten DATEVconnect: Order Management","Klardaten DATEVconnect: Identity & Access Management"]}


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

updated_at: 2026-04-16 09:43:35
author_name: nickmiva
author_github_url: https://github.com/mivaecommerce/n8n-nodes-miva.git
npm_package_name: @mivalabs/n8n-nodes-miva
npm_version: 1.0.6
community_fetched_at: 2026-04-16T09:43:35.914Z
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "getProducts",
      "options": [
        {
          "name": "Acknowledge Orders",
          "value": "acknowledgeOrders",
          "action": "Acknowledge orders as received",
          "description": "Mark orders as received in the order workflow system"
        },
        {
          "name": "Adjust Inventory",
          "value": "adjustInventory",
          "action": "Adjust product inventory levels",
          "description": "Adjust product inventory levels"
        },
        {
          "name": "Create Returns",
          "value": "createReturns",
          "action": "Create RMA returns for order items",
          "description": "Create RMA returns for order items"
        },
        {
          "name": "Create Shipment",
          "value": "createShipment",
          "action": "Create a shipment",
          "description": "Create a shipment from order line items"
        },
        {
          "name": "Delete Product Image",
          "value": "deleteProductImage",
          "action": "Delete product image",
          "description": "Delete image from product"
        },
        {
          "name": "Get Customers",
          "value": "getCustomers",
          "action": "Get customer data",
          "description": "Retrieve customer data"
        },
        {
          "name": "Get Orders",
          "value": "getOrders",
          "action": "Get order data",
          "description": "Retrieve order data"
        },
        {
          "name": "Get Products",
          "value": "getProducts",
          "action": "Get product data",
          "description": "Retrieve product data"
        },
        {
          "name": "Insert Product",
          "value": "insertProduct",
          "action": "Create a new product",
          "description": "Create a new product"
        },
        {
          "name": "Mark Returns Received",
          "value": "markReturnsReceived",
          "action": "Mark returns as received",
          "description": "Mark returns as received and optionally adjust inventory"
        },
        {
          "name": "Report Low Inventory",
          "value": "reportLowInventory",
          "action": "Generate low inventory alert message",
          "description": "Generate low inventory alert message"
        },
        {
          "name": "Update Product",
          "value": "updateProduct",
          "action": "Update product details",
          "description": "Update product information"
        },
        {
          "name": "Update Shipments",
          "value": "updateShipments",
          "action": "Update shipments",
          "description": "Update shipment details and mark as shipped"
        },
        {
          "name": "Upload Images",
          "value": "uploadImages",
          "action": "Upload images to products",
          "description": "Upload images to products in bulk"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Acknowledge Orders",
      "value": "acknowledgeOrders",
      "action": "Acknowledge orders as received",
      "description": "Mark orders as received in the order workflow system"
    },
    {
      "name": "Adjust Inventory",
      "value": "adjustInventory",
      "action": "Adjust product inventory levels",
      "description": "Adjust product inventory levels"
    },
    {
      "name": "Create Returns",
      "value": "createReturns",
      "action": "Create RMA returns for order items",
      "description": "Create RMA returns for order items"
    },
    {
      "name": "Create Shipment",
      "value": "createShipment",
      "action": "Create a shipment",
      "description": "Create a shipment from order line items"
    },
    {
      "name": "Delete Product Image",
      "value": "deleteProductImage",
      "action": "Delete product image",
      "description": "Delete image from product"
    },
    {
      "name": "Get Customers",
      "value": "getCustomers",
      "action": "Get customer data",
      "description": "Retrieve customer data"
    },
    {
      "name": "Get Orders",
      "value": "getOrders",
      "action": "Get order data",
      "description": "Retrieve order data"
    },
    {
      "name": "Get Products",
      "value": "getProducts",
      "action": "Get product data",
      "description": "Retrieve product data"
    },
    {
      "name": "Insert Product",
      "value": "insertProduct",
      "action": "Create a new product",
      "description": "Create a new product"
    },
    {
      "name": "Mark Returns Received",
      "value": "markReturnsReceived",
      "action": "Mark returns as received",
      "description": "Mark returns as received and optionally adjust inventory"
    },
    {
      "name": "Report Low Inventory",
      "value": "reportLowInventory",
      "action": "Generate low inventory alert message",
      "description": "Generate low inventory alert message"
    },
    {
      "name": "Update Product",
      "value": "updateProduct",
      "action": "Update product details",
      "description": "Update product information"
    },
    {
      "name": "Update Shipments",
      "value": "updateShipments",
      "action": "Update shipments",
      "description": "Update shipment details and mark as shipped"
    },
    {
      "name": "Upload Images",
      "value": "uploadImages",
      "action": "Upload images to products",
      "description": "Upload images to products in bulk"
    }
  ]

npm_readme:
  # n8n-miva-connector

  n8n community node for integrating with Miva eCommerce platforms. Provides programmatic access to Miva's JSON API for managing products, orders, customers, inventory, and fulfillment operations within n8n workflows.

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

  ## Installation

  **Build the package files**
  ```bash
  cd n8n-connector
  npm install
  npm run build
  ```
  This installs dependencies and produces the distributable files that n8n loads. The build script clears `dist/`, compiles TypeScript to JavaScript, and runs the icon build task so the node metadata is ready for packaging. The output is written to `dist/`, which is the only folder published by this package.

  **Use the package with n8n (local development)**
  ```bash
  npm link
  ```
  `npm link` makes the package available globally for local development. In your n8n installation, run `npm link n8n-nodes-miva` so n8n resolves this node from your local build. Re-run `npm run build` after code changes to refresh the `dist/` artifacts, then restart n8n to pick up the latest build.

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation for other ways to use the package file.

  ## Operations

  ### Data Retrieval
  - **Get Products**: Retrieve product information with field selection and pagination
  - **Get Orders**: Access order data with item flattening and field filtering
  - **Get Customers**: Retrieve customer information and account data

  ### Inventory Management
  - **Adjust Inventory**: Update product inventory levels in bulk
  - **Report Low Inventory**: Generate low stock alerts

  ### Order Processing
  - **Create Returns**: Create RMA returns for order items
  - **Create Shipment**: Generate shipments from order line items
  - **Update Shipments**: Modify shipment details and tracking
  - **Mark Returns Received**: Process returned items and adjust inventory
  - **Acknowledge Orders**: Mark orders as acknowledged

  ### Product Management
  - **Insert Product**: Create new products
  - **Update Product**: Modify existing product data

  ### Media Management
  - **Upload Images**: Upload images to products from URLs
  - **Delete Product Image**: Remove images from products

  ## Project Structure

  ```
  miva-n8n-connector/
  ├── credentials/
  │   └── MivaApi.credentials.ts           # API authentication
  ├── nodes/Miva/                          # Main node implementation
  │   ├── Miva.node.ts                     # Entry point & operation routing
  │   ├── Miva.node.json                   # Node metadata
  │   ├── index.ts                         # Module export
  │   ├── miva.svg                         # Node icon
  │   ├── operations/                      # Business logic implementation
  │   │   ├── getProducts.ts               # Product retrieval
  │   │   ├── getOrders.ts                 # Order retrieval with flattening
  │   │   ├── getCustomers.ts              # Customer retrieval
  │   │   ├── adjustInventory.ts           # Bulk inventory adjustments
  │   │   ├── reportLowInventory.ts        # Alert generation
  │   │   ├── createReturns.ts             # RMA return creation
  │   │   ├── createShipment.ts            # Shipment creation
  │   │   ├── updateShipments.ts           # Shipment updates
  │   │   ├── markReturnsReceived.ts       # Return processing
  │   │   ├── acknowledgeOrders.ts         # Order acknowledgment
  │   │   ├── insertProduct.ts             # Product creation
  │   │   ├── updateProduct.ts             # Product updates
  │   │   ├── uploadImages.ts              # Bulk image uploads
  │   │   ├── deleteProductImage.ts        # Image deletion
  │   │   └── index.ts                     # Operation exports
  │   ├── parameters/                      # UI parameter definitions
  │   │   ├── common.ts                    # Shared parameters
  │   │   ├── productFields.ts             # Product field options
  │   │   ├── orderFields.ts               # Order field options
  │   │   ├── customerFields.ts            # Customer field options
  │   │   └── index.ts                     # Parameter exports
  │   ├── transport/                       # API communication layer
  │   │   └── index.ts                     # HTTP client & transformers
  │   ├── utils/                           # Shared utilities
  │   │   ├── index.ts                     # Field matching & validation
  │   │   └── paginationUtils.ts           # Pagination helpers
  │   └── types/                           # TypeScript definitions
  │       └── index.ts                     # Interfaces & types
  ├── ARCHITECTURE.md                       # Technical architecture details
  └── package.json                          # Dependencies & n8n registration
  ```

  ## Architecture

  The node follows a layered architecture:

  - **Presentation Layer**: UI parameters and field selection
  - **Orchestration Layer**: Operation routing and execution coordination
  - **Business Logic Layer**: Core operation implementations
  - **Transport Layer**: API communication and response transformation
  - **Utility Layer**: Shared helper functions and validation

  ### Processing Patterns

  **Batch Operations**: Process multiple input items in single API calls
  - `getOrders`, `adjustInventory`, `createReturns`, `createShipment`, `updateShipments`, `markReturnsReceived`, `acknowledgeOrders`, `reportLowInventory`

  **Individual Operations**: Process each input item separately
  - `getProducts`, `getCustomers`, `uploadImages`, `deleteProductImage`, `updateProduct`, `insertProduct`

  ### API Integration

  - **Authentication**: HMAC-SHA256 with base64-encoded signing key
  - **Request Format**: POST requests with JSON body and timestamp
  - **Response Handling**: Automatic transformation from Miva's nested structure to flat objects
  - **Field Optimization**: Dynamic ondemand column filtering for performance

  ## Credentials

  ### Required Configuration
  1. **API Token**: Your store's API authorization token
  2. **Base URL**: Your Miva store's API endpoint (e.g., `https://yourstore.com/mm5/json.mvc`)
  3. **Signing Key**: Base64-encoded HMAC signing key for secure communication

  ### Security Features
  - All API requests use HMAC-SHA256 authentication
  - Credentials stored in n8n's encrypted credential system
  - No credential information logged or exposed in error messages

  ## Usage Examples

  ### Basic Product Retrieval
  ```
  Miva: Get Products
  ├── Store Code: your_store
  ├── Count: 100
  ├── Return Fields: product_code, product_name, product_inventory
  └── Include Custom Fields: false
  ```

  ### Order Processing with Item Flattening
  ```
  Miva: Get Orders
  ├── Store Code: your_store
  ├── Count: 50
  ├── Return Fields: id, total, customer, items
  ├── Order Item Fields: product_code, quantity, price
  └── Flatten Items: true
  ```

  ### Bulk Inventory Adjustment
  ```
  Miva: Adjust Inventory
  ├── Store Code: your_store
  ├── Product Identifier Type: product_sku
  ├── Product Identifier Field: sku
  └── Adjustment Field: adjustment_amount
  ```

  ### Image Upload
  ```
  Miva: Upload Images
  ├── Store Code: your_store
  ├── Product Identifier Type: product_code
  ├── Product Identifier Field: product_code
  ├── Image URL Field: image_url
  └── File Path Template: graphics/products/{product_code}/{filename}
  ```

  ## Field Selection

  The node supports dynamic field selection to optimize API performance:

  **Product Fields**: Basic fields like `product_code`, `product_name`, `product_inventory`
  **Order Fields**: Order data including `id`, `total`, `customer`, `items`
  **Customer Fields**: Customer information and account data

  **Ondemand Fields**: Automatically detected and optimized for performance
  - Products: `descrip`, `catcount`, `url`, `product_inventory`, `attributes`
  - Orders: `ship_method`, `cust_login`, `parts`, `items`, `charges`

  ## Error Handling

  - **Continue on Fail**: Support for n8n's continue-on-fail mode
  - **Validation**: Input parameter validation with helpful error messages
  - **API Errors**: Proper handling of Miva API error responses
  - **Context Preservation**: Error messages include operation context and item index

  ## Performance Considerations

  - **Pagination**: Built-in support for large datasets (up to 10,000 records per request)
  - **Field Filtering**: Response transformation filters unused fields
  - **Batch Processing**: Multiple operations batch data for efficiency
  - **Memory Management**: No retention of large response objects between operations

  ## Development

  ### Building
  ```bash
  npm run build
  ```

  ### Testing
  ```bash
  npm run lint
  npm run format
  ```

  ### TypeScript
  The project uses TypeScript with strict type checking and comprehensive interfaces for all API operations.

  ## Resources

  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Miva JSON API Documentation](https://docs.miva.com/developer/developer-resources/json-api/api-getting-started/)
  * [Project Architecture Documentation](ARCHITECTURE.md)

  ## Version History

  ### v1.0.0
  - Initial stable release

  ### v0.1.0
  - Complete Miva API integration with 14 core operations
  - HMAC-SHA256 authentication for all API requests
  - Support for products, orders, customers, inventory, and media management
  - Advanced features: order flattening, field selection, batch processing
  - Comprehensive error handling and validation
  - Performance optimizations with ondemand column support

  ---

  **Note**: This is a community-maintained node. For issues, feature requests, or contributions, please visit the [GitHub repository](https://github.com/mivaecommerce/n8n-nodes-miva).


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

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

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

npm_readme:
  # @qontext/n8n-nodes-qontext

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

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

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

  ## Table of Contents

  - [Installation](#installation)
  - [Operations](#operations)
    - [Retrieval Operations](#retrieval-operations)
    - [Ingestion Operations](#ingestion-operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Resources](#resources)

  ## Installation

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

  ## Operations

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

  ### Retrieval Operations

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

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

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

  ### Ingestion Operations

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

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

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

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

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

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

  ## Credentials

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

  ### Prerequisites

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

  ### Setting Up Credentials

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

  The credentials will be automatically validated when you save them.

  ## Compatibility

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

  ## Usage

  ### Basic Workflow Example

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

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

  ### Common Use Cases

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

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

  ## Resources

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


node_type: n8n-nodes-reachinbox.reachInbox
package_name: n8n-nodes-reachinbox
display_name: ReachInbox
description: Interact with ReachInbox leads
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: lokesh1403
author_github_url: https://github.com/dsouzaalan/n8n-reachinbox.git
npm_package_name: n8n-nodes-reachinbox
npm_version: 0.1.12
community_fetched_at: 2026-04-16T09:43:35.917Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "lead",
      "options": [
        {
          "name": "Campaign",
          "value": "campaign",
          "description": "Interact with campaigns"
        },
        {
          "name": "Lead",
          "value": "lead",
          "description": "Interact with leads"
        },
        {
          "name": "Leads List",
          "value": "leadsList",
          "description": "Interact with leads lists"
        },
        {
          "name": "Blocklist",
          "value": "blocklist",
          "description": "Interact with blocklists"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createCampaign",
      "options": [
        {
          "name": "Add Email Sequences to a Campaign",
          "value": "addSequences",
          "action": "Add sequences to campaign"
        },
        {
          "name": "Add Sending Email Accounts to a Campaign",
          "value": "addEmailToCampaign",
          "action": "Add email to campaign"
        },
        {
          "name": "Create a New Campaign",
          "value": "createCampaign",
          "action": "Create a new campaign"
        },
        {
          "name": "Get the Current Status of a Campaign",
          "value": "getCampaignStatus",
          "action": "Get campaign status"
        },
        {
          "name": "Pause a Campaign",
          "value": "pauseCampaign",
          "action": "Pause a campaign"
        },
        {
          "name": "Start a Campaign",
          "value": "startCampaign",
          "action": "Start a campaign"
        },
        {
          "name": "Update Campaign Details",
          "value": "updateCampaignDetails",
          "action": "Update campaign details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "campaign"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add a Lead to a Campaign",
          "value": "add",
          "action": "Add a lead to a campaign"
        },
        {
          "name": "Update a Specific Lead's Data",
          "value": "update",
          "action": "Update a specific lead data"
        },
        {
          "name": "Delete a Lead From a Campaign",
          "value": "delete",
          "action": "Delete a lead from a campaign"
        },
        {
          "name": "Pause or Resume Leads in a Campaign",
          "value": "changeLeadsState",
          "action": "Pause or resume leads"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addLeadToList",
      "options": [
        {
          "name": "Add a Lead to a Leads List",
          "value": "addLeadToList",
          "action": "Add a lead to a leads list"
        },
        {
          "name": "Remove a Lead From a Leads List",
          "value": "removeLeadFromList",
          "action": "Remove a lead from a leads list"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "leadsList"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addToBlocklist",
      "options": [
        {
          "name": "Add Emails, Domains or Keywords to the Blocklist",
          "value": "addToBlocklist",
          "action": "Add to blocklist"
        },
        {
          "name": "Remove Emails, Domains or Keywords From the Blocklist",
          "value": "removeFromBlocklist",
          "action": "Remove from blocklist"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "blocklist"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Email Sequences to a Campaign",
      "value": "addSequences",
      "action": "Add sequences to campaign",
      "resource": "campaign"
    },
    {
      "name": "Add Sending Email Accounts to a Campaign",
      "value": "addEmailToCampaign",
      "action": "Add email to campaign",
      "resource": "campaign"
    },
    {
      "name": "Create a New Campaign",
      "value": "createCampaign",
      "action": "Create a new campaign",
      "resource": "campaign"
    },
    {
      "name": "Get the Current Status of a Campaign",
      "value": "getCampaignStatus",
      "action": "Get campaign status",
      "resource": "campaign"
    },
    {
      "name": "Pause a Campaign",
      "value": "pauseCampaign",
      "action": "Pause a campaign",
      "resource": "campaign"
    },
    {
      "name": "Start a Campaign",
      "value": "startCampaign",
      "action": "Start a campaign",
      "resource": "campaign"
    },
    {
      "name": "Update Campaign Details",
      "value": "updateCampaignDetails",
      "action": "Update campaign details",
      "resource": "campaign"
    },
    {
      "name": "Add a Lead to a Campaign",
      "value": "add",
      "action": "Add a lead to a campaign",
      "resource": "lead"
    },
    {
      "name": "Update a Specific Lead's Data",
      "value": "update",
      "action": "Update a specific lead data",
      "resource": "lead"
    },
    {
      "name": "Delete a Lead From a Campaign",
      "value": "delete",
      "action": "Delete a lead from a campaign",
      "resource": "lead"
    },
    {
      "name": "Pause or Resume Leads in a Campaign",
      "value": "changeLeadsState",
      "action": "Pause or resume leads",
      "resource": "lead"
    },
    {
      "name": "Add a Lead to a Leads List",
      "value": "addLeadToList",
      "action": "Add a lead to a leads list",
      "resource": "leadsList"
    },
    {
      "name": "Remove a Lead From a Leads List",
      "value": "removeLeadFromList",
      "action": "Remove a lead from a leads list",
      "resource": "leadsList"
    },
    {
      "name": "Add Emails, Domains or Keywords to the Blocklist",
      "value": "addToBlocklist",
      "action": "Add to blocklist",
      "resource": "blocklist"
    },
    {
      "name": "Remove Emails, Domains or Keywords From the Blocklist",
      "value": "removeFromBlocklist",
      "action": "Remove from blocklist",
      "resource": "blocklist"
    }
  ]

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

  # n8n-nodes-reachinbox

  This custom node allows users to connect [ReachInbox.ai](https://reachinbox.ai) with n8n, enabling workflows to be triggered by email events (e.g. email sent, reply received) and perform powerful actions like adding leads, updating their statuses, starting campaigns, and more.

  n8n is a fair-code licensed workflow automation platform.

  ---

  ## 📦 Installation

  Follow the official [n8n custom nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) to install this package.

  ```bash
  npm install n8n-nodes-reachinbox
  ```

  Or for local development:

  ```bash
  git clone https://github.com/dsouzaalan/n8n-nodes-reachinbox.git
  cd n8n-reachinbox
  npm install
  npm run build
  npm link
  ```

  Then link it in your local `~/.n8n/custom/` folder:

  ```bash
  cd ~/.n8n/custom
  npm init -y
  npm link n8n-nodes-reachinbox
  ```

  ---

  ## 🤖 ReachInbox Setup

  To use this integration, you’ll need an **API Key** from ReachInbox:

  1. Log in to [ReachInbox.ai](https://app.reachinbox.ai).
  2. Go to **Settings** > **Integrations** > **n8n**.
  3. Copy your API Key and Base URL (typically `https://api.reachinbox.ai`).

  ---

  ## 🔧 Credentials

  This node requires the following credentials:

  * **API Key**: Your ReachInbox API key.
  * **Base URL**: API base URL (`https://api.reachinbox.ai`).

  Set these up once in the **Credentials** section in n8n.

  ---

  ## ⚡ Operations

  ### 🟢 Triggers

  You can use this node to trigger workflows on events like:

  * Email Sent
  * Email Opened
  * Email Link Clicked
  * Reply Received
  * Email Bounced
  * Lead Interested
  * Lead Not Interested
  * Campaign Completed
  * Or trigger on **All Events**

  These are dynamically fetched from ReachInbox’s API.
  After setting up, a webhook URL will be generated which you must add in ReachInbox → **Integrations** → **Webhooks**.

  ### 🛠️ Actions

  * **Add Lead to Campaign**
  * **Update Lead to Campaign**
  * **Remove Lead to Campaign**

  All actions require selecting a campaign and passing necessary data (email, first name, last name, etc.), which can be mapped from previous steps.

  ---

  ## ✅ Usage

  1. **Install the node** as described in the installation section.
  2. **Drag the ReachInbox Trigger or Action node** into your workflow.
  3. **Set up your credentials** by entering your API key and base URL.
  4. **Choose a trigger event** or action.
  5. **Map the required fields**, test the workflow, and activate.

  You can now fully automate your cold outreach operations.

  ---

  ## 🧪 Testing Locally

  To run locally:

  ```bash
  n8n
  ```

  Then open [http://localhost:5678](http://localhost:5678) and search for **ReachInbox** in the node list.

  ---

  ## 📎 Compatibility

  * Tested on **n8n v1.75.2**
  * Node.js **v20+**

  ---

  ## 🕓 Version History

  | Version | Description                                          |
  | ------- | ---------------------------------------------------- |
  | 0.1.0   | Initial release with full trigger and action support |

  ---

  ## 🧩 Resources

  * [ReachInbox API Docs](https://docs.reachinbox.ai)
  * [n8n Community Nodes Guide](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"This n8n node enables automation of ReachInbox workflows by triggering on email events (sent, opened, clicked, replied, bounced) and performing actions like adding or updating leads in campaigns.","capabilities":["Trigger on Email Sent","Trigger on Email Opened","Trigger on Email Link Clicked","Trigger on Reply Received","Trigger on Email Bounced","Trigger on Lead Interested","Trigger on Lead Not Interested","Trigger on Campaign Completed","Trigger on All Events","Add Lead to Campaign"],"authentication":"API Key and Base URL required","commonUseCases":["Automate cold outreach follow-ups based on email engagement","Segment leads into campaigns based on email interactions","Update lead status automatically after email events","Monitor campaign performance and lead interest"],"limitations":["Requires manual setup of webhook URL in ReachInbox integrations","Limited to specific campaign actions (add, update, remove)","Requires ReachInbox API access"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.set","n8n-nodes-base.if"]}


node_type: @klardaten/n8n-nodes-datevconnect.identityAndAccessManagement
package_name: @klardaten/n8n-nodes-datevconnect
display_name: Klardaten DATEVconnect: Identity & Access
description: Work with DATEV Identity and Access Management (SCIM) endpoints
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.917Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "Current User",
          "value": "currentUser"
        },
        {
          "name": "Group",
          "value": "group"
        },
        {
          "name": "Resource Type",
          "value": "resourceType"
        },
        {
          "name": "Schema",
          "value": "schema"
        },
        {
          "name": "Service Provider Config",
          "value": "serviceProviderConfig"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get service provider config",
          "description": "Retrieve the SCIM service provider configuration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serviceProviderConfig"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many resource types",
          "description": "Retrieve the available SCIM resource types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "resourceType"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many schemas",
          "description": "List the supported SCIM schemas"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get schema",
          "description": "Retrieve a single SCIM schema by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "schema"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a user",
          "description": "Create a new DATEV IAM user"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a user",
          "description": "Delete a DATEV IAM user"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Retrieve a single DATEV IAM user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users",
          "description": "List DATEV IAM users"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a user",
          "description": "Update an existing DATEV IAM user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get current user",
          "description": "Fetch the currently authenticated DATEV IAM user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "currentUser"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a group",
          "description": "Create a new DATEV IAM group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a group",
          "description": "Delete a DATEV IAM group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a group",
          "description": "Retrieve a single DATEV IAM group"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many groups",
          "description": "List DATEV IAM groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a group",
          "description": "Update an existing DATEV IAM group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get service provider config",
      "description": "Retrieve the SCIM service provider configuration",
      "resource": "serviceProviderConfig"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many resource types",
      "description": "Retrieve the available SCIM resource types",
      "resource": "resourceType"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many schemas",
      "description": "List the supported SCIM schemas",
      "resource": "schema"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get schema",
      "description": "Retrieve a single SCIM schema by ID",
      "resource": "schema"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a user",
      "description": "Create a new DATEV IAM user",
      "resource": "user"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a user",
      "description": "Delete a DATEV IAM user",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "description": "Retrieve a single DATEV IAM user",
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many users",
      "description": "List DATEV IAM users",
      "resource": "user"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a user",
      "description": "Update an existing DATEV IAM user",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get current user",
      "description": "Fetch the currently authenticated DATEV IAM user",
      "resource": "currentUser"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a group",
      "description": "Create a new DATEV IAM group",
      "resource": "group"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a group",
      "description": "Delete a DATEV IAM group",
      "resource": "group"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a group",
      "description": "Retrieve a single DATEV IAM group",
      "resource": "group"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many groups",
      "description": "List DATEV IAM groups",
      "resource": "group"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a group",
      "description": "Update an existing DATEV IAM group",
      "resource": "group"
    }
  ]

npm_readme:
  # n8n DATEVConnect

  This repository provides custom n8n nodes for integrating with the DATEVconnect APIs. It requires the [Klardaten DATEVconnect Gateway](https://klardaten.com/products/datevconnect-gateway) to be set up.

  ## Available Nodes

  | Node                           | Description                                                                                                             |
  | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
  | `Accounting`                   | Access DATEV Accounting API for clients, fiscal years, accounts receivable, account postings, and accounting sequences. |
  | `MasterData`                   | Fetches master data entities from DATEV using the configured credentials.                                               |
  | `Document Management`          | Access DATEV Document Management or DMS for documents, structure items, property templates.                             |
  | `Order Management`             | Read and manage orders, suborders, invoices, fees, and related employee data.                                           |
  | `Identity & Access Management` | Manage SCIM-based DATEV IAM resources such as service configuration, schemas, users, and groups.                        |

  Refer to the node descriptions inside the n8n editor for input parameters and output structure.

  ## Installation

  ### Through the n8n UI

  1. Navigate to **Settings → Community Nodes → Install** inside your n8n instance.
  2. Enter `@klardaten/n8n-nodes-datevconnect` as the package name.
  3. Confirm the warning prompt and restart n8n so the nodes are registered.

  ### Manual (filesystem) installation

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

  Copy or symlink the contents of the installed `node_modules/@klardaten/n8n-nodes-datevconnect/dist/{nodes,credentials}` directories into your `~/.n8n/custom/` folder if you prefer the legacy custom-nodes workflow, then restart n8n.

  ## Development

  1. **Install dependencies**
     ```bash
     npm install
     ```
  2. **Build** (optional during development; n8n compiles on the fly)
     ```bash
     npm run dev
     ```

  ## Required Credentials

  You need a Klardaten account and an instance id (of the DATEV instance you want to access).

  - `email`
  - `password`
  - `clientInstanceId`

  ## Running Tests

  Use the npm test runner to execute the automated tests:

  ```bash
  npm test
  ```

  ## Usage in n8n

  1. Create a new workflow in n8n.
  2. Add the **Klardaten DATEVconnect: Master Data** or **Accounting** etc. node and choose the credential you configured.
  3. Select the desired operation (e.g., list client entries) and configure any filters.
  4. Execute the workflow or schedule it as part of a larger automation.

  All nodes authenticate using the stored credentials and interact with their respective DATEVconnect APIs.

  ## Additional Notes

  DATEV provides endpoint reference details under

  - [Accounting](https://developer.datev.de/en/product-detail/accounting/1.7.4/reference)
  - [Client Master Data](https://developer.datev.de/en/product-detail/client-master-data/1.7.0/reference).
  - [Document Management](https://developer.datev.de/en/product-detail/document-management/2.3.0/reference)
  - [Order Management](https://developer.datev.de/en/product-detail/order-management/1.4.7/reference)
  - [Identity & Access Management – User Administration](https://developer.datev.de/en/product-detail/identity-and-access-management-user-administration/1.1.2/reference)

ai_documentation_summary:
  {"purpose":"This n8n node enables management of SCIM-based Identity and Access Management (IAM) resources within DATEVconnect, including service configuration, schemas, users, and groups.","capabilities":["Manage SCIM-based DATEV IAM resources","Configure service settings","Manage user accounts","Manage group memberships","Handle schema definitions"],"authentication":"API key required (via email, password, and clientInstanceId credentials)","commonUseCases":["Automated user provisioning and deprovisioning in DATEV","Managing group access policies","Syncing user schemas between DATEV and external systems"],"limitations":["Requires a Klardaten DATEVconnect Gateway to be set up","Requires a valid Klardaten account and DATEV instance ID","Relies on external DATEV API endpoints which may have rate limits or version constraints"],"relatedNodes":["Klardaten DATEVconnect: Accounting","Klardaten DATEVconnect: MasterData","Klardaten DATEVconnect: Document Management","Klardaten DATEVconnect: Order Management"]}


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

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

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

npm_readme:
  # n8n-nodes-drivelock

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

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

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

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

  ## Installation

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

  ## Operations

  _List the operations supported by your node._

  ## Credentials

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

  ## Compatibility

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

  ## Usage

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

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

  ## Resources

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

  ## Version history

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

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


node_type: n8n-nodes-bounceban.bounceban
package_name: n8n-nodes-bounceban
display_name: BounceBan
description: Verify email addresses using BounceBan API - We verify catch-all emails
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: davis.lee
author_github_url: https://github.com/bounceban-com/
npm_package_name: n8n-nodes-bounceban
npm_version: 1.1.1
community_fetched_at: 2026-04-16T09:43:35.919Z
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "email",
      "options": [
        {
          "name": "Email",
          "value": "email",
          "description": "Validate email"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "validateEmail",
      "options": [
        {
          "name": "Verify Single Email",
          "value": "validateEmail",
          "action": "Verify a single email address",
          "description": "Verify a single email address"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "email"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Verify Single Email",
      "value": "validateEmail",
      "action": "Verify a single email address",
      "description": "Verify a single email address",
      "resource": "email"
    }
  ]


node_type: @cradl/n8n-nodes-cradlai.cradlAi
package_name: @cradl/n8n-nodes-cradlai
display_name: Cradl AI
category: Community
development_style: declarative
version: 1.0.7
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: augustak
author_github_url: https://github.com/CradlAI/n8n-nodes-cradlai.git
npm_package_name: @cradl/n8n-nodes-cradlai
npm_version: 1.0.7
community_fetched_at: 2026-04-16T09:43:35.920Z
description:
  Document processing AI agents you can trust. Run production-grade agents that reliably extract and validate data, with built-in guardrails and human-in-the-loop exception handling.

npm_readme:
  # @cradl/n8n-nodes-cradlai

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

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

  ## Cradl AI

  Document processing AI agents you can trust. Run production-grade agents that reliably extract and validate data, with built-in guardrails and human-in-the-loop exception handling.

  ## Overview

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

  Alternatively, for local development:

  1. Clone this repository
  2. Run `npm install` to install dependencies
  3. Run `npm run build` to compile the TypeScript code
  4. Link the node to your n8n instance or copy the built files to your custom nodes directory

  ## Operations

  ### Cradl AI Node

  The Cradl AI node provides intelligent document processing capabilities:

  - **Extract Data From Document**: Process documents using AI-powered agents
    - Upload documents directly from workflow binary data or reference existing documents
    - Configure custom variables to pass context and metadata
    - Optionally wait for processing completion with automatic webhook handling
    - Support for human-in-the-loop review workflows
    - Secure HMAC signature verification for webhook callbacks

  ### Cradl AI Trigger Node

  The trigger node enables event-driven workflows based on Cradl AI processing:

  - **Webhook Trigger**: Respond to document processing events
    - Automatic webhook registration and management
    - Receive notifications when processing completes or requires human intervention
    - Configurable HMAC verification for secure callbacks
    - Seamless integration with Cradl AI workflows

  ## Credentials

  This node requires OAuth2 authentication with Cradl AI.

  ### Setup Instructions

  1. **Locate OAuth2 credentials in Cradl AI:**
     - Navigate to [https://rc.app.cradl.ai](https://rc.app.cradl.ai)
     - Go to Account Settings ⮕ API
     - Locate the Client ID and Client Secret under API credentials

  2. **Configure Credentials in n8n:**
     - Create new credentials of type **Cradl AI API**
     - Enter your Client ID and Client Secret
     - The Authorization URL, Token URL, Scope, and Audience are pre-configured
     - Click **Connect my account** and authorize the application

  3. **Security:**
     - Client Secret is also used as the default HMAC secret for webhook verification
     - Store credentials securely and rotate them periodically
     - Use custom HMAC secrets in production for enhanced security

  ## Compatibility

  - Minimum n8n version: 1.0.0
  - Tested against n8n versions: 1.x
  - Node version: Requires Node.js 18 or higher

  ## Usage

  ### Extract Data From Documents

  1. Add the **Cradl AI** node to your workflow
  2. Select **Extract Data From Document** operation
  3. Configure the node:
     - **Agent**: Choose from your configured Cradl AI agents (dynamically loaded)
     - **Document Source**:
       - Upload new: Specify binary data property from previous node
       - Use existing: Select a previously uploaded document for testing
     - **Wait for Results**: Enable to pause workflow until processing completes
     - **Variables**: Pass custom JSON data to your agent workflow
  4. Advanced options (when waiting for results):
     - **Resume URL Variable Name**: Customize the webhook variable name (default: `n8nResumeUrl`)
     - **HMAC Secret**: Override default secret for webhook signature verification if needed

  The node will create an agent run, upload the document, and either return immediately or wait for processing completion based on your configuration.

  ### Working with Binary Data

  The node accepts document data from any source that provides binary output:

  ```
  HTTP Request ⮕ Cradl AI
  Webhook ⮕ Cradl AI
  Read Binary File ⮕ Cradl AI
  ```

  Specify the binary property name (e.g., `data`) in the **Document Binary Data** field.

  ### Asynchronous Processing

  When **Wait for Results** is disabled:
  - The workflow continues immediately after submitting the document
  - The node returns the agent run details
  - Results must be retrieved separately or handled via the Cradl AI Trigger node

  When **Wait for Results** is enabled:
  - The workflow pauses at the node
  - A webhook is automatically configured on your Cradl AI agent
  - Execution resumes when processing completes or human review is finished
  - The node outputs the final extracted data

  ### Example Workflows

  **Synchronous Document Processing:**
  ```
  Manual Trigger ⮕ Read Binary File ⮕ Cradl AI (wait enabled) ⮕ Send Email
  ```

  **Asynchronous Processing with Trigger:**
  ```
  Workflow 1: Webhook ⮕ Cradl AI (wait disabled) ⮕ Store Run ID

  Workflow 2: Cradl AI Trigger ⮕ Process Results ⮕ Update Database
  ```

  **Batch Processing:**
  ```
  Schedule ⮕ List Files ⮕ Loop Over Items ⮕ Cradl AI ⮕ Aggregate Results
  ```

  ## Resources

  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Cradl AI Documentation](https://docs.cradl.ai)
  * [Cradl AI API Reference](https://docs.cradl.ai/api-reference)
  * [Cradl AI Platform](https://rc.app.cradl.ai)

  ## Support

  For issues related to this n8n node, please open an issue in this repository.

  For Cradl AI platform support, contact [support@cradl.ai](mailto:support@cradl.ai).

  ## License

  MIT


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

updated_at: 2026-04-16 09:43:35
author_name: arun-unstract
author_github_url: https://github.com/Zipstack/n8n-nodes.git
npm_package_name: n8n-nodes-unstract
npm_version: 0.5.7
community_fetched_at: 2026-04-16T09:43:35.921Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Extract text from PDFs, images, and scanned documents using OCR. Preserves layout and formatting for accurate text extraction from any document type

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Document",
          "value": "document"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "extractText",
      "options": [
        {
          "name": "Extract Text",
          "value": "extractText",
          "action": "Extract text from document",
          "description": "Extract text from PDFs and images using OCR"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Extract Text",
      "value": "extractText",
      "action": "Extract text from document",
      "description": "Extract text from PDFs and images using OCR",
      "resource": "document"
    }
  ]

npm_readme:
  # n8n-nodes-unstract
  <div align="center">

  ![n8n-node-codechat-wapi](https://img.shields.io/npm/v/n8n-nodes-unstract?label=n8n-nodes-unstract&logo=unstract)
  ![License](https://img.shields.io/npm/l/n8n-nodes-unstract)
  [![n8n](https://img.shields.io/badge/n8n-community-F94B72)](https://community.n8n.io/)
  ![dt](https://img.shields.io/npm/dt/n8n-nodes-unstract)
  ![dw](https://img.shields.io/npm/dw/n8n-nodes-unstract)

  </div>
  This is an n8n community node package that provides integrations with Unstract services, including LLMWhisperer and the Unstract API. These nodes enable seamless document processing and text extraction workflows within your n8n automations.

  ## What is Unstract?

  [Unstract](https://unstract.com) is a platform that helps extract structured data from unstructured documents using AI. It provides powerful APIs for document processing, including:

  - **LLMWhisperer**: Convert documents to layout-preserved plain text
  - **Unstract API**: Extract structured data from documents using custom workflows

  ## Features

  This package includes following main nodes:

  ### 🔤 LLMWhisperer Node
  - Convert documents (PDF, images, etc.) to layout-preserved plain text
  - Maintain document structure and formatting
  - Support for various document formats
  - Configurable processing modes

  ### 🤖 Unstract Node
  - Process documents using Unstract's AI-powered extraction
  - Extract structured data from unstructured documents
  - Support for custom API deployments
  - Seamless integration with Unstract workflows

  ### 📤 Unstract HITL Push Node
  - Push documents to Human-in-the-Loop (HITL) processing queues
  - Configure timeout, metrics, metadata, and queue targeting
  - Support for various document types and queue configurations
  - Error handling for upload and processing issues

  ### 📥 Unstract HITL Fetch Node
  - Retrieve approved results from HITL processing queues
  - Poll for completed processing with configurable intervals
  - Optional queue name parameter for targeted fetching
  - Proper error handling for "No approved items available" responses

  ## Installation

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Select **Install a community node**
  3. Enter the npm package name: `n8n-nodes-unstract`
  4. Click **Install**

  ### Manual Installation

  You can install this node package in your n8n instance using npm:

  ```bash
  npm install n8n-nodes-unstract
  ```

  For Docker installations, add the package to your n8n container:

  ```bash
  # Replace <your-path-to-n8n-custom-nodes> with the path to n8n
  N8N_CUSTOM_EXTENSIONS="<your-path-to-n8n-custom-nodes>" npx n8n start
  ```

  ## Configuration

  ### Prerequisites

  Before using these nodes, you'll need:

  1. **API Credentials**: Get your API keys from:
     - [LLMWhisperer API - Follow the doc](https://docs.unstract.com/llmwhisperer/llm_whisperer/getting_started/llm_whisperer_registering/)
     - [Unstract Platform - Follow the doc](https://docs.unstract.com/unstract/unstract_platform/api_deployment/unstract_api_deployment_intro/)

  2. **Node.js**: Version 20 or above is required

  ### Setting up Credentials

  1. **LLMWhisperer API Credentials**:
     - Go to your n8n credentials settings
     - Create new credentials of type "LLMWhisperer API"
     - Enter your LLMWhisperer API key

  2. **Unstract API Credentials**:
     - Go to your n8n credentials settings
     - Create new credentials of type "Unstract API"
     - Enter your Unstract API key and endpoint details

  3. **Unstract HITL Credentials**:
     - Go to your n8n credentials settings
     - Create new credentials of type "Unstract HITL"
     - Enter your HITL API key for Human-in-the-Loop processing

  ## Usage Examples

  ### LLMWhisperer Node

  Use the LLMWhisperer node to convert documents to text while preserving layout:

  1. Add the LLMWhisperer node to your workflow
  2. Configure your API credentials
  3. Set the input file (binary data)
  4. Choose processing mode and options
  5. Execute to get layout-preserved text output

  ### Unstract Node

  Use the Unstract node to extract structured data:

  1. Add the Unstract node to your workflow
  2. Configure your API credentials and deployment
  3. Set the input document (binary data)
  4. Specify your API deployment name
  5. Execute to get structured data output

  ### Unstract HITL Push Node

  Use the HITL Push node to send documents for human review:

  1. Add the Unstract HITL Push node to your workflow
  2. Configure your HITL API credentials
  3. Set the input document (binary data)
  4. Configure queue name, timeout, and metadata options
  5. Execute to push document to HITL processing queue

  ### Unstract HITL Fetch Node

  Use the HITL Fetch node to retrieve approved results:

  1. Add the Unstract HITL Fetch node to your workflow
  2. Configure your HITL API credentials
  3. Optionally specify a queue name to target specific queues
  4. Configure polling interval and retry settings
  5. Execute to fetch approved results from HITL queue

  ## Screenshots

  ### Node Integration Examples

  Visual guides for integrating Unstract nodes in your n8n workflows:

  #### LLMWhisperer Node Configuration
  ![LLMWhisperer node setup and configuration](screenshots/llmwhisperer-node-config.png)

  #### Unstract Node Configuration  
  ![Unstract API node setup and configuration](screenshots/unstract-node-config.png)

  #### HITL Push Node Configuration
  ![HITL Push node setup with queue configuration and document upload](screenshots/hitl-push-node-config.png)

  #### HITL Fetch Node Configuration
  ![HITL Fetch node setup with polling configuration](screenshots/hitl-fetch-node-config.png)

  These screenshots help developers understand the visual setup and configuration of each node type for seamless integration into n8n workflows.

  ## API Documentation

  For detailed API documentation and advanced configuration options:

  - [LLMWhisperer Documentation](https://docs.unstract.com/llm_whisperer/)
  - [Unstract Platform Documentation](https://docs.unstract.com/unstract/)

  ## Development

  ### Prerequisites

  - Node.js 20 or above
  - npm or yarn

  ### Setup

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

  # Install dependencies
  npm install

  # Build the project
  npm run build

  # Run linting
  npm run lint
  ```

  ### Running n8n with Custom Nodes

  For development and testing:

  ```bash
  # Set the custom extensions path and start n8n
  N8N_CUSTOM_EXTENSIONS="/path/to/n8n-nodes" npx n8n start
  ```

  ## Support

  - **Documentation**: [docs.unstract.com](https://docs.unstract.com)
  - **Issues**: [GitHub Issues](https://github.com/Zipstack/n8n-nodes/issues)
  - **Community**: [Join our community discussions](https://join.slack.com/t/unstract/shared_invite/zt-372jed537-bYz99iZnfXnhqyjbU8lPLg)
  - **Email**: support@unstract.com

  ## License

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

  ## Contributing

  We welcome contributions! Please feel free to submit issues, feature requests, or pull requests.

  ---

  **Made with ❤️ by the Unstract team**

ai_documentation_summary:
  {"purpose":"The LLMWhisperer node extracts text from PDFs, images, and scanned documents using OCR while preserving layout and formatting for accurate text extraction.","capabilities":["Convert documents to layout-preserved plain text","Maintain document structure and formatting","Support for various document formats (PDF, images, etc.)","Configurable processing modes"],"authentication":"API key required (LLMWhisperer API key)","commonUseCases":["Converting scanned documents to editable text","Extracting text from PDFs while maintaining layout","Processing images and documents for text analysis workflows"],"limitations":["Requires Node.js version 20 or above","Requires separate API credentials setup in n8n"],"relatedNodes":["Unstract Node","Unstract HITL Push Node","Unstract HITL Fetch Node"]}


node_type: @postpulse/n8n-nodes-postpulse.postPulse
package_name: @postpulse/n8n-nodes-postpulse
display_name: PostPulse
description: Interact with PostPulse API to manage social media posts
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: alex97po
author_github_url: https://github.com/PostPulse/n8n-postpulse-node.git
npm_package_name: @postpulse/n8n-nodes-postpulse
npm_version: 0.2.3
community_fetched_at: 2026-04-16T09:43:35.921Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Media",
          "value": "media"
        },
        {
          "name": "Post",
          "value": "post"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get connected accounts",
          "description": "Get connected social media accounts"
        },
        {
          "name": "Get Connected Chats",
          "value": "getConnectedChats",
          "action": "Get connected chats",
          "description": "Get connected chats for an account by platform"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload media",
          "description": "Upload media file"
        },
        {
          "name": "Get Upload Status",
          "value": "getUploadStatus",
          "action": "Get upload status",
          "description": "Get the status of a media import job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "schedule",
      "options": [
        {
          "name": "Schedule",
          "value": "schedule",
          "action": "Schedule a post",
          "description": "Schedule a post"
        },
        {
          "name": "Schedule (Light)",
          "value": "scheduleLight",
          "action": "Schedule a light post",
          "description": "Schedule a post with simplified interface"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "post"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get connected accounts",
      "description": "Get connected social media accounts",
      "resource": "account"
    },
    {
      "name": "Get Connected Chats",
      "value": "getConnectedChats",
      "action": "Get connected chats",
      "description": "Get connected chats for an account by platform",
      "resource": "account"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload media",
      "description": "Upload media file",
      "resource": "media"
    },
    {
      "name": "Get Upload Status",
      "value": "getUploadStatus",
      "action": "Get upload status",
      "description": "Get the status of a media import job",
      "resource": "media"
    },
    {
      "name": "Schedule",
      "value": "schedule",
      "action": "Schedule a post",
      "description": "Schedule a post",
      "resource": "post"
    },
    {
      "name": "Schedule (Light)",
      "value": "scheduleLight",
      "action": "Schedule a light post",
      "description": "Schedule a post with simplified interface",
      "resource": "post"
    }
  ]

npm_readme:
  # PostPulse n8n Node

  > **Official n8n integration for [PostPulse](https://post-pulse.com)** — schedule and publish content to multiple social networks from your n8n workflows.

  - **Auth:** OAuth2 (auto refresh) 
  - **Core actions:** Accounts → Media Upload → Schedule Post(s) (+ Telegram Channels / Facebook Pages lookup)  
  - **Targets today:** Facebook, Instagram, TikTok, YouTube, Threads, LinkedIn, Telegram, X, Bluesky  
  - **Use cases:** One-click multi-destination posting, media pipeline, automated campaigns

  ---

  ## Table of contents

  - [Prerequisites](#prerequisites)
  - [Install](#install)
  - [Authenticate](#authenticate)
  - [Quick start](#quick-start)
  - [Operations](#operations)
  - [Data model](#data-model)
  - [Platform settings](#platform-settings)
  - [Media & text validations](#media--text-validations)
  - [Rate limits & API keys](#rate-limits--api-keys)
  - [Webhooks](#webhooks)
  - [Examples](#examples)
  - [FAQ](#faq)
  - [Support](#support)
  - [Versioning & License](#versioning--license)

  ---

  ## Prerequisites

  1. **Sign up** at https://post-pulse.com/login  
  2. **Connect your social accounts** in the web app: https://post-pulse.com/app/accounts  
  3. **Create OAuth client**: Visit https://developers.post-pulse.com and sign in using the email associated with your PostPulse account. Create a new OAuth client to obtain `client_id` and `client_secret`.
  4. (Telegram only) Add the official **PostPulse bot** to your channels you plan to post to.

  > Use the same email in n8n OAuth as your PostPulse account email.

  ---

  ## Install

  - **From npm (recommended):**
    ```bash
    npm install @postpulse/n8n-nodes-postpulse
    ```

  ---

  ## Authenticate

  Create **Credentials → PostPulse OAuth2 API** in n8n:

  - **OAuth Redirect URL:** Use this URL when creating your OAuth client at https://developers.post-pulse.com
  - **Client ID / Secret:** Obtained from the developer portal at https://developers.post-pulse.com

  This node extends n8n’s `oAuth2Api` so **tokens are refreshed automatically**.  

  ---

  ## Quick start

  ### Using Schedule (Light) - Recommended for simple workflows

  1. **Media → Upload** *(if posting media)*
     - **From File**: Upload binary file data (automatically confirmed for integrity)
       - Returns: `{ path }` — use this directly in attachment paths
     - **From Public URL**: Import media from a URL
       - With **Wait for Completion** enabled (recommended): polls until ready and returns `{ path }` — same shape as file upload
       - With **Wait for Completion** disabled: returns `{ id, state }` — use **Media → Get Upload Status** to poll manually
  2. **Posts → Schedule (Light)**
     - Choose **Schedule Mode**: "Post Now" (immediate) or "Schedule for Later" (pick a time)
     - Select your connected account from the dropdown (accounts loaded automatically)
     - UI automatically shows platform-specific fields (e.g., Instagram: Publication Type)
     - Facebook and Telegram accounts: select Page/Channel from dropdowns (loaded automatically)
     - Enter content and comma-separated attachment paths

  ### Using Schedule - Advanced workflows

  For multi-account posting or complex scenarios:

  1. **Accounts → Get Many**  
     Retrieve your connected accounts. Save the `id` of targets you'll post to.
  2. **Accounts → Get Connected Chats** *(only if posting to Telegram/Facebook manually)*  
     Input: Account ID and platform. Output contains chat/page IDs.
  3. **Media → Upload** *(same as above)*
  4. **Posts → Schedule**  
     Build one `PostSchedule` with one or more `Publication`s.  
     - Choose "Post Now" or "Schedule for Later" (with a specific time)
     - Manually construct `platformSettings` JSON
     - For now, prefer `isDraft: false` (update APIs will come later)

  ---

  ## Operations

  ### Accounts: **Get Many**
  - **Output:** Array of accounts: `{ id, platform, handle, ... }`
  - **Use:** Pick `id` for each destination.

  ### Telegram: **Get Connected Chats**
  - **Input:** `{ id }` (must be a Telegram account)
  - **Output:** Array: `{ id, title }` — pass `chatId` into Telegram posts.

  ### Media: **Upload**
  - **Input:** File or Public URL
  - **Output:** 
    - File upload: `{ path }` — use in `attachmentPaths` of posts (upload is automatically confirmed for integrity)
    - URL import (Wait for Completion ON): `{ path }` — same shape as file upload, ready to use
    - URL import (Wait for Completion OFF): `{ id, state }` — use `id` with "Get Upload Status" to monitor progress manually
  - **Upload Sources:**
    - **From File:** Upload binary file data
    - **From Public URL:** Import media from a public URL. Enable **Wait for Completion** to automatically poll until the import is ready (configurable polling interval and max wait time).

  ### Media: **Get Upload Status**
  - **Input:** `{ importId }` (from URL import response)
  - **Output:** Complete import status including `id`, `state`, `sourceUrl`, `bytesDownloaded`, `totalBytes`, `detectedMime`, `s3Key`, `errorCode`, `errorMessage`
  - **Use:** Monitor the progress of URL-based media imports

  ### Posts: **Schedule**
  - **Input:** `PostSchedule` (see [Data model](#data-model))
  - **Schedule Mode:** "Post Now" (publishes immediately, no `scheduledTime` needed) or "Schedule for Later" (pick a time)
  - **Behavior:** Schedules one or multiple publications for the same time.
  - **Recommended:** `isDraft: false` (until update endpoints are exposed in node).

  ### Posts: **Schedule (Light)**
  - **Purpose:** Simplified interface for scheduling a single post to one account
  - **Key Features:**
    - **Platform-specific dynamic fields** — The UI automatically shows relevant fields based on the selected account's platform
    - **Automatic platform settings** — No need to manually construct JSON; the node builds `platformSettings` automatically
    - **Smart chat selection** — Facebook Pages and Telegram Channels appear as dropdowns (loaded from API)
    - **Simple attachment paths** — Enter comma-separated media paths instead of managing collections
  - **Input Fields:**
    - `Schedule Mode` — "Post Now" (publishes immediately) or "Schedule for Later" (pick a time)
    - `Scheduled Time` — *(only when "Schedule for Later")* When to schedule the post. Interpreted using the workflow timezone (see Workflow Settings).
    - `Social Media Account` — Dropdown of your connected accounts
    - *Dynamic fields based on platform:*
      - **Instagram**: Publication Type (Feed/Reels/Story)
      - **Facebook**: Publication Type (Feed/Reels/Story) + Page dropdown
      - **YouTube**: Video Title
      - **TikTok**: Title
      - **Threads**: Topic Tag (optional)
      - **Telegram**: Channel dropdown
      - **X/Twitter, BlueSky, LinkedIn**: No additional fields
    - `Content` — Post text/caption (multi-line)
    - `Attachment Paths` — Comma-separated media paths from Media → Upload
  - **Output:** Same as Schedule operation
  - **Use Case:** Perfect for simple workflows and testing; for complex multi-account or multi-post scenarios, use Schedule operation

  ---

  ## Data model

  ### `PostSchedule`
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",  // omit to post immediately
    "isDraft": false,
    "publications": [ /* Publication[] */ ]
  }
  ```

  ### `Publication`
  Represents “one publication in user’s mind” that may map to *one or many* platform posts.

  ```json
  {
    "socialMediaAccountId": 442,
    "posts": [ /* Post[] */ ],
    "platformSettings": { /* see below */ }
  }
  ```

  - **One publication → multiple posts** is useful when:
    - Telegram account posts to several **channels** (one post per channel)
    - Telegram account posts with large text or more than 10 media (one post per message that will be published)
    - Instagram **storyline** (multiple stories in one conceptual set)

  ### `Post`
  ```json
  {
    "attachmentPaths": [
      "6354d8d2-e0f1-702b-af6c-62e28e377ec7/c6c2b826-8aca-4eae-8549-515325012ab4.jpeg"
    ],
    "content": "Your caption or description",
    "chatId": "1234567890"   // Telegram only
    /* "thumbnailPath": "..." — coming soon */
  }
  ```

  > **Note:** For YouTube/TikTok, `content` is used as **description** (titles are set in `platformSettings`).

  ---

  ## Platform settings

  Each **Publication** must include `platformSettings` with a required discriminator: `type`.

  ```json
  { "type": "INSTAGRAM", "publicationType": "REELS" }
  ```

  Supported shapes:

  ### Instagram
  ```json
  {
    "type": "INSTAGRAM",
    "publicationType": "FEED" | "REELS" | "STORY"
  }
  ```

  ### LinkedIn
  ```json
  {
    "type": "LINKEDIN",
    "visibility": "PUBLIC" | "CONNECTIONS" | "GROUP"
  }
  ```

  ### Threads
  ```json
  {
    "type": "THREADS",
    "topicTag": "your-topic-tag"
  }
  ```

  ### TikTok
  ```json
  {
    "type": "TIK_TOK",
    "title": "My video title",
    "privacyLevel": "PUBLIC_TO_EVERYONE" | "FOLLOWER_OF_CREATOR" | "MUTUAL_FOLLOW_FRIENDS" | "SELF_ONLY",
    "disableDuet": false,
    "disableComments": false,
    "disableStitch": false,
    "brandContent": false,
    "brandOrganic": true,
    "hasUsageConfirmation": true
  }
  ```

  ### YouTube
  ```json
  {
    "type": "YOUTUBE",
    "title": "My video title",
    "privacyStatus": "PUBLIC" | "UNLISTED" | "PRIVATE",
    "category": "FILM_ANIMATION" | "AUTOS_VEHICLES" | "MUSIC" | "PETS_ANIMALS" | "SPORTS" | "TRAVEL_EVENTS" | "GAMING" | "PEOPLE_BLOGS" | "COMEDY" | "ENTERTAINMENT" | "NEWS_POLITICS" | "HOWTO_STYLE" | "EDUCATION" | "SCIENCE_TECHNOLOGY"
  }
  ```

  ---

  ## Media & text validations

  PostPulse Web enforces rich, platform-specific validations.  
  **API clients must currently validate themselves.** (Server-side validations for API clients are planned.)

  | Validation area | PostPulse Web | PostPulse API (current) |
  |---|---|---|
  | X: Standard users can post up to 280 characters per tweet | UI warning | **You must validate** |
  | X: Supported image formats are JPG, PNG, and WEBP | Enforced | **You must validate** |
  | X: Image size should be less than or equal 5MB | Enforced | **You must validate** |
  | X: Video size should be less than or equal 512MB | Enforced | **You must validate** |
  | X: Maximum 4 media attachments | Enforced | **You must validate** |
  | X: Video duration must be between 0.5 sec and 140 sec | Enforced | **You must validate** |
  | X: Media aspect ratio between 1:3 and 3:1 | Enforced | **You must validate** |
  | Threads: Users can post up to 500 characters | Enforced | **You must validate** |
  | Threads: Topic tag should be less than 100 characters | Enforced | **You must validate** |
  | Threads: When no topic tag is specified in the platform settings and the content contains a word with # - the first word with # will be used as a topic tag (expept cases with numbers, like #1) | UI warning | **You must validate** |
  | Threads: Image size should be less than or equal 8MB | Enforced | **You must validate** |
  | Threads: Media aspect ratio between 0,01:1 and 10:1 | Enforced | **You must validate** |
  | Threads: Video duration must be less than 5 min | Enforced | **You must validate** |
  | Threads: Supported video format is MP4 | Enforced | **You must validate** |
  | YouTube: Title should be less than 100 characters | Enforced | **You must validate** |
  | YouTube: Description should be less than 5000 characters | Enforced | **You must validate** |
  | TikTok: Title should be less than 2200 characters for video post | Enforced | **You must validate** |
  | TikTok: Title should be less than 90 characters for image post | Enforced | **You must validate** |
  | TikTok: Description should be less than 4000 characters for image post | Enforced | **You must validate** |
  | TikTok: Image size should be less than or equal 20MB | Enforced | **You must validate** |
  | TikTok: Supported image formats are JPG, PNG, and WEBP | Enforced | **You must validate** |
  | TikTok: Supported video formats are MP4, MOV, and WebM | Enforced | **You must validate** |
  | TikTok: Video duration as per individual limits (typically 1 hour) | Enforced | **You must validate** |
  | TikTok: One post is either 1 video or up to 10 images | Enforced | **You must validate** |
  | TikTok: Video should have no more between 360 and 4096 pixels for both height and width | **To Do** | **You must validate** |
  | LinkedIn: User can post up to 3000 characters | Enforced | **You must validate** |
  | LinkedIn: One post can contain either 1 video or up to 9 images (or no media at all) | Enforced | **You must validate** |
  | LinkedIn: Supported video format is MP4 | Enforced | **You must validate** |
  | LinkedIn: Video size should be less than or equal 500MB | Enforced | **You must validate** |
  | LinkedIn: Video duration must be between 3 sec and 30 min | Enforced | **You must validate** |
  | Instagram: User can post up to 2200 characters | Enforced | **You must validate** |
  | Instagram: Supported image formats are JPG and PNG | Enforced | **You must validate** |
  | Instagram: Image size should be less than or equal 8MB | Enforced | **You must validate** |
  | Instagram: Feed post can contain up to 10 media (carousel) | Enforced | **You must validate** |
  | Instagram: Feed post media aspect ratio between 1.91:1 and 4:5 | Enforced | **You must validate** |
  | Instagram: Supported video formats are MP4 and MOV | Enforced | **You must validate** |
  | Instagram: Video size should be less than or equal 300MB | Enforced | **You must validate** |
  | Instagram: Feed and Story post video duration must be between 3 sec and 15 min | Enforced | **You must validate** |
  | Instagram: Reels video duration must be between 3 sec and 90 sec | Enforced | **You must validate** |
  | Instagram: Reels and Story post media aspect ratio between 0.01:1 and 10:1 | Enforced | **You must validate** |
  | Instagram: Reels and Story recommended aspect ratio is 9:16 | UI Warning | **You must validate** |
  | Instagram: Video should have no more than 1920 horizontal pixels | **To Do** | **You must validate** |
  | Bluesky: Users can post up to 300 characters | Enforced | **You must validate** |
  | Bluesky: Post may contain up to 4 images | Enforced | **You must validate** |
  | Telegram: Users can post up to 4096 characters | Enforced | **You must validate** |
  | Telegram: Standard user can post up to 1024 characters if post contains media as well | Enforced | **You must validate** |
  | Telegram: One post may contain up to 10 media | Enforced | **You must validate** |
  | Telegram: Supported image formats are JPG, PNG, and WEBP | Enforced | **You must validate** |
  | Telegram: Supported video formats is MP4 | Enforced | **You must validate** |

  > Follow updates at **https://post-pulse.com/releases** — we’ll announce when API-side validations roll out.

  ---

  ## Rate limits & API keys

  - Authentication uses **OAuth2**; tokens are auto-refreshed by n8n.
  - PostPulse runs on AWS API Gateway usage plans. Typical plans:
    - **Standard:** 20 RPS burst, 200 RPS steady, 50k req/month
    - **Agency:** higher limits on request

  ---

  ## Webhooks

  PostPulse supports webhooks for real-time notifications instead of polling for status updates. This is especially useful for tracking:

  - **Post publishing status** — Get notified when scheduled posts are published or fail
  - **Media import progress** — Receive updates on URL-based media imports without polling the "Get Upload Status" endpoint

  ### Setting up webhooks

  1. **Register webhook endpoints** at the [Developer Portal](https://developers.post-pulse.com)
  2. **Configure event types** you want to receive notifications for
  3. **Review webhook models** and event types in the developer documentation

  ### Benefits over polling

  - **Real-time updates** — Instant notifications when events occur
  - **Reduced API calls** — No need to repeatedly poll status endpoints
  - **Better reliability** — Guaranteed delivery with retry mechanisms
  - **Lower latency** — Immediate response to status changes

  > **Learn more:** Visit [https://developers.post-pulse.com](https://developers.post-pulse.com) for complete webhook documentation, supported event types, and payload schemas.

  ---

  ## Examples

  ### Minimal single-destination post (Reel)
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [
      {
        "socialMediaAccountId": 442,
        "platformSettings": {
          "type": "INSTAGRAM",
          "publicationType": "REELS"
        },
        "posts": [
          {
            "attachmentPaths": [
              "6354d8d2-e0f1-702b-af6c-62e28e377ec7/c6c2b826-8aca-4eae-8549-515325012ab4.jpeg"
            ],
            "content": "New drop is live! #fashion"
          }
        ]
      }
    ]
  }
  ```

  ### Telegram to multiple channels in one publication
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [
      {
        "socialMediaAccountId": 501,   // Telegram account id
        "platformSettings": { "type": "TELEGRAM" },
        "posts": [
          { "chatId": "-100123", "content": "Hello Channel A", "attachmentPaths": ["u1/p1.jpg"] },
          { "chatId": "-100456", "content": "Hello Channel B", "attachmentPaths": ["u1/p1.jpg"] }
        ]
      }
    ]
  }
  ```

  ### TikTok with title & privacy
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [
      {
        "socialMediaAccountId": 777,
        "platformSettings": {
          "type": "TIK_TOK",
          "title": "Top 5 tips",
          "privacyLevel": "PUBLIC_TO_EVERYONE",
          "hasUsageConfirmation": true
        },
        "posts": [
          { "attachmentPaths": ["u1/v1.mp4"], "content": "Full guide in bio" }
        ]
      }
    ]
  }
  ```

  ### Media import from URL
  ```json
  {
    "url": "https://example.com/my-video.mp4",
    "filenameHint": "promotional-video.mp4"
  }
  ```
  **Response:**
  ```json
  {
    "id": 12345,
    "state": "QUEUED"
  }
  ```

  ### Check media import status
  **Input:** `importId: 12345`

  **Response:**
  ```json
  {
    "id": 12345,
    "state": "READY",
    "sourceUrl": "https://example.com/my-video.mp4",
    "bytesDownloaded": 15728640,
    "totalBytes": 15728640,
    "detectedMime": "video/mp4",
    "s3Key": "6354d8d2-e0f1-702b-af6c-62e28e377ec7/promotional-video.mp4"
  }
  ```

  > **Note:** Use the `s3Key` value in `attachmentPaths` when the state is `READY`.

  ### Schedule (Light) - Instagram Reel
  Using the simplified interface with automatic platform settings:

  **Node configuration:**
  - Schedule Mode: `Schedule for Later`
  - Scheduled Time: `2025-08-17T14:03:00`
  - Social Media Account: `INSTAGRAM - @fashionbrand`
  - Publication Type: `Reels` (automatically appears for Instagram)
  - Content: `New drop is live! #fashion`
  - Attachment Paths: `6354d8d2-e0f1-702b-af6c-62e28e377ec7/video.mp4`

  The node automatically builds this API request:
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [{
      "socialMediaAccountId": 442,
      "platformSettings": {
        "type": "INSTAGRAM",
        "publicationType": "REELS"
      },
      "posts": [{
        "content": "New drop is live! #fashion",
        "attachmentPaths": ["6354d8d2-e0f1-702b-af6c-62e28e377ec7/video.mp4"]
      }]
    }]
  }
  ```

  ### Schedule (Light) - Telegram with Channel Selection
  **Node configuration:**
  - Schedule Mode: `Post Now`
  - Social Media Account: `TELEGRAM - @mybot`
  - Channel: `Tech Updates` (loaded from API, shows connected channels)
  - Content: `Check out our latest update!`
  - Attachment Paths: `user1/screenshot.png, user1/demo.mp4`

  The node automatically builds this API request (no `scheduledTime` — posts immediately):
  ```json
  {
    "isDraft": false,
    "publications": [{
      "socialMediaAccountId": 501,
      "platformSettings": {
        "type": "TELEGRAM"
      },
      "posts": [{
        "chatId": "-1001234567890",
        "content": "Check out our latest update!",
        "attachmentPaths": ["user1/screenshot.png", "user1/demo.mp4"]
      }]
    }]
  }
  ```

  ### Schedule (Light) - YouTube Video
  **Node configuration:**
  - Schedule Mode: `Schedule for Later`
  - Scheduled Time: `2025-08-17T14:03:00`
  - Social Media Account: `YOUTUBE - @MyChannel`
  - Video Title: `Top 5 JavaScript Tips` (automatically appears for YouTube)
  - Content: `Full tutorial with code examples. Links in description.`
  - Attachment Paths: `user1/tutorial-video.mp4`

  The node automatically builds this API request:
  ```json
  {
    "scheduledTime": "2025-08-17T14:03:00",
    "isDraft": false,
    "publications": [{
      "socialMediaAccountId": 777,
      "platformSettings": {
        "type": "YOUTUBE",
        "title": "Top 5 JavaScript Tips"
      },
      "posts": [{
        "content": "Full tutorial with code examples. Links in description.",
        "attachmentPaths": ["user1/tutorial-video.mp4"]
      }]
    }]
  }
  ```

  ---

  ## FAQ

  **Do I have to upload media to PostPulse even if I have a public URL?**  
  Not anymore! You can now use the "From Public URL" option in Media → Upload to import media directly from URLs. The system will download and host the media on `post-pulse.com` for platform compatibility.

  **How do I import media from a URL?**  
  Use Media → Upload with "From Public URL" option. Provide the URL and optionally a filename hint. Enable **Wait for Completion** to have the node automatically poll until the media is ready — it returns `{ path }` just like file upload. Alternatively, disable Wait for Completion to get the import job ID and poll manually with Media → Get Upload Status.

  **What are the different import states?**  
  - `QUEUED`: Import job is waiting to start
  - `DOWNLOADING`: Media is being downloaded from the source URL
  - `VALIDATING`: Downloaded media is being validated
  - `UPLOADING`: Media is being uploaded to PostPulse storage
  - `READY`: Import complete, media ready to use (check `s3Key` field)
  - `FAILED_TEMPORARY`: Temporary failure, may retry automatically
  - `FAILED_PERMANENT`: Permanent failure, check `errorCode` and `errorMessage`

  **Can I draft then update later via the node?**  
  In v1 of the node, we recommend `isDraft: false`. Update endpoints will be exposed in a later version.

  **How do I post to multiple accounts at once?**  
  Create one `PostSchedule` with multiple `Publication` objects (one per account).

  **How do I set YouTube or TikTok titles?**  
  Titles live in **`platformSettings`** (see schemas above). `content` becomes description.

  **Should I use webhooks or polling for status updates?**  
  Webhooks are recommended for production workflows as they provide real-time notifications without the need to repeatedly call status endpoints. Set up webhooks at [https://developers.post-pulse.com](https://developers.post-pulse.com) to receive instant notifications for post publishing status and media import progress. Use polling (Get Upload Status) only for testing or when webhooks aren't feasible.

  ---

  ## Support

  - **Developer Portal:** https://developers.post-pulse.com (for OAuth client setup and documentation)
  - **Discord Community:** [PostPulse for Developers](https://discord.gg/yrMdD4R5) (feature requests, community support)
  - **Email Support:** support@post-pulse.com (technical issues and general inquiries)

  ---

  ## Versioning & License

  - Semantic Versioning: `MAJOR.MINOR.PATCH`
  - License: MIT

  ---

  ### Security notes
  - Store secrets in **n8n Credentials** only; don’t hardcode in workflows.

ai_documentation_summary:
  {"purpose":"This n8n node enables users to schedule and publish content to multiple social media platforms (including Facebook, Instagram, TikTok, LinkedIn, etc.) by interacting with the PostPulse API.","capabilities":["OAuth2 authentication with automatic token refresh","Media upload from local files","Media import from public URLs","Media upload status monitoring","Multi-destination post scheduling","Telegram channel lookup","Facebook page lookup","Platform-specific field auto-detection"],"authentication":"OAuth2 (auto refresh)","commonUseCases":["One-click multi-platform content distribution","Automated social media campaigns","Media pipeline for scheduled posts","Cross-platform content management"],"limitations":["Advanced scheduling requires manual construction of platformSettings JSON for complex scenarios","Draft posts (isDraft: true) are not currently supported","Update endpoints for draft posts are not yet exposed in the node","Telegram integration requires adding the official PostPulse bot to target channels beforehand"],"relatedNodes":["n8n HTTP Request","n8n Binary File","n8n Webhook","n8n Code Node"]}


node_type: @klardaten/n8n-nodes-datevconnect.orderManagement
package_name: @klardaten/n8n-nodes-datevconnect
display_name: Klardaten DATEVconnect: Order Management
description: Interact with order management 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.922Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "order",
      "options": [
        {
          "name": "Client Group",
          "value": "clientGroup"
        },
        {
          "name": "Cost Center",
          "value": "costCenter"
        },
        {
          "name": "Employee",
          "value": "employee"
        },
        {
          "name": "Fee",
          "value": "fee"
        },
        {
          "name": "Invoice",
          "value": "invoice"
        },
        {
          "name": "Order",
          "value": "order"
        },
        {
          "name": "Order Type",
          "value": "orderType"
        },
        {
          "name": "Self Client",
          "value": "selfClient"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create Expense Posting",
          "value": "createExpensePosting",
          "action": "Create expense postings",
          "description": "Create expense postings for a suborder"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an order",
          "description": "Retrieve a specific order"
        },
        {
          "name": "Get Billing States (All)",
          "value": "getSubordersStateBillingAll",
          "action": "Get billing states",
          "description": "Retrieve billing state dates across suborders"
        },
        {
          "name": "Get Billing States (Order)",
          "value": "getSubordersStateBilling",
          "action": "Get billing states",
          "description": "Retrieve billing state dates for an order's suborders"
        },
        {
          "name": "Get Cost Items (All)",
          "value": "getCostItemsAll",
          "action": "Get cost items",
          "description": "Retrieve cost items across orders"
        },
        {
          "name": "Get Cost Items (Order)",
          "value": "getCostItemsForOrder",
          "action": "Get order cost items",
          "description": "Retrieve planned cost items for an order"
        },
        {
          "name": "Get Expense Postings (All)",
          "value": "getExpensePostingsAll",
          "action": "Get expense postings",
          "description": "Retrieve expense postings across orders"
        },
        {
          "name": "Get Expense Postings (Order)",
          "value": "getExpensePostingsForOrder",
          "action": "Get order expense postings",
          "description": "Retrieve expense postings for an order"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many orders",
          "description": "Retrieve orders"
        },
        {
          "name": "Get Monthly Values (All)",
          "value": "getMonthlyValuesAll",
          "action": "Get monthly values",
          "description": "Retrieve monthly values across orders"
        },
        {
          "name": "Get Monthly Values (Order)",
          "value": "getMonthlyValuesForOrder",
          "action": "Get order monthly values",
          "description": "Retrieve monthly values for a specific order"
        },
        {
          "name": "Get State Dates (All)",
          "value": "getStateWorkAll",
          "action": "Get order state dates",
          "description": "Retrieve state dates across orders"
        },
        {
          "name": "Get State Dates (Order)",
          "value": "getStateWork",
          "action": "Get order state dates",
          "description": "Retrieve state dates for an order"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an order",
          "description": "Completely overwrite an order"
        },
        {
          "name": "Update Suborder",
          "value": "updateSuborder",
          "action": "Update a suborder",
          "description": "Completely overwrite a suborder"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many order types",
          "description": "Retrieve order types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "orderType"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a client group",
          "description": "Retrieve the group of a client"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clientGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many invoices",
          "description": "Retrieve invoices"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an invoice",
          "description": "Retrieve a specific invoice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCapacities",
      "options": [
        {
          "name": "Get Capacities",
          "value": "getCapacities",
          "action": "Get employee capacities",
          "description": "Retrieve employee capacities"
        },
        {
          "name": "Get Charge Rates",
          "value": "getChargeRates",
          "action": "Get charge rates",
          "description": "Retrieve charge rates"
        },
        {
          "name": "Get Cost Rates",
          "value": "getCostRates",
          "action": "Get employee cost rates",
          "description": "Retrieve employees with cost rates"
        },
        {
          "name": "Get Employees With Group",
          "value": "getWithGroup",
          "action": "Get employees with group",
          "description": "Retrieve employees including their group"
        },
        {
          "name": "Get Qualifications",
          "value": "getQualifications",
          "action": "Get employee qualifications",
          "description": "Retrieve employees with qualifications"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "employee"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getFees",
      "options": [
        {
          "name": "Get Fees",
          "value": "getFees",
          "action": "Get fees",
          "description": "Retrieve fees"
        },
        {
          "name": "Get Fee Plans",
          "value": "getFeePlans",
          "action": "Get fee plans",
          "description": "Retrieve fee plans"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fee"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many cost centers",
          "description": "Retrieve cost centers"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "costCenter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many self clients",
          "description": "Retrieve self clients"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "selfClient"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Expense Posting",
      "value": "createExpensePosting",
      "action": "Create expense postings",
      "description": "Create expense postings for a suborder",
      "resource": "order"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an order",
      "description": "Retrieve a specific order",
      "resource": "order"
    },
    {
      "name": "Get Billing States (All)",
      "value": "getSubordersStateBillingAll",
      "action": "Get billing states",
      "description": "Retrieve billing state dates across suborders",
      "resource": "order"
    },
    {
      "name": "Get Billing States (Order)",
      "value": "getSubordersStateBilling",
      "action": "Get billing states",
      "description": "Retrieve billing state dates for an order's suborders",
      "resource": "order"
    },
    {
      "name": "Get Cost Items (All)",
      "value": "getCostItemsAll",
      "action": "Get cost items",
      "description": "Retrieve cost items across orders",
      "resource": "order"
    },
    {
      "name": "Get Cost Items (Order)",
      "value": "getCostItemsForOrder",
      "action": "Get order cost items",
      "description": "Retrieve planned cost items for an order",
      "resource": "order"
    },
    {
      "name": "Get Expense Postings (All)",
      "value": "getExpensePostingsAll",
      "action": "Get expense postings",
      "description": "Retrieve expense postings across orders",
      "resource": "order"
    },
    {
      "name": "Get Expense Postings (Order)",
      "value": "getExpensePostingsForOrder",
      "action": "Get order expense postings",
      "description": "Retrieve expense postings for an order",
      "resource": "order"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many orders",
      "description": "Retrieve orders",
      "resource": "order"
    },
    {
      "name": "Get Monthly Values (All)",
      "value": "getMonthlyValuesAll",
      "action": "Get monthly values",
      "description": "Retrieve monthly values across orders",
      "resource": "order"
    },
    {
      "name": "Get Monthly Values (Order)",
      "value": "getMonthlyValuesForOrder",
      "action": "Get order monthly values",
      "description": "Retrieve monthly values for a specific order",
      "resource": "order"
    },
    {
      "name": "Get State Dates (All)",
      "value": "getStateWorkAll",
      "action": "Get order state dates",
      "description": "Retrieve state dates across orders",
      "resource": "order"
    },
    {
      "name": "Get State Dates (Order)",
      "value": "getStateWork",
      "action": "Get order state dates",
      "description": "Retrieve state dates for an order",
      "resource": "order"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an order",
      "description": "Completely overwrite an order",
      "resource": "order"
    },
    {
      "name": "Update Suborder",
      "value": "updateSuborder",
      "action": "Update a suborder",
      "description": "Completely overwrite a suborder",
      "resource": "order"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many order types",
      "description": "Retrieve order types",
      "resource": "orderType"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a client group",
      "description": "Retrieve the group of a client",
      "resource": "clientGroup"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many invoices",
      "description": "Retrieve invoices",
      "resource": "invoice"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an invoice",
      "description": "Retrieve a specific invoice",
      "resource": "invoice"
    },
    {
      "name": "Get Capacities",
      "value": "getCapacities",
      "action": "Get employee capacities",
      "description": "Retrieve employee capacities",
      "resource": "employee"
    },
    {
      "name": "Get Charge Rates",
      "value": "getChargeRates",
      "action": "Get charge rates",
      "description": "Retrieve charge rates",
      "resource": "employee"
    },
    {
      "name": "Get Cost Rates",
      "value": "getCostRates",
      "action": "Get employee cost rates",
      "description": "Retrieve employees with cost rates",
      "resource": "employee"
    },
    {
      "name": "Get Employees With Group",
      "value": "getWithGroup",
      "action": "Get employees with group",
      "description": "Retrieve employees including their group",
      "resource": "employee"
    },
    {
      "name": "Get Qualifications",
      "value": "getQualifications",
      "action": "Get employee qualifications",
      "description": "Retrieve employees with qualifications",
      "resource": "employee"
    },
    {
      "name": "Get Fees",
      "value": "getFees",
      "action": "Get fees",
      "description": "Retrieve fees",
      "resource": "fee"
    },
    {
      "name": "Get Fee Plans",
      "value": "getFeePlans",
      "action": "Get fee plans",
      "description": "Retrieve fee plans",
      "resource": "fee"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many cost centers",
      "description": "Retrieve cost centers",
      "resource": "costCenter"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many self clients",
      "description": "Retrieve self clients",
      "resource": "selfClient"
    }
  ]

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

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with DATEVconnect APIs to read and manage orders, suborders, invoices, fees, and related employee data.","capabilities":["Read orders","Manage suborders","Manage invoices","Manage fees","Access related employee data","Filter orders based on configured parameters"],"authentication":"Password-based (email, password, clientInstanceId)","commonUseCases":["Automating invoice processing workflows","Syncing order data between DATEV and external systems","Automated fee management and reporting"],"limitations":["Requires a Klardaten DATEVconnect Gateway setup","Requires a Klardaten account and valid DATEV instance ID","Authentication requires email and password (no API key mentioned)"],"relatedNodes":["Accounting","MasterData","Document Management","Identity & Access Management"]}


node_type: n8n-nodes-scraperapi-official.scraperApi
package_name: n8n-nodes-scraperapi-official
display_name: ScraperAPI
description: Official ScraperAPI nodes for n8n
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: scraperapi
author_github_url: https://github.com/scraperapi/
npm_package_name: n8n-nodes-scraperapi-official
npm_version: 1.2.0
community_fetched_at: 2026-04-16T09:43:35.923Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "api",
      "options": [
        {
          "name": "API",
          "value": "api"
        },
        {
          "name": "Crawler",
          "value": "crawler"
        },
        {
          "name": "Structured Data Endpoint",
          "value": "sde"
        }
      ],
      "required": true,
      "description": "Choose your ScraperAPI resource",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "apiRequest",
      "options": [
        {
          "name": "Send a Request",
          "value": "apiRequest",
          "action": "Send a request to the API"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "api"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "amazonProduct",
      "options": [
        {
          "name": "Offers",
          "value": "amazonOffers",
          "action": "Get product offers"
        },
        {
          "name": "Product",
          "value": "amazonProduct",
          "action": "Get product details"
        },
        {
          "name": "Search",
          "value": "amazonSearch",
          "action": "Search products"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "amazon"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ebaySearch",
      "options": [
        {
          "name": "Product",
          "value": "ebayProduct",
          "action": "Get product details"
        },
        {
          "name": "Search",
          "value": "ebaySearch",
          "action": "Search products"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "ebay"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "googleSearch",
      "options": [
        {
          "name": "Jobs",
          "value": "googleJobs",
          "action": "Get jobs results"
        },
        {
          "name": "Maps Search",
          "value": "googleMapsSearch",
          "action": "Search maps"
        },
        {
          "name": "News",
          "value": "googleNews",
          "action": "Get news results"
        },
        {
          "name": "Search",
          "value": "googleSearch",
          "action": "Get search results"
        },
        {
          "name": "Shopping",
          "value": "googleShopping",
          "action": "Get shopping results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "google"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "redfinForSale",
      "options": [
        {
          "name": "Agent",
          "value": "redfinAgent",
          "action": "Get agent details"
        },
        {
          "name": "For Rent",
          "value": "redfinForRent",
          "action": "Get rental listings"
        },
        {
          "name": "For Sale",
          "value": "redfinForSale",
          "action": "Get sale listings"
        },
        {
          "name": "Search",
          "value": "redfinSearch",
          "action": "Search listings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "redfin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "walmartSearch",
      "options": [
        {
          "name": "Category",
          "value": "walmartCategory",
          "action": "Browse category"
        },
        {
          "name": "Product",
          "value": "walmartProduct",
          "action": "Get product details"
        },
        {
          "name": "Review",
          "value": "walmartReview",
          "action": "Get product reviews"
        },
        {
          "name": "Search",
          "value": "walmartSearch",
          "action": "Search products"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sde"
          ],
          "sdePlatform": [
            "walmart"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "crawlerJobCreate",
      "options": [
        {
          "name": "Initiate a Crawler Job",
          "value": "crawlerJobCreate",
          "action": "Initiate a crawler job"
        },
        {
          "name": "Get a Job Status",
          "value": "crawlerJobGet",
          "action": "Get a job status"
        },
        {
          "name": "Cancel a Crawler Job",
          "value": "crawlerJobDelete",
          "action": "Cancel a crawler job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crawler"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send a Request",
      "value": "apiRequest",
      "action": "Send a request to the API",
      "resource": "api"
    },
    {
      "name": "Offers",
      "value": "amazonOffers",
      "action": "Get product offers",
      "resource": "sde"
    },
    {
      "name": "Product",
      "value": "amazonProduct",
      "action": "Get product details",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "amazonSearch",
      "action": "Search products",
      "resource": "sde"
    },
    {
      "name": "Product",
      "value": "ebayProduct",
      "action": "Get product details",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "ebaySearch",
      "action": "Search products",
      "resource": "sde"
    },
    {
      "name": "Jobs",
      "value": "googleJobs",
      "action": "Get jobs results",
      "resource": "sde"
    },
    {
      "name": "Maps Search",
      "value": "googleMapsSearch",
      "action": "Search maps",
      "resource": "sde"
    },
    {
      "name": "News",
      "value": "googleNews",
      "action": "Get news results",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "googleSearch",
      "action": "Get search results",
      "resource": "sde"
    },
    {
      "name": "Shopping",
      "value": "googleShopping",
      "action": "Get shopping results",
      "resource": "sde"
    },
    {
      "name": "Agent",
      "value": "redfinAgent",
      "action": "Get agent details",
      "resource": "sde"
    },
    {
      "name": "For Rent",
      "value": "redfinForRent",
      "action": "Get rental listings",
      "resource": "sde"
    },
    {
      "name": "For Sale",
      "value": "redfinForSale",
      "action": "Get sale listings",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "redfinSearch",
      "action": "Search listings",
      "resource": "sde"
    },
    {
      "name": "Category",
      "value": "walmartCategory",
      "action": "Browse category",
      "resource": "sde"
    },
    {
      "name": "Product",
      "value": "walmartProduct",
      "action": "Get product details",
      "resource": "sde"
    },
    {
      "name": "Review",
      "value": "walmartReview",
      "action": "Get product reviews",
      "resource": "sde"
    },
    {
      "name": "Search",
      "value": "walmartSearch",
      "action": "Search products",
      "resource": "sde"
    },
    {
      "name": "Initiate a Crawler Job",
      "value": "crawlerJobCreate",
      "action": "Initiate a crawler job",
      "resource": "crawler"
    },
    {
      "name": "Get a Job Status",
      "value": "crawlerJobGet",
      "action": "Get a job status",
      "resource": "crawler"
    },
    {
      "name": "Cancel a Crawler Job",
      "value": "crawlerJobDelete",
      "action": "Cancel a crawler job",
      "resource": "crawler"
    }
  ]

npm_readme:
  # ScraperAPI Official N8N Node

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

  **ScraperAPI** is a solution to help you unlock and scrape any website, no matter the scale or difficulty. It handles proxies, browsers, and CAPTCHAs so you can focus on extracting the data you need.

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

  ## Table of Contents

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Usage](#usage)
  - [Resources](#resources)
  - [Parameters](#parameters)
  - [Documentation](#documentation)
  - [Version History](#version-history)
  - [More ScraperAPI Integrations](#more-scraperapi-integrations)

  ## Installation

  1. In n8n, go to the **Nodes** panel.
  2. Search for **ScraperAPI**.
  3. Select **Install**: n8n installs the node and it becomes available in your workflows.

  ## Operations

    - API
      - Send a Request
    - Structured Data Endpoints (SDEs)
      - Amazon
        - Product
        - Search
        - Offers
        - Review
        - Prices
      - Google
        - Search
        - Jobs
        - News
        - Shopping
        - Maps Search
      - Ebay
        - Search
        - Product
      - Walmart
        - Search
        - Category
        - Product
        - Review
      - Redfin
        - For Sale
        - For Rent
        - Search
        - Agent
    - Crawler
      - Initiate a crawler job
      - Get a job status
      - Cancel a crawler job

  ## Credentials

  ### Getting Your API Key

  1. Sign up for a ScraperAPI account at [ScraperAPI Dashboard](https://dashboard.scraperapi.com/signup)
  2. Once logged in, navigate to your dashboard
  3. Copy your API key from the dashboard

  ### Configuring Credentials in n8n

  1. In your n8n workflow, add a **ScraperAPI** node
  2. Click on the **Credential to connect with** field
  3. Click **Create New Credential**
  4. Enter your API key
  5. Click **Save**

  The credentials will be automatically tested to ensure they work correctly.

  For more information, see the [ScraperAPI API Key Documentation](https://docs.scraperapi.com/dashboard-and-billing/api-key).

  ## Usage

  The ScraperAPI node supports three resources:

  - **API**: Scrape a single URL with a GET request. The node handles proxies, browser automation, and CAPTCHA solving.
  - **Structured Data Endpoint**: Extract structured data from popular websites (Amazon, Google, eBay, Walmart, Redfin) using purpose-built endpoints that return clean, parsed JSON.
  - **Crawler**: Run multi-page crawler jobs that follow links from a start URL and stream results to a webhook.

  1. Add a **ScraperAPI** node to your workflow
  2. Select the ScraperAPI resource, for example the **API**
  3. Enter the required parameters, for example the **URL** you want to scrape
  4. Configure any optional parameter you need
  5. Execute the workflow

  The node returns a JSON object with the following structure:

  ```json
  {
    "resource": "api",
    "response": {
      "body": "...",
      "headers": {...},
      "statusCode": 200,
      "statusMessage": "OK"
    }
  }
  ```

  ## Resources

  ### API

  The **API** resource allows you to scrape any website using ScraperAPI's endpoint. It supports JavaScript rendering, geo-targeting, device-specific user agents, premium proxies, automatic parsing, and multiple output formats.

  <details>
  <summary><strong>Send a Request</strong></summary>

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Target URL to scrape (e.g., `https://example.com`) | Yes |
  | `render` | boolean | Enable JavaScript rendering for dynamic content (default: `false`) | No |
  | `countryCode` | string | Two-letter ISO country code (e.g., `US`, `GB`, `DE`) for geo-targeted scraping | No |
  | `desktopDevice` | boolean | Scrape the page as a desktop device (incompatible with `mobileDevice`) | No |
  | `mobileDevice` | boolean | Scrape the page as a mobile device (incompatible with `desktopDevice`) | No |
  | `outputFormat` | string | Output format: `'markdown'`, `'text'`, `'csv'`, or `'json'`. CSV and JSON are only available for autoparse websites. Default: HTML | No |
  | `autoparse` | boolean | Enable automatic parsing for select websites (default: `false`) | No |
  | `premium` | boolean | Use premium residential/mobile proxies for higher success rates (incompatible with `ultraPremium`) | No |
  | `ultraPremium` | boolean | Activate advanced bypass mechanisms for the most difficult websites (incompatible with `premium`) | No |

  </details>

  ### Crawler

  The **Crawler** resource uses the [ScraperAPI Crawler API](https://docs.scraperapi.com/scraperapi-crawler-v2.0/crawler-api/job-lifecycle) to run crawling jobs to discover and scrape multiple pages, streaming results to a webhook you provide.

  <details>
  <summary><strong>Initiate a Crawler Job</strong></summary>

  Create and start a new crawler job. You receive a `jobId` to track or cancel the job.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `startUrl` | string | The URL where crawling begins (depth 0) | Yes |
  | `maxDepth` | number | Maximum depth level (start URL = 0). Either `maxDepth` or `crawlBudget` must be set | Yes* |
  | `crawlBudget` | number | Maximum ScraperAPI credits the job may consume. Either `maxDepth` or `crawlBudget` must be set | Yes* |
  | `urlRegexpInclude` | string | Regex to decide which links to crawl from each page. Use `.*` to allow all pages on the site | Yes |
  | `callbackUrl` | string | Webhook URL where ScraperAPI sends results. Both successful and failed scrape attempts are streamed here; when the job finishes, a job summary is also sent | Yes |
  | `urlRegexpExclude` | string | Regex to skip URLs (e.g., `.*/product/.*`). Leave empty to crawl all URLs that pass the include regex | No |
  | `apiParameters` | object | Per-page scrape settings (country code, device, render, premium, output format, etc.). See the API resource for supported options | No |
  | `enabled` | boolean | When `true`, the crawler runs according to the schedule. When `false`, only the configuration is created (default: `true`) | No |
  | `scheduleName` | string | Name for the crawler (e.g., for the dashboard) | No |
  | `scheduleInterval` | string | When the crawler runs: `'once'`, `'hourly'`, `'daily'`, `'weekly'`, or `'monthly'` | No |

  </details>

  <details>
  <summary><strong>Get a Job Status</strong></summary>

  Check the current state of a crawler job.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `jobId` | string | The crawler job ID returned when you initiated the job | Yes |

  </details>

  <details>
  <summary><strong>Cancel a Crawler Job</strong></summary>

  Stop a running crawler job.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `jobId` | string | The crawler job ID returned when you initiated the job | Yes |

  </details>

  ### Structured Data Endpoints (SDEs)

  The **Structured Data Endpoints** resource provides purpose-built endpoints for extracting structured data from popular platforms. Each endpoint returns clean, parsed JSON without requiring manual parsing. All SDE endpoints are accessed via `https://api.scraperapi.com/structured/{platform}/{endpoint}`.

  <details>
  <summary><strong>Amazon</strong></summary>

  #### Amazon Product

  Extract detailed product information from Amazon.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `asin` | string | The Amazon Standard Identification Number (e.g., `B08N5WRWNW`) | Yes |
  | `tld` | string | Amazon top-level domain (e.g., `com`, `co.uk`, `de`) | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `includeHtml` | boolean | Whether to include raw HTML in the response | No |
  | `language` | string | Language code for the response | No |

  #### Amazon Search

  Search for products on Amazon.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query (e.g., `laptop`) | Yes |
  | `tld` | string | Amazon top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `page` | number | Page number of search results | No |
  | `sort` | string | Sort parameter | No |
  | `category` | string | Department/category filter | No |
  | `language` | string | Language code for the response | No |

  #### Amazon Offers

  Get all offers (sellers) for a specific Amazon product.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `asin` | string | The Amazon Standard Identification Number | Yes |
  | `tld` | string | Amazon top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `condition` | string | Filter by item condition | No |
  | `filterNew` | boolean | Filter for new items | No |
  | `filterUsedGood` | boolean | Filter for used - good condition | No |
  | `filterUsedLikeNew` | boolean | Filter for used - like new condition | No |
  | `filterUsedVeryGood` | boolean | Filter for used - very good condition | No |
  | `filterUsedAcceptable` | boolean | Filter for used - acceptable condition | No |

  #### Amazon Review

  Get customer reviews for an Amazon product.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `asin` | string | The Amazon Standard Identification Number | Yes |
  | `tld` | string | Amazon top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `filterByStar` | string | Filter reviews by star rating | No |
  | `reviewerType` | string | Filter by reviewer type | No |
  | `pageNumber` | number | Page number of reviews | No |
  | `sortBy` | string | Sort order for reviews | No |

  #### Amazon Prices

  Get pricing information for multiple Amazon products at once.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `asins` | string | Comma-separated list of ASINs (max 8) | Yes |
  | `tld` | string | Amazon top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |

  </details>

  <details>
  <summary><strong>Google</strong></summary>

  #### Google Search

  Get Google search results.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query | Yes |
  | `tld` | string | Google top-level domain (e.g., `com`, `co.uk`) | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `dateRangeStart` | string | Start date for date-range filtering | No |
  | `dateRangeEnd` | string | End date for date-range filtering | No |
  | `timePeriod` | string | Predefined time period filter | No |
  | `includeHtml` | boolean | Whether to include raw HTML in the response | No |

  #### Google Jobs

  Get Google Jobs search results.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Job search query | Yes |
  | `tld` | string | Google top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |

  #### Google News

  Get Google News results.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | News search query | Yes |
  | `tld` | string | Google top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `dateRangeStart` | string | Start date for date-range filtering | No |
  | `dateRangeEnd` | string | End date for date-range filtering | No |
  | `timePeriod` | string | Predefined time period filter | No |

  #### Google Shopping

  Get Google Shopping results.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Shopping search query | Yes |
  | `tld` | string | Google top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `includeHtml` | boolean | Whether to include raw HTML in the response | No |

  #### Google Maps Search

  Search for businesses and places on Google Maps.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query (e.g., `pizza near Times Square`) | Yes |
  | `tld` | string | Google top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `latitude` | string | Latitude for location-based search | No |
  | `longitude` | string | Longitude for location-based search | No |
  | `zoom` | number | Zoom level for the map search | No |
  | `includeHtml` | boolean | Whether to include raw HTML in the response | No |

  </details>

  <details>
  <summary><strong>eBay</strong></summary>

  #### eBay Search

  Search for items on eBay.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query | Yes |
  | `tld` | string | eBay top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `page` | number | Page number of search results | No |
  | `itemsPerPage` | number | Number of items per page | No |
  | `sellerId` | string | Filter by specific seller | No |
  | `condition` | string | Filter by item condition | No |
  | `buyingFormat` | string | Filter by buying format: `'buy_it_now'`, `'auction'`, `'accepts_offers'` | No |
  | `showOnly` | string | Additional filters: `'returns_accepted'`, `'authorized_seller'`, `'completed_items'`, `'sold_items'`, `'sale_items'`, `'listed_as_lots'`, `'search_in_description'`, `'benefits_charity'`, `'authenticity_guarantee'` | No |
  | `sortBy` | string | Sort order: `'ending_soonest'`, `'newly_listed'`, `'price_lowest'`, `'price_highest'`, `'distance_nearest'`, `'best_match'` | No |

  #### eBay Product

  Get detailed product information from eBay.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `productId` | string | The eBay product/item ID | Yes |
  | `tld` | string | eBay top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |

  </details>

  <details>
  <summary><strong>Walmart</strong></summary>

  #### Walmart Search

  Search for products on Walmart.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `query` | string | Search query | Yes |
  | `tld` | string | Walmart top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `page` | number | Page number of search results | No |

  #### Walmart Category

  Browse products by Walmart category.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `category` | string | Walmart category ID | Yes |
  | `tld` | string | Walmart top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `page` | number | Page number of results | No |

  #### Walmart Product

  Get detailed product information from Walmart.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `productId` | string | The Walmart product ID | Yes |
  | `tld` | string | Walmart top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |

  #### Walmart Review

  Get customer reviews for a Walmart product.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `productId` | string | The Walmart product ID | Yes |
  | `tld` | string | Walmart top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `page` | number | Page number of reviews | No |
  | `sort` | string | Sort order for reviews | No |
  | `ratings` | string | Filter by rating | No |
  | `verifiedPurchase` | boolean | Filter for verified purchases only | No |

  </details>

  <details>
  <summary><strong>Redfin</strong></summary>

  #### Redfin For Sale

  Get property listings for sale on Redfin.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Full Redfin URL for the search | Yes |
  | `tld` | string | Redfin top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `raw` | boolean | Whether to return raw data | No |

  #### Redfin For Rent

  Get rental property listings on Redfin.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Full Redfin URL for the search | Yes |
  | `tld` | string | Redfin top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |
  | `raw` | boolean | Whether to return raw data | No |

  #### Redfin Search

  Search for properties on Redfin.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Full Redfin URL for the search | Yes |
  | `tld` | string | Redfin top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |

  #### Redfin Agent

  Get real estate agent information from Redfin.

  | Parameter | Type | Description | Required |
  |-----------|------|-------------|----------|
  | `url` | string | Full Redfin agent URL | Yes |
  | `tld` | string | Redfin top-level domain | No |
  | `countryCode` | string | Two-letter country code for geo-targeting | No |

  </details>

  ## Documentation

  - [ScraperAPI Official Documentation](https://docs.scraperapi.com)

  ## Version History

  - **0.1.1**: Initial release with API resource support
  - **0.1.2**: Usage added to Documentation
  - **0.2.0**: Replace device_type options field with desktopDevice and mobileDevice boolean fields to support AI model auto-definition.
  - **1.0.0**: output_format and autoparse parameters supported.
  - **1.1.0**: Crawler resource: initiate crawler jobs, get job status, and cancel jobs.

  ## More ScraperAPI Integrations

  ### MCP Server

  ScraperAPI also provides an **MCP (Model Context Protocol) server** that enables AI models and agents to scrape websites.

  #### Hosted MCP Server

  ScraperAPI offers a hosted MCP server that you can use with n8n's [MCP Client Tool](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/).

  **Configuration Steps:**

  1. Add an **MCP Client Tool** node to your workflow
  2. Configure the following settings:
     - **Endpoint**: `https://mcp.scraperapi.com/mcp`
     - **Server Transport**: `HTTP Streamable`
     - **Authentication**: `Bearer Auth`
     - **Credential for Bearer Auth**: Enter your ScraperAPI API key as a Bearer Token.
     - **Tools to include**: `All` (or select specific tools as needed)

  #### Self-Hosted MCP Server

  If you prefer to self-host the MCP server, you can find the implementation and setup instructions in the [scraperapi-mcp repository](https://github.com/scraperapi/scraperapi-mcp).

ai_documentation_summary:
  {"purpose":"This n8n community node enables scraping any website by handling proxies, browser automation, and CAPTCHAs, or extracting structured data from popular e-commerce and business sites.","capabilities":["Scrape single URLs with GET requests","Handle JavaScript rendering for dynamic content","Geo-target scraping by country","Simulate desktop or mobile device user agents","Extract structured data from Amazon, Google, eBay, Walmart, and Redfin","Run multi-page crawler jobs with webhook streaming","Support multiple output formats (HTML, markdown, text, CSV, JSON)","Use premium proxies and advanced bypass mechanisms"],"authentication":"API key required (entered in node credentials)","commonUseCases":["Extract product data from Amazon or eBay","Monitor competitor pricing","Scrape job listings from Google or Indeed","Gather real estate listings from Redfin","Automate data collection from dynamic websites"],"limitations":["Requires a paid ScraperAPI account and API key","Desktop and mobile device options are mutually exclusive","Premium and ultraPremium proxy options are mutually exclusive","CSV and JSON output formats only available for autoparse websites","Crawler jobs require a webhook endpoint for result streaming"],"relatedNodes":["HTTP Request","Webhook","Code","JSON","Split In Batches"]}


node_type: n8n-nodes-gainium.Gainium
package_name: n8n-nodes-gainium
display_name: Gainium
description: Operates with official Gainium API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: aressanch
author_github_url: https://github.com/Gainium/
npm_package_name: n8n-nodes-gainium
npm_version: 0.3.6
community_fetched_at: 2026-04-16T09:43:35.925Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "general",
      "options": [
        {
          "name": "General",
          "value": "general"
        },
        {
          "name": "Bots",
          "value": "bots"
        },
        {
          "name": "Deals",
          "value": "deals"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_user_grid_bots",
      "options": [
        {
          "name": "Get User Grid Bots",
          "value": "get_user_grid_bots",
          "action": "Get User Grid Bots",
          "description": "Get User Grid Bots"
        },
        {
          "name": "Get User Combo Bots",
          "value": "get_user_combo_bots",
          "action": "Get User Combo Bots",
          "description": "Get User Combo Bots"
        },
        {
          "name": "Get User DCA Bots",
          "value": "get_user_dca_bots",
          "action": "Get User DCA Bots",
          "description": "Get User DCA Bots"
        },
        {
          "name": "Update DCA Bot Settings",
          "value": "update_dca_bot_settings",
          "action": "Update DCA Bot Settings",
          "description": "Update DCA Bot Settings"
        },
        {
          "name": "Update Combo Bot Settings",
          "value": "update_combo_bot_settings",
          "action": "Update Combo Bot Settings",
          "description": "Update Combo Bot Settings"
        },
        {
          "name": "Change Bot Pairs",
          "value": "change_bot_pairs",
          "action": "Change Bot Pairs",
          "description": "Change Bot Pairs"
        },
        {
          "name": "Start Bot",
          "value": "start_bot",
          "action": "Start Bot",
          "description": "Start Bot"
        },
        {
          "name": "Stop Bot",
          "value": "stop_bot",
          "action": "Stop Bot",
          "description": "Stop Bot"
        },
        {
          "name": "Archive Bot",
          "value": "archive_bot",
          "action": "Archive Bot",
          "description": "Archive Bot"
        },
        {
          "name": "Restore Bot",
          "value": "restore_bot",
          "action": "Restore Bot",
          "description": "Restore Bot"
        },
        {
          "name": "Clone DCA Bot",
          "value": "clone_dca_bot",
          "action": "Clone DCA Bot",
          "description": "Clone DCA Bot"
        },
        {
          "name": "Clone Combo Bot",
          "value": "clone_combo_bot",
          "action": "Clone Combo Bot",
          "description": "Clone Combo Bot"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bots"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_user_deals",
      "options": [
        {
          "name": "Get User Deals",
          "value": "get_user_deals",
          "action": "Get User Deals",
          "description": "Get User Deals"
        },
        {
          "name": "Update DCA Deal",
          "value": "update_dca_deal",
          "action": "Update DCA Deal",
          "description": "Update DCA Deal"
        },
        {
          "name": "Update Combo Deal",
          "value": "update_combo_deal",
          "action": "Update Combo Deal",
          "description": "Update Combo Deal"
        },
        {
          "name": "Add Funds To Deal",
          "value": "add_funds_to_deal",
          "action": "Add Funds To Deal",
          "description": "Add Funds To Deal"
        },
        {
          "name": "Reduce Funds From Deal",
          "value": "reduce_funds_from_deal",
          "action": "Reduce Funds From Deal",
          "description": "Reduce Funds From Deal"
        },
        {
          "name": "Start Deal",
          "value": "start_deal",
          "action": "Start Deal",
          "description": "Start Deal"
        },
        {
          "name": "Close Deal",
          "value": "close_deal",
          "action": "Close Deal",
          "description": "Close Deal"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deals"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_user_exchanges",
      "options": [
        {
          "name": "Get User Exchanges",
          "value": "get_user_exchanges",
          "action": "Get User Exchanges",
          "description": "Get User Exchanges"
        },
        {
          "name": "Get User Balances",
          "value": "get_user_balances",
          "action": "Get User Balances",
          "description": "Get User Balances"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_supported_exchange",
      "options": [
        {
          "name": "Get Supported Exchanges",
          "value": "get_supported_exchange",
          "action": "Get Supported Exchanges",
          "description": "Get Supported Exchanges"
        },
        {
          "name": "Get Crypto Screener",
          "value": "get_crypto_screener",
          "action": "Get Crypto Screener",
          "description": "Get crypto screener data with filtering and pagination"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "general"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get User Grid Bots",
      "value": "get_user_grid_bots",
      "action": "Get User Grid Bots",
      "description": "Get User Grid Bots",
      "resource": "bots"
    },
    {
      "name": "Get User Combo Bots",
      "value": "get_user_combo_bots",
      "action": "Get User Combo Bots",
      "description": "Get User Combo Bots",
      "resource": "bots"
    },
    {
      "name": "Get User DCA Bots",
      "value": "get_user_dca_bots",
      "action": "Get User DCA Bots",
      "description": "Get User DCA Bots",
      "resource": "bots"
    },
    {
      "name": "Update DCA Bot Settings",
      "value": "update_dca_bot_settings",
      "action": "Update DCA Bot Settings",
      "description": "Update DCA Bot Settings",
      "resource": "bots"
    },
    {
      "name": "Update Combo Bot Settings",
      "value": "update_combo_bot_settings",
      "action": "Update Combo Bot Settings",
      "description": "Update Combo Bot Settings",
      "resource": "bots"
    },
    {
      "name": "Change Bot Pairs",
      "value": "change_bot_pairs",
      "action": "Change Bot Pairs",
      "description": "Change Bot Pairs",
      "resource": "bots"
    },
    {
      "name": "Start Bot",
      "value": "start_bot",
      "action": "Start Bot",
      "description": "Start Bot",
      "resource": "bots"
    },
    {
      "name": "Stop Bot",
      "value": "stop_bot",
      "action": "Stop Bot",
      "description": "Stop Bot",
      "resource": "bots"
    },
    {
      "name": "Archive Bot",
      "value": "archive_bot",
      "action": "Archive Bot",
      "description": "Archive Bot",
      "resource": "bots"
    },
    {
      "name": "Restore Bot",
      "value": "restore_bot",
      "action": "Restore Bot",
      "description": "Restore Bot",
      "resource": "bots"
    },
    {
      "name": "Clone DCA Bot",
      "value": "clone_dca_bot",
      "action": "Clone DCA Bot",
      "description": "Clone DCA Bot",
      "resource": "bots"
    },
    {
      "name": "Clone Combo Bot",
      "value": "clone_combo_bot",
      "action": "Clone Combo Bot",
      "description": "Clone Combo Bot",
      "resource": "bots"
    },
    {
      "name": "Get User Deals",
      "value": "get_user_deals",
      "action": "Get User Deals",
      "description": "Get User Deals",
      "resource": "deals"
    },
    {
      "name": "Update DCA Deal",
      "value": "update_dca_deal",
      "action": "Update DCA Deal",
      "description": "Update DCA Deal",
      "resource": "deals"
    },
    {
      "name": "Update Combo Deal",
      "value": "update_combo_deal",
      "action": "Update Combo Deal",
      "description": "Update Combo Deal",
      "resource": "deals"
    },
    {
      "name": "Add Funds To Deal",
      "value": "add_funds_to_deal",
      "action": "Add Funds To Deal",
      "description": "Add Funds To Deal",
      "resource": "deals"
    },
    {
      "name": "Reduce Funds From Deal",
      "value": "reduce_funds_from_deal",
      "action": "Reduce Funds From Deal",
      "description": "Reduce Funds From Deal",
      "resource": "deals"
    },
    {
      "name": "Start Deal",
      "value": "start_deal",
      "action": "Start Deal",
      "description": "Start Deal",
      "resource": "deals"
    },
    {
      "name": "Close Deal",
      "value": "close_deal",
      "action": "Close Deal",
      "description": "Close Deal",
      "resource": "deals"
    },
    {
      "name": "Get User Exchanges",
      "value": "get_user_exchanges",
      "action": "Get User Exchanges",
      "description": "Get User Exchanges",
      "resource": "user"
    },
    {
      "name": "Get User Balances",
      "value": "get_user_balances",
      "action": "Get User Balances",
      "description": "Get User Balances",
      "resource": "user"
    },
    {
      "name": "Get Supported Exchanges",
      "value": "get_supported_exchange",
      "action": "Get Supported Exchanges",
      "description": "Get Supported Exchanges",
      "resource": "general"
    },
    {
      "name": "Get Crypto Screener",
      "value": "get_crypto_screener",
      "action": "Get Crypto Screener",
      "description": "Get crypto screener data with filtering and pagination",
      "resource": "general"
    }
  ]

npm_readme:
  # n8n-nodes-gainium

  Integrate Gainium with n8n to manage bots, strategies, and deals directly in your workflows. This package lets you trigger actions, fetch data, and coordinate trading logic with the rest of your automation stack.

  ## ⚡ Gainium Overview

  [Gainium](https://gainium.io) is a platform for building and running automated trading strategies. Key features include:

  - Trading terminal
  - Grid, DCA, and Combo bots
  - Backtesting & paper trading
  - Market screener
  - Portfolio tracking
  - Risk tools & auto-compounding
  - Webhook-triggered actions

  ## 🤖 About n8n

  [n8n](https://n8n.io) is a workflow automation tool that connects APIs and services. Use these nodes to tie trading logic to alerts, signals, data sources, or messaging tools—no custom backend required.

  ---

  ## 📚 API Documentation

  📖 **Complete API Reference:** [https://api.gainium.io/api/docs/](https://api.gainium.io/api/docs/)

  > 💡 **Tip:** The interactive API documentation includes detailed endpoint descriptions, request/response examples, and a built-in testing interface to help you understand and implement each feature.

  ---

  ## 🚀 What You Can Do

  The nodes let you:

  - Trigger bots on signals or events
  - Monitor deals, positions, and PnL
  - Pause, resume, close, or adjust bots and deals
  - React to strategy alerts
  - Retrieve account and performance data
  - Combine with Telegram, Discord, TradingView, etc. for full workflows

  ---

  ## 🔧 Use Cases (Examples)

  - Rebalance: Fetch balances + external prices, adjust allocations via bot actions.
  - News / sentiment trigger: Pause or de-risk bots when negative sentiment spikes.
  - Scheduled profit taking: Cron step-down of position size or bot aggressiveness.
  - Volatility adaptation: Adjust grid/DCA parameters when volatility changes.
  - Arbitrage alerting: Compare prices across exchanges and notify or trigger a deal.
  - Chat control: Telegram command interface to pause, resume, or inspect deals.
  - Risk rules: Auto close or scale down deals at configured drawdown levels.
  - Template deployment: Create bots from stored presets (e.g. Airtable / Notion).
  - PnL logging: Push periodic performance snapshots to Sheets or Notion.

  ---

  ## 📦 Installation

  In your n8n instance or custom Docker setup:

      npm install n8n-nodes-gainium

  Then restart your n8n server.

  > This is a community node. You’ll need to enable community nodes in your `n8n` settings.

  ---

  ## 🔐 Authentication

  Set your Gainium API Key in the credentials section of the node. You can create an API key in your Gainium account settings.

  ---

  ## **🧩 Nodes Included**

  Each Gainium API endpoint has its own dedicated n8n node for maximum flexibility in your workflows.

  ### **Bots**

  - Get Grid Bots — /api/bots/grid
  - Get Combo Bots — /api/bots/combo
  - Get DCA Bots — /api/bots/dca
  - Update DCA Bot — /api/updateDCABot
  - Update Combo Bot — /api/updateComboBot
  - Change Bot Pairs — /api/changeBotPairs
  - Start Bot — /api/startBot
  - Clone DCA Bot — /api/cloneDCABot
  - Clone Combo Bot — /api/cloneComboBot
  - Restore Bot — /api/restoreBot
  - Stop Bot — /api/stopBot
  - Archive Bot — /api/archiveBot

  ### **Deals**

  - Get Deals — /api/deals
  - Update DCA Deal — /api/updateDCADel
  - Update Combo Deal — /api/updateComboDeal
  - Add Funds to Deal — /api/addFunds
  - Reduce Funds from Deal — /api/reduceFunds
  - Start Deal — /api/startDeal
  - Close Deal — /api/closeDeal/{dealId}

  ### **User**

  - Get User Exchanges — /api/user/exchanges
  - Get User Balances — /api/user/balances

  ### **General**

  - Get Supported Exchanges — /api/exchanges
  - Get Crypto Screener — /api/screener

  More coming soon.

  ---

  ## **🧠 Agent Tool**

  Provides a unified action/data interface for AI or rule-driven agents (OpenAI, Anthropic, LangChain, etc.) so they can inspect state and invoke supported bot or deal operations dynamically.

  ---

  ## 💡 Example Workflows

  1. TradingView signal → start bot via webhook
  2. De-risk on BTC dominance spike
  3. Profit alert when deal closes > X%
  4. Screener match → create / notify
  5. AI agent adjusts risk or pauses bots
  6. Natural language command interface (Telegram / Slack)
  7. Adaptive parameter tuning (volatility & volume)

  ---

  ## 🙋 Support

  Need help or a feature? Open an issue or visit the [community forum](https://community.gainium.io).

ai_documentation_summary:
  {"purpose":"This n8n node integrates with the Gainium trading platform to automate bot management, deal execution, and portfolio tracking within workflow automation.","capabilities":["Trigger bots on signals or events","Monitor deals, positions, and PnL","Pause, resume, close, or adjust bots and deals","React to strategy alerts","Retrieve account and performance data","Fetch grid, DCA, and combo bot configurations","Manage deal funds (add/reduce)","Access user exchanges and balances","Retrieve market screener data","Support AI agents via Agent Tool for dynamic bot/deal operations"],"authentication":"API Key required (configured in node credentials)","commonUseCases":["Rebalancing portfolio allocations via bot actions","Pausing or de-risking bots based on news/sentiment triggers","Scheduled profit taking and volatility adaptation","Arbitrage alerting and cross-exchange price comparison","Telegram/Slack command interfaces for bot control"],"limitations":["Community node requiring manual enabling in n8n settings","Some features (e.g., additional bot types) may not be fully implemented yet"],"relatedNodes":["n8n-nodes-github","n8n-nodes-telegram","n8n-nodes-discord","n8n-nodes-slack","n8n-nodes-webhook"]}


node_type: n8n-nodes-campaignkit.campaignKitTrigger
package_name: n8n-nodes-campaignkit
display_name: CampaignKit Trigger
description: Trigger workflows when CampaignKit events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: campaignkit
author_github_url: https://github.com/campaignkit-cc/
npm_package_name: n8n-nodes-campaignkit
npm_version: 1.0.3
community_fetched_at: 2026-04-16T09:43:35.926Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-campaignkit

  This is an n8n community node for [CampaignKit Email Validation](https://campaignkit.cc). It lets you validate email addresses and receive notifications when validation jobs complete in your n8n workflows.

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

  ## Installation

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

  ### Community Node Installation

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

  ### Manual Installation

  If you're self-hosting n8n, you can install the node manually:

  ```bash
  npm install n8n-nodes-campaignkit
  ```

  For Docker-based installations, add the package to your n8n Docker image or install it in your running container.

  ## Operations

  ### CampaignKit Node

  The main CampaignKit node supports the following operations:

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

  **Input:**
  - `email` (string, required): The email address to validate

  **Output:**
  ```json
  {
    "email": "user@example.com",
    "is_valid": true,
    "is_risky": false,
    "is_invalid": false,
    "is_disposable": false,
    "is_role_email": false,
    "is_catchall": false,
    "is_blacklisted": false,
    "is_free_email": true,
    "is_mx_found": true,
    "is_smtp_valid": true,
    "score": 10,
    "classifier": "valid",
    "domain": "example.com",
    "mx_record": "mail.example.com",
    "smtp_provider": "Google",
    "free_email_provider": "Gmail",
    "did_you_mean": ""
  }
  ```

  #### Validate Batch
  Validates multiple email addresses as a batch job.

  **Input:**
  - `emails` (string, required): Email addresses to validate (one per line)
  - `label` (string, optional): Label for the validation job

  **Output:**
  ```json
  {
    "job_id": 12345,
    "email_count": 100,
    "status": "pending",
    "label": "My Email List",
    "created_at": "2025-01-15T10:00:00Z"
  }
  ```

  #### Get Job Status
  Retrieves the status and results of a validation job.

  **Input:**
  - `jobId` (number, required): The ID of the validation job

  **Output:**
  ```json
  {
    "job_id": 12345,
    "account_id": 456,
    "label": "My Email List",
    "state": "done",
    "email_count": 100,
    "valid_count": 85,
    "invalid_count": 10,
    "risky_count": 5,
    "deliverable_count": 85,
    "undeliverable_count": 15,
    "credits_used": 100,
    "progress": 100,
    "created_at": "2025-01-15T10:00:00Z",
    "started_at": "2025-01-15T10:00:05Z",
    "finished_at": "2025-01-15T10:05:00Z"
  }
  ```

  ### CampaignKit Trigger

  The CampaignKit Trigger node responds to events from CampaignKit.

  #### Job Completed
  Triggers when a validation job is completed.

  **Output:**
  ```json
  {
    "event": "validation.job.completed",
    "job_id": 12345,
    "account_id": 456,
    "label": "My Email List",
    "state": "done",
    "email_count": 100,
    "deliverable_count": 85,
    "undeliverable_count": 15,
    "risky_count": 5,
    "credits_used": 100,
    "created_at": "2025-01-15T10:00:00Z",
    "finished_at": "2025-01-15T10:05:00Z"
  }
  ```

  ## Credentials

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

  ### Getting Your API Key

  1. Sign up for a [CampaignKit account](https://app.campaignkit.cc)
  2. Navigate to **Settings** > **API Keys**
  3. Create a new API key or copy an existing one

  ### Configuring Credentials in n8n

  1. In your n8n workflow, add a CampaignKit node
  2. Click on **Credentials** > **Create New**
  3. Select **CampaignKit API**
  4. Enter your API key
  5. (Optional) Modify the Base URL if using a custom instance
  6. Click **Save**

  The credential will be automatically tested by making a request to `/v1/account/me`.

  ## Example Workflows

  ### Example 1: Validate Single Email

  ```
  Manual Trigger → CampaignKit (Validate Email) → Filter (is_valid = true) → Send Email
  ```

  1. Trigger workflow manually or via webhook
  2. Use **CampaignKit** node with **Validate Email** operation
  3. Filter results to only include valid emails
  4. Send confirmation email for valid addresses

  ### Example 2: Batch Validation with Notification

  ```
  Schedule Trigger → HTTP Request (Get Emails) → CampaignKit (Validate Batch) → Wait → CampaignKit (Get Job Status) → Send Notification
  ```

  1. Schedule workflow to run daily
  2. Fetch email list from your database/API
  3. Start batch validation with CampaignKit
  4. Wait for job to complete (or use webhook trigger)
  5. Get final job results
  6. Send summary notification

  ### Example 3: Webhook-Based Batch Validation

  ```
  CampaignKit Trigger (Job Completed) → Filter (deliverable_count > 0) → HTTP Request (Update Database) → Slack Notification
  ```

  1. **CampaignKit Trigger** listens for job completion
  2. Filter to only process jobs with deliverable emails
  3. Update your database with results
  4. Send Slack notification with summary

  ## Understanding Email Validation Scores

  CampaignKit assigns each email a score from 0-10:

  - **10**: Valid - All checks passed, email is deliverable
  - **9**: Valid but unverified - Syntax and MX checks passed, but SMTP verification failed
  - **2**: Risky - Email exists but may be a spam trap or temporary
  - **0**: Invalid - Email will bounce

  ### Key Output Fields

  - `is_valid`: Email is deliverable (score 9-10)
  - `is_invalid`: Email will bounce (score 0)
  - `is_risky`: Email is suspicious (score 2)
  - `is_disposable`: Temporary/disposable email service
  - `is_role_email`: Generic role address (info@, support@, etc.)
  - `is_catchall`: Domain accepts all email addresses
  - `is_blacklisted`: Email is on CampaignKit's blacklist
  - `did_you_mean`: Suggested correction for typos

  ## API Rate Limits

  CampaignKit API has the following limits:

  - **Authenticated requests**: Based on your account plan
  - **Batch validation**: Uses credits based on email count
  - **Webhook delivery**: Up to 5 retry attempts with exponential backoff

  Monitor your credit usage via the `/v1/account/billing/balance` endpoint or in your CampaignKit dashboard.

  ## Troubleshooting

  ### Credential Test Fails

  - Verify your API key is correct
  - Check that your CampaignKit account is active
  - Ensure the Base URL is correct (default: `https://api.campaignkit.cc`)

  ### Webhook Not Receiving Events

  - Ensure your n8n instance is accessible from the internet
  - Check that the workflow is activated
  - Verify webhook was created successfully in CampaignKit dashboard
  - Check n8n execution logs for incoming webhook requests

  ### Batch Job Stuck in "Pending"

  - Large batches may take time to process
  - Use the **Get Job Status** operation to monitor progress
  - Jobs process at approximately 100-500 emails/minute depending on validation type

  ### "Insufficient Credits" Error

  - Check your account credit balance
  - Purchase additional credits in your CampaignKit dashboard
  - Contact support@campaignkit.cc for billing assistance

  ## Development

  ### Building the Node

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

  ### Local Testing

  1. Build the node
  2. Link it to your n8n installation:
     ```bash
     npm link
     cd ~/.n8n/nodes
     npm link n8n-nodes-campaignkit
     ```
  3. Restart n8n

  ### Project Structure

  ```
  n8n-nodes-campaignkit/
  ├── credentials/
  │   └── CampaignKitApi.credentials.ts
  ├── nodes/
  │   └── CampaignKit/
  │       ├── CampaignKit.node.ts
  │       └── CampaignKitTrigger.node.ts
  ├── types/
  │   └── CampaignKit.types.ts
  ├── package.json
  ├── tsconfig.json
  └── README.md
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [CampaignKit API Documentation](https://campaignkit.cc/docs)
  - [CampaignKit Dashboard](https://app.campaignkit.cc)
  - [CampaignKit Support](mailto:support@campaignkit.cc)

  ## Compatibility

  - n8n version: 0.220.0 or higher
  - Node.js version: 18.x or higher

  ## License

  [MIT](LICENSE)

  ## Version History

  ### 0.1.0 (Initial Release)
  - ✅ Validate Email operation
  - ✅ Validate Batch operation
  - ✅ Get Job Status operation
  - ✅ Job Completed webhook trigger
  - ✅ API Key authentication
  - ✅ Comprehensive error handling

  ## Support

  For issues related to:
  - **This n8n node**: Open an issue on [GitHub](https://github.com/yourusername/CampaignKit/issues)
  - **CampaignKit API**: Contact support@campaignkit.cc
  - **n8n platform**: Visit [n8n community forum](https://community.n8n.io)

ai_documentation_summary:
  {"purpose":"A community n8n node that validates email addresses individually or in batches and triggers workflows when CampaignKit validation jobs complete.","capabilities":["Validate single email addresses with detailed verification results","Run batch email validation jobs","Retrieve status and results of validation jobs","Trigger workflows on job completion events","Provide email scoring (0-10) and risk classification","Detect disposable, role-based, catchall, and blacklisted emails","Suggest email corrections for typos"],"authentication":"API key required (CampaignKit API key)","commonUseCases":["Email list cleaning before sending marketing campaigns","Automated bounce management for email lists","Real-time email validation via webhook triggers","Scheduled daily validation of contact databases"],"limitations":["Requires separate CampaignKit account and API key","Batch validation uses credits based on email count","Limited to CampaignKit's API rate limits and plan tiers","Webhook delivery has up to 5 retry attempts with exponential backoff"],"relatedNodes":["n8n-nodes-campaignkit.campaignKit","n8n-nodes-campaignkit.campaignKitTrigger","n8n-nodes-standard.manualTrigger","n8n-nodes-standard.httpRequest","n8n-nodes-standard.filter"]}


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

updated_at: 2026-04-16 09:43:35
author_name: openmic
author_github_url: https://github.com/OpenMicAI/
npm_package_name: n8n-nodes-openmic
npm_version: 0.1.5
community_fetched_at: 2026-04-16T09:43:35.927Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "phoneCall",
      "options": [
        {
          "name": "Phone Call",
          "value": "phoneCall"
        },
        {
          "name": "Bot",
          "value": "bot"
        },
        {
          "name": "Call",
          "value": "call"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create a Phone Call",
          "value": "create",
          "action": "Create a phone call"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "phoneCall"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Find Bot",
          "value": "get",
          "action": "Find a bot by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many bots"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Find Call",
          "value": "get",
          "action": "Find a call by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many calls"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create a Phone Call",
      "value": "create",
      "action": "Create a phone call",
      "resource": "phoneCall"
    },
    {
      "name": "Find Bot",
      "value": "get",
      "action": "Find a bot by ID",
      "resource": "bot"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many bots",
      "resource": "bot"
    },
    {
      "name": "Find Call",
      "value": "get",
      "action": "Find a call by ID",
      "resource": "call"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many calls",
      "resource": "call"
    }
  ]

npm_readme:
  # n8n-nodes-openmic

  This is the official n8n node for OpenMic. It provides nodes to interact with the OpenMic API for creating and managing voice AI agents.

  [OpenMic](https://openmic.ai) provides APIs for creating conversational AI agents with natural-sounding voices.

  ## Installation

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

  ## Operations

  ### Phone Call

  - **Create a Phone Call** - Initiate a phone call between two numbers with optional agent override, customer ID, dynamic variables, and callback URL.

  ### Bot

  - **Find Bot** - Retrieve a specific bot by its Agent UID.
  - **Get Many** - List all bots with optional filters (name, created date range) and limit.

  ### Call

  - **Find Call** - Retrieve a specific call by its Call UID.
  - **Get Many** - List all calls with optional filters (customer ID, phone numbers, bot ID, date range, call status, call type) and limit.
  - **Watch Call (Webhook Trigger)** - Watch a call by its Bot UID and trigger a webhook when the call is completed.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [OpenMic API Documentation](https://docs.openmic.ai)

  ## Support

  For support with this integration, please contact OpenMic support at team@openmic.ai or visit our [documentation](https://docs.openmic.ai).

ai_documentation_summary:
  {"purpose":"This node enables interaction with the OpenMic API to create and manage voice AI agents, including initiating phone calls and managing bot/call data.","capabilities":["Create phone calls between two numbers","Override agent during phone calls","Pass customer IDs and dynamic variables to calls","Set callback URLs for call events","Retrieve specific bots by Agent UID","List all bots with filtering options","Retrieve specific calls by Call UID","List all calls with filtering options","Trigger webhooks when calls complete"],"authentication":"API key required","commonUseCases":["Automated customer support via voice calls","Scheduling appointments through voice agents","Monitoring call activity and status","Managing multiple voice AI agents"],"limitations":[],"relatedNodes":["n8n-nodes-webhook.webhook","n8n-nodes-http.request"]}


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

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

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

npm_readme:
  # n8n-nodes-greenbubble

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

  ---

  ## Installation

  In your n8n instance:

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

  Or via npm in a self-hosted setup:

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

  ---

  ## Credentials

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

  ---

  ## Supported Resources & Operations

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

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

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

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

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

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

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

  ---

  ## Development

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

  ---

  ## Author

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

  ---

  ## License

  MIT


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

updated_at: 2026-04-16 09:43:35
author_name: oneai-dev
author_github_url: https://github.com/oneai-eu/n8n-nodes-oneai.git
npm_package_name: @oneai-eu/n8n-nodes-oneai
npm_version: 0.1.8
community_fetched_at: 2026-04-16T09:43:35.929Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "project",
      "options": [
        {
          "name": "AI",
          "value": "ai"
        },
        {
          "name": "Artifact",
          "value": "artifact"
        },
        {
          "name": "Chat",
          "value": "chat"
        },
        {
          "name": "Miscellaneous",
          "value": "miscellaneous"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "Reference",
          "value": "reference"
        },
        {
          "name": "Space",
          "value": "space"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an artifact",
          "description": "Create an artifact from a file"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an artifact",
          "description": "Delete an artifact from a space"
        },
        {
          "name": "Export PDF",
          "value": "exportPdf",
          "action": "Export artifact as PDF",
          "description": "Export an artifact as a PDF"
        },
        {
          "name": "Get Markdown",
          "value": "getMarkdown",
          "action": "Get artifact markdown",
          "description": "Get the markdown content of an artifact"
        },
        {
          "name": "List All",
          "value": "listAll",
          "action": "List all artifacts",
          "description": "List all artifacts with optional filtering"
        },
        {
          "name": "List by Space",
          "value": "listBySpace",
          "action": "List artifacts in space",
          "description": "List artifacts in a specific space"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "artifact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "checkAuth",
      "options": [
        {
          "name": "Check Authentication",
          "value": "checkAuth",
          "action": "Check authenticated user",
          "description": "Check the authenticated user and return their details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "miscellaneous"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a chat",
          "description": "Create a new chat"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a chat",
          "description": "Delete a chat"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a chat",
          "description": "Get chat history"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all chats",
          "description": "List chats with optional filtering"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a chat",
          "description": "Update chat details (rename or move)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createResponse",
      "options": [
        {
          "name": "Create Response",
          "value": "createResponse",
          "action": "Create a response",
          "description": "Send a message to an AI model and get a response"
        },
        {
          "name": "List Available AI Models",
          "value": "listModels",
          "action": "List available AI models",
          "description": "List all available AI models"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a project",
          "description": "Create a new project"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a project",
          "description": "Delete a project"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project",
          "description": "Get a project by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all projects",
          "description": "List all projects"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a project",
          "description": "Update a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listSpaces",
      "options": [
        {
          "name": "List Files",
          "value": "listFiles",
          "action": "List reference files",
          "description": "List files accessible for attaching as references"
        },
        {
          "name": "List Spaces",
          "value": "listSpaces",
          "action": "List reference spaces",
          "description": "List spaces accessible for attaching as references"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reference"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Add Team",
          "value": "addTeam",
          "action": "Add team to space",
          "description": "Add a team to a space"
        },
        {
          "name": "Add User",
          "value": "addUser",
          "action": "Add user to space",
          "description": "Add a user to a space"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a space",
          "description": "Create a new space"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a space",
          "description": "Delete a space"
        },
        {
          "name": "Delete File",
          "value": "deleteFile",
          "action": "Delete file from space",
          "description": "Delete a file from a space"
        },
        {
          "name": "Download File",
          "value": "downloadFile",
          "action": "Download file from space",
          "description": "Download a file from a space"
        },
        {
          "name": "Embed Files",
          "value": "embedFiles",
          "action": "Embed files in space",
          "description": "Queue files/folders for embedding"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a space",
          "description": "Get a space by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all spaces",
          "description": "List all spaces"
        },
        {
          "name": "List Files",
          "value": "listFiles",
          "action": "List files in space",
          "description": "List files in a space"
        },
        {
          "name": "List Teams",
          "value": "listTeams",
          "action": "List teams in space",
          "description": "List teams assigned to a space"
        },
        {
          "name": "List Users",
          "value": "listUsers",
          "action": "List users in space",
          "description": "List users assigned to a space"
        },
        {
          "name": "Remove Team",
          "value": "removeTeam",
          "action": "Remove team from space",
          "description": "Remove a team from a space"
        },
        {
          "name": "Remove User",
          "value": "removeUser",
          "action": "Remove user from space",
          "description": "Remove a user from a space"
        },
        {
          "name": "Sync",
          "value": "sync",
          "action": "Sync a space",
          "description": "Synchronize a linked space"
        },
        {
          "name": "Transfer File",
          "value": "transferFile",
          "action": "Transfer file between spaces",
          "description": "Move or copy a file between spaces"
        },
        {
          "name": "Upload File",
          "value": "uploadFile",
          "action": "Upload file to space",
          "description": "Upload a file to a space"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "space"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an artifact",
      "description": "Create an artifact from a file",
      "resource": "artifact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an artifact",
      "description": "Delete an artifact from a space",
      "resource": "artifact"
    },
    {
      "name": "Export PDF",
      "value": "exportPdf",
      "action": "Export artifact as PDF",
      "description": "Export an artifact as a PDF",
      "resource": "artifact"
    },
    {
      "name": "Get Markdown",
      "value": "getMarkdown",
      "action": "Get artifact markdown",
      "description": "Get the markdown content of an artifact",
      "resource": "artifact"
    },
    {
      "name": "List All",
      "value": "listAll",
      "action": "List all artifacts",
      "description": "List all artifacts with optional filtering",
      "resource": "artifact"
    },
    {
      "name": "List by Space",
      "value": "listBySpace",
      "action": "List artifacts in space",
      "description": "List artifacts in a specific space",
      "resource": "artifact"
    },
    {
      "name": "Check Authentication",
      "value": "checkAuth",
      "action": "Check authenticated user",
      "description": "Check the authenticated user and return their details",
      "resource": "miscellaneous"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a chat",
      "description": "Create a new chat",
      "resource": "chat"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a chat",
      "description": "Delete a chat",
      "resource": "chat"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a chat",
      "description": "Get chat history",
      "resource": "chat"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all chats",
      "description": "List chats with optional filtering",
      "resource": "chat"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a chat",
      "description": "Update chat details (rename or move)",
      "resource": "chat"
    },
    {
      "name": "Create Response",
      "value": "createResponse",
      "action": "Create a response",
      "description": "Send a message to an AI model and get a response",
      "resource": "ai"
    },
    {
      "name": "List Available AI Models",
      "value": "listModels",
      "action": "List available AI models",
      "description": "List all available AI models",
      "resource": "ai"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a project",
      "description": "Create a new project",
      "resource": "project"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a project",
      "description": "Delete a project",
      "resource": "project"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project",
      "description": "Get a project by ID",
      "resource": "project"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all projects",
      "description": "List all projects",
      "resource": "project"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a project",
      "description": "Update a project",
      "resource": "project"
    },
    {
      "name": "List Files",
      "value": "listFiles",
      "action": "List reference files",
      "description": "List files accessible for attaching as references",
      "resource": "reference"
    },
    {
      "name": "List Spaces",
      "value": "listSpaces",
      "action": "List reference spaces",
      "description": "List spaces accessible for attaching as references",
      "resource": "reference"
    },
    {
      "name": "Add Team",
      "value": "addTeam",
      "action": "Add team to space",
      "description": "Add a team to a space",
      "resource": "space"
    },
    {
      "name": "Add User",
      "value": "addUser",
      "action": "Add user to space",
      "description": "Add a user to a space",
      "resource": "space"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a space",
      "description": "Create a new space",
      "resource": "space"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a space",
      "description": "Delete a space",
      "resource": "space"
    },
    {
      "name": "Delete File",
      "value": "deleteFile",
      "action": "Delete file from space",
      "description": "Delete a file from a space",
      "resource": "space"
    },
    {
      "name": "Download File",
      "value": "downloadFile",
      "action": "Download file from space",
      "description": "Download a file from a space",
      "resource": "space"
    },
    {
      "name": "Embed Files",
      "value": "embedFiles",
      "action": "Embed files in space",
      "description": "Queue files/folders for embedding",
      "resource": "space"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a space",
      "description": "Get a space by ID",
      "resource": "space"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all spaces",
      "description": "List all spaces",
      "resource": "space"
    },
    {
      "name": "List Files",
      "value": "listFiles",
      "action": "List files in space",
      "description": "List files in a space",
      "resource": "space"
    },
    {
      "name": "List Teams",
      "value": "listTeams",
      "action": "List teams in space",
      "description": "List teams assigned to a space",
      "resource": "space"
    },
    {
      "name": "List Users",
      "value": "listUsers",
      "action": "List users in space",
      "description": "List users assigned to a space",
      "resource": "space"
    },
    {
      "name": "Remove Team",
      "value": "removeTeam",
      "action": "Remove team from space",
      "description": "Remove a team from a space",
      "resource": "space"
    },
    {
      "name": "Remove User",
      "value": "removeUser",
      "action": "Remove user from space",
      "description": "Remove a user from a space",
      "resource": "space"
    },
    {
      "name": "Sync",
      "value": "sync",
      "action": "Sync a space",
      "description": "Synchronize a linked space",
      "resource": "space"
    },
    {
      "name": "Transfer File",
      "value": "transferFile",
      "action": "Transfer file between spaces",
      "description": "Move or copy a file between spaces",
      "resource": "space"
    },
    {
      "name": "Upload File",
      "value": "uploadFile",
      "action": "Upload file to space",
      "description": "Upload a file to a space",
      "resource": "space"
    }
  ]

npm_readme:
  # n8n-nodes-oneai

  A community node for [n8n](https://n8n.io/) that integrates with the [OneAI](https://oneai.eu) platform — an AI hub providing access to multiple AI models and collaboration features.

  ## Installation

  ### In n8n (Community Node)

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

  ### Manual / Development

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

  # Install dependencies
  pnpm install

  # Build
  pnpm build
  ```

  ## Authentication

  This node uses **Bearer Token** authentication via an API key.

  To configure credentials in n8n:

  | Field       | Description                                          |
  | ----------- | ---------------------------------------------------- |
  | **OneAI URL** | Base URL of your OneAI instance (e.g. `https://hub.oneai.eu`) |
  | **API Key**   | Your API key, generated from your OneAI hub settings          |

  ## Supported Resources & Operations

  ### AI (2 operations)

  Send messages to AI models and manage model availability.

  | Operation                | Description                                        |
  | ------------------------ | -------------------------------------------------- |
  | Create Response          | Send a message to an AI model and get a response   |
  | List Available AI Models | List all available AI models                       |

  **Input modes:**
  - **Messages** — user-friendly role/content fields
  - **JSON** — full control for complex conversations, images, etc.

  **Advanced options:** Temperature, Reasoning Effort, Reasoning Summary, Tools (function calling), Chat Association (route through a OneAI chat for context)

  ### Space (17 operations)

  Manage workspaces with support for multiple storage providers (Local, OneDrive, SharePoint, Google Drive, GitHub).

  | Operation       | Description                              |
  | --------------- | ---------------------------------------- |
  | Add Team        | Add a team to a space                    |
  | Add User        | Add a user to a space                    |
  | Create          | Create a new space                       |
  | Delete          | Delete a space                           |
  | Delete File     | Delete a file from a space               |
  | Download File   | Download a file from a space             |
  | Embed Files     | Queue files/folders for embedding        |
  | Get             | Get a space by ID                        |
  | List            | List all spaces                          |
  | List Files      | List files in a space                    |
  | List Teams      | List teams assigned to a space           |
  | List Users      | List users assigned to a space           |
  | Remove Team     | Remove a team from a space               |
  | Remove User     | Remove a user from a space               |
  | Sync            | Synchronize a linked space               |
  | Transfer File   | Move or copy a file between spaces       |
  | Upload File     | Upload a file to a space                 |

  ### Chat (6 operations)

  Create and manage AI chat conversations.

  | Operation   | Description                                        |
  | ----------- | -------------------------------------------------- |
  | Create      | Create a new chat                                  |
  | Delete      | Delete a chat                                      |
  | Get         | Get chat history                                   |
  | List        | List chats with optional filtering                 |
  | Update      | Update chat details (rename, move, or set branch)  |

  ### Artifact (6 operations)

  Manage documents and files within spaces.

  | Operation      | Description                              |
  | -------------- | ---------------------------------------- |
  | Create         | Create an artifact from a file           |
  | Delete         | Delete an artifact from a space          |
  | Export PDF     | Export an artifact as a PDF              |
  | Get Markdown   | Get the markdown content of an artifact  |
  | List All       | List all artifacts with optional filtering |
  | List by Space  | List artifacts in a specific space       |

  ### Project (5 operations)

  Organize work into projects.

  | Operation | Description            |
  | --------- | ---------------------- |
  | Create    | Create a new project   |
  | Delete    | Delete a project       |
  | Get       | Get a project by ID    |
  | List      | List all projects      |
  | Update    | Update a project       |

  ### Reference (2 operations)

  Access references for attaching to conversations and artifacts.

  | Operation    | Description                                         |
  | ------------ | --------------------------------------------------- |
  | List Files   | List files accessible for attaching as references   |
  | List Spaces  | List spaces accessible for attaching as references  |

  ## Features

  - **Multi-model AI access** — query multiple AI models through a single node
  - **Streaming support** — handles Server-Sent Events for real-time AI responses
  - **Automatic pagination** — list operations transparently handle paginated API responses
  - **Cloud storage integration** — connect spaces to OneDrive, SharePoint, Google Drive, or GitHub
  - **Function calling** — pass tool definitions to AI models via JSON
  - **File management** — upload, download, transfer, and embed files across spaces

  ## Development

  ```bash
  # Build
  pnpm build

  # Watch mode (recompile on changes)
  pnpm dev

  # Lint & format
  pnpm lint
  pnpm format
  ```

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community n8n node that integrates with the OneAI platform to interact with multiple AI models, manage workspaces, and handle file operations.","capabilities":["Send messages to AI models and receive responses","List available AI models","Manage workspaces (spaces) with multiple storage providers","Upload, download, and transfer files between spaces","Create and manage AI chat conversations","Export artifacts as PDF or retrieve markdown content","Organize work into projects","Attach files and spaces as references to conversations","Support for Server-Sent Events (streaming)","Function calling (tools) for AI models"],"authentication":"API Key (Bearer Token) via OneAI URL and API Key fields","commonUseCases":["Integrating multiple AI models into a single workflow","Managing collaborative workspaces with cloud storage (OneDrive, SharePoint, Google Drive, GitHub)","Processing and organizing documents through AI-generated artifacts","Building chat assistants with context from external files"],"limitations":["Community node (requires manual installation via n8n settings)","Requires a OneAI hub instance and API key"],"relatedNodes":["n8n HTTP Request","n8n Code","n8n Function Item"]}


node_type: n8n-nodes-tallyforms.tallyTrigger
package_name: n8n-nodes-tallyforms
display_name: Tally Trigger
description: Starts the workflow on a Tally form submission
category: Community
development_style: declarative
version: 1,2
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: wouterds
author_github_url: https://github.com/tallyforms/
npm_package_name: n8n-nodes-tallyforms
npm_version: 1.3.1
community_fetched_at: 2026-04-16T09:43:35.929Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n trigger for Tally submissions

  This is an n8n community node that lets you trigger n8n workflows when your Tally form receives a new submission. You will be able to work with the submission data on trigger.

  ## Installation

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

  ## Usage

  1. Create an API key on https://tally.so/settings/api-keys
  2. Create the Tally Trigger
  3. Create a credential for the Tally Trigger using your API key
  4. Select the form for which you want to trigger workflows on submission

  ## Developers

  For instructions on testing this node on a local n8n instance for development purposes, see https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/

ai_documentation_summary:
  {"purpose":"Triggers an n8n workflow automatically when a new submission is received on a Tally form.","capabilities":["Starts workflow execution on form submission","Accesses submission data on trigger","Configurable form selection"],"authentication":"API key required","commonUseCases":["Automated data processing after form submission","Email notifications upon form completion","Database updates triggered by form entries"],"limitations":["Community node (not official n8n package)"],"relatedNodes":["n8n-nodes-tallyforms.tallyForms","n8n-nodes-tallyforms.tallyForm"]}


node_type: n8n-nodes-adyntel.adyntel
package_name: n8n-nodes-adyntel
display_name: Adyntel API
description: Learn if a domain is running ads or not using the Adyntel API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: andrei-adyntel
author_github_url: https://github.com/Adyntel/adyntel-n8n-node.git
npm_package_name: n8n-nodes-adyntel
npm_version: 0.3.0
community_fetched_at: 2026-04-16T09:43:35.930Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "facebookAds",
      "options": [
        {
          "name": "Facebook Ad",
          "value": "facebookAds"
        },
        {
          "name": "Google Ad",
          "value": "googleAds"
        },
        {
          "name": "LinkedIn Ad",
          "value": "linkedInAds"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search facebook ads",
          "routing": {
            "request": {
              "url": "/facebook",
              "body": {
                "company_domain": "={{$parameter.companyDomain}}"
              },
              "method": "POST"
            }
          },
          "description": "Search Facebook ads for a company domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "facebookAds"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search google ads",
          "routing": {
            "request": {
              "url": "/google",
              "body": {
                "company_domain": "={{$parameter.companyDomain}}"
              },
              "method": "POST"
            }
          },
          "description": "Search Google ads for a company domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "googleAds"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search linked in ads",
          "routing": {
            "request": {
              "url": "/linkedin",
              "body": {
                "company_domain": "={{$parameter.companyDomain}}"
              },
              "method": "POST"
            }
          },
          "description": "Search LinkedIn ads for a company domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "linkedInAds"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search",
      "value": "search",
      "action": "Search facebook ads",
      "routing": {
        "request": {
          "url": "/facebook",
          "body": {
            "company_domain": "={{$parameter.companyDomain}}"
          },
          "method": "POST"
        }
      },
      "description": "Search Facebook ads for a company domain",
      "resource": "facebookAds"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search google ads",
      "routing": {
        "request": {
          "url": "/google",
          "body": {
            "company_domain": "={{$parameter.companyDomain}}"
          },
          "method": "POST"
        }
      },
      "description": "Search Google ads for a company domain",
      "resource": "googleAds"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search linked in ads",
      "routing": {
        "request": {
          "url": "/linkedin",
          "body": {
            "company_domain": "={{$parameter.companyDomain}}"
          },
          "method": "POST"
        }
      },
      "description": "Search LinkedIn ads for a company domain",
      "resource": "linkedInAds"
    }
  ]

npm_readme:
  # n8n-nodes-adyntel

  This is an n8n community node. It lets you use Adyntel's API in your n8n workflows.

  Adyntel is an Ad Intelligence Platform that helps you uncover competitor and prospect ads across Google, Meta (Facebook), and LinkedIn. Use this node to discover who's running ads on these platforms and analyze their advertising strategies.

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

  In brief, you can install this node by:

  1. Going to **Settings** → **Community Nodes**
  2. Clicking **Install a community node**
  3. Entering `n8n-nodes-adyntel`
  4. Clicking **Install**

  Alternatively, you can install it via npm in your n8n installation directory:

  ```bash
  npm install n8n-nodes-adyntel
  ```

  ## Operations

  ### Get Facebook Ads

  Retrieves Facebook ads data for a specified company domain. This operation allows you to discover what Facebook ads a company is running, including ad creatives, targeting information, and campaign details.

  **Parameters:**
  - **Company Domain** (required): The domain of the company you want to get Facebook ads data for (e.g., `example.com`). You can enter this directly or use an expression to reference data from previous nodes, such as `={{$json.domain}}`.

  ## Credentials

  To use this node, you need to authenticate with Adyntel using your API credentials.

  ### Prerequisites

  1. Sign up for an Adyntel account at [https://adyntel.com](https://adyntel.com)
  2. Get your API key from your Adyntel Dashboard

  ### Setting up credentials

  1. In the Adyntel node, click on **Credentials** → **Create New**
  2. Select **Adyntel API**
  3. Enter the following:
     - **API Key**: Your Adyntel API key (found in your Dashboard)
     - **Email**: The email address associated with your Adyntel account
  4. Click **Save**

  Your API key and email are used to authenticate all API requests to Adyntel's services.

  ## Compatibility

  - **Minimum n8n version**: Compatible with n8n version 1.0.0 and above
  - **Node.js version**: Requires Node.js 20.15 or higher

  ## Usage

  ### Basic Example

  1. Add the **Adyntel** node to your workflow
  2. Configure your **Adyntel API** credentials (see [Credentials](#credentials) above)
  3. Select the **Get Facebook Ads** operation
  4. Enter the **Company Domain** you want to analyze (e.g., `example.com`)
  5. Execute the node to retrieve Facebook ads data

  ### Using with Previous Nodes

  You can use the Company Domain parameter with expressions to dynamically pull domains from previous nodes:

  **Example workflow:**
  1. Use a node to fetch a list of companies (e.g., from a CRM or database)
  2. Connect the **Adyntel** node
  3. In the **Company Domain** field, use an expression like `={{$json.domain}}` or `={{$json.companyDomain}}`
  4. The node will automatically process each company domain from the previous node's output

  ### Example Use Cases

  - **Competitor Analysis**: Monitor what ads your competitors are running on Facebook
  - **Prospect Research**: Discover which companies in your target market are actively advertising
  - **CRM Enrichment**: Enrich your CRM data with ad intelligence information
  - **ABM Segmentation**: Segment your ABM prospects by ad creative type or campaign strategy

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Adyntel Documentation](https://docs.adyntel.com)
  * [Adyntel Website](https://adyntel.com)
  * [Adyntel API Authorization Guide](https://docs.adyntel.com/authorization)

ai_documentation_summary:
  {"purpose":"This n8n community node enables users to analyze a company's advertising activity on Facebook by retrieving ad data, creatives, targeting information, and campaign details using the Adyntel API.","capabilities":["Retrieve Facebook ads data for a specified company domain","Access ad creatives","Retrieve targeting information","Retrieve campaign details","Support dynamic domain input via expressions from previous nodes"],"authentication":"API Key required (along with account email)","commonUseCases":["Competitor analysis on Facebook ads","Prospect research for active advertisers","CRM enrichment with ad intelligence","Account-Based Marketing (ABM) segmentation"],"limitations":["Limited to Facebook platform only (does not support Google or LinkedIn as mentioned in Adyntel's general description)","Requires separate Adyntel account and API key setup"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.set"]}


node_type: n8n-nodes-midiacode.midiacode
package_name: n8n-nodes-midiacode
display_name: Midiacode
description: Consume Midiacode API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: lgavinho
author_github_url: https://github.com/midiacode-labs/
npm_package_name: n8n-nodes-midiacode
npm_version: 0.1.0
community_fetched_at: 2026-04-16T09:43:35.931Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "content",
      "options": [
        {
          "name": "Content",
          "value": "content"
        },
        {
          "name": "Push Notification",
          "value": "pushNotification"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create content",
          "routing": {
            "request": {
              "url": "/public/content/",
              "method": "POST"
            }
          },
          "description": "Create a new content item"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get content",
          "routing": {
            "request": {
              "url": "=/public/content/{{$parameter.contentId}}/",
              "method": "GET"
            }
          },
          "description": "Get a specific content item"
        },
        {
          "name": "Get Link",
          "value": "getLink",
          "action": "Get content link",
          "routing": {
            "request": {
              "url": "=/public/content/{{$parameter.contentId}}/link/",
              "method": "GET"
            }
          },
          "description": "Get content link data"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish content",
          "routing": {
            "request": {
              "url": "/public/content/publish/",
              "method": "POST"
            }
          },
          "description": "Publish content"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search contents",
          "routing": {
            "request": {
              "url": "=/public/workspace/{{$parameter.workspaceId}}/content",
              "method": "GET"
            }
          },
          "description": "Search contents of a workspace"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update content",
          "routing": {
            "request": {
              "url": "=/public/content/{{$parameter.contentId}}/",
              "method": "PATCH"
            }
          },
          "description": "Update an existing content item"
        },
        {
          "name": "Update Link",
          "value": "updateLink",
          "action": "Update content link",
          "routing": {
            "request": {
              "url": "=/public/content/{{$parameter.contentId}}/link/",
              "method": "PATCH"
            }
          },
          "description": "Update content link data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "content"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send push notification",
          "routing": {
            "request": {
              "url": "/public/push-notification/",
              "method": "POST",
              "baseURL": "https://account.midiacode.pt"
            }
          },
          "description": "Send a push notification"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pushNotification"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create content",
      "routing": {
        "request": {
          "url": "/public/content/",
          "method": "POST"
        }
      },
      "description": "Create a new content item",
      "resource": "content"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get content",
      "routing": {
        "request": {
          "url": "=/public/content/{{$parameter.contentId}}/",
          "method": "GET"
        }
      },
      "description": "Get a specific content item",
      "resource": "content"
    },
    {
      "name": "Get Link",
      "value": "getLink",
      "action": "Get content link",
      "routing": {
        "request": {
          "url": "=/public/content/{{$parameter.contentId}}/link/",
          "method": "GET"
        }
      },
      "description": "Get content link data",
      "resource": "content"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish content",
      "routing": {
        "request": {
          "url": "/public/content/publish/",
          "method": "POST"
        }
      },
      "description": "Publish content",
      "resource": "content"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search contents",
      "routing": {
        "request": {
          "url": "=/public/workspace/{{$parameter.workspaceId}}/content",
          "method": "GET"
        }
      },
      "description": "Search contents of a workspace",
      "resource": "content"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update content",
      "routing": {
        "request": {
          "url": "=/public/content/{{$parameter.contentId}}/",
          "method": "PATCH"
        }
      },
      "description": "Update an existing content item",
      "resource": "content"
    },
    {
      "name": "Update Link",
      "value": "updateLink",
      "action": "Update content link",
      "routing": {
        "request": {
          "url": "=/public/content/{{$parameter.contentId}}/link/",
          "method": "PATCH"
        }
      },
      "description": "Update content link data",
      "resource": "content"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send push notification",
      "routing": {
        "request": {
          "url": "/public/push-notification/",
          "method": "POST",
          "baseURL": "https://account.midiacode.pt"
        }
      },
      "description": "Send a push notification",
      "resource": "pushNotification"
    }
  ]

npm_readme:
  # n8n-nodes-midiacode

  This is an n8n community node. It lets you consume the Midiacode 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

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

  ## Credentials

  You need to set up the `midiacodeApi` credential.

  1.  Obtain your API Key from the Midiacode platform.
  2.  In n8n, create a new credential for **Midiacode API**.
  3.  Enter your API Key.

  ## Operations

  ### Content

  *   **Search**: Search contents of a workspace.
  *   **Create**: Create a new content item.
  *   **Get**: Get a specific content item.
  *   **Update**: Update an existing content item.
  *   **Get Link**: Get content link data.
  *   **Update Link**: Update content link data.
  *   **Publish**: Publish content.

  ## Parameters

  ### Common Parameters

  *   **Workspace ID**: The ID of the workspace.
  *   **Content ID**: The ID of the content.

  ### Create Content

  *   **Title**: The title of the content.
  *   **Content Type Slug**: The type of content (e.g., `url`, `video`, `pdf`).
  *   **Priority**: Priority of the content (default: `1`).
  *   **GS1 QR Code Enabled**: Enable GS1 QR Code (default: `false`).
  *   **GS1 AI**: GS1 Application Identifier (default: `01`).
  *   **Product EAN13**: EAN13 product code.
  *   **Product Variant**: Product variant.

  ### Update Link

  *   **URL**: The URL for the content link.
  *   **Title**: Title for the link.
  *   **Description**: Description for the link.
  *   **Collectible**: Whether the content is collectible (default: `true`).
  *   **Embedded on App**: Whether the content is embedded on the mobile app (default: `false`).
  *   **Private**: Whether the content is private (default: `false`).
  *   **Recommended**: Whether the content is recommended (default: `false`).
  *   **Shareable**: Whether the content is shareable (default: `true`).
  *   **Skip Content Cover**: Skip content cover on web (default: `false`).
  *   **Version**: Content version (default: `1.0`).

  ### Publish Content

  *   **Status**: Status to publish (`Draft`, `Published`, `Archived`).
  *   **Notification**: Send notification (default: `true`).
  *   **Change Message**: Message describing the change.

  ## Compatibility

  Compatible with n8n@1.0.0 or later.

  ## Testing

  This package includes comprehensive unit tests to ensure all operations work correctly.

  ### Running Tests

  To run the test suite:

  ```bash
  npm test
  ```

  To run tests with coverage:

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

  ## Resources

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables users to interact with the Midiacode API for managing digital content, including searching, creating, updating, and publishing content items.","capabilities":["Search contents within a workspace","Create new content items with various types (URL, video, PDF)","Retrieve specific content items","Update existing content items","Retrieve content link data","Update content link data","Publish content with configurable status and notifications","Support for GS1 QR Code and EAN13 product codes","Configure content visibility and sharing settings"],"authentication":"API Key required","commonUseCases":["Automating content management for digital catalogs","Integrating product information with e-commerce workflows","Managing digital asset links and metadata","Automating content publishing and status updates"],"limitations":["Community node (not official n8n node)","Requires manual API key setup in n8n credentials"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.webhook"]}


node_type: n8n-nodes-loops.loops
package_name: n8n-nodes-loops
display_name: Loops
description: Consume the Loops API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: fredfrom
author_github_url: https://github.com/fredfrom/
npm_package_name: n8n-nodes-loops
npm_version: 0.1.7
community_fetched_at: 2026-04-16T09:43:35.932Z
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "API Key",
          "value": "apiKey"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Contact Property",
          "value": "contactProperty"
        },
        {
          "name": "Dedicated Sending IP",
          "value": "dedicatedSendingIp"
        },
        {
          "name": "Event",
          "value": "event"
        },
        {
          "name": "Mailing List",
          "value": "mailingList"
        },
        {
          "name": "Transactional Email",
          "value": "transactionalEmail"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "test",
      "options": [
        {
          "name": "Test",
          "value": "test",
          "action": "Test API key",
          "description": "Validate that the API key is valid"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "apiKey"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a new contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact",
          "description": "Delete a contact by email or user ID"
        },
        {
          "name": "Find",
          "value": "find",
          "action": "Find a contact",
          "description": "Find a contact by email or user ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "description": "Update an existing contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact property",
          "description": "Create a custom contact property"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List contact properties",
          "description": "List all contact properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contactProperty"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List dedicated sending ips",
          "description": "Retrieve dedicated sending IP addresses"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dedicatedSendingIp"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send an event",
          "description": "Send an event for a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "event"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List mailing lists",
          "description": "List all mailing lists"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mailingList"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List transactional emails",
          "description": "List transactional email templates"
        },
        {
          "name": "Send",
          "value": "send",
          "action": "Send a transactional email",
          "description": "Send a transactional email"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transactionalEmail"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Test",
      "value": "test",
      "action": "Test API key",
      "description": "Validate that the API key is valid",
      "resource": "apiKey"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "description": "Create a new contact",
      "resource": "contact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contact",
      "description": "Delete a contact by email or user ID",
      "resource": "contact"
    },
    {
      "name": "Find",
      "value": "find",
      "action": "Find a contact",
      "description": "Find a contact by email or user ID",
      "resource": "contact"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact",
      "description": "Update an existing contact",
      "resource": "contact"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact property",
      "description": "Create a custom contact property",
      "resource": "contactProperty"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List contact properties",
      "description": "List all contact properties",
      "resource": "contactProperty"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List dedicated sending ips",
      "description": "Retrieve dedicated sending IP addresses",
      "resource": "dedicatedSendingIp"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send an event",
      "description": "Send an event for a contact",
      "resource": "event"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List mailing lists",
      "description": "List all mailing lists",
      "resource": "mailingList"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List transactional emails",
      "description": "List transactional email templates",
      "resource": "transactionalEmail"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send a transactional email",
      "description": "Send a transactional email",
      "resource": "transactionalEmail"
    }
  ]

npm_readme:
  # n8n-nodes-loops

  This is an n8n community node for [Loops](https://loops.so) — the email platform for modern SaaS. It lets you manage contacts, send events, deliver transactional emails, and receive webhooks directly from 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.

  **npm package name:** `n8n-nodes-loops`

  ### Self-hosted

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

  ### Docker

  Mount your custom nodes directory into the container:

  ```yaml
  volumes:
    - ~/.n8n:/home/node/.n8n
  ```

  Then install the package inside `~/.n8n/nodes/`:

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

  Restart n8n to load the new nodes.

  ## Operations

  ### Loops (Action Node)

  | Resource | Operation | Description |
  |---|---|---|
  | **API Key** | Test | Validate that the API key is valid |
  | **Contact** | Create | Create a new contact |
  | **Contact** | Delete | Delete a contact by email or user ID |
  | **Contact** | Find | Find a contact by email or user ID |
  | **Contact** | Update | Update an existing contact |
  | **Contact Property** | Create | Create a custom contact property |
  | **Contact Property** | List | List all contact properties |
  | **Dedicated Sending IP** | List | Retrieve dedicated sending IP addresses |
  | **Event** | Send | Send an event with properties and mailing list updates |
  | **Mailing List** | List | List all mailing lists |
  | **Transactional Email** | List | List published transactional email templates |
  | **Transactional Email** | Send | Send a transactional email with variables and attachments |

  ### Loops Trigger (Webhook Node)

  Starts workflows when Loops sends webhook events. Supports all 17 event types:

  - **Contact events:** created, deleted, unsubscribed, mailing list subscribed/unsubscribed
  - **Email send events:** campaign sent, loop sent, transactional sent
  - **Email delivery events:** delivered, soft bounced, hard bounced
  - **Email engagement events:** opened, clicked, unsubscribed, resubscribed, spam reported
  - **Test event:** for verifying webhook configuration

  The trigger includes HMAC-SHA256 signature verification with replay attack protection.

  ## Credentials

  ### Loops API

  Used by the **Loops** action node.

  1. Log into [Loops](https://app.loops.so)
  2. Go to **Settings > API**
  3. Copy your API key
  4. In n8n, create a new **Loops API** credential and paste the key

  ### Loops Webhook API

  Used by the **Loops Trigger** node.

  1. In your Loops dashboard, go to **Settings > Webhooks**
  2. Add your n8n webhook URL (shown in the trigger node's **Webhook URLs** section)
  3. Enable the events you want to receive
  4. Copy the **Signing Secret**
  5. In n8n, create a new **Loops Webhook API** credential and paste the signing secret

  The signing secret is optional but recommended for production use. Without it, signature verification is skipped.

  ## Example Workflows

  ### New signup: create contact and send event

  1. **Webhook** node receives a signup payload
  2. **Loops** node — Contact > Create (email, firstName, lastName)
  3. **Loops** node — Event > Send (eventName: `signup`, email)

  ### Stripe cancellation: update contact for win-back

  1. **Stripe Trigger** node fires on `customer.subscription.deleted`
  2. **Loops** node — Contact > Update (email, subscribed: false)
  3. Loops triggers a win-back automation based on the contact update

  ## Rate Limits

  The Loops API allows 10 requests per second. The node surfaces 429 errors with a clear message. Use n8n's retry-on-failure setting to handle bursts.

  ## Compatibility

  - **Minimum n8n version:** 1.0.0
  - **Tested with:** n8n 1.91.3 (Docker)
  - Works with n8n Cloud, self-hosted, and Docker deployments

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Loops API Reference](https://loops.so/docs/api-reference)
  - [Loops Webhooks Documentation](https://loops.so/docs/webhooks)

  ## License

  [MIT](LICENSE)


node_type: n8n-nodes-postfast.postFast
package_name: n8n-nodes-postfast
display_name: PostFast - Social Media Management
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: peturgeorgievv
author_github_url: https://github.com/peturgeorgievv/
npm_package_name: n8n-nodes-postfast
npm_version: 0.1.18
community_fetched_at: 2026-04-16T09:43:35.933Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Schedule and manage social media posts across Facebook, Instagram, TikTok, Twitter/X, LinkedIn, YouTube, and Pinterest

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "socialPost",
      "options": [
        {
          "name": "File",
          "value": "file",
          "description": "Manage file uploads"
        },
        {
          "name": "Social Account",
          "value": "socialAccount",
          "description": "Manage social media accounts"
        },
        {
          "name": "Social Post",
          "value": "socialPost",
          "description": "Create and manage social media posts"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getUploadUrl",
      "options": [
        {
          "name": "Get Upload URL",
          "value": "getUploadUrl",
          "action": "Get upload URL",
          "description": "Generate pre-signed URLs for uploading media files"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all social accounts",
          "description": "Get all connected social media accounts"
        },
        {
          "name": "Get Pinterest Boards",
          "value": "getPinterestBoards",
          "action": "Get Pinterest boards",
          "description": "Get Pinterest boards for a connected account"
        },
        {
          "name": "Get YouTube Playlists",
          "value": "getYoutubePlaylists",
          "action": "Get YouTube playlists",
          "description": "Get YouTube playlists for a connected account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "socialAccount"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create social posts",
          "description": "Create and schedule one or more social media posts"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete social post",
          "description": "Delete a scheduled or failed post"
        },
        {
          "name": "Get Analytics",
          "value": "getAnalytics",
          "action": "Get analytics",
          "description": "Fetch published posts with their latest performance metrics"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many social posts",
          "description": "Query and paginate social posts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "socialPost"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Upload URL",
      "value": "getUploadUrl",
      "action": "Get upload URL",
      "description": "Generate pre-signed URLs for uploading media files",
      "resource": "file"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all social accounts",
      "description": "Get all connected social media accounts",
      "resource": "socialAccount"
    },
    {
      "name": "Get Pinterest Boards",
      "value": "getPinterestBoards",
      "action": "Get Pinterest boards",
      "description": "Get Pinterest boards for a connected account",
      "resource": "socialAccount"
    },
    {
      "name": "Get YouTube Playlists",
      "value": "getYoutubePlaylists",
      "action": "Get YouTube playlists",
      "description": "Get YouTube playlists for a connected account",
      "resource": "socialAccount"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create social posts",
      "description": "Create and schedule one or more social media posts",
      "resource": "socialPost"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete social post",
      "description": "Delete a scheduled or failed post",
      "resource": "socialPost"
    },
    {
      "name": "Get Analytics",
      "value": "getAnalytics",
      "action": "Get analytics",
      "description": "Fetch published posts with their latest performance metrics",
      "resource": "socialPost"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many social posts",
      "description": "Query and paginate social posts",
      "resource": "socialPost"
    }
  ]

npm_readme:
  # n8n-nodes-postfast

  This is an n8n community node for [PostFast](https://postfa.st) - a comprehensive social media management and scheduling platform. It allows you to create, manage, and schedule posts across multiple social media channels directly from your n8n workflows.

  **Node Name in n8n:** PostFast - Social Media Management

  ## Features

  - 🚀 **Multi-Platform Support**: Facebook, Instagram, TikTok, Twitter/X, LinkedIn, YouTube, Pinterest
  - 📸 **Media Management**: Upload images and videos with pre-signed S3 URLs
  - 📅 **Advanced Scheduling**: Schedule posts using UTC timestamps (ISO 8601 format)
  - 🎯 **Platform-Specific Controls**: Reels, Stories, Shorts, Carousels, Drafts
  - 🔍 **Smart Filtering**: Query posts by platform, status, and date ranges
  - 📊 **Pagination Support**: Handle large datasets efficiently
  - 🔐 **Secure Authentication**: API key-based authentication

  ## Installation

  ### In n8n (Recommended)

  1. Go to **Settings** > **Community Nodes**
  2. Search for `n8n-nodes-postfast`
  3. Click **Install**

  ### Manual Installation

  ```bash
  npm install n8n-nodes-postfast
  ```

  ## Authentication

  To use this node, you'll need:

  1. **PostFast API Key**:
     - Log in to your PostFast account
     - Navigate to Settings → API Keys
     - Create a new API key
     - Copy the key (you won't be able to see it again)

  2. **Add Credentials in n8n**:
     - In n8n, go to Credentials
     - Create new "PostFast API" credentials
     - Enter your API key

  ## Resources & Operations

  ### 📁 File Resource

  #### Get Upload URL
  Generate pre-signed S3 URLs for uploading media files.

  **Parameters:**
  - **Content Type**: MIME type (image/jpeg, image/png, image/gif, video/mp4, video/quicktime, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation)
  - **Count**: Number of URLs to generate (1-10)

  **Limits:**
  - Max file size: 250 MB (video), 10 MB (image)
  - Rate limit: 150 requests per day

  **Usage Example:**
  1. Use this operation to get S3 upload URLs
  2. Upload your files directly to S3 using the signed URLs
  3. Use the returned `key` in your social posts

  ---

  ### 👥 Social Account Resource

  #### Get All
  Retrieve all connected social media accounts for your workspace.

  **Returns:**
  - Account IDs (needed for posting)
  - Platform types
  - Account names and handles
  - Connection status

  **Rate limit:** 90 requests per hour

  #### Get Pinterest Boards
  Retrieve Pinterest boards for a connected Pinterest account. Use the returned `boardId` in the `Pinterest Board ID` control when creating Pinterest posts.

  **Parameters:**
  - **Social Media Account ID**: ID of the connected Pinterest account (from Get All)

  **Rate limit:** 90 requests per hour

  #### Get YouTube Playlists
  Retrieve YouTube playlists for a connected YouTube account. Use the returned `playlistId` in the `YouTube Playlist ID` control when creating YouTube posts.

  **Parameters:**
  - **Social Media Account ID**: ID of the connected YouTube account (from Get All)

  **Rate limit:** 90 requests per hour

  ---

  ### 📝 Social Post Resource

  #### Create Post
  Create and schedule posts with platform-specific features.

  **Core Parameters:**
  - **Platform**: Facebook, Instagram, TikTok, Twitter/X, LinkedIn, YouTube, Pinterest
  - **Social Media Account ID**: From Social Account > Get All
  - **Content**: Post text with emoji support
  - **Scheduled At**: ISO 8601 datetime
  - **Media Items**: Images/videos with S3 keys
  - **First Comment**: Automatic first comment posted ~10 seconds after publish (supported on X, Instagram, Facebook, YouTube, and Threads)

  **Platform-Specific Controls:**

  **X (Twitter):**
  - Community ID for posting to X Communities
  - Quote Tweet URL for quoting tweets with commentary
  - Retweet URL for retweeting without changes

  **Facebook:**
  - Content Types: Post, Reel, Story
  - Reels collaborators
  - Multi-image support

  **Instagram:**
  - Publish Types: Timeline, Story, Reel
  - Grid posting option
  - Collaborators
  - Carousel support (up to 10 items)

  **TikTok:**
  - Privacy: Public, Mutual Friends, Only Me
  - Allow Comments/Duet/Stitch
  - Draft mode
  - Brand Organic / Brand Content flags
  - Auto-add music
  - Carousel posts (2-35 images)

  **YouTube:**
  - Title, Privacy (Public, Private, Unlisted)
  - Tags, Category ID
  - Shorts support
  - Made for Kids (COPPA) flag
  - Playlist ID (from Social Account > Get YouTube Playlists)

  **LinkedIn:**
  - Document attachments (PDF, DOC, DOCX, PPT, PPTX)
  - Attachment title

  **Pinterest:**
  - Board ID (required, from Social Account > Get Pinterest Boards)
  - Destination link URL
  - Content parsing: first line → title, remaining → description
  - Carousel pins (2-5 static images)

  #### Get Many Posts
  Query and filter your scheduled posts with advanced options.

  **Filter Options:**
  - **Platforms**: Filter by one or more platforms
  - **Statuses**: DRAFT, SCHEDULED, PUBLISHED, FAILED
  - **Date Range**: From/To dates (ISO 8601)
  - **Pagination**: Page-based navigation

  **Return Options:**
  - Return all results (auto-pagination)
  - Limit results (1-50 per page)

  **Response Includes:**
  - Post content and media
  - Scheduling information
  - Publishing status
  - Error messages (for failed posts)
  - Platform-specific metadata

  #### Delete Post
  Remove scheduled or failed posts.

  **Parameters:**
  - **Post ID**: Unique identifier of the post

  **Rate limit:** 160 requests per hour

  ## Workflow Examples

  ### 1. Content Calendar Automation
  ```
  Notion Database → PostFast (Create) → Multiple Platforms
  ```
  Pull content from Notion and schedule across all platforms.

  ### 2. Media Processing Pipeline
  ```
  Dropbox → Image Processing → PostFast (Get Upload URL) → S3 Upload → PostFast (Create)
  ```
  Process images and videos before posting.

  ### 3. Failed Post Recovery
  ```
  Schedule Trigger → PostFast (Get Many: status=FAILED) → Error Handler → Retry/Notify
  ```
  Monitor and handle failed posts automatically.

  ### 4. Cross-Platform Campaign
  ```
  RSS Feed → AI Content Generator → PostFast (Create: Multiple Platforms)
  ```
  Generate and distribute content across all channels.

  ## Rate Limits

  **Global Limits (per API key):**
  - 60 requests per minute
  - 150 requests per 5 minutes
  - 300 requests per hour
  - 1000 requests per day

  **Endpoint-Specific:**
  - File uploads: 150/day
  - Post creation: 75/day
  - Post queries: 90/hour
  - Post deletion: 160/hour

  ## Error Handling

  The node provides detailed error messages for common scenarios:

  - `401`: Invalid API key
  - `404`: Resource not found (check IDs)
  - `429`: Rate limit exceeded
  - `400`: Invalid parameters

  ## Platform Requirements

  - **Node.js**: v18.0.0 or higher
  - **n8n**: v1.0.0 or higher
  - **API Key**: PostFast workspace API key

  ## Advanced Features

  ### Batch Operations
  Process multiple items in a single workflow execution for efficiency.

  ### Error Recovery
  Built-in error handling with detailed messages for debugging.

  ### Pagination Handling
  Automatic pagination when fetching all results.

  ### Media Validation
  Automatic MIME type detection and size validation.

  ## Development

  ### Setup
  ```bash
  git clone https://github.com/peturgeorgievv/n8n-nodes-postfast.git
  cd n8n-nodes-postfast
  npm install
  ```

  ### Testing
  ```bash
  npm run dev     # Start development server
  npm run build   # Build for production
  npm run lint    # Check code quality
  ```

  ### Publishing
  ```bash
  npm login
  npm publish --access public
  ```

  ## Support

  - **Documentation**: [PostFast API Docs](https://api.postfa.st/docs)
  - **Issues**: [GitHub Issues](https://github.com/peturgeorgievv/n8n-nodes-postfast/issues)
  - **Community**: [n8n Community Forum](https://community.n8n.io)
  - **Developer Support**: [me@peturgeorgievv.com](mailto:me@peturgeorgievv.com)

  ## License

  [MIT](LICENSE)

  ## Contributing

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

  ## Changelog

  ### v0.1.0
  - Initial release with full PostFast API support
  - Multi-platform posting capabilities
  - Advanced filtering and pagination
  - Media upload management
  - Platform-specific controls for all major social networks

ai_documentation_summary:
  {"purpose":"This n8n community node enables scheduling and management of social media posts across multiple platforms including Facebook, Instagram, TikTok, Twitter/X, LinkedIn, YouTube, and Pinterest.","capabilities":["Create and schedule posts across 7+ social platforms","Upload and manage media with pre-signed S3 URLs","Support for platform-specific features (Reels, Stories, Shorts, Carousels, Drafts)","Advanced scheduling with UTC timestamps (ISO 8601 format)","Query and filter posts by platform, status, and date ranges","Pagination support for large datasets","Automatic first comment posting on supported platforms","Retrieve connected social media accounts","Retrieve Pinterest boards and YouTube playlists"],"authentication":"API key required (PostFast API key stored in n8n Credentials)","commonUseCases":["Automated content calendar management across multiple platforms","Media processing pipeline before posting","Failed post monitoring and recovery workflows","Cross-platform social media scheduling from a single workflow"],"limitations":["Rate limits apply (150 requests/day for uploads, 90/hour for account queries, 160/hour for post operations)","File size limits: 250 MB for videos, 10 MB for images","Requires external S3 upload step for media files","Some platform-specific features may not be available on all accounts or regions","First comment feature only supported on X, Instagram, Facebook, YouTube, and Threads"],"relatedNodes":["S3 Upload","Notion Database","Dropbox","Error Handler","Schedule Trigger"]}


node_type: n8n-nodes-autype.autype
package_name: n8n-nodes-autype
display_name: Autype
description: Interact with the Autype Developer API for document generation, PDF tools, and more
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: centerbit_co
author_github_url: https://github.com/centerbitco/
npm_package_name: n8n-nodes-autype
npm_version: 1.0.5
community_fetched_at: 2026-04-16T09:43:35.933Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "render",
      "options": [
        {
          "name": "Bulk Render",
          "value": "bulkRender"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Document Tool",
          "value": "documentTools"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Render",
          "value": "render"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "renderJson",
      "options": [
        {
          "name": "Download Output",
          "value": "download",
          "action": "Download render output",
          "description": "Download the rendered document file by job ID"
        },
        {
          "name": "Get Job Status",
          "value": "getStatus",
          "action": "Get render job status",
          "description": "Get the current status of a render job"
        },
        {
          "name": "List Jobs",
          "value": "list",
          "action": "List render jobs",
          "description": "List all render jobs for the organization"
        },
        {
          "name": "Render From JSON",
          "value": "renderJson",
          "action": "Render a document from JSON",
          "description": "Submit document JSON for rendering to PDF, DOCX, or ODT"
        },
        {
          "name": "Render From Markdown",
          "value": "renderMarkdown",
          "action": "Render a document from markdown",
          "description": "Submit Extended Markdown content for rendering"
        },
        {
          "name": "Render Persistent Document",
          "value": "renderDocument",
          "action": "Render a persistent document",
          "description": "Render a pre-existing document from your workspace by ID"
        },
        {
          "name": "Validate JSON",
          "value": "validateJson",
          "action": "Validate document JSON",
          "description": "Validate a document JSON without rendering (no credits charged)"
        },
        {
          "name": "Validate Markdown",
          "value": "validateMarkdown",
          "action": "Validate markdown content",
          "description": "Validate Extended Markdown content without rendering (no credits charged)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "render"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createJson",
      "options": [
        {
          "name": "Create From JSON",
          "value": "createJson",
          "action": "Create bulk render from JSON",
          "description": "Create a bulk render job with an array of variable sets"
        },
        {
          "name": "Create From File",
          "value": "createFile",
          "action": "Create bulk render from file",
          "description": "Create a bulk render job by uploading a CSV, Excel, or JSON file"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get bulk render status",
          "description": "Get the current status of a bulk render job"
        },
        {
          "name": "Download Output",
          "value": "download",
          "action": "Download bulk render output",
          "description": "Download the bulk render output as a ZIP file by job ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bulkRender"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listDocuments",
      "options": [
        {
          "name": "Create Document",
          "value": "createDocument",
          "action": "Create a document",
          "description": "Create a new document in a project"
        },
        {
          "name": "Create Project",
          "value": "createProject",
          "action": "Create a project",
          "description": "Create a new project in the organization (always PUBLIC)"
        },
        {
          "name": "Get Document",
          "value": "getDocument",
          "action": "Get a document",
          "description": "Get a document by ID including its latest content"
        },
        {
          "name": "Get Document Variables",
          "value": "getVariables",
          "action": "Get document variables",
          "description": "Get the variable definitions for a document (useful for bulk rendering)"
        },
        {
          "name": "List Documents",
          "value": "listDocuments",
          "action": "List documents",
          "description": "List all documents for the organization"
        },
        {
          "name": "List Projects",
          "value": "listProjects",
          "action": "List projects",
          "description": "List all projects for the organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a file",
          "description": "Delete a Document Tools file from storage"
        },
        {
          "name": "Delete Temporary Image",
          "value": "deleteImage",
          "action": "Delete a temporary image",
          "description": "Delete a temporary rendering image before it expires. These images are for Render from JSON / Render from Markdown only (not for Document Tools)."
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download a file",
          "description": "Download a Document Tools file by ID (input or output files)"
        },
        {
          "name": "Get Details",
          "value": "get",
          "action": "Get file details",
          "description": "Get metadata for a file uploaded for Document Tools"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List files",
          "description": "List all non-expired files uploaded for Document Tools"
        },
        {
          "name": "List Temporary Images",
          "value": "listImages",
          "action": "List temporary images",
          "description": "List all non-expired temporary rendering images. These images are for Render from JSON / Render from Markdown only (not for Document Tools)."
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file for document tools",
          "description": "Upload a file (PDF, DOCX, ODT, PNG, JPEG, max 50MB) for use with Document Tools operations. Files expire after 60 minutes."
        },
        {
          "name": "Upload Temporary Image",
          "value": "uploadImage",
          "action": "Upload a temporary rendering image",
          "description": "Upload a temporary image (JPEG, PNG, WebP, max 25MB) for use in Render from JSON or Render from Markdown. Expires after 24h. Not for Document Tools — use Upload instead."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "merge",
      "options": [
        {
          "name": "Add Watermark",
          "value": "watermark",
          "action": "Add watermark",
          "description": "Add a text watermark to all or specific pages of a PDF"
        },
        {
          "name": "Compress",
          "value": "compress",
          "action": "Compress PDF",
          "description": "Compress a PDF to reduce file size"
        },
        {
          "name": "Convert to Image",
          "value": "toImage",
          "action": "Convert PDF to image",
          "description": "Convert PDF pages to images (PNG or JPEG)"
        },
        {
          "name": "Convert to PDF",
          "value": "convertToPdf",
          "action": "Convert DOCX or ODT to PDF",
          "description": "Convert a DOCX or ODT file to PDF (or other formats). The input format is detected automatically from the uploaded file."
        },
        {
          "name": "Fill Form",
          "value": "fillForm",
          "action": "Fill PDF form",
          "description": "Fill form fields in a PDF with provided values"
        },
        {
          "name": "Get Form Fields",
          "value": "formFields",
          "action": "Get PDF form fields",
          "description": "Extract form field names, types, and current values from a PDF. Returns result directly."
        },
        {
          "name": "Get Job Status",
          "value": "getJobStatus",
          "action": "Get tool job status",
          "description": "Get the current status of a Document Tools job"
        },
        {
          "name": "Get Metadata",
          "value": "metadata",
          "action": "Get PDF metadata",
          "description": "Extract metadata from a PDF (page count, title, author, etc.). Returns result directly."
        },
        {
          "name": "Keep/Remove Pages",
          "value": "pages",
          "action": "Keep or remove PDF pages",
          "description": "Keep or remove specific pages from a PDF"
        },
        {
          "name": "List Jobs",
          "value": "listJobs",
          "action": "List tool jobs",
          "description": "List Document Tools jobs for the organization"
        },
        {
          "name": "Merge PDFs",
          "value": "merge",
          "action": "Merge PDF files",
          "description": "Merge 2–20 PDF files into a single PDF"
        },
        {
          "name": "Protect",
          "value": "protect",
          "action": "Protect PDF",
          "description": "Encrypt a PDF with password protection"
        },
        {
          "name": "Replace Placeholders",
          "value": "replacePlaceholders",
          "action": "Replace placeholders in DOCX/ODT",
          "description": "Replace placeholder tags in a DOCX or ODT document with provided values and convert to the desired output format"
        },
        {
          "name": "Rotate Pages",
          "value": "rotate",
          "action": "Rotate PDF pages",
          "description": "Rotate specific pages of a PDF by 90, 180, or 270 degrees"
        },
        {
          "name": "Split PDF",
          "value": "split",
          "action": "Split PDF",
          "description": "Split a PDF into multiple parts by page ranges"
        },
        {
          "name": "Unlock",
          "value": "unlock",
          "action": "Unlock PDF",
          "description": "Remove password protection from a PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentTools"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Download Output",
      "value": "download",
      "action": "Download render output",
      "description": "Download the rendered document file by job ID",
      "resource": "render"
    },
    {
      "name": "Get Job Status",
      "value": "getStatus",
      "action": "Get render job status",
      "description": "Get the current status of a render job",
      "resource": "render"
    },
    {
      "name": "List Jobs",
      "value": "list",
      "action": "List render jobs",
      "description": "List all render jobs for the organization",
      "resource": "render"
    },
    {
      "name": "Render From JSON",
      "value": "renderJson",
      "action": "Render a document from JSON",
      "description": "Submit document JSON for rendering to PDF, DOCX, or ODT",
      "resource": "render"
    },
    {
      "name": "Render From Markdown",
      "value": "renderMarkdown",
      "action": "Render a document from markdown",
      "description": "Submit Extended Markdown content for rendering",
      "resource": "render"
    },
    {
      "name": "Render Persistent Document",
      "value": "renderDocument",
      "action": "Render a persistent document",
      "description": "Render a pre-existing document from your workspace by ID",
      "resource": "render"
    },
    {
      "name": "Validate JSON",
      "value": "validateJson",
      "action": "Validate document JSON",
      "description": "Validate a document JSON without rendering (no credits charged)",
      "resource": "render"
    },
    {
      "name": "Validate Markdown",
      "value": "validateMarkdown",
      "action": "Validate markdown content",
      "description": "Validate Extended Markdown content without rendering (no credits charged)",
      "resource": "render"
    },
    {
      "name": "Create From JSON",
      "value": "createJson",
      "action": "Create bulk render from JSON",
      "description": "Create a bulk render job with an array of variable sets",
      "resource": "bulkRender"
    },
    {
      "name": "Create From File",
      "value": "createFile",
      "action": "Create bulk render from file",
      "description": "Create a bulk render job by uploading a CSV, Excel, or JSON file",
      "resource": "bulkRender"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get bulk render status",
      "description": "Get the current status of a bulk render job",
      "resource": "bulkRender"
    },
    {
      "name": "Download Output",
      "value": "download",
      "action": "Download bulk render output",
      "description": "Download the bulk render output as a ZIP file by job ID",
      "resource": "bulkRender"
    },
    {
      "name": "Create Document",
      "value": "createDocument",
      "action": "Create a document",
      "description": "Create a new document in a project",
      "resource": "document"
    },
    {
      "name": "Create Project",
      "value": "createProject",
      "action": "Create a project",
      "description": "Create a new project in the organization (always PUBLIC)",
      "resource": "document"
    },
    {
      "name": "Get Document",
      "value": "getDocument",
      "action": "Get a document",
      "description": "Get a document by ID including its latest content",
      "resource": "document"
    },
    {
      "name": "Get Document Variables",
      "value": "getVariables",
      "action": "Get document variables",
      "description": "Get the variable definitions for a document (useful for bulk rendering)",
      "resource": "document"
    },
    {
      "name": "List Documents",
      "value": "listDocuments",
      "action": "List documents",
      "description": "List all documents for the organization",
      "resource": "document"
    },
    {
      "name": "List Projects",
      "value": "listProjects",
      "action": "List projects",
      "description": "List all projects for the organization",
      "resource": "document"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a file",
      "description": "Delete a Document Tools file from storage",
      "resource": "file"
    },
    {
      "name": "Delete Temporary Image",
      "value": "deleteImage",
      "action": "Delete a temporary image",
      "description": "Delete a temporary rendering image before it expires. These images are for Render from JSON / Render from Markdown only (not for Document Tools).",
      "resource": "file"
    },
    {
      "name": "Download",
      "value": "download",
      "action": "Download a file",
      "description": "Download a Document Tools file by ID (input or output files)",
      "resource": "file"
    },
    {
      "name": "Get Details",
      "value": "get",
      "action": "Get file details",
      "description": "Get metadata for a file uploaded for Document Tools",
      "resource": "file"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List files",
      "description": "List all non-expired files uploaded for Document Tools",
      "resource": "file"
    },
    {
      "name": "List Temporary Images",
      "value": "listImages",
      "action": "List temporary images",
      "description": "List all non-expired temporary rendering images. These images are for Render from JSON / Render from Markdown only (not for Document Tools).",
      "resource": "file"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file for document tools",
      "description": "Upload a file (PDF, DOCX, ODT, PNG, JPEG, max 50MB) for use with Document Tools operations. Files expire after 60 minutes.",
      "resource": "file"
    },
    {
      "name": "Upload Temporary Image",
      "value": "uploadImage",
      "action": "Upload a temporary rendering image",
      "description": "Upload a temporary image (JPEG, PNG, WebP, max 25MB) for use in Render from JSON or Render from Markdown. Expires after 24h. Not for Document Tools — use Upload instead.",
      "resource": "file"
    },
    {
      "name": "Add Watermark",
      "value": "watermark",
      "action": "Add watermark",
      "description": "Add a text watermark to all or specific pages of a PDF",
      "resource": "documentTools"
    },
    {
      "name": "Compress",
      "value": "compress",
      "action": "Compress PDF",
      "description": "Compress a PDF to reduce file size",
      "resource": "documentTools"
    },
    {
      "name": "Convert to Image",
      "value": "toImage",
      "action": "Convert PDF to image",
      "description": "Convert PDF pages to images (PNG or JPEG)",
      "resource": "documentTools"
    },
    {
      "name": "Convert to PDF",
      "value": "convertToPdf",
      "action": "Convert DOCX or ODT to PDF",
      "description": "Convert a DOCX or ODT file to PDF (or other formats). The input format is detected automatically from the uploaded file.",
      "resource": "documentTools"
    },
    {
      "name": "Fill Form",
      "value": "fillForm",
      "action": "Fill PDF form",
      "description": "Fill form fields in a PDF with provided values",
      "resource": "documentTools"
    },
    {
      "name": "Get Form Fields",
      "value": "formFields",
      "action": "Get PDF form fields",
      "description": "Extract form field names, types, and current values from a PDF. Returns result directly.",
      "resource": "documentTools"
    },
    {
      "name": "Get Job Status",
      "value": "getJobStatus",
      "action": "Get tool job status",
      "description": "Get the current status of a Document Tools job",
      "resource": "documentTools"
    },
    {
      "name": "Get Metadata",
      "value": "metadata",
      "action": "Get PDF metadata",
      "description": "Extract metadata from a PDF (page count, title, author, etc.). Returns result directly.",
      "resource": "documentTools"
    },
    {
      "name": "Keep/Remove Pages",
      "value": "pages",
      "action": "Keep or remove PDF pages",
      "description": "Keep or remove specific pages from a PDF",
      "resource": "documentTools"
    },
    {
      "name": "List Jobs",
      "value": "listJobs",
      "action": "List tool jobs",
      "description": "List Document Tools jobs for the organization",
      "resource": "documentTools"
    },
    {
      "name": "Merge PDFs",
      "value": "merge",
      "action": "Merge PDF files",
      "description": "Merge 2–20 PDF files into a single PDF",
      "resource": "documentTools"
    },
    {
      "name": "Protect",
      "value": "protect",
      "action": "Protect PDF",
      "description": "Encrypt a PDF with password protection",
      "resource": "documentTools"
    },
    {
      "name": "Replace Placeholders",
      "value": "replacePlaceholders",
      "action": "Replace placeholders in DOCX/ODT",
      "description": "Replace placeholder tags in a DOCX or ODT document with provided values and convert to the desired output format",
      "resource": "documentTools"
    },
    {
      "name": "Rotate Pages",
      "value": "rotate",
      "action": "Rotate PDF pages",
      "description": "Rotate specific pages of a PDF by 90, 180, or 270 degrees",
      "resource": "documentTools"
    },
    {
      "name": "Split PDF",
      "value": "split",
      "action": "Split PDF",
      "description": "Split a PDF into multiple parts by page ranges",
      "resource": "documentTools"
    },
    {
      "name": "Unlock",
      "value": "unlock",
      "action": "Unlock PDF",
      "description": "Remove password protection from a PDF",
      "resource": "documentTools"
    }
  ]

npm_readme:
  <div align="center">
    <img src="https://autype.com/logo.png" width="160" alt="Autype" />
    <h1>n8n-nodes-autype</h1>
    <p>Official n8n community node for the Autype Developer API</p>
    <p> <a href="https://docs.n8n.io/integrations/community-nodes/"><img src="https://img.shields.io/badge/n8n-community%20node-34D399?style=flat-square&logo=n8n&logoColor=white" alt="n8n community node" /></a></p>

    <p>
      <a href="https://autype.com"><img src="https://img.shields.io/badge/autype.com-7C3AED?style=flat-square&logoColor=white" alt="Website" /></a>
      <a href="https://app.autype.com"><img src="https://img.shields.io/badge/Dashboard-6D28D9?style=flat-square&logoColor=white" alt="Dashboard" /></a>
      <a href="https://docs.autype.com"><img src="https://img.shields.io/badge/Docs-5B21B6?style=flat-square&logoColor=white" alt="Documentation" /></a>
    </p>

    <p>
      <img src="https://img.shields.io/badge/PDF%20Rendering-✓-10B981?style=flat-square" alt="PDF Rendering" />
      <img src="https://img.shields.io/badge/DOCX%20%2F%20ODT-✓-10B981?style=flat-square" alt="DOCX / ODT" />
      <img src="https://img.shields.io/badge/Bulk%20Render-✓-10B981?style=flat-square" alt="Bulk Render" />
      <img src="https://img.shields.io/badge/PDF%20Tools-✓-10B981?style=flat-square" alt="PDF Tools" />
      <img src="https://img.shields.io/badge/AI%20Agent%20Tool-✓-10B981?style=flat-square" alt="AI Agent Tool" />
    </p>
  </div>

  ---

  ## Overview

  **Autype** is an automation-first document generation and editing platform — providing the **most comprehensive document processing API on the market**. You define documents as structured JSON or Extended Markdown, and Autype renders them to pixel-perfect PDFs, DOCX, or ODT files. Documents support variables, bulk rendering, conditional content, headers and footers, citations, mathematical formulas, charts, and more.

  Beyond document generation, Autype offers **complete document lifecycle management**: editing, conversion, bulk generation, templating, PDF form filling, and advanced PDF manipulation — all through a single, unified API.

  This n8n community node gives you full access to the [Autype Developer API](https://docs.autype.com/api-reference/introduction) — with **40+ operations** across 8 resources — directly from your n8n workflows. No code required.

  **What Autype can do:**
  - **Document generation** — Render any document from JSON config or Markdown, programmatically on demand
  - **Bulk rendering** — Generate hundreds of personalized documents at once from spreadsheet or database data
  - **PDF manipulation** — Merge, split, rotate, watermark, compress, protect, unlock, and convert PDFs
  - **Document conversion** — Convert between PDF, DOCX, and ODT formats
  - **Templating** — Replace placeholders in DOCX/ODT templates with dynamic data
  - **PDF forms** — Extract form fields and fill them programmatically
  - **AI integration** — The node is usable as an n8n AI tool out of the box

  > **Variable syntax:** n8n uses `{{...}}` for its own expressions. Use **`${varName}`** in your Autype document JSON instead — the API accepts both and converts automatically.

  ---

  ## Installation

  ### Via n8n GUI _(recommended)_

  1. Go to **Settings → Community Nodes**
  2. Enter `n8n-nodes-autype`
  3. Click **Install** and restart n8n

  ### Via CLI

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

  ---

  ## Credentials

  1. Sign up at [autype.com](https://autype.com) and create an organization
  2. Go to **Settings → API Keys** and create a new key — it starts with `ak_...`
  3. In n8n, open **Credentials → Add Credential**, search for **Autype API**, and paste your key

  ---

  ## Resources & Operations

  ### 📄 Render

  Render documents to PDF, DOCX, or ODT from JSON or Markdown.

  | Operation | Description |
  |-----------|-------------|
  | Render from JSON | Submit structured document JSON — renders to PDF, DOCX, or ODT |
  | Render from Markdown | Submit Extended Markdown — supports page size, margins, styles, variables |
  | Render Persistent Document | Render a saved document by ID, with optional variable overrides |
  | Validate JSON / Markdown | Validate without rendering — no credits charged |
  | List Render Jobs | Paginated list of all render jobs |

  ### 📦 Bulk Render

  Generate hundreds of personalized documents in a single job.

  | Operation | Description |
  |-----------|-------------|
  | Bulk Render from JSON | Pass an array of variable sets — one document per item |
  | Bulk Render from File | Upload a CSV, Excel, or JSON file — one document per row |

  ### 🗂️ Document

  Manage persistent documents, projects, and temporary render images.

  | Operation | Description |
  |-----------|-------------|
  | List / Get / Create Documents | Manage documents in your workspace |
  | Get Document Variables | Extract variable definitions from a document |
  | List / Create Projects | Organize documents into projects |

  ### 📁 File

  Manage files used by PDF tool and conversion operations.

  | Operation | Description |
  |-----------|-------------|
  | Upload / Download / Get / List / Delete | Manage tool files (PDF, DOCX, ODT, images — expire after 60 min) |
  | Upload / List / Delete Temporary Image | Manage render images (expire after 24 h) |

  ### 🔧 PDF Tools

  Full PDF manipulation suite — all operations poll automatically and return binary output.

  | Operation | Description |
  |-----------|-------------|
  | Merge | Combine 2–20 PDFs into one |
  | Split | Split by page ranges — output is a ZIP |
  | Rotate Pages | Rotate specific pages by 90°, 180°, or 270° |
  | Keep / Remove Pages | Select or discard pages by spec (e.g. `1`, `2-5`, `3-`) |
  | Watermark | Add a text watermark — configurable size, opacity, rotation, color |
  | Get Metadata | Extract page count, title, author, creation date |
  | Protect / Unlock | Add or remove password protection |
  | Compress | Reduce file size — low, medium, or high |
  | PDF to Image | Convert pages to PNG or JPEG (configurable DPI) |
  | Get Form Fields | Extract field names, types, and current values |
  | Fill Form | Fill text, checkbox, dropdown, and radio fields |

  ### 🔄 Document Tools

  Convert and process DOCX and ODT files.

  | Operation | Description |
  |-----------|-------------|
  | Convert DOCX to PDF | Convert a DOCX file to PDF |
  | Convert ODT to PDF | Convert an ODT file to PDF |
  | Replace Placeholders | Replace `{{tags}}` in DOCX/ODT with text or data |
  | List Tool Jobs | Paginated list of all tool jobs |

  ---

  ## Key Features

  - **⏳ Wait for Completion** — Async jobs poll automatically (every 2 s, up to 5 min). Enable **Download Output** to receive the result as binary data directly on the node output.
  - **📎 Binary data** — File uploads and downloads integrate with n8n's native binary data system.
  - **🔔 Webhooks** — Pass an optional webhook URL to any async operation for push notifications on completion.
  - **🤖 AI agent tool** — `usableAsTool: true` is set, so n8n AI agents can invoke Autype operations autonomously.
  - **🔡 Variable syntax** — Use `${varName}` in document JSON to avoid conflicts with n8n's `{{...}}` expression engine.

  ---

  ## Local Development

  ```bash
  # Install dependencies
  npm install

  # Build (outputs to dist/)
  npm run build

  # Watch mode
  npm run build:watch

  # Lint
  npm run lint
  npm run lint:fix

  # Deploy to local n8n (build + instruction to restart)
  npm run deploy:local
  ```

  ---

  ## Compatibility

  - **n8n** v1.x or later
  - **Node.js** 18.17 or later

  ---

  ## Links

  - [Autype](https://autype.com)
  - [Documentation](https://docs.autype.com)
  - [n8n Integration Guide](https://docs.autype.com/automation/integrations/n8n/overview)
  - [API Reference](https://docs.autype.com/api-reference/introduction)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Autype Developer API to generate, manipulate, and manage documents (PDF, DOCX, ODT) programmatically.","capabilities":["Render documents from JSON or Extended Markdown","Bulk rendering from data arrays or file uploads","PDF manipulation (merge, split, rotate, watermark, compress, protect)","Document format conversion (PDF, DOCX, ODT)","Template variable replacement in DOCX/ODT","PDF form field extraction and filling","Document lifecycle management (create, list, get, delete)","Project organization for documents","File management (upload, download, temporary image handling)","JSON and Markdown validation"],"authentication":"API Key required (starts with 'ak_...')","commonUseCases":["Automated document generation from structured data","Personalized bulk document creation from spreadsheets","PDF form automation and data entry","Document format conversion workflows","Dynamic template population for reports or invoices"],"limitations":["Community node (may require n8n restart after installation)","Variable syntax requires `${varName}` in Autype JSON (n8n uses `{{...}}`)","Temporary images expire after 24 hours","Tool files expire after 60 minutes","Some operations may incur credit charges (validation does not)"],"relatedNodes":["n8n-nodes-base.binary","n8n-nodes-base.httpRequest","n8n-nodes-base.csv","n8n-nodes-base.json"]}


node_type: @socradar/n8n-nodes-socradar.socradar
package_name: @socradar/n8n-nodes-socradar
display_name: SOCRadar
description: Comprehensive SOCRadar API integration
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: ahmetkurukose
author_github_url: https://github.com/socradar-io/n8n-nodes-socradar.git
npm_package_name: @socradar/n8n-nodes-socradar
npm_version: 1.8.7
community_fetched_at: 2026-04-16T09:43:35.935Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "incident",
      "options": [
        {
          "name": "Incident",
          "value": "incident"
        },
        {
          "name": "Takedown",
          "value": "takedown"
        },
        {
          "name": "User Audit Logs",
          "value": "auditLogs"
        },
        {
          "name": "Digital Footprint",
          "value": "digitalFootprint"
        },
        {
          "name": "Dark Web Monitoring",
          "value": "darkWebMonitoring"
        },
        {
          "name": "DRP Fraud Protection",
          "value": "fraudProtection"
        },
        {
          "name": "Brand Protection",
          "value": "brandProtection"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all user audit logs",
          "description": "Get all user audit logs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "auditLogs"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getBrandProtection",
      "options": [
        {
          "name": "Get Brand Protection",
          "value": "getBrandProtection",
          "action": "Get brand protection data by type",
          "description": "Get brand protection data by type"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "brandProtection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getBotnetData",
      "options": [
        {
          "name": "Get Botnet Data",
          "value": "getBotnetData",
          "action": "Get botnet data",
          "description": "Get botnet data"
        },
        {
          "name": "Get Blackmarket Data",
          "value": "getBlackmarket",
          "action": "Get blackmarket data",
          "description": "Get blackmarket data"
        },
        {
          "name": "Get Suspicious Content",
          "value": "getSuspiciousContent",
          "action": "Get suspicious content",
          "description": "Get suspicious content"
        },
        {
          "name": "Get PII Exposure",
          "value": "getPiiExposure",
          "action": "Get PII exposure data",
          "description": "Get PII exposure data"
        },
        {
          "name": "Get IM Content",
          "value": "getImContent",
          "action": "Get IM content",
          "description": "Get IM content"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "darkWebMonitoring"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDigitalAssets",
      "options": [
        {
          "name": "Get Digital Assets",
          "value": "getDigitalAssets",
          "action": "Get all digital assets",
          "description": "Get all digital assets"
        },
        {
          "name": "Add Asset",
          "value": "addAsset",
          "action": "Add a new digital asset",
          "description": "Add a new digital asset"
        },
        {
          "name": "Mark False Positive",
          "value": "markFalsePositive",
          "action": "Mark an asset as false positive",
          "description": "Mark an asset as false positive"
        },
        {
          "name": "Toggle Monitoring",
          "value": "toggleMonitoring",
          "action": "Toggle monitoring for an asset",
          "description": "Toggle monitoring for an asset"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "digitalFootprint"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getFraudProtection",
      "options": [
        {
          "name": "Get Fraud Protection",
          "value": "getFraudProtection",
          "action": "Get fraud protection data",
          "description": "Get fraud protection data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fraudProtection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all incidents",
          "description": "Get all incidents"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a single incident",
          "description": "Get a single incident"
        },
        {
          "name": "Add Comment",
          "value": "addComment",
          "action": "Add a comment to an incident",
          "description": "Add a comment to an incident"
        },
        {
          "name": "Add Tag",
          "value": "addTag",
          "action": "Add a tag to an incident",
          "description": "Add a tag to an incident"
        },
        {
          "name": "Remove Tag",
          "value": "removeTag",
          "action": "Remove a tag from an incident",
          "description": "Remove a tag from an incident"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "incident"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createDomain",
      "options": [
        {
          "name": "Create Domain Takedown",
          "value": "createDomain",
          "action": "Create a domain takedown request",
          "description": "Create a domain takedown request"
        },
        {
          "name": "Create Social Media Takedown",
          "value": "createSocialMedia",
          "action": "Create a social media takedown request",
          "description": "Create a social media takedown request"
        },
        {
          "name": "Create Source Code Leak Takedown",
          "value": "createSourceCode",
          "action": "Create a source code leak takedown request",
          "description": "Create a source code leak takedown request"
        },
        {
          "name": "Get Progress",
          "value": "getProgress",
          "action": "Get takedown request progress",
          "description": "Get takedown request progress"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "takedown"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all user audit logs",
      "description": "Get all user audit logs",
      "resource": "auditLogs"
    },
    {
      "name": "Get Brand Protection",
      "value": "getBrandProtection",
      "action": "Get brand protection data by type",
      "description": "Get brand protection data by type",
      "resource": "brandProtection"
    },
    {
      "name": "Get Botnet Data",
      "value": "getBotnetData",
      "action": "Get botnet data",
      "description": "Get botnet data",
      "resource": "darkWebMonitoring"
    },
    {
      "name": "Get Blackmarket Data",
      "value": "getBlackmarket",
      "action": "Get blackmarket data",
      "description": "Get blackmarket data",
      "resource": "darkWebMonitoring"
    },
    {
      "name": "Get Suspicious Content",
      "value": "getSuspiciousContent",
      "action": "Get suspicious content",
      "description": "Get suspicious content",
      "resource": "darkWebMonitoring"
    },
    {
      "name": "Get PII Exposure",
      "value": "getPiiExposure",
      "action": "Get PII exposure data",
      "description": "Get PII exposure data",
      "resource": "darkWebMonitoring"
    },
    {
      "name": "Get IM Content",
      "value": "getImContent",
      "action": "Get IM content",
      "description": "Get IM content",
      "resource": "darkWebMonitoring"
    },
    {
      "name": "Get Digital Assets",
      "value": "getDigitalAssets",
      "action": "Get all digital assets",
      "description": "Get all digital assets",
      "resource": "digitalFootprint"
    },
    {
      "name": "Add Asset",
      "value": "addAsset",
      "action": "Add a new digital asset",
      "description": "Add a new digital asset",
      "resource": "digitalFootprint"
    },
    {
      "name": "Mark False Positive",
      "value": "markFalsePositive",
      "action": "Mark an asset as false positive",
      "description": "Mark an asset as false positive",
      "resource": "digitalFootprint"
    },
    {
      "name": "Toggle Monitoring",
      "value": "toggleMonitoring",
      "action": "Toggle monitoring for an asset",
      "description": "Toggle monitoring for an asset",
      "resource": "digitalFootprint"
    },
    {
      "name": "Get Fraud Protection",
      "value": "getFraudProtection",
      "action": "Get fraud protection data",
      "description": "Get fraud protection data",
      "resource": "fraudProtection"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all incidents",
      "description": "Get all incidents",
      "resource": "incident"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a single incident",
      "description": "Get a single incident",
      "resource": "incident"
    },
    {
      "name": "Add Comment",
      "value": "addComment",
      "action": "Add a comment to an incident",
      "description": "Add a comment to an incident",
      "resource": "incident"
    },
    {
      "name": "Add Tag",
      "value": "addTag",
      "action": "Add a tag to an incident",
      "description": "Add a tag to an incident",
      "resource": "incident"
    },
    {
      "name": "Remove Tag",
      "value": "removeTag",
      "action": "Remove a tag from an incident",
      "description": "Remove a tag from an incident",
      "resource": "incident"
    },
    {
      "name": "Create Domain Takedown",
      "value": "createDomain",
      "action": "Create a domain takedown request",
      "description": "Create a domain takedown request",
      "resource": "takedown"
    },
    {
      "name": "Create Social Media Takedown",
      "value": "createSocialMedia",
      "action": "Create a social media takedown request",
      "description": "Create a social media takedown request",
      "resource": "takedown"
    },
    {
      "name": "Create Source Code Leak Takedown",
      "value": "createSourceCode",
      "action": "Create a source code leak takedown request",
      "description": "Create a source code leak takedown request",
      "resource": "takedown"
    },
    {
      "name": "Get Progress",
      "value": "getProgress",
      "action": "Get takedown request progress",
      "description": "Get takedown request progress",
      "resource": "takedown"
    }
  ]

npm_readme:
  # n8n-nodes-socradar

  This is an n8n community node for integrating with the SOCRadar API. It provides a comprehensive node to interact with SOCRadar's services.

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

  [SOCRadar](https://socradar.io/) is a Digital Risk Protection Platform that provides threat intelligence, brand protection, attack surface management, and other cybersecurity services.

  ## SOCRadar n8n Integration

  This is a community node for n8n that integrates with SOCRadar's API. It provides access to SOCRadar's services

  ## Features

  ### Incident Management
  - **Comprehensive API Support**: Single consolidated node supporting all incident operations
  - **Advanced Filtering Options**:
    - Filter by status, severity, resolution state
    - Date range filtering
    - Sorting capabilities
    - Tag-based filtering
  - **Operations**:
    - Get All Incidents
    - Get Single Incident
    - Add Comment
    - Add Tag
    - Remove Tag

  ### Takedown Services
  - Create and manage takedown requests
  - Filter and retrieve takedown status
  - **Operations**:
    - Create Takedown Request
    - Get Single Takedown
    - Get All Takedowns
    - Update Takedown Status
    - Add Tags

  ### Digital Footprint
  - Discover and manage digital assets across your organization
  - Monitor cloud resources, domains, and other digital assets
  - **Advanced Filtering Options**:
    - Filter by asset type (Domain, IP, URL, Cloud Bucket)
    - Pagination support
    - Sorting capabilities
    - Status filtering
  - **Operations**:
    - Get Digital Assets
    - Get Cloud Buckets
    - Add Asset (Domain, Cloud Bucket)
    - Mark False Positive
    - Toggle Monitoring

  ### Brand Protection
  - Monitor and protect your brand across digital channels
  - **Advanced Detection**:
    - Impersonating Accounts
    - Impersonating Domains
    - Rogue Mobile Applications
    - Bad Reputation
    - Social Media Findings
  - **Operations**:
    - Get Brand Protection Data
    - Filter by Finding Type
    - Sort by Risk Score

  ### Fraud Protection
  - Detect and prevent digital fraud attempts
  - **Comprehensive Coverage**:
    - Phishing Detection
    - Scam Detection
    - Brand Abuse
    - Payment Fraud
  - **Operations**:
    - Get Fraud Protection Data
    - Filter by Risk Level
    - Sort by Detection Time

  ### Dark Web Monitoring
  - Monitor dark web for sensitive information
  - **Data Sources**:
    - Botnet Data
    - Blackmarket Data
    - Suspicious Content
    - PII Exposure
    - IM Content
  - **Operations**:
    - Get Dark Web Findings
    - Filter by Source Type
    - Sort by Relevance

  ### User Audit Logs
  - Retrieve user activity logs for compliance and security monitoring
  - **Advanced Filtering Options**:
    - Date range filtering
    - Limit number of records
    - Activity type filtering
  - **Operations**:
    - Get All User Audit Logs
    - Filter by Date Range
    - Filter by Activity Type

  ## Prerequisites

  - n8n v1.0.0 or later
  - SOCRadar API credentials

  ## Installation

  Follow these steps to install this custom node:

  ```bash
  # Install with npm
  npm install @socradar/n8n-nodes-socradar

  # Install with pnpm
  pnpm add @socradar/n8n-nodes-socradar

  # Alternatively, for n8n installed globally
  npm install -g @socradar/n8n-nodes-socradar
  ```

  For Docker-based n8n installations, you can use the [n8n-docker-custom](https://github.com/n8n-io/n8n-docker-custom) approach.

  ## Usage

  ### Authentication
  The SOCRadar node requires SOCRadar API credentials:
  1. API Key: Your SOCRadar API key
  2. Company ID: Your SOCRadar company identifier

  ### SOCRadar Node
  The consolidated SOCRadar node provides access to all SOCRadar Extended Threat Intelligence platform features:

  - **Resource**: Choose from:
    - Incident Management
    - Takedown Management
    - Digital Footprint
    - Brand Protection
    - Fraud Protection
    - Dark Web Monitoring
    - User Audit Logs
  - **Operation**: Select the specific operation to perform
  - **Parameters**: Configure operation-specific parameters

  ## Version History

  - **1.8.7**: Fix public github url
  - **1.8.6**: Added repository link and improved package structure for n8n compatibility
  - **1.8.5**: Removed external dependencies (axios, dotenv) in favor of n8n's built-in functionality
  - **1.8.4**: Fixed credential icon display issue
  - **1.8.2**: Fixed README.md with correct package name and latest features
  - **1.8.1**: Optimized build process and improved CI/CD pipeline
  - **1.8.0**: Enhanced Digital Footprint API integration with improved asset type handling
  - **1.7.0**: Added Brand Protection API V2 support with comprehensive filtering
  - **1.6.0**: Added Fraud Protection API V2 support
  - **1.5.0**: Added Dark Web Monitoring API V2 support
  - **1.4.0**: Added Digital Footprint API support
  - **1.3.0**: Added User Audit Logs API support
  - **1.2.0**: Consolidated all functionality into a single SOCRadar node
  - **1.1.0**: Added Takedown API support
  - **1.0.0**: Initial release with Incident API support

  ## Credentials

  You need to create a credentials entry with your SOCRadar API key:

  1. Go to **Credentials** in n8n
  2. Select **Create New**
  3. Search for "SOCRadar API"
  4. Enter your API key from the SOCRadar platform
  5. Save the credentials

  ## Support

  For issues, feature requests, or questions about this node package:
  - Contact SOCRadar support at support@socradar.io

  ## License

  This node package is released under the [MIT License](LICENSE.md).

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the SOCRadar API to provide comprehensive threat intelligence, brand protection, and cybersecurity services within workflow automation.","capabilities":["Incident Management (Get All/Single, Add/Remove Comments/Tags, Filter by Status/Severity/Tags)","Takedown Request Management (Create, Get, Update Status, Add Tags)","Digital Footprint Monitoring (Get Assets/Buckets, Add Assets, Mark False Positive, Toggle Monitoring)","Brand Protection (Detect Impersonating Accounts/Domains/Apps, Social Media Findings, Filter by Type)","Fraud Protection (Phishing/Scam Detection, Brand Abuse, Payment Fraud, Filter by Risk Level)","Dark Web Monitoring (Monitor Botnet/Blackmarket/PII/IM Content, Filter by Source)","User Audit Logs (Retrieve Activity Logs, Filter by Date Range/Activity Type)"],"authentication":"API Key and Company ID required via n8n Credentials entry","commonUseCases":["Automated incident tracking and response workflows","Brand reputation monitoring and protection","Digital asset discovery and threat detection","Fraud prevention and phishing detection","Compliance monitoring via user audit logs"],"limitations":["Requires n8n v1.0.0 or later","Single consolidated node may lack granular control over specific API versions compared to separate nodes","No built-in error handling or retry logic mentioned in README"],"relatedNodes":["SOCRadar API","n8n Credentials","n8n Community Nodes"]}


node_type: n8n-nodes-scrapeless.scrapeless
package_name: n8n-nodes-scrapeless
display_name: Scrapeless Official
description: Official Scrapeless nodes for n8n
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: scrapeless_team
author_github_url: https://github.com/scrapeless-ai/
npm_package_name: n8n-nodes-scrapeless
npm_version: 0.4.1
community_fetched_at: 2026-04-16T09:43:35.936Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "scrapingApi",
      "options": [
        {
          "name": "Deep SerpApi",
          "value": "scrapingApi"
        },
        {
          "name": "Universal Scraping API",
          "value": "universalScrapingApi"
        },
        {
          "name": "Crawler",
          "value": "crawler"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Scrape"
        },
        {
          "name": "Crawl",
          "value": "crawl",
          "action": "Crawl"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crawler"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "webUnlocker",
      "options": [
        {
          "name": "Web Unlocker",
          "value": "webUnlocker",
          "action": "Web Unlocker"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "universalScrapingApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "googleSearch",
      "options": [
        {
          "name": "Google Search",
          "value": "googleSearch",
          "action": "Google Search"
        },
        {
          "name": "Google Trends",
          "value": "googleTrends",
          "action": "Google Trends"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scrapingApi"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Scrape",
      "value": "scrape",
      "action": "Scrape",
      "resource": "crawler"
    },
    {
      "name": "Crawl",
      "value": "crawl",
      "action": "Crawl",
      "resource": "crawler"
    },
    {
      "name": "Web Unlocker",
      "value": "webUnlocker",
      "action": "Web Unlocker",
      "resource": "universalScrapingApi"
    },
    {
      "name": "Google Search",
      "value": "googleSearch",
      "action": "Google Search",
      "resource": "scrapingApi"
    },
    {
      "name": "Google Trends",
      "value": "googleTrends",
      "action": "Google Trends",
      "resource": "scrapingApi"
    }
  ]

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

  # n8n-node-scrapeless

  This repo contains Scrapeless's community node for n8n.

  ## Installation

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

  ## Credentials

  You must have a Scrapeless API key to use this node. You can register for a free account to get an API key here:

  https://app.scrapeless.com/passport/register

  Once registered, you can find your API key here:


  Then you'll need to create a credential in n8n for Scrapeless.

  ![Add Credentials](images/add-credentials.png)

  ## Usage

  Add the Scrapeless node to your workflow.

  ![Add Scrapeless to Workflow](images/workflow.png)

  Configure a basic query and hit "Test step" to try a search.

  ![Test a Crawler through Scrapeless](images/test-crawler.png)

  ## License

  [MIT](https://github.com/scrapeless-ai/n8n-nodes-scrapeless/blob/main/LICENSE.md)

ai_documentation_summary:
  {"purpose":"Official Scrapeless community node for n8n that enables web scraping and crawling operations directly within n8n workflows.","capabilities":["Execute search queries via Scrapeless API","Perform web crawling operations","Retrieve scraped data from specified URLs","Integrate Scrapeless scraping functionality into n8n workflows"],"authentication":"API key required (Scrapeless API key)","commonUseCases":["Automated web data extraction","Competitor research via web scraping","Social media monitoring","Lead generation through URL crawling"],"limitations":["Requires separate Scrapeless account registration","API key must be configured in n8n credentials","Scraping limits and terms of service apply based on Scrapeless API plan"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Code Node"]}


node_type: n8n-nodes-placid.placid
package_name: n8n-nodes-placid
display_name: Placid
description: Generate images, PDFs, and videos via Placid's API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:35
author_name: placidapp
author_github_url: https://github.com/placidapp/
npm_package_name: n8n-nodes-placid
npm_version: 0.1.6
community_fetched_at: 2026-04-16T09:43:35.936Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "PDF",
          "value": "pdf"
        },
        {
          "name": "Video",
          "value": "video"
        },
        {
          "name": "Template",
          "value": "template"
        },
        {
          "name": "Other",
          "value": "other"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an image from a template",
          "description": "Generate a new image from a template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an image by ID",
          "description": "Retrieve an existing image by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an image by ID",
          "description": "Delete an existing image by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a PDF from a template",
          "description": "Generate a new PDF from a template"
        },
        {
          "name": "Merge",
          "value": "merge",
          "action": "Merge multiple PDF files",
          "description": "Merge multiple existing PDFs into one"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a PDF by ID",
          "description": "Retrieve an existing PDF by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a PDF by ID",
          "description": "Delete an existing PDF by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a video from a template",
          "description": "Generate a new video from a template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a video by ID",
          "description": "Retrieve an existing video by ID"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a video by ID",
          "description": "Delete an existing video by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a template",
          "description": "Create a new template"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a template by ID",
          "description": "Delete an existing template by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a template by ID",
          "description": "Retrieve an existing template by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many templates",
          "description": "Retrieve multiple templates"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a template",
          "description": "Update an existing template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "template"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadMedia",
      "options": [
        {
          "name": "Upload Media",
          "value": "uploadMedia",
          "action": "Upload media files",
          "description": "Upload media files to Placid storage for use in templates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "other"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an image from a template",
      "description": "Generate a new image from a template",
      "resource": "image"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an image by ID",
      "description": "Retrieve an existing image by ID",
      "resource": "image"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an image by ID",
      "description": "Delete an existing image by ID",
      "resource": "image"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a PDF from a template",
      "description": "Generate a new PDF from a template",
      "resource": "pdf"
    },
    {
      "name": "Merge",
      "value": "merge",
      "action": "Merge multiple PDF files",
      "description": "Merge multiple existing PDFs into one",
      "resource": "pdf"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a PDF by ID",
      "description": "Retrieve an existing PDF by ID",
      "resource": "pdf"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a PDF by ID",
      "description": "Delete an existing PDF by ID",
      "resource": "pdf"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a video from a template",
      "description": "Generate a new video from a template",
      "resource": "video"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a video by ID",
      "description": "Retrieve an existing video by ID",
      "resource": "video"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a video by ID",
      "description": "Delete an existing video by ID",
      "resource": "video"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a template",
      "description": "Create a new template",
      "resource": "template"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a template by ID",
      "description": "Delete an existing template by ID",
      "resource": "template"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a template by ID",
      "description": "Retrieve an existing template by ID",
      "resource": "template"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many templates",
      "description": "Retrieve multiple templates",
      "resource": "template"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a template",
      "description": "Update an existing template",
      "resource": "template"
    },
    {
      "name": "Upload Media",
      "value": "uploadMedia",
      "action": "Upload media files",
      "description": "Upload media files to Placid storage for use in templates",
      "resource": "other"
    }
  ]

npm_readme:
  ![Placid n8n Integration](https://placid.app/assets/n8n/github-header-n8n.jpg)

  # n8n-nodes-placid

  This is an n8n community node. It lets you use [Placid API](https://placid.app) in your n8n workflows.

  Placid is a powerful API service for automated image, PDF, and video generation from custom templates. Create dynamic visual content at scale with simple API calls.

  [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

  ### Quick Install
  ```bash
  npm install n8n-nodes-placid
  ```

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

  ### Complete Setup Guide  
  📖 **New to Placid + n8n?** Check out our comprehensive [Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide) with step-by-step instructions, examples, and best practices for:
  - Setting up your Placid project with n8n integration
  - Creating dynamic templates for images, PDFs, and videos  
  - Installing and configuring the node
  - Mapping data to template layers
  - Testing and completing your workflows

  ## Operations

  ### Image Operations
  - **Create Image** - Generate images from Placid templates with dynamic data
  - **Get Image** - Retrieve image information and download URLs
  - **Delete Image** - Delete generated images from your Placid account

  ### PDF Operations  
  - **Create PDF** - Generate PDFs from Placid templates with dynamic data
  - **Get PDF** - Retrieve PDF information and download URLs
  - **Delete PDF** - Delete generated PDFs from your Placid account

  ### Video Operations
  - **Create Video** - Generate videos from Placid templates with support for multiple clips and audio
  - **Get Video** - Retrieve video information and download URLs
  - **Delete Video** - Delete generated videos from your Placid account

  ### Template Operations
  - **Create Template** - Create new Placid templates
  - **Get Template** - Retrieve a specific template by ID
  - **Get Many Templates** - List all templates with optional filtering
  - **Update Template** - Update existing template properties
  - **Delete Template** - Delete templates from your Placid account

  ### Other Operations
  - **Upload Media** - Upload media files to Placid storage for use in templates

  ## Credentials

  To use this node, you'll need:

  1. **Placid Account**: Sign up at [placid.app](https://placid.app)
  2. **API Key**: Get your API key from your Placid dashboard
  3. **Authentication Setup**: 
     - In n8n, create new credentials of type "Placid API"
     - Enter your Placid API key

  ## Compatibility

  - **Minimum n8n version**: 0.208.0
  - **Node.js version**: >=20.15
  - **Tested with**: n8n 1.x.x

  ## Usage

  ### Configuration Modes
  The Placid node offers two configuration modes for maximum flexibility:

  **🎯 Simple Mode (Recommended)**  
  - User-friendly interface with dropdowns and form fields
  - Dynamic template layer detection - template layers automatically become input fields
  - Support for binary file uploads (images, videos, PDFs)
  - Perfect for most use cases

  **⚙️ Advanced Mode**  
  - Direct JSON configuration for complex scenarios
  - Full control over API payload structure  
  - Support for multi-clip videos and advanced layer configurations
  - Ideal for developers and complex automations

  ### Key Features

  **📁 Binary File Upload**  
  Upload files directly from n8n binary data:
  - Images (JPG, PNG, GIF, WebP) for image and picture layers
  - Videos (MP4) for video layers and video generation
  - Automatic upload to Placid storage with instant URL generation

  **🎬 Multi-Clip Videos**  
  Create sophisticated videos:
  - Combine multiple templates into single videos  
  - Add audio tracks with trimming controls
  - Support for image arrays and slideshow effects
  - Layer animations and transitions

  **🔄 Dynamic Template Integration**  
  - Template layers automatically appear as configurable fields
  - Support for all layer types: text, images, shapes, barcodes, ratings
  - Custom properties for advanced styling
  - Real-time template validation

  ### Quick Start Example
  1. **Choose Resource**: Select "Image", "PDF", "Video", "Template", or "Other"
  2. **Select Operation**: Pick "Create", "Get", "Delete", etc.  
  3. **Pick Template**: Choose from your Placid templates
  4. **Configure Layers**: Use the simple UI or JSON mode
  5. **Add Data**: Map your n8n workflow data to template fields
  6. **Execute**: Generate your creative asset

  For detailed examples and walkthroughs, see the [📖 Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide).

  ## Resources

  ### Getting Started
  * [📖 Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide) - Complete walkthrough with examples
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

  ### API Documentation  
  * [Placid API Documentation](https://placid.app/docs/2.0/introduction)
  * [Placid Image API](https://placid.app/docs/2.0/rest/images)
  * [Placid PDF API](https://placid.app/docs/2.0/rest/pdfs)  
  * [Placid Video API](https://placid.app/docs/2.0/rest/videos)
  * [Placid Templates API](https://placid.app/docs/2.0/rest/templates)

  ### Support & Community
  * [📝 Report Issues](https://github.com/placidapp/n8n-nodes-placid/issues)
  * [💬 Get Help](https://placid.app/help) - Contact Placid support
  * [🔗 Repository](https://github.com/placidapp/n8n-nodes-placid)

  ## Version history

  ### 0.1.6 (Current)
  - **New PDF Merge Operation**
  - Merge multiple PDFs into a single document with mixed URL/binary source support
  - Simple and Advanced configuration modes for flexibility
  - **Security Improvements**
  - Sanitized filenames in multipart headers to prevent injection attacks
  - Added randomness to multipart boundaries to prevent collisions
  - **Bug Fixes**
  - Validate whitespace-only URLs in simple mode
  - Validate URLs in advanced mode PDF merge configuration
  - Show last polled status in timeout error messages
  - Fixed multipart body handling for media uploads

  ### 0.1.5
  - **Error Handling Enhancement** 🛡️
  - Added ContinueOnFail support to allow workflows to continue execution even when individual operations encounter errors
  - Improved error reporting with standardized NodeOperationError across all operations for better debugging
  - **Compatibility Update** 🔄
  - Updated authentication method to use latest n8n API for improved reliability

  ### 0.1.4
  - **Item Tracking Fix** 🔧
  - Added pairedItem to all operation returns to enable proper input-output tracking and data lineage in n8n workflows

  ### 0.1.3
  - **Bug Fixes** 🔧
  - Fixed property field mapping for shape layer colors (background_color, border_color)
  - Fixed text layer property mappings (text_color, alt_text_color, font, alt_font)
  - Fixed rating/barcode "Value" field label collision
  - Improved layer property handling across all resources

  ### 0.1.2
  - **n8n Cloud Verification Fix** 🔧
  - Fixed ESLint violations by replacing `setTimeout` with n8n's `sleep` helper
  - Ensures compatibility with n8n cloud verification requirements

  ### 0.1.1
  - **Documentation improvements** 📚
  - Added comprehensive usage examples and feature documentation
  - Added reference to [Placid n8n Setup Guide](https://placid.app/help/n8n-setup-guide)
  - Enhanced installation instructions with npm command
  - Documented binary file upload capabilities
  - Added support and community links

  ### 0.1.0
  - **First stable release** 🎉
  - Image, PDF, and video generation from Placid templates
  - Template management (CRUD operations)
  - Media upload functionality
  - Dynamic template field generation
  - API key authentication
  - Production ready

  ### 0.0.1-beta.1
  - Initial beta release
   

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation for generating images, PDFs, and videos using Placid's API, supporting both simple UI and advanced JSON configurations.","capabilities":["Generate images from custom templates","Generate PDFs from custom templates","Generate videos with multiple clips and audio","Retrieve and delete generated assets","Create, update, and delete templates","Upload media files to Placid storage","Support binary file uploads (images, videos, PDFs)","Multi-clip video creation with audio trimming","Dynamic template layer mapping","Advanced JSON configuration mode"],"authentication":"API key required (Placid API key)","commonUseCases":["Automated marketing material generation","Dynamic document creation for data-driven workflows","Video compilation from multiple sources","Template-based content personalization","Automated asset management and deletion"],"limitations":["Community node (may have fewer updates than official nodes)","Requires separate Placid account setup","Minimum n8n version 0.208.0 required","Node.js version >=20.15 required"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.binaryFile"]}


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

updated_at: 2026-04-16 09:43:35
author_name: acrichter
author_github_url: https://github.com/ac40/
npm_package_name: n8n-nodes-craft
npm_version: 0.1.8
community_fetched_at: 2026-04-16T09:43:35.938Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "block",
      "options": [
        {
          "name": "Block",
          "value": "block"
        },
        {
          "name": "Collection",
          "value": "collection"
        },
        {
          "name": "Daily Note",
          "value": "dailyNote"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Folder",
          "value": "folder"
        },
        {
          "name": "Task",
          "value": "task"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Fetch Block",
          "value": "fetch",
          "action": "Fetch a block",
          "description": "Retrieve blocks and attached information"
        },
        {
          "name": "Insert Blocks",
          "value": "insert",
          "action": "Insert blocks",
          "description": "Create new blocks in a document"
        },
        {
          "name": "Upload File",
          "value": "upload",
          "action": "Upload a file",
          "description": "Insert files (binary content) into a document"
        },
        {
          "name": "Delete Blocks",
          "value": "delete",
          "action": "Delete blocks",
          "description": "Remove blocks from a document"
        },
        {
          "name": "Update Blocks",
          "value": "update",
          "action": "Update blocks",
          "description": "Modify blocks"
        },
        {
          "name": "Move Blocks",
          "value": "move",
          "action": "Move blocks",
          "description": "Reorder blocks in a document"
        },
        {
          "name": "Search Blocks",
          "value": "search",
          "action": "Search blocks",
          "description": "Search content"
        },
        {
          "name": "Construct Blocks",
          "value": "construct",
          "action": "Construct blocks",
          "description": "Construct blocks with validation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "block"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create Items",
          "value": "create",
          "action": "Create collection items",
          "description": "Insert new items into a collection"
        },
        {
          "name": "Delete Items",
          "value": "delete",
          "action": "Delete collection items",
          "description": "Remove items from a collection"
        },
        {
          "name": "Get Collection Schema",
          "value": "getSchema",
          "action": "Get collection schema",
          "description": "Retrieve a collection schema in the desired format"
        },
        {
          "name": "List Collections",
          "value": "listCollections",
          "action": "List collections",
          "description": "Retrieve available collections and their metadata"
        },
        {
          "name": "List Items",
          "value": "list",
          "action": "List collection items",
          "description": "Retrieve collection items"
        },
        {
          "name": "Update Items",
          "value": "update",
          "action": "Update collection items",
          "description": "Modify existing items in a collection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "collection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Tasks",
          "value": "list",
          "action": "List tasks",
          "description": "Retrieve tasks filtered by scope"
        },
        {
          "name": "Create Task",
          "value": "create",
          "action": "Create a task",
          "description": "Create a new task in inbox or daily notes"
        },
        {
          "name": "Update Task",
          "value": "update",
          "action": "Update a task",
          "description": "Modify an existing task"
        },
        {
          "name": "Delete Tasks",
          "value": "delete",
          "action": "Delete tasks",
          "description": "Delete tasks by their IDs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetch",
      "options": [
        {
          "name": "List Documents",
          "value": "fetch",
          "action": "Fetch documents",
          "description": "Retrieve available Craft documents"
        },
        {
          "name": "Search Documents",
          "value": "search",
          "action": "Search documents",
          "description": "Search across documents with include terms and optional filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search Daily Notes",
          "value": "search",
          "action": "Search daily notes",
          "description": "Search across daily notes with optional date range filters"
        },
        {
          "name": "Search Within Daily Note",
          "value": "searchBlocks",
          "action": "Search blocks in a daily note",
          "description": "Search for blocks within a specific daily note date"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dailyNote"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Folders",
          "value": "list",
          "action": "List folders",
          "description": "Retrieve all folders and locations in the space"
        },
        {
          "name": "Create Folder",
          "value": "create",
          "action": "Create a folder",
          "description": "Create a new folder or location"
        },
        {
          "name": "Delete Folder",
          "value": "delete",
          "action": "Delete a folder",
          "description": "Delete a folder by its ID"
        },
        {
          "name": "Move Folder",
          "value": "move",
          "action": "Move a folder",
          "description": "Move a folder to a different location"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Fetch Block",
      "value": "fetch",
      "action": "Fetch a block",
      "description": "Retrieve blocks and attached information",
      "resource": "block"
    },
    {
      "name": "Insert Blocks",
      "value": "insert",
      "action": "Insert blocks",
      "description": "Create new blocks in a document",
      "resource": "block"
    },
    {
      "name": "Upload File",
      "value": "upload",
      "action": "Upload a file",
      "description": "Insert files (binary content) into a document",
      "resource": "block"
    },
    {
      "name": "Delete Blocks",
      "value": "delete",
      "action": "Delete blocks",
      "description": "Remove blocks from a document",
      "resource": "block"
    },
    {
      "name": "Update Blocks",
      "value": "update",
      "action": "Update blocks",
      "description": "Modify blocks",
      "resource": "block"
    },
    {
      "name": "Move Blocks",
      "value": "move",
      "action": "Move blocks",
      "description": "Reorder blocks in a document",
      "resource": "block"
    },
    {
      "name": "Search Blocks",
      "value": "search",
      "action": "Search blocks",
      "description": "Search content",
      "resource": "block"
    },
    {
      "name": "Construct Blocks",
      "value": "construct",
      "action": "Construct blocks",
      "description": "Construct blocks with validation",
      "resource": "block"
    },
    {
      "name": "Create Items",
      "value": "create",
      "action": "Create collection items",
      "description": "Insert new items into a collection",
      "resource": "collection"
    },
    {
      "name": "Delete Items",
      "value": "delete",
      "action": "Delete collection items",
      "description": "Remove items from a collection",
      "resource": "collection"
    },
    {
      "name": "Get Collection Schema",
      "value": "getSchema",
      "action": "Get collection schema",
      "description": "Retrieve a collection schema in the desired format",
      "resource": "collection"
    },
    {
      "name": "List Collections",
      "value": "listCollections",
      "action": "List collections",
      "description": "Retrieve available collections and their metadata",
      "resource": "collection"
    },
    {
      "name": "List Items",
      "value": "list",
      "action": "List collection items",
      "description": "Retrieve collection items",
      "resource": "collection"
    },
    {
      "name": "Update Items",
      "value": "update",
      "action": "Update collection items",
      "description": "Modify existing items in a collection",
      "resource": "collection"
    },
    {
      "name": "List Tasks",
      "value": "list",
      "action": "List tasks",
      "description": "Retrieve tasks filtered by scope",
      "resource": "task"
    },
    {
      "name": "Create Task",
      "value": "create",
      "action": "Create a task",
      "description": "Create a new task in inbox or daily notes",
      "resource": "task"
    },
    {
      "name": "Update Task",
      "value": "update",
      "action": "Update a task",
      "description": "Modify an existing task",
      "resource": "task"
    },
    {
      "name": "Delete Tasks",
      "value": "delete",
      "action": "Delete tasks",
      "description": "Delete tasks by their IDs",
      "resource": "task"
    },
    {
      "name": "List Documents",
      "value": "fetch",
      "action": "Fetch documents",
      "description": "Retrieve available Craft documents",
      "resource": "document"
    },
    {
      "name": "Search Documents",
      "value": "search",
      "action": "Search documents",
      "description": "Search across documents with include terms and optional filters",
      "resource": "document"
    },
    {
      "name": "Search Daily Notes",
      "value": "search",
      "action": "Search daily notes",
      "description": "Search across daily notes with optional date range filters",
      "resource": "dailyNote"
    },
    {
      "name": "Search Within Daily Note",
      "value": "searchBlocks",
      "action": "Search blocks in a daily note",
      "description": "Search for blocks within a specific daily note date",
      "resource": "dailyNote"
    },
    {
      "name": "List Folders",
      "value": "list",
      "action": "List folders",
      "description": "Retrieve all folders and locations in the space",
      "resource": "folder"
    },
    {
      "name": "Create Folder",
      "value": "create",
      "action": "Create a folder",
      "description": "Create a new folder or location",
      "resource": "folder"
    },
    {
      "name": "Delete Folder",
      "value": "delete",
      "action": "Delete a folder",
      "description": "Delete a folder by its ID",
      "resource": "folder"
    },
    {
      "name": "Move Folder",
      "value": "move",
      "action": "Move a folder",
      "description": "Move a folder to a different location",
      "resource": "folder"
    }
  ]

npm_readme:
  <!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 -->

  <a id="readme-top"></a>

  # n8n-nodes-craft

  <!-- PROJECT LOGO -->

  [![Project Banner][project-banner]](./images/banner.png)
  <br />

  <div align="center">
    <p align="center">
      The Bridge you where looking for between two awesome tools
      <br />
      <a href="./CONTRIBUTING.md"><strong>Want to contribute? »</strong></a>
      <br />
      <br />
      <a href="https://github.com/ac40/n8n-nodes-craft/issues/new?labels=bug&template=bug-report.md">Report Bug</a>
      &middot;
      <a href="https://github.com/ac40/n8n-nodes-craft/issues/new?labels=enhancement&template=feature-request.md">Request Feature</a>
    </p>
  </div>

  <!-- TABLE OF CONTENTS -->
  <details>
    <summary>Table of Contents</summary>
    <ol>
      <li><a href="#about-the-project">About The Project</a></li>
      <li><a href="#installation">Installation</a></li>
      <li>
        <a href="#operations">Operations</a>
        <ul>
          <li><a href="#blocks">Blocks</a></li>
          <li><a href="#collections">Collections</a></li>
          <li><a href="#tasks">Tasks</a></li>
          <li><a href="#documents">Documents</a></li>
          <li><a href="#daily-notes">Daily Notes</a></li>
        </ul>
      </li>
      <li><a href="#credentials">Credentials</a></li>
      <li><a href="#compatibility">Compatibility</a></li>
      <li><a href="#resources">Resources</a></li>
      <li><a href="#version-history">Version history</a></li>
    </ol>
  </details>

  <!-- ABOUT THE PROJECT -->

  ## About The Project

  This is an n8n community node. It lets you use [Craft](https://craft.do) Docs in your n8n workflows.

  [Craft](https://craft.do) is an app that helps you _craft_ the best Docs in the world (that's their claim, and it is absolutely true!).

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

  ## Installation

  ### Community Node (soon to be released)

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

  > This node is not published as a community node yet, currently only the self-installation is available

  ### Private Node

  To run this node as a private node, follow [this](https://docs.n8n.io/integrations/creating-nodes/deploy/install-private-nodes/) guide by n8n. I also have a [prepared Dockerfile](https://github.com/AC40/custom-n8n-image) with a blank n8n installation + this craft node.

  Either run my custom image or build your own if you want to install additional private node.

  ## Operations

  The node now supports multiple Craft resources and their specific operations.

  ### Blocks

  - Fetch blocks to retrieve content and attachments
  - Insert blocks to add new content to a document
  - Upload files as binary content inside a block
  - Delete blocks from a document
  - Update blocks to change existing content
  - Move blocks to reorder content
  - Search blocks in a document
  - Construct blocks with validation before sending them to Craft

  ### Collections

  - List items with optional depth and format controls
  - Create items (including introducing new select options)
  - Update items while reusing or adding select options
  - Delete items in bulk

  ### Tasks

  - List tasks across inbox, upcoming, active, or logbook views
  - Create tasks in the inbox or a chosen daily note
  - Update tasks, including markdown, state, schedule, and deadline
  - Delete tasks by providing one or more IDs

  ### Documents

  - List available documents
  - Search across documents

  ### Daily Notes

  - Search daily notes with keyword and date filters
  - Search a single daily note

  ## Credentials

  If you want to interact with protected Documents, you will need to create a BearerAuth Credential for your respective Document with API Keys and document ids.

  ## Compatibility

  1.0 (Node.js 18)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Some more information about this project](https://ac-rich.craft.me/n8n-nodes-craft)

  ## Version history

  N/A

  <!-- Images -->

  [project-banner]: ./images/banner.png

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with Craft CMS documents, blocks, collections, tasks, and daily notes via its API.","capabilities":["Fetch, insert, update, delete, and move blocks","Upload files as binary content inside blocks","List, create, update, and delete collection items","Manage tasks across inbox, upcoming, active, and logbook views","Search and list documents","Search daily notes with keyword and date filters"],"authentication":"API Key (BearerAuth Credential required for protected documents)","commonUseCases":["Automating content creation and updates in Craft CMS","Syncing tasks between n8n and Craft daily notes","Managing document metadata and block content programmatically"],"limitations":["Currently available only as a private node; not yet published as a community node","Requires manual installation via n8n private nodes or custom Docker images"],"relatedNodes":["n8n-nodes-craft.craft","n8n-nodes-craft.tasks","n8n-nodes-craft.collections","n8n-nodes-craft.documents"]}


