# nodes

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

updated_at: 2026-03-25 21:19:40
author_name: robfigroam
author_github_url: https://github.com/WonderInventions/
npm_package_name: n8n-nodes-roam
npm_version: 0.1.10
community_fetched_at: 2026-03-25T21:19:40.687Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Meeting",
          "value": "meeting"
        },
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Transcript",
          "value": "transcript"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send Message",
          "value": "send",
          "action": "Send a message",
          "description": "Send a message to a Roam group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Meeting Link",
          "value": "create",
          "action": "Create a meeting link",
          "description": "Create a meeting link"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "meeting"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get Transcript Info",
          "value": "info",
          "action": "Get transcript info",
          "description": "Get detailed information about a specific transcript"
        },
        {
          "name": "List Transcripts",
          "value": "list",
          "action": "List transcripts",
          "description": "List transcripts with optional date filtering"
        },
        {
          "name": "Prompt Transcript",
          "value": "prompt",
          "action": "Prompt a transcript",
          "description": "Ask a question about a transcript using AI"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"send","name":"Send Message","description":"Send a message to a Roam group","resource":"message"},{"operation":"create","name":"Create Meeting Link","description":"Create a meeting link","resource":"meeting"},{"operation":"info","name":"Get Transcript Info","description":"Get detailed information about a specific transcript","resource":"transcript"},{"operation":"list","name":"List Transcripts","description":"List transcripts with optional date filtering","resource":"transcript"},{"operation":"prompt","name":"Prompt Transcript","description":"Ask a question about a transcript using AI","resource":"transcript"}]

npm_readme:
  # n8n-nodes-roam

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

  Roam is a video conferencing and messaging platform that enables teams to connect, collaborate, and communicate effectively through video meetings, messaging, and integrations.

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

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

  ## Installation

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

  ## Operations

  ### Roam Node
  - **Send Message**: Send messages to Roam groups
  - **Create Meeting Link**: Create new video meeting links

  ### Roam Trigger Node
  - **Webhook Events**: Trigger workflows when webhook events are received from Roam

  ## Credentials

  To use this node, you need to authenticate with Roam's API using OAuth2.

  1. Go to your Roam developer account at [developer.ro.am](https://developer.ro.am)
  2. Create an API Key application
  3. Enable permissions corresponding to what you want it to do: 
    - Actions
      - Send chat message: `chat:send_message`, `groups:read`
      - Create meeting link: `meetinglink:write`
    - Webhooks: `webhook:write`
      - New Recording: `recordings:read`
      - New Transcript: `transcript:read`
  3. In n8n, create a new credential of type "Roam API Key"
  4. Fill in your secret key

  ## Compatibility

  - n8n version: 1.0.0+
  - Node.js version: 18.0.0+
  - Tested with n8n versions: 1.0.x, 1.1.x

  ## Usage

  ### Basic Setup
  1. Install the community node
  2. Set up your Roam OAuth2 credentials
  3. Use the Roam node to send messages or create meetings
  4. Use the Roam Trigger node to respond to webhook events

  ### Example Workflow
  1. **Trigger**: HTTP Request (when a form is submitted)
  2. **Action**: Roam - Send Message (notify team about the submission)
  3. **Action**: Roam - Create Meeting Link (schedule a follow-up meeting)

  ## Development

  To run n8n locally: 

  - Run `ngrok http 5678` to support incoming webhooks. Set `WEBHOOK_URL` to the ngrok URL.
  - Run `npm run dev`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Roam API Documentation](https://developer.ro.am/)
  * [Roam Developer Portal](https://developer.ro.am)

  ## Version history

  ### 0.1.1
  - Initial release
  - Roam node with meeting and messaging operations
  - Roam Trigger node for webhook events
  - Basic transport layer for API communication
  - OAuth2 authentication

ai_documentation_summary:
  {"purpose":"A community node that enables n8n workflows to interact with Roam, a video conferencing and messaging platform, for sending messages and creating meeting links.","capabilities":["Send messages to Roam groups","Create new video meeting links","Trigger workflows on webhook events (new recordings, new transcripts)","Read recordings and transcripts via webhooks"],"authentication":"OAuth2","commonUseCases":["Notifying teams about form submissions via group messages","Scheduling follow-up meetings automatically after events","Automated responses to new Roam recordings or transcripts"],"limitations":["Community node (not official n8n node)","Requires manual setup of OAuth2 credentials via Roam developer portal","Requires n8n version 1.0.0+ and Node.js 18.0.0+"],"relatedNodes":["HTTP Request","Webhook"]}


node_type: @orq-ai/n8n-nodes-orq.orqDeployment
package_name: @orq-ai/n8n-nodes-orq
display_name: Orq Deployment
description: Invoke Orq AI deployment
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: sohrabhosseini
author_github_url: https://github.com/orq-ai/orqkit.git
npm_package_name: @orq-ai/n8n-nodes-orq
npm_version: 1.1.0
community_fetched_at: 2026-03-25T21:19:40.688Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # @orq-ai/n8n-nodes-orq

  Community nodes for integrating [Orq AI](https://orq.ai) with n8n workflows. These nodes provide seamless access to Orq AI's deployment and knowledge base capabilities within your automation workflows.

  ## Features

  - **Deployment Invocation**: Execute Orq AI deployments with messages, context, and inputs
  - **Knowledge Base Search**: Search and retrieve content from Orq knowledge bases
  - **Dynamic Configuration**: Automatically load available deployments and knowledge bases
  - **Multi-modal Support**: Send text and image content to vision-capable models
  - **Metadata Filtering**: Advanced filtering options for knowledge base searches
  - **Error Handling**: Built-in error handling with continue-on-fail support

  ## Installation

  ### Community Node Installation

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

  ### Manual Installation

  ```bash
  bun add @orq-ai/n8n-nodes-orq
  ```

  ### Docker Installation

  If using n8n with Docker, set the environment variable:

  ```bash
  N8N_COMMUNITY_NODE_PACKAGES=@orq-ai/n8n-nodes-orq
  ```

  ### Local Development Installation

  For local development and testing with n8n:

  1. Clone and navigate to the package:
  ```bash
  git clone https://github.com/orq-ai/orqkit.git
  cd orqkit/packages/n8n-nodes-orq
  ```

  2. Install dependencies:
  ```bash
  bun install
  ```

  3. Build the nodes:
  ```bash
  bunx nx build n8n-nodes-orq
  ```

  4. Start n8n with custom nodes:
  ```bash
  N8N_CUSTOM_EXTENSIONS="$(pwd)" n8n start
  ```

  The nodes will appear as "OrqDeployment" and "OrqKnowledgeBaseSearch" in the n8n node panel.

  ## Authentication

  1. Sign up or log in at [Orq AI](https://orq.ai)
  2. Navigate to your account settings to generate an API key
  3. In n8n, create new credentials:
     - Go to **Credentials** → **New**
     - Select **Orq API**
     - Enter your API key
     - Save the credentials

  ## Available Nodes

  ### Orq Deployment

  Invoke Orq AI deployments to process messages with AI models.

  #### Configuration

  - **Deployment Key**: Select from your available deployments or specify via expression
  - **Messages**: Add conversation messages with roles (User, System, Assistant)
  - **Context**: Set key-value pairs for deployment routing
  - **Inputs**: Provide values for prompt template variables

  #### Message Types

  - **Text Messages**: Standard text content for all roles
  - **Image Messages**: For User role only, supporting:
    - Image URLs
    - Base64 encoded images
    - Optional text descriptions with images

  #### Example Use Cases

  - Generate content based on templates
  - Process customer inquiries
  - Analyze images with vision models
  - Chain multiple AI operations

  ### Orq Knowledge Base Search

  Search and retrieve relevant content from your Orq knowledge bases.

  #### Configuration

  - **Knowledge Base**: Select from your available knowledge bases
  - **Query**: Search query to find relevant content
  - **Metadata Filters**: Optional filtering with AND/OR conditions or custom JSON

  #### Filter Types

  - **None**: No filtering, return all matching results
  - **AND**: All filter conditions must match
  - **OR**: Any filter condition must match
  - **Custom JSON**: Advanced recursive filter structures

  #### Example Use Cases

  - Semantic search across documents
  - Context retrieval for RAG applications
  - Content discovery and recommendations
  - Metadata-based filtering

  ## Workflow Examples

  ### Basic Text Generation

  ```yaml
  1. Trigger (e.g., Webhook)
  2. Orq Deployment
     - Deployment: "content-generator"
     - Input: { topic: "{{$json.topic}}" }
     - Message: "Generate an article"
  3. Output (e.g., Google Sheets)
  ```

  ### Knowledge-Enhanced Response

  ```yaml
  1. Trigger (e.g., Form submission)
  2. Orq Knowledge Base Search
     - Query: "{{$json.question}}"
     - Knowledge Base: "product-docs"
  3. Orq Deployment
     - Context from search results
     - Generate informed response
  4. Send response (e.g., Email)
  ```

  ### Image Analysis Pipeline

  ```yaml
  1. Image input (e.g., S3 trigger)
  2. Orq Deployment
     - Vision model deployment
     - Image URL from trigger
     - Analyze and extract data
  3. Store results (e.g., Database)
  ```

  ## Development

  ```bash
  # Build the package
  bunx nx build n8n-nodes-orq

  # Run development mode
  bunx nx dev n8n-nodes-orq

  # Test locally with n8n
  bun run test:local
  ```

  ## Resources

  - [n8n Documentation](https://docs.n8n.io)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)
  - [Orq AI Documentation](https://docs.orq.ai)
  - [Orq AI Platform](https://orq.ai)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with Orq AI by allowing workflow execution of AI deployments and searching knowledge bases with support for multi-modal inputs.","capabilities":["Invoke Orq AI deployments with messages, context, and inputs","Search and retrieve content from Orq knowledge bases","Support for text and image content (vision models)","Advanced metadata filtering for knowledge base searches","Dynamic configuration of deployments and knowledge bases","Built-in error handling with continue-on-fail support"],"authentication":"API key required (via Orq API credentials in n8n)","commonUseCases":["Generate content based on templates","Process customer inquiries","Analyze images with vision models","Semantic search across documents for RAG applications","Chain multiple AI operations in a workflow"],"limitations":[],"relatedNodes":["Orq Knowledge Base Search","Webhook Trigger","Google Sheets Output","Database Store"]}


node_type: n8n-nodes-transcript-lol.transcriptLolTrigger
package_name: n8n-nodes-transcript-lol
display_name: Transcript LOL Trigger
description: Starts the workflow when a Transcript.lol event occurs
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: pkpio
author_github_url: https://github.com/transcript-lol/
npm_package_name: n8n-nodes-transcript-lol
npm_version: 0.1.0
community_fetched_at: 2026-03-25T21:19:40.688Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-transcript-lol

  This is an n8n community node for [Transcript.lol](https://transcript.lol) - an AI-powered audio and video transcription service.

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

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

  ## Installation

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

  ## Operations

  ### Transcript.lol Node

  #### Recording Resource
  - **Create** - Create a new recording for transcription
  - **Get** - Get a recording by ID
  - **Get Many** - Get many recordings from a workspace

  #### Transcript Resource
  - **Get** - Get transcript for a recording in various formats (JSON, Plain Text, CSV, Word, SRT, VTT)

  #### Workspace Resource
  - **Get Many** - Get all workspaces accessible to your account

  ### Transcript.lol Trigger Node

  Listen for events from Transcript.lol:

  - **New Transcript** - Triggers when a transcript is completed for a recording
  - **Transcript Failed** - Triggers when a transcript fails to be created
  - **New Insights** - Triggers when new AI insights are generated for a recording
  - **Translation Created** - Triggers when a translation is completed for a recording

  ## Credentials

  This node uses OAuth2 with PKCE (Proof Key for Code Exchange) for secure authentication. No client secret is required — the integration uses a public client ID (`tlol_n8n_client`) and relies on PKCE's cryptographic code challenge/verifier exchange to secure the authorization flow.

  ### Setup

  1. In n8n, create new credentials for "Transcript.lol OAuth2 API"
  2. Click "Connect my account" — n8n will automatically handle the PKCE flow
  3. Sign in to your [Transcript.lol account](https://transcript.lol) and authorize the connection
  4. Once authorized, you can use the node in your workflows

  ### How It Works

  1. n8n generates a random `code_verifier` and derives a `code_challenge` (SHA-256 hash)
  2. The `code_challenge` is sent with the authorization request to Transcript.lol
  3. After you authorize, n8n sends the original `code_verifier` to the token endpoint
  4. Transcript.lol verifies that `SHA256(code_verifier)` matches the stored `code_challenge`
  5. On success, an access token (Bearer token) is issued and used for all API requests

  This approach eliminates the need for a shared client secret, making it safe for the credential configuration to be distributed as part of a community node.

  **Note:** You need to be on the Unlimited Plan to use the n8n integration.

  ## Compatibility

  - Tested with n8n version 1.0.0 and above
  - Requires Node.js v22 or higher

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Transcript.lol Documentation](https://transcript.lol/docs)
  - [Transcript.lol API Reference](https://transcript.lol/docs/api)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community n8n node that triggers workflows when specific events occur in Transcript.lol, an AI-powered audio and video transcription service.","capabilities":["Trigger on new transcript completion","Trigger on transcript failure","Trigger on new AI insights generation","Trigger on translation completion","Create new recordings for transcription","Retrieve single or multiple recordings by ID","Retrieve transcripts in multiple formats (JSON, Plain Text, CSV, Word, SRT, VTT)","List all accessible workspaces"],"authentication":"OAuth2 with PKCE (Proof Key for Code Exchange)","commonUseCases":["Automate follow-up actions when a transcription is completed","Alert team members when a transcription fails","Process new AI insights automatically","Handle translation completions in a workflow"],"limitations":["Requires Transcript.lol Unlimited Plan","Requires Node.js v22 or higher","Compatible with n8n version 1.0.0 and above"],"relatedNodes":["n8n-nodes-core-credentials","n8n-nodes-core-start-of-flow","n8n-nodes-core-webhook"]}


node_type: @permitio/n8n-nodes-permitio.permit
package_name: @permitio/n8n-nodes-permitio
display_name: Permit
description: Interact with Permit.io authorization service
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: permit-dev-manager
author_github_url: https://github.com/permitio/n8n-nodes-permitio.git
npm_package_name: @permitio/n8n-nodes-permitio
npm_version: 0.2.3
community_fetched_at: 2026-03-25T21:19:40.689Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "check",
      "options": [
        {
          "name": "Check",
          "value": "check",
          "action": "Check permission",
          "description": "Check if user has permission"
        },
        {
          "name": "Get User Permissions",
          "value": "getUserPermissions",
          "action": "Get user permissions",
          "description": "Get all permissions for a user"
        },
        {
          "name": "Get Authorized Users",
          "value": "getAuthorizedUsers",
          "action": "Get authorized users",
          "description": "Get users authorized for an action"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "string",
      "default": "",
      "required": true,
      "description": "Resource to check access to",
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "operation": [
            "check"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "Check",
      "value": "check",
      "action": "Check permission",
      "description": "Check if user has permission"
    },
    {
      "name": "Get User Permissions",
      "value": "getUserPermissions",
      "action": "Get user permissions",
      "description": "Get all permissions for a user"
    },
    {
      "name": "Get Authorized Users",
      "value": "getAuthorizedUsers",
      "action": "Get authorized users",
      "description": "Get users authorized for an action"
    }
  ]

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

  # n8n-nodes-permitio

  An n8n community node for integrating with [Permit.io](https://permit.io) authorization service.
  Permit is a fullstack, plug-and-play application-level authorization solution. This node allows you to check permissions, retrieve user permissions, and get authorized users directly within your n8n workflows.

  ![ABAC Expense Approval System](/assets/permit-n8n-workflow.png)

  ## Features

  - **Check Permissions**: Verify if a user has permission to perform a specific action on a resource
  - **Get User Permissions**: Retrieve all permissions for a specific user across tenants and resources
  - **Get Authorized Users**: Find all users authorized to perform a specific action on a resource type

  ## Installation

  **Install via n8n UI:**

  1. In your n8n workflow editor, click the "+" to add a new node
  2. Search for "Permit" in the node search box
  3. Click on the Permit node in the search results
  4. Click "Install node" button in the Node details panel
  5. Wait for installation to complete
  6. The Permit node will now be available in your workflow

  **Package name:** `@permitio/n8n-nodes-permitio`
  ![Installation Guide](./assets/permit-n8n-installation.gif)

  For alternative installation methods, follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Credentials

  To use this node, you need to set up Permit.io API credentials in n8n.

  **Prerequisites:**

  - A [Permit.io account](https://app.permit.io)
  - Your Permit.io API key

  **Setting up credentials:**

  1. In n8n, go to the **Overview** tab in the left sidebar
  2. Click on the **Credentials** tab
  3. Click **"Add first credential"** (or **"Create credential"** if you have existing credentials)
  4. Search for **"Permit"** and select **"Permit API"**
  5. Fill in the required fields:
     - **API Key**: Your Permit.io API key (found in Permit.io dashboard under Settings → API Keys)
     - **PDP URL**: `https://cloudpdp.api.permit.io` (default for cloud PDP)

  **For ABAC and ReBAC policies:**

  - **Local PDP**: If running a self-hosted PDP container, you'll need to expose it publicly (e.g., using ngrok) and use that public URL
  - Example: `https://abc123.ngrok.io` instead of `http://localhost:7766`
  - This provides better performance and supports advanced policy types

  **Getting your API key:**

  1. Log into your [Permit.io dashboard](https://app.permit.io)
  2. Go to Settings → API Keys
  3. Copy your API key and paste it into the n8n credential configuration

  ![Credentials Workflow](./assets/credentials-workflow.gif)

  **Note:** Keep your API key secure and never share it publicly.

  ## Operations

  **Check**

  - Check if a user has permission to perform an action on a resource
  - Supports RBAC, ABAC, and ReBAC policies with automatic attribute extraction
  - Returns boolean permission result with detailed debug information

  _Configuration:_

  - **User:** `{{$node['Webhook'].json.body.employee_email}}`
  - **Action:** `submit`
  - **Resource:** `expense`
  - **Enable ABAC:** ✅ (automatically extracts `expense_amount`, `category`, etc.)

  _Response Sample:_

  ```json
  {
  	"allow": true,
  	"decision": "2024-01-15T10:30:00Z",
  	"debug": {
  		"reason": "User john.employee can submit expense within $2000 limit"
  	}
  }
  ```

  **Get User Permissions**

  - Get all permissions for a specific user
  - Filter by resource types
  - Optional ABAC support for dynamic permissions

  _Configuration:_

  - **User:** `john.employee`
  - **Resource Types:** `expense,document`
  - **Enable ABAC:** ✅

  _Response Sample:_

  ```json
  {
  	"permissions": [
  		{
  			"resource": "expense",
  			"action": "submit",
  			"allowed": true
  		}
  	]
  }
  ```

  **Get Authorized Users**

  - Find all users who can perform a specific action on a resource
  - Useful for approval workflows and delegation
  - Returns list of authorized users with their roles and permissions

  _Configuration:_

  - **Action:** `approve`
  - **Resource Type:** `expense`
  - **Resource Attributes:** `{"expense_amount": 1500, "category": "Travel"}`
  - **Enable ABAC:** ✅

  _Response Sample:_

  ```json
  [
  	{
  		"resource": "expense:*",
  		"tenant": "default",
  		"users": {
  			"taofeek2sure@gmail.com": [
  				{
  					"user": "taofeek2sure@gmail.com",
  					"tenant": "default",
  					"resource": "resourceset_all_5fexpenses",
  					"role": "userset_finance_5fteam"
  				}
  			]
  		}
  	}
  ]
  ```

  ## Basic Usage Example

  ![ABAC Expense Example](/assets/abac-expense-example.png)

  This example shows how to build an ABAC-powered expense approval workflow using the Permit node.

  **Scenario:** Employees submit expenses for approval. The system automatically determines if they can submit based on their spending limits, then routes to authorized approvers.

  **Workflow:**

  1. **Webhook** receives expense submission (`employee_email`, `expense_amount`, `category`)
  2. **Check Permission** with ABAC enabled - automatically extracts expense attributes
  3. **IF node** branches on approval/denial
  4. **TRUE path:** Get Authorized Users → Send Email to approver
  5. **FALSE path:** Return 403 error response

  **Result:**

  - Employee submitting $1500 (within $2000 limit) → Email sent to finance approver
  - Employee submitting $2500 (exceeds limit) → Access denied with detailed error

  This demonstrates how the Permit node enables complex authorization workflows with minimal configuration.

  ## Compatibility

  - **Minimum n8n version**: 1.0+
  - **Node.js**: 20.15+ required
  - **Tested with**: n8n 1.111.0

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Permit.io Documentation](https://docs.permit.io/)
  - [Permit.io API Reference](https://api.permit.io/v2/redoc)
  - [Getting Started with Permit.io](https://docs.permit.io/quickstart/)

  **Authorization Models:**

  - [ABAC Guide - Building Your First ABAC Policy](https://docs.permit.io/how-to/build-policies/abac/building-abac-policy/)
  - [ReBAC Guide - What is ReBAC?](https://docs.permit.io/how-to/build-policies/rebac/overview/)
  - [Create a ReBAC Policy](https://docs.permit.io/overview/create-a-rebac-policy/)

  **Infrastructure & Deployment:**

  - [Terraform Provider Guide](https://docs.permit.io/integrations/infra-as-code/terraform-provider/)
  - [Self-Deployed PDP for ABAC/ReBAC](https://docs.permit.io/concepts/pdp/overview/)
  - [Running Local PDP Container](https://docs.permit.io/overview/connecting-your-app/)

  **API Methods:**

  - [Permit.check() - Permission Checking](https://docs.permit.io/how-to/enforce-permissions/check/)
  - [Get User Permissions API](https://docs.permit.io/how-to/enforce-permissions/user-permissions/)
  - [Get Authorized Users API](https://docs.permit.io/how-to/enforce-permissions/authorized-users/)

  ## License

  [MIT](LICENSE.md)

  ## Contributing

  Contributions are welcome! Please read our contributing guidelines and submit pull requests to our GitHub repository.

  ---

  Built with ❤️ for the n8n community

ai_documentation_summary:
  {"purpose":"A community n8n node that integrates with Permit.io to handle authorization checks, retrieve user permissions, and find authorized users for workflow automation.","capabilities":["Check if a user has permission to perform a specific action on a resource","Retrieve all permissions for a specific user across tenants and resources","Find all users authorized to perform a specific action on a resource type","Support for RBAC, ABAC, and ReBAC authorization policies","Automatic attribute extraction for ABAC policies","Detailed debug information in permission check responses"],"authentication":"API Key required (Permit.io API key)","commonUseCases":["Expense approval workflows with spending limits","Role-based access control (RBAC) enforcement","Attribute-based access control (ABAC) for dynamic permissions","Finding authorized approvers for delegation workflows","Access control for internal tools and applications"],"limitations":["Requires a Permit.io account with API credentials","Self-hosted PDP requires public exposure (e.g., ngrok) for cloud integration","Minimum n8n version 1.0+ required","Node.js 20.15+ runtime requirement"],"relatedNodes":["Webhook","IF","Email","Error Trigger"]}


node_type: @servicem8/n8n-nodes-servicem8.serviceM8
package_name: @servicem8/n8n-nodes-servicem8
display_name: ServiceM8
description: Automate job, staff & client workflows in your trade service business.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: servicem8-devops
author_github_url: https://github.com/servicem8/n8n-nodes-servicem8.git
npm_package_name: @servicem8/n8n-nodes-servicem8
npm_version: 0.1.4
community_fetched_at: 2026-03-25T21:19:40.689Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "client",
      "options": [
        {
          "name": "Client",
          "value": "client"
        },
        {
          "name": "Email",
          "value": "email"
        },
        {
          "name": "Inbox",
          "value": "inbox"
        },
        {
          "name": "Job",
          "value": "job"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "SMS",
          "value": "sms"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get customer details"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get multiple clients"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Add Note To Job",
          "value": "addNoteToJob",
          "action": "Add job note"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create new job"
        },
        {
          "name": "Create From Template",
          "value": "createFromTemplate",
          "action": "Create job from template"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete job"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get job details"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get multiple jobs"
        },
        {
          "name": "Send Job To Queue",
          "value": "sendJobToQueue",
          "action": "Queue job"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update job details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "job"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendEmail",
      "options": [
        {
          "name": "Send Email",
          "value": "sendEmail",
          "action": "Send email"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "email"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendSMS",
      "options": [
        {
          "name": "Send SMS",
          "value": "sendSMS",
          "action": "Send text message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createInboxMessage",
      "options": [
        {
          "name": "Create Inbox Message",
          "value": "createInboxMessage",
          "action": "Create inbox message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "inbox"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "globalSearch",
      "options": [
        {
          "name": "Global Search",
          "value": "globalSearch",
          "action": "Search everything"
        },
        {
          "name": "Search",
          "value": "objectSearch",
          "action": "Search specific type"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"get","name":"Get","resource":"client"},{"operation":"getMany","name":"Get Many","resource":"client"},{"operation":"addNoteToJob","name":"Add Note To Job","resource":"job"},{"operation":"create","name":"Create","resource":"job"},{"operation":"createFromTemplate","name":"Create From Template","resource":"job"},{"operation":"delete","name":"Delete","resource":"job"},{"operation":"get","name":"Get","resource":"job"},{"operation":"getMany","name":"Get Many","resource":"job"},{"operation":"sendJobToQueue","name":"Send Job To Queue","resource":"job"},{"operation":"update","name":"Update","resource":"job"},{"operation":"sendEmail","name":"Send Email","resource":"email"},{"operation":"sendSMS","name":"Send SMS","resource":"sms"},{"operation":"createInboxMessage","name":"Create Inbox Message","resource":"inbox"},{"operation":"globalSearch","name":"Global Search","resource":"search"},{"operation":"objectSearch","name":"Search","resource":"search"}]

npm_readme:
  # n8n-nodes-servicem8

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

  ServiceM8 is a job management software designed for small service businesses, helping them streamline scheduling, quoting, invoicing, and communication. It enables field staff to access job details, capture information, and process payments on-site via a mobile app.

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

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

  ## Installation

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

  ## Operations

  ### Attachment
  - **Upload** - Upload a file and create an attachment record
  - **Get** - Get attachment metadata with optional file download
  - **Get Many** - Get multiple attachments for a job or client
  - **Delete** - Soft delete an attachment

  ### Client
  - **Create** - Create a new client
  - **Get** - Get client details
  - **Get Many** - Get multiple clients
  - **Update** - Update client details
  - **Delete** - Delete client
  - **Update Client Contacts** - Update client contact details

  ### Job
  - **Create** - Create new job
  - **Create From Template** - Create job from template
  - **Get** - Get job details
  - **Get Many** - Get multiple jobs
  - **Update** - Update job details
  - **Delete** - Delete job
  - **Add Note To Job** - Add job note
  - **Send Job To Queue** - Queue job
  - **Update Job Contacts** - Update job contact details

  ### Job Booking
  - **Create** - Create a job booking
  - **Get** - Get booking details
  - **Get Many** - Get multiple bookings
  - **Update** - Update booking details
  - **Delete** - Delete booking

  ### Job Checkin
  - **Get** - Get job checkin details
  - **Get Many** - Get multiple job checkins

  ### Inbox
  - **Create** - Create inbox message
  - **Get** - Get inbox message details
  - **Get Many** - Get multiple inbox messages
  - **Convert To Job** - Convert inbox message to a job

  ### Email
  - **Send** - Send email

  ### SMS
  - **Send** - Send text message

  ### Search
  - **Global Search** - Search everything
  - **Object Search** - Search specific type

  ### Webhook Trigger
  Available webhook events:
  - Badge Added to Job
  - Badge Removed From Job
  - Customer Accepted the Quote
  - Customer Details Updated
  - Customer Review Submitted
  - Form Response Submitted
  - Full Payment Received for Invoice
  - Invoice Sent to Customer
  - Job Added to Queue
  - Job Details Modified
  - Job Marked as Completed
  - Job Status Changed
  - New Customer Added
  - New Job Created in the System
  - New Message Received in Inbox
  - Note Added to Job
  - Photo Attached to Job
  - Proposal Sent to Customer
  - Proposal Viewed by Customer
  - Quote Sent to Customer

  ## Credentials

  This node supports two authentication methods:

  ### API Key Authentication 
  1. Log in to your ServiceM8 account
  2. Navigate to **Settings** > **API Keys**
  3. Click **Generate API Key**
  4. Copy your API key and account email
  5. In n8n, create new ServiceM8 credentials with your email and API key

  ## Compatibility

  Tested with n8n v1.110.0 and later.

  ## Usage

  ### Create Job from Web Form
  This example shows how to create a new job when a web form is submitted:

  1. Set up a Webhook trigger to receive form submissions
  2. Use the Company node to create or find the customer
  3. Use the Job node to create a new job for that customer

  ### Daily Schedule Email
  This example shows how to email tomorrow's schedule to staff:

  1. Set up a Schedule trigger to run daily
  2. Use the Activity node to list tomorrow's activities
  3. Use an Email node to send the schedule

  For detailed usage examples and field mapping information, refer to the ServiceM8 API documentation.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes)
  * [ServiceM8 API Documentation](https://developer.servicem8.com/docs)
  * [ServiceM8 Developer Forum](https://developer.servicem8.com/discuss)
  * [GitHub Issues](https://github.com/servicem8/n8n-nodes-servicem8/issues)

  ## Version history

  ### 0.1.5
  **New Resources:**
  - **Attachment** - Full support for file attachments
    - Upload files to jobs or clients with automatic metadata handling
    - Get attachment metadata with optional binary file download
    - Get multiple attachments with filtering support
    - Delete attachments
  - **Job Booking** - Full support for job allocations (flexible time) and job activities (fixed time)
  - **Job Checkin** - Get and list job checkin records

  **New Operations:**
  - **Client**: Create, Update, Delete, Update Client Contacts
  - **Job**: Update Job Contacts
  - **Inbox**: Get, Get Many, Convert To Job

  **Enhancements:**
  - Client and Job Get/Get Many now support optional contact inclusion
  - Get Many operations support pagination (limit) and advanced filtering
  - Attachment Get Many supports filtering by attachment name, file type, source, tags, and more
  - "Include Inactive Records" moved to Advanced Options section for cleaner UI
  - Job Create now uses a cleaner UI with required Status field and dynamic field picker
  - Readonly fields (uuid, edit_date, created_by_staff_uuid, etc.) are now excluded from create/update field pickers but remain available for filtering
  - Job Template dropdowns now filter to show only active templates with valid names
  - Improved UI consistency across all resources (standardised field labels and action names)
  - Refactored to handler-based architecture for better maintainability

  ### 0.1.4
  - Added Inbox resource with create message action

  ### 0.1.0
  Initial release of the ServiceM8 node with support for:
  - Jobs management
  - Customer (Company) management
  - Webhook triggers

ai_documentation_summary:
  {"purpose":"Automates job, staff, and client workflows in trade service businesses by integrating ServiceM8's job management software with n8n workflows.","capabilities":["Manage jobs (create, update, delete, queue, add notes, send to queue)","Manage clients (create, update, delete, update contacts)","Manage job bookings and check-ins","Handle file attachments (upload, download, get metadata, delete)","Manage inbox messages and convert messages to jobs","Send emails and SMS messages","Global and object-specific search","Webhook triggers for 20+ events (e.g., job status changes, quote acceptance, payment received)","Create jobs from templates","Support for pagination and advanced filtering in Get Many operations"],"authentication":"API Key (requires API key and account email)","commonUseCases":["Automating job creation from web form submissions","Sending daily schedule emails to staff","Automating invoice and payment notifications","Syncing customer data between ServiceM8 and other systems","Triggering workflows when job status changes or quotes are accepted"],"limitations":["Community node (not official n8n node)","Requires active ServiceM8 account with API key access","Some advanced features may depend on ServiceM8 API capabilities"],"relatedNodes":["Webhook","Schedule","Email","SMS","Activity"]}


node_type: n8n-nodes-contextualai.contextualAi
package_name: n8n-nodes-contextualai
display_name: Contextual AI
description: Access Contextual AI tools for agents, parsing, querying, and reranking.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: jinash_rouniyar1
author_github_url: https://github.com/ContextualAI/
npm_package_name: n8n-nodes-contextualai
npm_version: 0.1.11
community_fetched_at: 2026-03-25T21:19:40.690Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Agent",
      "options": [
        {
          "name": "Agent",
          "value": "Agent"
        },
        {
          "name": "Datastore",
          "value": "Datastore"
        },
        {
          "name": "Query",
          "value": "Query"
        },
        {
          "name": "Reranker",
          "value": "Reranker"
        },
        {
          "name": "LMUnit",
          "value": "LMUnit"
        },
        {
          "name": "Parser",
          "value": "Parser"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create Agent",
      "options": [
        {
          "name": "Create Agent",
          "value": "Create Agent",
          "action": "Create Agent",
          "description": "Create agent, datastore, and upload documents"
        },
        {
          "name": "List Agents",
          "value": "List Agents",
          "action": "List Agents",
          "description": "Retrieve a list of all agents"
        },
        {
          "name": "Delete Agent",
          "value": "Delete Agent",
          "action": "Delete Agent",
          "description": "Delete a given agent (irreversible operation)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Parse Document",
      "options": [
        {
          "name": "Parse Document",
          "value": "Parse Document",
          "action": "Parse Document",
          "description": "Parse a document using Contextual AI parser"
        },
        {
          "name": "Parse Status",
          "value": "Parse Status",
          "action": "Parse Status",
          "description": "Get the status of a parse job"
        },
        {
          "name": "Parse Result",
          "value": "Parse Result",
          "action": "Parse Result",
          "description": "Get the results of a parse job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Parser"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Query agent",
      "options": [
        {
          "name": "Query agent",
          "value": "Query agent",
          "action": "Query agent",
          "description": "Query a Contextual AI agent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Query"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Rerank documents",
      "options": [
        {
          "name": "Rerank documents",
          "value": "Rerank documents",
          "action": "Rerank documents",
          "description": "Rerank documents against a query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Reranker"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Run LMUnit",
      "options": [
        {
          "name": "Run LMUnit",
          "value": "Run LMUnit",
          "action": "Run LMUnit",
          "description": "Evaluate a response with LMUnit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "LMUnit"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create Datastore",
      "options": [
        {
          "name": "Create Datastore",
          "value": "Create Datastore",
          "action": "Create Datastore",
          "description": "Create a new datastore"
        },
        {
          "name": "Ingest Document",
          "value": "Ingest Document",
          "action": "Ingest Document",
          "description": "Ingest a document into a datastore"
        },
        {
          "name": "Get Document Metadata",
          "value": "Get Document Metadata",
          "action": "Get Document Metadata",
          "description": "Get metadata and processing status for a document"
        },
        {
          "name": "List Datastores",
          "value": "List Datastores",
          "action": "List Datastores",
          "description": "Retrieve a list of all datastores"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Datastore"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"Create Agent","name":"Create Agent","description":"Create agent, datastore, and upload documents","resource":"Agent"},{"operation":"List Agents","name":"List Agents","description":"Retrieve a list of all agents","resource":"Agent"},{"operation":"Delete Agent","name":"Delete Agent","description":"Delete a given agent (irreversible operation)","resource":"Agent"},{"operation":"Parse Document","name":"Parse Document","description":"Parse a document using Contextual AI parser","resource":"Parser"},{"operation":"Parse Status","name":"Parse Status","description":"Get the status of a parse job","resource":"Parser"},{"operation":"Parse Result","name":"Parse Result","description":"Get the results of a parse job","resource":"Parser"},{"operation":"Query agent","name":"Query agent","description":"Query a Contextual AI agent","resource":"Query"},{"operation":"Rerank documents","name":"Rerank documents","description":"Rerank documents against a query","resource":"Reranker"},{"operation":"Run LMUnit","name":"Run LMUnit","description":"Evaluate a response with LMUnit","resource":"LMUnit"},{"operation":"Create Datastore","name":"Create Datastore","description":"Create a new datastore","resource":"Datastore"},{"operation":"Ingest Document","name":"Ingest Document","description":"Ingest a document into a datastore","resource":"Datastore"},{"operation":"Get Document Metadata","name":"Get Document Metadata","description":"Get metadata and processing status for a document","resource":"Datastore"},{"operation":"List Datastores","name":"List Datastores","description":"Retrieve a list of all datastores","resource":"Datastore"}]

npm_readme:
  # n8n-nodes-contextualai

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

  Contextual AI provides enterprise-grade RAG (Retrieval-Augmented Generation) agents, advanced document parsing, intelligent querying, and document reranking capabilities for building sophisticated AI-powered applications.

  [Contextual AI](https://contextual.ai) is a platform for building enterprise-grade AI applications with advanced RAG capabilities, while [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Table of contents

  - [Installation on self hosted instance](#installation-self-hosted)
  - [Installation on n8n cloud](#installation-n8n-cloud)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Resources](#resources)
  - [Troubleshooting](#troubleshooting)  

  ## Installation (self-hosted)

  To install the Contextual AI community node directly from the n8n Editor UI:

  1. Open your n8n instance.
  2. Go to **Settings > Community Nodes**
  3. Select **Install**.
  4. Enter the npm package name: `n8n-nodes-contextualai` to install the latest version.
  5. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes and select **Install**
  6. The node is now available to use in your workflows.

  ## Installation (n8n Cloud)

  If you're using n8n Cloud, installing community nodes is even simpler:

  1. Go to the **Canvas** and open the **nodes panel**.
  2. Search for **Contextual AI** in the community node registry.
  3. Click **Install node** to add the Contextual AI node to your instance.

  > On n8n cloud users can choose not to show verified community nodes. Instance owners can toggle this in the Cloud Admin Panel. To install the Contextual AI node, make sure the installation of verified community nodes is enabled.


  ## Operations

  This node supports a comprehensive range of Contextual AI operations, organized by resource type:

  ### Agent
  - **Create agent**: Create a new Contextual AI RAG agent with datastore and upload documents
    - Configure agent name, description, and datastore settings
    - Upload multiple documents via binary data
    - Support for various document formats (PDF, DOC/DOCX, PPT/PPTX)
    - Automatic document processing and indexing
  - **List agents**: Retrieve a list of all agents in your Contextual AI account
    - View agent details and metadata
    - Check agent status and configuration
  - **Delete agent**: Remove an agent from your Contextual AI account
    - Permanent deletion of agent and associated data
    - Requires agent ID for confirmation

  ### Datastore
  - **Create datastore**: Create a new datastore for document storage
    - Configure datastore name and settings
    - Set up document storage and indexing
  - **Ingest document**: Upload and process documents into a datastore
    - Support for multiple document formats (PDF, DOC/DOCX, PPT/PPTX, HTML)
    - Optional metadata attachment
    - Batch processing capabilities
  - **Get document metadata**: Retrieve metadata for a specific document
    - Document information and processing status
    - Metadata and indexing details
  - **List datastores**: Retrieve a list of all datastores in your account
    - View datastore details and configuration
    - Check datastore status and document counts

  ### Query
  - **Query agent**: Query existing Contextual AI agents with intelligent retrieval
    - Natural language querying capabilities
    - Optional retrieval-only mode
    - Document readiness checking
    - Contextual response generation
    - Retrieval content inclusion

  ### Parser  
  - **Parse document**: Parse documents using Contextual AI's advanced document parser
    - Support for PDF, DOC/DOCX, PPT/PPTX files
    - Configurable parsing modes (standard)
    - Figure caption extraction (concise/detailed)
    - Document hierarchy preservation
    - Page range selection
    - Returns job ID for status monitoring
  - **Parse status**: Check the status of a document parsing job
    - Monitor parsing progress
    - Retrieve parsed results when completed
    - Track job status and file information
  - **Parse result**: Get the results of a completed parse job
    - Retrieve parsed content in multiple formats (markdown-document, markdown-per-page, blocks-per-page)
    - Access document metadata and hierarchy information
    - Get structured content blocks with confidence levels and bounding boxes

  ### Reranker
  - **Rerank documents**: Rank documents according to their relevance to a query
    - Instruction-following reranker technology
    - Custom instruction support
    - Metadata integration
    - Relevance scoring and ranking

  ### LMUnit
  - **Run LMUnit**: Evaluate model responses using Contextual AI's scoring system
    - Automated response evaluation
    - Custom unit test criteria
    - Scoring from 1-5 scale
    - Quality assessment and validation

  ### AI Tools Integration

  All Contextual AI node operations can be combined with n8n's AI tools to create powerful workflows.
  For example, you can ingest documents into a datastore, create an agent from that information, and then query over the documents for grounded responses and citations.

  ## Credentials

  This node requires a Contextual AI API key for authentication.

  ### Prerequisites
  - Sign up for a free trial of Contextual AI account at [app.contextual.ai](https://app.contextual.ai)
  - Obtain your API key from the Contextual AI dashboard

  ### Setup
  1. In n8n, go to **Credentials**
  2. Add a new **"Contextual AI API"** credential
  3. Enter your API key in the **API Key** field
  4. Optionally add a **Name** for easy identification
  5. Click **Save** to store the credential

  ### Authentication Methods

  The node supports API key authentication:
  - **API Key**: Configure your Contextual AI API key in the n8n credentials section under `ContextualAiApi`
  - **Security**: API keys are securely stored and encrypted in n8n's credential system

  ## Compatibility

  This node has been tested with n8n version 1.57.0 and is compatible with:

  - **n8n version**: 1.0.0 or later
  - **Node.js version**: 20.15 or later
  - **Contextual AI API**: Latest version

  ## Usage

  ### Getting Started

  1. **Set up credentials**: Configure your Contextual AI API key in n8n credentials
  2. **Create a workflow**: Start a new workflow in n8n
  3. **Add the Contextual AI node**: Insert the Contextual AI node into your workflow
  4. **Select an operation**: Choose the desired operation for your use case
  5. **Execute the workflow**: Run the workflow to perform the Contextual AI operation

  ### Creating an Agent with Documents

  1. Add the Contextual AI node to your workflow
  2. Select **"Agent"** as the resource and **"Create agent"** as the operation
  3. Configure your agent settings:
     - **Agent Name**: Give your agent a descriptive name
     - **Description**: Provide a brief description of the agent's purpose
     - **Datastore Name**: Specify the datastore name for document storage
  4. Provide documents via binary data (supports multiple files)
  5. Configure document processing options if needed
  6. Execute to create the agent and upload documents

  ### Datastore Management

  1. **Create a datastore**:
     - Select **"Datastore"** as the resource and **"Create datastore"** as the operation
     - Enter a datastore name
     - Execute to create the datastore and receive the datastore ID

  2. **Upload documents**:
     - Select **"Ingest document"** as the operation
     - Provide the datastore ID and document files via binary data
     - Optionally add metadata as JSON
     - Execute to upload and process documents

  3. **Using data connectors (Optional)**:
     > **Note**: To use source connectors for your datastore, you need to configure them in the [Contextual AI platform](https://app.contextual.ai) first, then use that datastore in your n8n workflow.
     
     - **Step 1**: Configure connectors in the [Contextual AI platform](https://app.contextual.ai)
       - Go to Datastores → Create → Select "Third-Party Connection"
       - Choose your data source (Google Drive, SharePoint)
       - Authorize and select specific folders to sync
       - Wait for initial sync to complete (status shows "Synced" with green checkmark)
     - **Step 2**: Use the connector datastore in your n8n workflow
       - Copy the datastore ID from the platform
       - Use this ID when creating agents or querying in n8n
       - The datastore will automatically stay in sync with your source data
     - **Benefits**: No manual document uploads, automatic permissions enforcement, real-time data updates

  4. **Manage documents**:
     - Use **"List datastores"** to view all datastores
     - Use **"Get document metadata"** to retrieve specific document information

  ### Querying an Agent

  1. Select **"Query"** as the resource and **"Query agent"** as the operation
  2. Enter the **Agent ID** and your **Query**
  3. Configure query options:
     - Enable **retrieval-only mode** for document search without generation
     - Include **retrieval content text** for context
     - Set **document readiness** checking
  4. Execute to get the agent's response

  ### Document Reranking

  1. Select **"Reranker"** as the resource and **"Rerank documents"** as the operation
  2. Provide a **Query** and **comma-separated list of documents**
  3. Configure reranking options:
     - Add **custom instructions** for ranking criteria
     - Include **metadata** for enhanced ranking
  4. Execute to get ranked results with relevance scores

  ### Response Evaluation

  1. Select **"LMUnit"** as the resource and **"Run LMUnit"** as the operation
  2. Provide the required inputs:
     - **Original Query**: The question that was asked
     - **Model Response**: The response to evaluate
     - **Unit Test Criteria**: The criteria for evaluation
  3. Execute to get a score from 1-5 on the unit test

  ### Document Parsing

  1. Select **"Parser"** as the resource and **"Parse document"** as the operation
  2. Provide a document file via binary data
  3. Configure parsing options:
     - **Parse Mode**: Choose parsing mode (standard)
     - **Figure Caption Mode**: Choose caption extraction (concise/detailed)
     - **Enable Document Hierarchy**: Preserve document structure
     - **Page Range**: Specify pages to parse (e.g., "0-5")
  4. Execute to submit the parse job and receive a job ID
  5. Use **"Parse status"** operation with the job ID to monitor progress and retrieve results


  ### Advanced Workflow Examples

  - **Document Processing Pipeline**: Parse documents → Create datastore → Ingest documents → Create agent → Query agent
  - **Quality Assurance**: Query agent → Evaluate response with LMUnit
  - **Content Optimization**: Rerank documents → Parse top results → Create refined agent
  - **Batch Document Processing**: List datastores → Ingest multiple documents → Monitor processing status
  - **Agent Management**: List agents → Delete unused agents → Create new agents with updated documents

  ## Resources

  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Contextual AI Documentation](https://docs.contextual.ai)
  * [Contextual AI API Reference](https://docs.contextual.ai/api-reference)

  ## Troubleshooting

  ### Common issues

  1. **Authentication errors**
     - Verify your API key is correct and active
     - Check if your Contextual AI account has sufficient permissions
     - Ensure the API key hasn't expired

  2. **Agent Not Found**
     - Verify the agent ID format is correct
     - Check if the agent exists in your Contextual AI account
     - Ensure you have access to the agent

  3. **Document parsing failures**
     - Verify the document format is supported (PDF, DOC/DOCX, PPT/PPTX)
     - Check file size limits
     - Ensure the document isn't corrupted or password-protected

  4. **Query operation failures**
     - Verify the agent ID is correct
     - Check if the agent is ready (documents processed)
     - Review query format and parameters

  5. **Reranking errors**
     - Ensure documents are provided in the correct format
     - Check query and document content validity
     - Verify custom instructions are properly formatted

  6. **Parse job failures**
     - Verify the job ID format is correct (should be a UUID)
     - Check if the parse job exists and hasn't expired
     - Ensure the original document was valid and supported

  7. **Datastore operation failures**
     - Verify datastore ID format is correct (should be a UUID)
     - Check if the datastore exists in your account
     - Ensure you have proper permissions for the datastore

  ### Getting help

  If you encounter issues:
  1. Check the [Contextual AI API documentation](https://docs.contextual.ai/api-reference)
  2. Review the [n8n Community Nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  3. Open an issue in the [GitHub repository](https://github.com/contextual-ai/n8n-nodes-contextualai)

ai_documentation_summary:
  {"purpose":"This n8n community node enables enterprise-grade RAG (Retrieval-Augmented Generation) workflows by providing tools for agent management, document parsing, intelligent querying, document reranking, and model evaluation.","capabilities":["Create, list, and delete RAG agents","Create and manage datastores for document storage","Ingest and process multiple document formats (PDF, DOCX, PPTX, HTML)","Parse documents with configurable modes and hierarchy preservation","Query agents with natural language retrieval and contextual responses","Rerank documents based on relevance to queries","Evaluate model responses using automated scoring","Support for binary data uploads and batch processing"],"authentication":"API Key required (Contextual AI API key stored in n8n credentials)","commonUseCases":["Building enterprise RAG applications with document grounding","Automated document ingestion and indexing workflows","Intelligent document querying with citation support","Model evaluation and quality assessment pipelines"],"limitations":["Community node (self-hosted only, not included in n8n Cloud base plan)","Requires separate Contextual AI account and API key","Some advanced features may require paid Contextual AI tier"],"relatedNodes":["n8n-nodes-core.code","n8n-nodes-core.httpRequest","n8n-nodes-core.binary","n8n-nodes-core.waitUntil","n8n-nodes-core.splitInBatches"]}


node_type: n8n-nodes-vikunja.vikunjaTrigger
package_name: n8n-nodes-vikunja
display_name: Vikunja Trigger
description: Starts the workflow when Vikunja events occur
category: Productivity
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: kolaente
author_github_url: https://github.com/go-vikunja/n8n-vikunja-nodes.git
npm_package_name: n8n-nodes-vikunja
npm_version: 0.4.1
community_fetched_at: 2026-03-25T21:19:40.690Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-vikunja

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

  Vikunja is an open-source, self-hostable to-do and productivity application.
  Check out [our website](https://vikunja.io/) for more information.

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

  ## Installation

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

  ## Operations

  This node supports all operations supported by Vikunja API tokens.
  You can see a full list of possible actions when creating a token in Vikunja.

  It also allows you to trigger n8n workflows by Vikunja webhooks.

  ## Credentials

  The only supported authentication method for this node are API tokens.
  On your Vikunja instance, head over to *Settings > API Tokens* and create a new token.

  In n8n, create credentials as you usually would.
  Enter the API token created previously and the API url.

  ## Compatibility

  Tested with n8n Version 1.91.3.

  ## Development

  You need npm and NodeJS installed.

  * Install dependencies with `npm i`
  * Build the node with `npm run build`
  * Check for lint errors with `npm run lint` and fix them with `npm run lintfix`
  * To release a new version in the npm registry, run `npm publish`
  * To test the node, build the node with `npm run build`, then while in the project directory run `export N8N_CUSTOM_EXTENSIONS=$PWD` and start n8n with the `n8n` command. You should now be able to find the node when searching for it.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Vikunja n8n Docs](https://vikunja.io/docs/n8n)
  * [Vikunja General Docs](https://vikunja.io/docs/)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when Vikunja events occur and enables automation using Vikunja API tokens.","capabilities":["Trigger workflows on Vikunja events","Execute Vikunja API operations","Use Vikunja webhooks"],"authentication":"API token required (API URL and token)","commonUseCases":["Automate task management in Vikunja","Sync tasks between Vikunja and other services","Execute workflows upon task creation or updates"],"limitations":["Limited to Vikunja API token operations","Community node (not official n8n node)"],"relatedNodes":["Vikunja Task","Vikunja List","Vikunja User"]}


node_type: @virtuoussoftware/n8n-nodes-virtuous-crm.virtuousCrm
package_name: @virtuoussoftware/n8n-nodes-virtuous-crm
display_name: Virtuous CRM
description: Interact with the Virtuous CRM API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: cogitatorprimarch
author_github_url: https://github.com/VirtuousCRM/n8n-nodes-virtuous-crm.git
npm_package_name: @virtuoussoftware/n8n-nodes-virtuous-crm
npm_version: 0.1.3
community_fetched_at: 2026-03-25T21:19:40.691Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Gift",
          "value": "gift"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "singleContactTransaction",
      "options": [
        {
          "name": "Create Contact Transaction",
          "value": "singleContactTransaction",
          "action": "Create a contact that will go through the import process",
          "description": "Create a Contact that will go through the import process"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "singleGiftTransaction",
      "options": [
        {
          "name": "Create Gift Transaction",
          "value": "singleGiftTransaction",
          "action": "Create a gift that will go through the import process",
          "description": "Create a Gift that will go through the import process"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "gift"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"singleContactTransaction","name":"Create Contact Transaction","description":"Create a Contact that will go through the import process","resource":"contact"},{"operation":"singleGiftTransaction","name":"Create Gift Transaction","description":"Create a Gift that will go through the import process","resource":"gift"}]

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

  # n8n-nodes-virtuous-crm

  This is an n8n community node. It lets you use the [Virtuous CRM API](https://docs.virtuoussoftware.com/) in your n8n workflows.

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

  ## Table of Contents

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

  ## Installation

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

  ## Operations

  This node presently supports operations to create Contact and Gift Transactions:
  - [Create Contact Transaction](https://docs.virtuoussoftware.com/#0b27a920-243c-4f02-a5c3-6e522b926431)
  - [Create Gift Transaction](https://docs.virtuoussoftware.com/#e4a6a1e3-71a4-44f9-bd7c-9466996befac)

  ## Credentials

  An API Key is required to interact with the Virtuous node. Refer to the documentation for API Keys [here](https://docs.virtuoussoftware.com/#authentication)

  ## Compatibility

  Tested locally against n8n 1.115.3

  ## Usage

  The Contact and Gift Transactions allow users to send data to Virtuous CRM+ to create or update Contacts or Gifts. The creation of records is asynchronous and requires user input on CRM+, so responses will be limited only to headers and status codes. See resources for more information

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Virtuous CRM API Documentation](https://docs.virtuoussoftware.com/)
  * [Gifts Integration Best Practices](https://support.virtuous.org/hc/en-us/articles/21329138310285-Gifts-Integration-Best-Practices)
  * [Contacts Integration Best Practices](https://support.virtuous.org/hc/en-us/articles/21152926831501-Contacts-Integration-Best-Practices)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with the Virtuous CRM API for managing contacts and gift transactions.","capabilities":["Create Contact Transactions","Create Gift Transactions","Asynchronous record creation","API interaction with Virtuous CRM+"],"authentication":"API Key required","commonUseCases":["Automating contact onboarding in Virtuous CRM","Processing gift transactions via workflow automation","Integrating CRM data into marketing or sales workflows"],"limitations":["Record creation is asynchronous and requires manual user input on the Virtuous CRM+ platform","API responses are limited to headers and status codes only","Currently supports only Create operations for Contacts and Gifts"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Set"]}


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

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

operations:
  [{"operation":"createPart","name":"Create Autopart in Stock","description":"Create a new autopart","resource":"stock"},{"operation":"deletePart","name":"Delete Stock","description":"Delete an autopart by ID","resource":"stock"},{"operation":"getPart","name":"Get Autopart in Stock","description":"Get a specific autopart by ID","resource":"stock"},{"operation":"listParts","name":"List Stock","description":"List all available autoparts","resource":"stock"},{"operation":"updatePart","name":"Update Stock","description":"Update an existing autopart by ID","resource":"stock"},{"operation":"searchPart","name":"Search Autopart","description":"Retrieve details of a part","resource":"part"},{"operation":"partSpecs","name":"Part Specifications","description":"Retrieve specifications of a part","resource":"part"},{"operation":"searchPart","name":"Search Autopart","description":"Retrieve details of a part","resource":"part"},{"operation":"partSpecs","name":"Part Specifications","description":"Retrieve specifications of a part","resource":"part"},{"operation":"partQuotation","name":"Part Quotation","description":"Retrieve quotation details for a part","resource":"part"},{"operation":"vehicleByPlate","name":"Get Vehicle by Plate","description":"Retrieve vehicle description by plate number","resource":"vehicle"}]

npm_readme:
  # n8n-nodes-hubbi

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

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

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

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

  ## Installation

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

  ## Operations

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

  ## Credentials

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

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

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

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

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

  ## Compatibility

  This node is compatible with n8n version 1.93.0 and onwards.

  ## Resources

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with Hubbi, a B2B marketplace connecting corporate consumers with auto parts suppliers.","capabilities":["Retrieve detailed vehicle information by license plate","List stock inventory","Create stock entries","Update stock entries","Delete stock entries","Retrieve detailed technical specifications for auto parts","Search parts in Hubbi's catalog","Retrieve lowest quotations for auto parts"],"authentication":"API key required","commonUseCases":["Automating purchase order creation for auto parts","Tracking vehicle maintenance records via license plate lookup","Managing inventory levels for corporate auto parts suppliers"],"limitations":["Requires a separate Hubbi account and API keys","Compatible only with n8n version 1.93.0 and newer"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.set"]}


node_type: @notainc/n8n-nodes-gyazo.gyazo
package_name: @notainc/n8n-nodes-gyazo
display_name: Gyazo
description: Interact with Gyazo API for image list, get, search and upload operations
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mountainboooy
author_github_url: https://github.com/nota/n8n-nodes-gyazo.git
npm_package_name: @notainc/n8n-nodes-gyazo
npm_version: 0.3.3
community_fetched_at: 2026-03-25T21:19:40.692Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Image",
          "value": "image"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an image",
          "description": "Get a specific image by ID or URL"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List user images",
          "description": "Get a list of user's saved images"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for images",
          "description": "Search for images (Pro users only)"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an image attributes",
          "description": "Update image description and alt text"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload an image",
          "description": "Upload an image"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"get","name":"Get","description":"Get a specific image by ID or URL","resource":"image"},{"operation":"list","name":"List","description":"Get a list of user's saved images","resource":"image"},{"operation":"search","name":"Search","description":"Search for images (Pro users only)","resource":"image"},{"operation":"update","name":"Update","description":"Update image description and alt text","resource":"image"},{"operation":"upload","name":"Upload","description":"Upload an image","resource":"image"}]

npm_readme:
  # n8n Nodes - Gyazo integration

  This is an n8n community node that integrates [Gyazo](https://gyazo.com) with your n8n workflows, so you can run Gyazo operations, manage images, and automate image sharing tasks.

  [Gyazo](https://gyazo.com) serves an API platform for developers to capture, share, and manage screenshots and images, while [n8n](https://n8n.io) is a fair-code licensed tool for AI workflow automation that allows you to connect various services.

  ## Table of contents

  - [n8n Nodes - Gyazo integration](#n8n-nodes---gyazo-integration)
    - [Table of contents](#table-of-contents)
    - [Installation (self-hosted)](#installation-self-hosted)
    - [Installation on n8n cloud](#installation-on-n8n-cloud)
    - [Installation for development and contributing](#installation-for-development-and-contributing)
    - [Operations](#operations)
      - [Image Operations](#image-operations)
        - [List](#list)
        - [Get](#get)
        - [Search](#search)
        - [Upload](#upload)
        - [Update](#update)
    - [Credentials](#credentials)
      - [Setting up Gyazo API Access](#setting-up-gyazo-api-access)
      - [Configuring credentials in n8n](#configuring-credentials-in-n8n)
    - [Compatibility](#compatibility)
    - [Usage](#usage)
      - [Basic Image Upload Workflow](#basic-image-upload-workflow)
      - [Search and Process Images](#search-and-process-images)
    - [Resources](#resources)
    - [Release](#release)
      - [Publishing to npm](#publishing-to-npm)
    - [Version History](#version-history)
    - [Troubleshooting](#troubleshooting)
      - [Authentication Issues](#authentication-issues)
      - [Invalid Resource Format](#invalid-resource-format)
      - [Upload Issues](#upload-issues)
      - [Rate Limiting](#rate-limiting)
      - [Node Not Appearing](#node-not-appearing)
    - [License](#license)

  ## Installation (self-hosted)

  For self-hosted n8n instances, you can install this community node by following these steps:

  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Select **Install**
  3. Enter `@notainc/n8n-nodes-gyazo` in the npm Package Name field
  4. Agree to the risks of using community nodes: select **I understand the risks of installing unverified code from a public source**
  5. Select **Install**

  After installation restart n8n to register the community node.

  ## Installation on n8n cloud

  For n8n cloud users:

  1. Go to **Settings > Community Nodes** in your n8n cloud instance
  2. Select **Install**
  3. Enter `@notainc/n8n-nodes-gyazo` in the npm Package Name field
  4. Select **Install**

  n8n cloud will automatically restart and register the community node.

  ## Installation for development and contributing

  To install this node for development:

  1. Clone this repository:

     ```bash
     git clone https://github.com/nota/n8n-nodes-gyazo.git
     cd n8n-nodes-gyazo
     ```

  2. Install dependencies:

     ```bash
     npm install
     ```

  3. Build the node:

     ```bash
     npm run build
     ```

  4. Link the node locally:

     ```bash
     npm link
     ```

  5. Install the node into your local n8n instance:

     ```bash
     # In your n8n custom nodes directory (usually ~/.n8n/custom/)
     npm link @notainc/n8n-nodes-gyazo
     ```

  6. Start n8n:
     ```bash
     n8n start
     ```

  ## Operations

  The Gyazo node supports the **Image** resource.

  ### Image Operations

  #### List

  Get a list of user's saved images with pagination support.

  **Parameters:**

  - **Page** (optional): Page number for pagination (default: 1)
  - **Per Page** (optional): Number of results per page, max 100 (default: 20)

  **Example output:**

  ```json
  [
  	{
  		"image_id": "abc123def456789012345678901234ef",
  		"permalink_url": "https://gyazo.com/abc123def456789012345678901234ef",
  		"thumb_url": "https://thumb.gyazo.com/thumb/200/_abc123def456789012345678901234ef.png",
  		"url": "https://i.gyazo.com/abc123def456789012345678901234ef.png",
  		"type": "png",
  		"created_at": "2024-01-15T10:30:00+0000"
  	}
  ]
  ```

  #### Get

  Retrieve a specific image by ID or URL.

  **Parameters:**

  - **Image**: Resource locator supporting:
    - **By ID**: 32-character hexadecimal string (e.g., `abc123def456789012345678901234ef`)
    - **By URL**: Full Gyazo URL (e.g., `https://gyazo.com/abc123def456789012345678901234ef`)

  **Example output:**

  ```json
  {
  	"image_id": "abc123def456789012345678901234ef",
  	"type": "png",
  	"created_at": "2024-01-15T10:30:00+0000",
  	"permalink_url": "https://gyazo.com/abc123def456789012345678901234ef",
  	"thumb_url": "https://thumb.gyazo.com/thumb/200/_abc123def456789012345678901234ef.png",
  	"url": "https://i.gyazo.com/abc123def456789012345678901234ef.png",
  	"metadata": {
  		"app": "n8n",
  		"title": "Screenshot",
  		"desc": "Automated screenshot"
  	}
  }
  ```

  #### Search

  Search for images using a query string with pagination support (Pro users only).

  **Parameters:**

  - **Query** (required): Search query for images
  - **Page** (optional): Page number for pagination (default: 1)
  - **Per Page** (optional): Number of results per page, max 100 (default: 20)

  **Example usage:**

  - Query: `"workflow diagram"`
  - Results: Images matching the search term

  #### Upload

  Upload an image to Gyazo.

  **Parameters:**

  - **Image Binary** (required): Name of the binary property containing image data (default: `data`)
  - **App Name** (optional): Application name (default: `n8n`)
  - **Collection ID** (optional): Collection ID to add image to
  - **Description** (optional): Description for the image
  - **Referer URL** (optional): Referer site URL
  - **Title** (optional): Title for the image

  **Example output:**

  ```json
  {
  	"type": "png",
  	"thumb_url": "https://thumb.gyazo.com/thumb/200/_def456abc123789012345678901234ef.png",
  	"created_at": "2024-01-15T11:00:00+0000",
  	"image_id": "def456abc123789012345678901234ef",
  	"permalink_url": "https://gyazo.com/def456abc123789012345678901234ef",
  	"url": "https://i.gyazo.com/def456abc123789012345678901234ef.png"
  }
  ```

  #### Update

  Update an existing image's description and alt text.

  **Parameters:**

  - **Image**: Resource locator supporting:
    - **By ID**: 32-character hexadecimal string (e.g., `abc123def456789012345678901234ef`)
    - **By URL**: Full Gyazo URL (e.g., `https://gyazo.com/abc123def456789012345678901234ef`)
  - **Description** (optional): Description for the image
  - **Alt Text** (optional): Alternative text for the image

  **Example output:**

  ```json
  {
  	"image_id": "abc123def456789012345678901234ef",
  	"type": "png",
  	"created_at": "2024-01-15T10:30:00+0000",
  	"permalink_url": "https://gyazo.com/abc123def456789012345678901234ef",
  	"thumb_url": "https://thumb.gyazo.com/thumb/200/_abc123def456789012345678901234ef.png",
  	"url": "https://i.gyazo.com/abc123def456789012345678901234ef.png",
  	"metadata": {
  		"app": "n8n",
  		"title": "Screenshot",
  		"desc": "Updated description",
  		"alt_text": "Updated alt text"
  	}
  }
  ```

  ## Credentials

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

  ### Setting up Gyazo API Access

  1. **Create a Gyazo account** at [gyazo.com](https://gyazo.com) if you don't have one
  2. **Register an application**:
     - Go to [Gyazo API Applications](https://gyazo.com/oauth/applications)
     - Click "Register new application"
     - Fill in your application details
  3. **Generate an access token**:
     - Use the OAuth flow or generate a personal access token

  ### Configuring credentials in n8n

  1. In your n8n workflow, add the Gyazo node
  2. Click on the credential dropdown and select "Create New"
  3. Choose "Gyazo API" from the credential types
  4. Enter your **Access Token** in the provided field
  5. Click "Save" to store the credentials

  The node will automatically use Bearer token authentication for all API requests.

  ## Compatibility

  This node is compatible with:

  - **n8n version**: 1.0.0 and above
  - **Node.js version**: 22.0.0 and above

  ## Usage

  ### Basic Image Upload Workflow

  1. **Add a trigger node** (e.g., Manual Trigger, Webhook)
  2. **Add the Gyazo node**:
     - Set Resource to "Image"
     - Set Operation to "Upload"
     - Configure the binary property name (default: "data")
  3. **Configure credentials** with your Gyazo API access token
  4. **Execute the workflow**

  ### Search and Process Images

  1. **Add the Gyazo node**:
     - Set Resource to "Image"
     - Set Operation to "Search"
     - Enter your search query
  2. **Process results** with additional nodes (e.g., filter, transform)
  3. **Use image URLs** in subsequent workflow steps

  ## Resources

  - [Gyazo API Documentation](https://gyazo.com/api/docs)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Creating Nodes Documentation](https://docs.n8n.io/integrations/creating-nodes/)

  ## Release

  This package follows semantic versioning. Current version: **0.3.3**

  ### Publishing to npm

  To publish a new version:

  1. Update the version in `package.json`
  2. Run `npm run build` to compile the TypeScript
  3. Run `npm run lint` to ensure code quality
  4. Run `npm publish` to publish to npm registry

  ## Version History

  - **0.3.3** - Removed requestDefaults from node definition
  - **0.3.2** - Fixed versioning issue in package.json
  - **0.3.1** - Unified node styles into the programmatic
  - **0.3.0** - Support updating image description and alt text, improved error handling
  - **0.2.0** - Removed support for collection operations, added Pro user restrictions for search
  - **0.1.0** - Initial release with image and collection operations

  ## Troubleshooting

  ### Authentication Issues

  **Problem**: "Unauthorized" or "Invalid access token" errors

  **Solution**:

  - Verify your access token is correct and hasn't expired
  - Ensure your Gyazo application has the necessary scopes

  ### Invalid Resource Format

  **Problem**: "Invalid Image ID format" or "Invalid Gyazo URL format" errors

  **Solution**:

  - Image IDs must be 32-character hexadecimal strings
  - Gyazo URLs must follow the format: `https://gyazo.com/{image_id}`

  ### Upload Issues

  **Problem**: Image upload fails or returns errors

  **Solution**:

  - Ensure the binary property contains valid image data
  - Check that the binary property name matches the configured parameter
  - Verify the image format is supported by Gyazo (PNG, JPEG, GIF)

  ### Rate Limiting

  **Problem**: "Too Many Requests" errors

  **Solution**:

  - Implement delays between requests using n8n's Wait node
  - Reduce the number of concurrent requests
  - Check Gyazo API rate limits in their documentation

  ### Node Not Appearing

  **Problem**: Gyazo node doesn't appear in n8n after installation

  **Solution**:

  - Restart your n8n instance after installing the community node
  - Check that the installation completed successfully
  - Verify the node appears in Settings > Community Nodes

  For additional support, please check the [GitHub repository](https://github.com/nota/n8n-nodes-gyazo) or refer to the [Gyazo API documentation](https://gyazo.com/api/docs).

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of Gyazo API operations, allowing users to capture, share, manage, and search for screenshots and images within n8n workflows.","capabilities":["List user's saved images with pagination","Retrieve specific images by ID or URL","Search images using query strings (Pro users only)","Upload images to Gyazo with metadata options","Update existing image descriptions and alt text","Support for binary image data","Pagination support for list and search operations"],"authentication":"API key required (configured via Gyazo credentials in n8n)","commonUseCases":["Automate screenshot capture and sharing","Manage and organize image collections","Search and filter images based on content","Integrate image workflows with other automation tools"],"limitations":["Search functionality requires Gyazo Pro subscription","Self-hosted installation requires manual npm package installation","Node is a community node and may have limited support"],"relatedNodes":["HTTP Request","Binary File","Code","Wait Until"]}


node_type: @datafix/n8n-nodes-anthias.anthias
package_name: @datafix/n8n-nodes-anthias
display_name: Anthias
description: Node for controlling Anthias deployments with the Anthias API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: bramknuever
author_github_url: https://github.com/DataFix-B-V/n8n-nodes-anthias.git
npm_package_name: @datafix/n8n-nodes-anthias
npm_version: 0.1.3
community_fetched_at: 2026-03-25T21:19:40.693Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "asset",
      "options": [
        {
          "name": "Asset",
          "value": "asset"
        },
        {
          "name": "Device",
          "value": "device"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllAssets",
      "options": [
        {
          "name": "Control Asset Playback",
          "value": "controlAssetPlayback",
          "action": "Control asset playback"
        },
        {
          "name": "Create Asset",
          "value": "createAsset",
          "action": "Create an asset"
        },
        {
          "name": "Delete Asset",
          "value": "deleteAsset",
          "action": "Delete an asset"
        },
        {
          "name": "Get All Assets",
          "value": "getAllAssets",
          "action": "Get all assets"
        },
        {
          "name": "Get Asset",
          "value": "getAsset",
          "action": "Get an asset"
        },
        {
          "name": "Get Asset Content",
          "value": "getAssetContent",
          "action": "Get asset content"
        },
        {
          "name": "Update Asset",
          "value": "updateAsset",
          "action": "Update an asset"
        },
        {
          "name": "Update Playlist Order",
          "value": "updatePlaylistOrder",
          "action": "Update playlist order"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "asset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDeviceSettings",
      "options": [
        {
          "name": "Get Device Settings",
          "value": "getDeviceSettings",
          "action": "Get device settings"
        },
        {
          "name": "Get Integrations Information",
          "value": "getIntegrationsInformation",
          "action": "Get integrations information"
        },
        {
          "name": "Get System Information",
          "value": "getSystemInfo",
          "action": "Get system information"
        },
        {
          "name": "Reboot Device",
          "value": "rebootDevice",
          "action": "Reboot device"
        },
        {
          "name": "Shutdown Device",
          "value": "shutdownDevice",
          "action": "Shutdown device"
        },
        {
          "name": "Update Device Settings",
          "value": "updateDeviceSettings",
          "action": "Update device settings"
        }
      ],
      "displayName": "Operation",
      "placeholder": "Select operation",
      "displayOptions": {
        "show": {
          "resource": [
            "device"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"controlAssetPlayback","name":"Control Asset Playback","resource":"asset"},{"operation":"createAsset","name":"Create Asset","resource":"asset"},{"operation":"deleteAsset","name":"Delete Asset","resource":"asset"},{"operation":"getAllAssets","name":"Get All Assets","resource":"asset"},{"operation":"getAsset","name":"Get Asset","resource":"asset"},{"operation":"getAssetContent","name":"Get Asset Content","resource":"asset"},{"operation":"updateAsset","name":"Update Asset","resource":"asset"},{"operation":"updatePlaylistOrder","name":"Update Playlist Order","resource":"asset"},{"operation":"getDeviceSettings","name":"Get Device Settings","resource":"device"},{"operation":"getIntegrationsInformation","name":"Get Integrations Information","resource":"device"},{"operation":"getSystemInfo","name":"Get System Information","resource":"device"},{"operation":"rebootDevice","name":"Reboot Device","resource":"device"},{"operation":"shutdownDevice","name":"Shutdown Device","resource":"device"},{"operation":"updateDeviceSettings","name":"Update Device Settings","resource":"device"}]

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

  # n8n-nodes-anthias

  This is a custom node for n8n, a powerful workflow automation tool. It provides a simple way to connect your n8n workflows with the Anthias, a digital signage platform. By using this node, you can automate tasks related to your digital displays, content management, and player controls.

  ## What can you do with this node?
  The n8n-nodes-anthias node acts as a bridge between n8n and the Anthias API. It includes features like:

  - Retrieve information about your screens and players.
  - Update content on a display.
  - Change the schedule for a screen.
  - Trigger actions on a player, such as a reboot or a content refresh.

  ## Developer
  ![logo](https://github.com/datafix-b-v/n8n-nodes-anthias/blob/master/images/logoDataFix.png)

  This node was created by [DataFix B.V.](https://datafix.nl), a n8n expert partner from the Netherlands.

  DataFix supports companies with their implementation of n8n, including node development. If you want to use our services, feel free to reach out. You can contact us through our [site](https://datafix.nl) or by emailing hi@datafix.nl

  ## More information

  Refer to the [documentation on installing nodes](https://docs.n8n.io/integrations/community-nodes/installation/) for detailed information on installing custom nodes.

  Refer to the [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/) for detailed information on building your own nodes.

  ## License

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

ai_documentation_summary:
  {"purpose":"This n8n node enables automation of Anthias digital signage deployments by connecting n8n workflows to the Anthias API for managing screens, players, and content.","capabilities":["Retrieve screen and player information","Update content on displays","Modify screen schedules","Trigger player actions (reboot, content refresh)"],"authentication":"API key required (implied by 'Anthias API' reference, specific method not detailed in README)","commonUseCases":["Automating digital signage content updates","Managing player reboots via workflow triggers","Scheduling display content changes"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-gatus-trigger.gatusTrigger
package_name: n8n-nodes-gatus-trigger
display_name: Gatus Trigger
description: Receives webhook alerts from Gatus monitoring system
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: twin.sh
author_github_url: https://github.com/TwiN/
npm_package_name: n8n-nodes-gatus-trigger
npm_version: 1.0.4
community_fetched_at: 2026-03-25T21:19:40.744Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-gatus-trigger
  [![npm package version](https://img.shields.io/npm/v/n8n-nodes-gatus-trigger)](https://www.npmjs.com/package/n8n-nodes-gatus-trigger)

  This is a n8n community node that lets you receive webhook alerts from [Gatus](https://github.com/TwiN/gatus), a developer-oriented health monitoring and status page system.


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

  ### npm

  ```bash
  npm install n8n-nodes-gatus-trigger
  ```

  ### n8n Cloud
  For n8n cloud users, follow the [n8n Cloud installation guide](https://docs.n8n.io/integrations/community-nodes/installation/gui-install/).

  ## Operations
  This node provides a single trigger operation:

  - **Webhook Trigger**: Receives HTTP POST webhooks from Gatus when alerts are triggered or resolved

  ## Configuring Gatus
  To send alerts to this n8n trigger node, configure Gatus to use the n8n alerting provider:

  ### 1. Get Your Webhook URL
  After adding the Gatus Trigger node to your n8n workflow:
  1. Click "Listen for Test Event" to get the test webhook URL
  2. Once your workflow is activated, use the Production webhook URL

  ### 2. Configure Gatus
  Add the following to your Gatus configuration file (`config.yaml`):

  ```yaml
  alerting:
    n8n:
      webhook-url: "https://your-n8n-instance.com/webhook/your-webhook-path"
    default-alert:
      send-on-resolved: true 

  endpoints:
    - name: example-api
      url: "https://api.example.com/health"
      interval: 1m
      conditions:
        - "[STATUS] == 200"
      alerts:
        - type: n8n
          description: "API health check failed"
  ```

  ### Gatus Webhook Payload Structure
  Gatus automatically sends webhooks with the following JSON structure (based on the [official n8n provider implementation](https://github.com/TwiN/gatus/blob/master/alerting/provider/n8n/n8n.go)):

  - `title`: Title of the alert (configurable in Gatus, defaults to "Gatus")
  - `endpoint_name`: Name of the monitored endpoint
  - `endpoint_group`: Group the endpoint belongs to (optional)
  - `endpoint_url`: URL being monitored
  - `alert_description`: Description from your alert configuration (optional)
  - `resolved`: Boolean - `true` if alert is resolved, `false` if triggered
  - `message`: Auto-generated message describing the alert
  - `condition_results`: Array of condition check results (optional)

  **Note:** You typically don't need to customize the payload - Gatus sends the correct structure automatically. However, if you need to customize the title, you can configure it in your Gatus config:

  ```yaml
  alerting:
    n8n:
      webhook-url: "https://your-n8n-instance.com/webhook/your-webhook-path"
      title: "Production Monitoring"  # Optional: customize the title
  ```

  ## Node Parameters

  ### Path
  - **Optional**: Custom webhook path
  - **Default**: Auto-generated
  - Leave empty to use an automatically generated webhook path, or specify a custom path for easier management

  ### Options

  #### Alert Type Filter
  - **All**: Receive both triggered and resolved alerts (default)
  - **Triggered Only**: Only receive alerts when endpoints fail
  - **Resolved Only**: Only receive alerts when endpoints recover

  #### Endpoint Group Filter
  - Filter alerts by endpoint group
  - Leave empty to receive alerts from all groups
  - Example: Set to "production" to only receive alerts for production endpoints

  #### Endpoint Name Filter
  - Filter alerts by endpoint name
  - Leave empty to receive alerts from all endpoints
  - Example: Set to "api-server" to only receive alerts for that specific endpoint

  ## Example Workflows

  ### Basic Alert Notification

  ```
  Gatus Trigger → Send Email
  ```

  Send an email whenever a Gatus alert is triggered.

  ### Conditional Response Based on Alert Type

  ```
  Gatus Trigger → IF Node → Send Slack Message / Log to Database
  ```

  Send Slack notifications for triggered alerts and log resolved alerts to a database.

  ### Alert Management

  ```
  Gatus Trigger → Set Variables → HTTP Request → Update Dashboard
  ```

  Process the alert data and update an external monitoring dashboard.

  ## Output Data

  The trigger node outputs the following data structure:

  ```json
  {
    "title": "Gatus",
    "endpoint_name": "api-server",
    "endpoint_group": "production",
    "endpoint_url": "https://api.example.com/health",
    "alert_description": "API health check failed",
    "resolved": false,
    "message": "An alert for api-server has been triggered due to having failed 3 time(s) in a row",
    "condition_results": [
      {
        "condition": "[STATUS] == 200",
        "success": false
      },
      {
        "condition": "[RESPONSE_TIME] < 500",
        "success": true
      }
    ]
  }
  ```

  ### Field Descriptions

  - **title**: The configured title from Gatus (defaults to "Gatus")
  - **endpoint_name**: Name of the endpoint that triggered the alert
  - **endpoint_group**: Optional group classification
  - **endpoint_url**: The URL being monitored
  - **alert_description**: Custom description from your Gatus alert configuration
  - **resolved**: `true` when an alert is resolved, `false` when triggered
  - **message**: Human-readable message generated by Gatus
  - **condition_results**: Array of all condition checks with their results

  ## Development

  ### Setup

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Link for local development
  npm link
  cd ~/.n8n/nodes
  npm link n8n-nodes-gatus-trigger
  ```

  ### Testing

  To test the node locally:

  1. Start n8n with `n8n start`
  2. Add the Gatus Trigger node to a workflow
  3. Click "Listen for Test Event"
  4. Send a test webhook using curl:

  ```bash
  curl -X POST https://your-n8n-instance.com/webhook/your-webhook-path \
    -H "Content-Type: application/json" \
    -d '{
      "title": "Gatus",
      "endpoint_name": "test-api",
      "endpoint_group": "test",
      "endpoint_url": "https://test.example.com",
      "alert_description": "Test alert",
      "resolved": false,
      "message": "An alert for test-api has been triggered due to having failed 3 time(s) in a row",
      "condition_results": [
        {
          "condition": "[STATUS] == 200",
          "success": false
        }
      ]
    }'
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Gatus documentation](https://gatus.io/docs/)
  - [Gatus GitHub repository](https://github.com/TwiN/gatus)
  - [Gatus alerting configuration](https://gatus.io/docs/alerting-getting-started)

ai_documentation_summary:
  {"purpose":"Receives webhook alerts from the Gatus monitoring system when endpoints fail or recover, enabling automated responses to infrastructure health events.","capabilities":["Receives HTTP POST webhooks from Gatus for triggered alerts","Receives HTTP POST webhooks from Gatus for resolved alerts","Filters alerts by alert type (All, Triggered Only, Resolved Only)","Filters alerts by endpoint group","Filters alerts by endpoint name","Outputs structured JSON data including alert details and condition results","Supports custom webhook path configuration"],"authentication":"None","commonUseCases":["Send email notifications when services go down","Trigger Slack messages for critical infrastructure failures","Update external monitoring dashboards with real-time status","Log resolved alerts to a database for historical tracking","Automatically restart failed services via HTTP requests"],"limitations":["Requires Gatus to be configured with the n8n alerting provider","Does not support authentication between Gatus and n8n","Webhook payload structure is fixed and may not match all custom Gatus configurations","Only supports basic filtering options (alert type, endpoint group, endpoint name)"],"relatedNodes":["Gatus","HTTP Request","IF","Send Email","Send Slack"]}


node_type: @meistrari/n8n-nodes-tela.tela
package_name: @meistrari/n8n-nodes-tela
display_name: Tela
description: Integrates with Tela to run AI-driven workflows and automation tasks
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: 0xthierry
author_github_url: https://github.com/meistrari/n8n-nodes-tela.git
npm_package_name: @meistrari/n8n-nodes-tela
npm_version: 1.5.0
community_fetched_at: 2026-03-25T21:19:40.745Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "canvas",
      "options": [
        {
          "name": "Canvas",
          "value": "canvas"
        }
      ],
      "description": "The resource to operate on",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute a canvas",
          "description": "Execute a canvas with variables"
        },
        {
          "name": "Execute Workstation",
          "value": "executeWorkstation",
          "action": "Execute workstation task",
          "description": "Create a task in the workstation dashboard"
        },
        {
          "name": "Get Completion",
          "value": "getCompletion",
          "action": "Get completion status",
          "description": "Get the result of an async completion"
        }
      ],
      "description": "The operation to perform",
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "canvas"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"execute","name":"Execute","description":"Execute a canvas with variables","resource":"canvas"},{"operation":"executeWorkstation","name":"Execute Workstation","description":"Create a task in the workstation dashboard","resource":"canvas"},{"operation":"getCompletion","name":"Get Completion","description":"Get the result of an async completion","resource":"canvas"}]

npm_readme:
  # n8n-nodes-tela

  This is an n8n community node that provides seamless integration with the Tela API. It allows you to interact with Tela projects and canvases in your n8n workflows, enabling dynamic content generation and workflow automation.

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

  ## TL;DR

  Don't want to read? Import the sample workflow **"Tela Canvas Execution with Dynamic Variables"** to test this node with real Tela API integration.

  ## What This Node Does

  The Tela node enables you to:

  - **Execute Tela Canvases**: Run AI-powered canvases with dynamic variables and get results
  - **Dynamic Variable Handling**: Automatically detect and configure canvas variables
  - **File Upload Support**: Handle file uploads for canvas processing
  - **Project Management**: List and manage Tela projects and their canvases
  - **Workflow Integration**: Seamlessly integrate Tela AI workflows into your n8n automation

  ## Installation

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@meistrari/n8n-nodes-tela` as the package name
  4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes
  5. Select **Install**

  ### Manual Installation

  For self-hosted n8n instances:

  ```bash
  npm install @meistrari/n8n-nodes-tela
  ```

  For Docker installations, follow the [custom nodes guide](https://docs.n8n.io/integrations/creating-nodes/deploy/install-private-nodes/).

  ## Configuration

  ### 1. Create Tela API Credentials

  1. Create a new credential of type **"Tela API"**
  2. Enter your Tela API key (find this in your [Tela dashboard](https://app.tela.com))
  3. Test the connection to verify it works

  ### 2. Configure the Node

  1. **Project**: Select the project containing your canvas
  2. **Canvas**: Choose the specific canvas to execute
  3. **Variables**: Configure dynamic fields based on your canvas configuration

  ## Operations

  ### Execute Canvas

  The main operation that runs your Tela canvas with the specified variables and returns the AI-generated results.

  **Parameters:**

  | Field              | Type    | Required | Description                                                                 |
  | ------------------ | ------- | -------- | --------------------------------------------------------------------------- |
  | **Project**        | Options | Yes      | Select the project containing your canvas                                   |
  | **Canvas**         | Options | Yes      | Select the canvas to execute                                                |
  | **Variables**      | Collection | No    | Dynamic fields based on your canvas configuration                           |
  | **Async Execution** | Boolean | No      | When enabled, returns immediately with completion ID instead of waiting     |

  **Use Cases:**

  - Generate dynamic content for emails
  - Create personalized marketing materials
  - Process documents with AI assistance
  - Generate reports based on input data

  ### Execute Workstation

  Create a task in the Tela Workstation dashboard. Tasks are visible in the Tela web interface and can be reviewed, approved, or processed manually.

  **Parameters:**

  | Field         | Type       | Required | Description                                       |
  | ------------- | ---------- | -------- | ------------------------------------------------- |
  | **Project**   | Options    | Yes      | Select the project containing your canvas         |
  | **Canvas**    | Options    | Yes      | Select the canvas to execute                      |
  | **Label**     | String     | No       | Optional label for the workstation task           |
  | **Variables** | Collection | No       | Dynamic fields based on your canvas configuration |

  **Response:**

  - Returns the full API response object

  **Use Cases:**

  - Create tasks for human review in Tela dashboard
  - Queue AI-generated content for approval workflows
  - Build hybrid human-AI pipelines with manual checkpoints

  ### Get Completion

  Retrieve the result of an async canvas execution. Use this operation to poll for completion status when using async execution.

  **Parameters:**

  | Field            | Type   | Required | Description                              |
  | ---------------- | ------ | -------- | ---------------------------------------- |
  | **Completion ID** | String | Yes      | The ID returned from async execution     |

  **Response:**

  - Returns the full API response object with `id`, `status`, and `outputContent`

  **Use Cases:**

  - Poll for long-running canvas executions
  - Build async workflows with wait loops
  - Handle high-latency AI processing without timeouts

  ## Node Reference

  ### Credentials

  | Field       | Description                           |
  | ----------- | ------------------------------------- |
  | **API Key** | Your Tela API key from your dashboard |

  ### Parameters

  | Field         | Type       | Required | Description                                       |
  | ------------- | ---------- | -------- | ------------------------------------------------- |
  | **Project**   | Options    | Yes      | Select the project containing your canvas         |
  | **Canvas**    | Options    | Yes      | Select the canvas to execute                      |
  | **Variables** | Collection | No       | Dynamic fields based on your canvas configuration |

  ## Usage Examples

  ### Example 1: Basic Canvas Execution

  **Input Data:**

  ```json
  {
    "customerName": "John Doe",
    "productType": "Premium Subscription",
    "monthlyAmount": 99.99
  }
  ```

  **Canvas Variables:**

  - `customer_name`: John Doe
  - `product_type`: Premium Subscription
  - `monthly_amount`: 99.99

  **Result:** AI-generated personalized content based on your canvas configuration.

  ### Example 2: File Processing

  **Input Data:**

  ```json
  {
    "document": "binary_file_data",
    "processingType": "summarize"
  }
  ```

  **Canvas Variables:**

  - `document`: [File upload]
  - `processing_type`: summarize

  **Result:** AI-processed document with summary or analysis.

  ### Example 3: Dynamic Content Generation

  **Input Data:**

  ```json
  {
    "industry": "Technology",
    "companySize": "100-500 employees",
    "challenge": "Digital transformation"
  }
  ```

  **Canvas Variables:**

  - `industry`: Technology
  - `company_size`: 100-500 employees
  - `challenge`: Digital transformation

  **Result:** Tailored content addressing specific business challenges.

  ## Sample Workflows

  ### Workflow 1: Automated Customer Onboarding

  1. **Webhook** receives new customer signup
  2. **Tela** generates personalized welcome email
  3. **Send Email** delivers the generated content

  ### Workflow 2: Document Processing Pipeline

  1. **File Upload** receives document
  2. **Tela** processes and analyzes document
  3. **Database** stores processed results
  4. **Notification** sends completion alert

  ### Workflow 3: Marketing Campaign Generator

  1. **CRM** provides customer segments
  2. **Tela** generates personalized campaigns
  3. **Marketing Platform** deploys campaigns
  4. **Analytics** tracks performance

  ## Advanced Features

  ### Dynamic Variable Detection

  The node automatically detects canvas variables and their types:

  - **Text variables**: Standard string inputs
  - **File variables**: Automatic file upload handling
  - **Required fields**: Clearly marked in the interface

  ### Smart File Handling

  - Supports multiple file formats
  - Automatic MIME type detection
  - Secure file upload to Tela servers
  - Binary data processing from n8n workflows

  ### Load Options

  - **Projects**: Dynamically loads available projects
  - **Canvases**: Loads canvases based on selected project
  - **Variables**: Auto-populates variable fields based on canvas

  ## Compatibility

  - **n8n Version**: 0.174.0 or later
  - **Node.js**: 18.0.0 or later
  - **npm**: 8.0.0 or later
  - **Platforms**: n8n Cloud, Self-hosted instances

  ## Troubleshooting

  ### Common Issues

  1. **API Key Invalid**

     - Verify your Tela API key is correct
     - Check if the key has expired
     - Ensure proper permissions

  2. **Project Not Loading**

     - Verify API key has access to projects
     - Check Tela API status
     - Refresh credentials

  3. **Canvas Execution Fails**
     - Verify all required variables are set
     - Check canvas configuration in Tela
     - Review API response for error details

  ### Error Messages

  - `Failed to load projects`: Check API key and permissions
  - `Failed to load canvases`: Verify project ID and access
  - `Failed to execute canvas`: Review variable configuration

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Tela API Documentation](https://docs.tela.com)
  - [n8n Workflow Automation](https://n8n.io)
  - [Community Support](https://community.n8n.io)

  ## Support

  ### Getting Help

  - **GitHub Issues**: [Report bugs and request features](https://github.com/meistrari/n8n-nodes-tela/issues)
  - **n8n Community**: [Ask questions in the community](https://community.n8n.io)
  - **Documentation**: [Check the comprehensive docs](https://docs.n8n.io)

  ## Development

  ### Local Development

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

  # Install dependencies
  npm install

  # Build the project
  npm run build

  # Link locally for testing
  npm link
  ```

  ### Testing

  ```bash
  # Run tests
  npm test

  # Build and test
  npm run build && npm test
  ```

  ## Changelog

  ### Version 1.5.0

  **Improved Binary File Handling**

  #### Improvements

  - **Uses n8n's official helper**: Now uses `helpers.getBinaryDataBuffer()` instead of directly accessing binary data, which works correctly in all n8n storage modes (memory, filesystem, S3)
  - **Any variable can receive files**: Removed type validation - binary files can now be sent to any canvas variable, not just `file` type variables. Tela will automatically parse text content from files when needed
  - **Simplified binary detection**: Cleaner logic with 3 clear cases:
    1. String with binary field name (e.g., `"data"`)
    2. Binary object passed directly (e.g., `{{ $binary.data }}`)
    3. Fallback to first available binary when value is empty
  - **Removed unnecessary API call**: No longer fetches canvas variable definitions just to check types

  #### Migration Guide

  No breaking changes - all existing workflows continue to work. The only difference is:
  - Variables with `type: text` can now receive binary files (previously only `type: file` variables could)

  ### Version 1.4.0

  **BREAKING CHANGE: Simplified API Response Handling**

  All operations now return the raw API response directly instead of formatted/transformed data.

  #### Breaking Changes

  - **Execute Canvas**: Now returns the full `CompletionResponse` object from the API
    - Before: `data.choices[0].message?.content` (sync) or `{ id, status }` (async)
    - After: Full API response object

  - **Execute Workstation**: Now returns the full API response
    - Before: `{ status: "created" }`
    - After: Full `CompletionResponse` object from the API

  - **Get Completion**: Now returns the full API response
    - Before: `{ status, ...outputContent }` (succeeded) or `{ status }` (pending)
    - After: Full `GetCompletionResponse` object with `id`, `status`, and `outputContent`

  #### Migration Guide

  If your workflows depend on the previous response format, you'll need to update your expressions:

  ```
  # Execute Canvas (sync) - accessing content
  Before: {{ $json.fieldName }}
  After:  {{ $json.choices[0].message.content.fieldName }}

  # Execute Canvas (async) - accessing id/status
  Before: {{ $json.id }}
  After:  {{ $json.id }}  (no change needed)

  # Get Completion - accessing output content
  Before: {{ $json.fieldName }}
  After:  {{ $json.outputContent.content.fieldName }}
  ```

  #### Why This Change?

  - Provides full API response data for advanced use cases
  - Eliminates data loss from response transformation
  - Gives users complete control over how to process the response
  - Simplifies codebase maintenance

  ### Version 1.2.0

  **New Features: Async Execution, Completion Polling & Workstation Integration**

  #### New Operations
  - **Execute Workstation**: Create tasks in the Tela Workstation dashboard
    - Tasks are visible in the Tela web interface for review and approval
    - Supports optional `label` field for task identification
    - Automatically fetches `application_id` from the canvas
    - Returns `{ status: "created" }` on success

  - **Get Completion**: Retrieve the result of an async canvas execution
    - Accepts a `completionId` parameter
    - Returns `{ status, ...content }` when succeeded
    - Returns `{ status }` when still processing (for polling workflows)

  #### Execute Canvas Enhancements
  - **Async Execution**: New toggle to execute canvases asynchronously
    - When enabled, returns immediately with `{ id, status }` instead of waiting for completion
    - Ideal for long-running AI tasks that may exceed timeout limits
    - Enables building polling workflows with Wait + If nodes

  #### Use Case: Async Workflow Pattern
  ```
  1. [Tela: Execute Canvas] (Async: ON) → { id: "abc-123", status: "pending" }
  2. [Wait] → 5 seconds
  3. [Tela: Get Completion] (ID: {{ $json.id }}) → { status: "pending" } or { status: "succeeded", ...content }
  4. [If] status !== "succeeded" → Loop back to step 2
  5. [Continue] → Process the completed result
  ```

  #### Use Case: Workstation Task Creation
  ```
  1. [Webhook] → Receive data from external system
  2. [Tela: Execute Workstation] → Create task with label "{{ $json.customer }} - {{ $json.orderId }}"
  3. [Task appears in Tela dashboard for human review]
  ```

  #### Technical Details
  - Added `async` parameter to completion request body
  - Added `status` field to completion response types
  - New `GetCompletionResponse` type for get completion endpoint
  - New `PromptApplication` and `WorkstationRequest` types
  - New `/prompt-application` endpoint integration
  - Graceful error handling for polling requests

  ### Version 1.1.2

  **UX Pattern compliance for n8n verification:**

  #### n8n Verification Requirements
  - **Implemented Resources and Operations pattern**: Added standard n8n UX pattern with Resource and Operation dropdowns
    - Resource: Canvas (single option, extensible for future resources)
    - Operation: Execute (executes a canvas with variables)
    - All existing functionality preserved and unchanged
    - No breaking changes - workflows continue to work seamlessly

  #### User Experience Improvements
  - **Better discoverability**: Users can now see available resources and operations in dropdown menus
  - **Consistent with n8n ecosystem**: Follows the same UX pattern as official n8n nodes
  - **Future-proof architecture**: Easy to extend with additional operations (Get Details, List, etc.)

  #### Technical Details
  - Added `resource` property with 'canvas' option
  - Added `operation` property with 'execute' action
  - Updated all existing properties with `displayOptions` to show conditionally
  - Maintains backwards compatibility with existing workflows

  #### Breaking Changes
  - None - all changes are backwards compatible

  ### Version 1.1.0

  **Major improvements for n8n Cloud verification compliance:**

  #### Critical Fixes
  - **Removed dependency overrides**: Eliminated `overrides` section from package.json to prevent masking security vulnerabilities
  - **Replaced native fetch() with n8n HTTP helpers**: All API requests now use n8n's `httpRequest` helper for proper proxy support, retry logic, and request logging
  - **Added pairedItem linking**: Implemented proper data flow tracking with `pairedItem` metadata on all outputs

  #### High Priority Improvements
  - **Enhanced error logging**: Replaced `console.error` with n8n's logger service for better debugging in production
  - **Added continueOnFail support**: Workflows can now handle errors gracefully and continue processing remaining items
  - **Multi-item processing**: Refactored execute() method to properly process multiple input items in batch

  #### Quality Improvements
  - **Converted icon to SVG format**: Replaced PNG icon with SVG for better scalability and 70% smaller file size
    - Updated both node and credential files to use `tela.svg`
    - Removed legacy PNG icon from build output
    - Consistent icon format across entire package
  - **Improved error handling**: Added `NodeOperationError` with detailed metadata including itemIndex
  - **Better type safety**: Enhanced TypeScript types for HTTP request methods

  #### Breaking Changes
  - None - all changes are backwards compatible

  #### Developer Experience
  - Enhanced logging visibility in n8n execution logs
  - Better error messages with actionable descriptions
  - Improved workflow debugging with proper data flow tracking

  ### Version 1.0.16

  - Replace get prompts call (includeLastVersion=true) for /promoted-version endpoint (the old one was deprecated internally)

  ### Version 1.0.15

  - Fixed critical security vulnerabilities in transitive dependencies
  - Updated axios from vulnerable version to 1.12.2 (fixes CVE-2025-58754)
  - Updated form-data from vulnerable version to 4.0.4 (fixes CVE-2025-7783)
  - Added npm overrides to ensure secure dependency versions across all packages
  - Zero vulnerabilities reported by npm audit

  ### Version 1.0.14

  - Added credential test method to fix n8n verification pre-checks
  - Fixed n8n verification pre-checks by restructuring project to match n8n-nodes-starter template
  - Moved credentials and nodes to proper directories as required by n8n
  - Enhanced README documentation for n8n verification compliance
  - Added comprehensive usage examples and sample workflows
  - Improved installation and configuration instructions
  - Added troubleshooting guide and development documentation

  ### Version 1.0.1

  - Enhanced error handling
  - Improved file upload support
  - Better variable validation

  ### Version 1.0.0

  - Initial release
  - Basic Tela API integration
  - Dynamic variable support

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the Tela API to execute AI-driven canvases, manage projects, and handle file uploads for automation workflows.","capabilities":["Execute Tela canvases with dynamic variables","Handle file uploads for canvas processing","List and manage Tela projects and canvases","Create tasks in Tela Workstation dashboard","Poll for async canvas execution completion status","Generate dynamic content for emails and marketing materials","Process documents with AI assistance"],"authentication":"API key required (Tela API key from dashboard)","commonUseCases":["Generate personalized marketing materials","Process documents with AI assistance","Create tasks for human review in Tela dashboard","Build hybrid human-AI pipelines with manual checkpoints","Poll for long-running AI processing without timeouts"],"limitations":["Community node (requires accepting n8n community node risks)","Manual installation required for self-hosted instances","Requires Tela API credentials setup"],"relatedNodes":["n8n HTTP Request","n8n Wait","n8n File"]}


node_type: n8n-nodes-botnoi-voice.botnoitts
package_name: n8n-nodes-botnoi-voice
display_name: Botnoi Voice
description: Generate speech using Botnoi Voice API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: phoovadet.noobdev
author_github_url: https://github.com/HakusaiTH/n8n-BotnoiVoice.git
npm_package_name: n8n-nodes-botnoi-voice
npm_version: 2.0.7
community_fetched_at: 2026-03-25T21:19:40.745Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "voice",
      "options": [
        {
          "name": "Voice",
          "value": "voice"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate voice",
          "description": "Generate voice from text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"generate","name":"Generate","description":"Generate voice from text","resource":"voice"}]

npm_readme:
  # 🔊 n8n-BotnoiVoice

  Plug-in to connect [Botnoi Voice API](https://voice.botnoi.ai/api-login) to [n8n](https://n8n.io/) — allowing easy use of **Thai Text-to-Speech (TTS)** and **Subtitle Generation (Gensub)** directly inside your n8n workflows.

  ---

  ## 📌 Requirements before starting

  ### 1. Install basic tools

  - [Git](https://git-scm.com/downloads)
  - Node.js version **20+**
  - Recommended via [nvm](https://github.com/nvm-sh/nvm) (Linux, Mac, WSL)
  - For Windows, see [Microsoft Docs](https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows)
  - Install n8n globally:

  ```bash
  npm install -g n8n
  ````

  ---

  ## 🚀 How to use the plugin

  ### ✅ Install from npm (recommended)

  1. Create a custom n8n extensions folder:

  ```bash
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  ```

  2. Install the plugin:

  ```bash
  npm i n8n-nodes-botnoi-voice
  ```

  3. Start n8n:

  ```bash
  n8n start
  ```

  > 💡 Once installed, search in n8n for **Botnoi Voice** or **Botnoi Gensub** nodes.

  ---

  ### 🛠️ Install locally (if cloning repo)

  1. Clone and install dependencies:

  ```bash
  git clone https://github.com/phoovadetnoobdev/n8n-nodes-botnoi-voice
  cd n8n-nodes-botnoi-voice
  npm install
  ```

  2. Build and link the plugin:

  ```bash
  npm run build
  npm link
  ```

  3. Link to your n8n instance:

  ```bash
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  npm link n8n-nodes-botnoi-voice
  ```

  4. Start n8n:

  ```bash
  n8n start
  ```

  ---

  ## 🔐 Get API Key from Botnoi Voice

  1. Visit [https://voice.botnoi.ai/api-login](https://voice.botnoi.ai/api-login)
  2. Login or sign up for a free account
  3. Click **Generate API Key**
  4. Copy the key for use in n8n

  <p align="center">
    <img src="https://github.com/user-attachments/assets/53cae275-c947-49ac-aa5f-49c224914da9" width="640" alt="Generate API Key"/>
  </p>

  ---

  ## ⚙️ Add API Key in n8n

  1. Open **Credentials** tab in n8n
  2. Create a new credential → Select **Botnoi Voice**
  3. Paste your API key and test connection

  <p align="center">
    <img src="https://github.com/user-attachments/assets/7ddb26c4-2241-420f-8212-5096e1e052c5" width="640"/>
  </p>
  <p align="center">
    <img src="https://github.com/user-attachments/assets/2d5a905a-7f46-4447-a5fe-aa682a318621" width="640"/>
  </p>

  > ✅ If the key is correct, it will show “Connection tested successfully”.

  ---

  ## 🗣️ Botnoi Voice (TTS)

  Convert any text into natural-sounding speech in Thai, English, Japanese, Vietnamese, and more.

  ### 🧾 Usage Steps

  #### 1️⃣ Enter text to convert

  <p align="center">
    <img src="https://github.com/user-attachments/assets/a20ee802-7ecb-4005-bc18-7ffe18e2ac92" width="640"/>
  </p>

  * Add a `Botnoi Voice` node
  * Enter text manually or use expression (e.g. `{{ $json.output }}`)

  #### 2️⃣ Choose a speaker

  <p align="center">
    <img src="https://github.com/user-attachments/assets/1628e724-a7c6-4f76-a203-dad037eca3a4" width="640"/>
  </p>

  * Over 300 voices available (Eva, Bo, Max, Alisa, etc.)

  #### 3️⃣ Select language

  <p align="center">
    <img src="https://github.com/user-attachments/assets/8fb5380f-f4b2-48cf-89f6-03d77e8679d4" width="640"/>
  </p>

  * Supports multiple languages — choose `Thai`, `English`, `Japanese`, etc.

  #### 4️⃣ Generate audio

  <p align="center">
    <img src="https://github.com/user-attachments/assets/06ecb4b4-cd85-45a2-b99e-6db17f63f443" width="640"/>
  </p>

  * Click **Execute Step** → Output shows `audio_url` for playback or download.

  ---

  ## 🎧 Botnoi Gensub (Subtitle Generator)

  Generate subtitles (SRT / JSON) automatically from any **audio URL** via [Botnoi Voice API](https://voice.botnoi.ai/api-login).

  Ideal for creating Thai transcripts, podcast captions, or speech analytics.

  ### 🧩 Overview

  * Supports **URL input only**
  * Generates **SRT or JSON** subtitles
  * Adjustable silence and duration segmentation
  * Perfect with free hosting (e.g., [EdgeOne Pages](https://pages.edgeone.ai/drop))

  ---

  ### 🧱 Example: Generate Subtitles from an Audio URL

  #### ✅ Step 1 — Upload audio

  Use [EdgeOne Pages Drop](https://pages.edgeone.ai/drop) to host your file:

  1. Go to [https://pages.edgeone.ai/drop](https://pages.edgeone.ai/drop)
  2. Enter a temporary domain name
  3. Upload your `.mp3` or `.wav`
  4. Copy the URL (e.g.)

     ```
     https://forward-cyan-xo4dfpu9q6.edgeone.app/Recording.mp3
     ```

  <p align="center">
    <img alt="Image" src="https://github.com/user-attachments/assets/02666ee6-50c8-40fc-a1c8-f0d4908559f0" width="640"/>
  </p>

  ---

  #### ✅ Step 2 — Configure Botnoi Gensub Node

  | Field                          | Example                                                     | Description                              |
  | ------------------------------ | ----------------------------------------------------------- | ---------------------------------------- |
  | **Credential to connect with** | Botnoi account                                              | Use your `botnoiApi` credential          |
  | **Audio URL**                  | `https://forward-cyan-xo4dfpu9q6.edgeone.app/Recording.mp3` | Publicly accessible file URL             |
  | **Max Duration (Seconds)**     | `10`                                                        | Max duration per subtitle segment        |
  | **Max Silence (Seconds)**      | `0.3`                                                       | Silence threshold before splitting lines |
  | **Return SRT**                 | `Yes`                                                       | Choose “Yes” to get SRT subtitle text    |
  | **Timeout (Ms)**               | `60000`                                                     | Request timeout (default 60s)            |

  <p align="center">
   	<img alt="Image" src="https://github.com/user-attachments/assets/4c46f6c1-594d-48dc-83df-b23db3abb38c" width="640"/>
  </p>

  ---

  #### ✅ Step 3 — Execute and check result

  ```json
  {
    "message": "Transcribe successfully",
    "data": {
      "text": "1\n00:00:00,390 --> 00:00:02,220\nสวัสดีตอนเช้า\n",
      "current_point": 509,
      "current_monthly_point": 0,
      "used_points": 15
    }
  }
  ```

  **Result (SRT format):**

  ```
  1
  00:00:00,390 --> 00:00:02,220
  สวัสดีตอนเช้า
  ```

  <p align="center">
    <img alt="Image" src="https://github.com/user-attachments/assets/f992c796-8185-482d-80f5-188fd6599706" width="640"/>
  </p>

  ---

  ## ⚙️ Tips

  * Both nodes share the same credential `botnoiApi`
  * Ensure your audio URL is **publicly accessible** (no login needed)
  * Supported file formats: `.mp3`, `.wav`, `.m4a`
  * Recommended audio length ≤ 60 seconds for best transcription quality

  ---

  ## 📚 References

  * [Botnoi Voice API Docs](https://www.botnoigroup.com/botnoivoice/doc/api-user-guide)
  * [EdgeOne Pages Drop](https://pages.edgeone.ai/drop) — free quick hosting
  * [n8n Node Developer Docs](https://docs.n8n.io/integrations/creating-nodes/)

  ---

  ## 🧑‍💻 Maintainer

  Developed by **Phoovadet Noobdev**

  ---

  ## 📝 License

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

ai_documentation_summary:
  {"purpose":"A n8n node that connects to the Botnoi Voice API to generate Thai, English, Japanese, and Vietnamese speech from text (TTS) and create subtitles (SRT/JSON) from audio URLs (Gensub).","capabilities":["Text-to-Speech (TTS) generation in multiple languages","Selection from over 300 available voices","Subtitle generation from audio URLs (SRT format)","Subtitle generation from audio URLs (JSON format)","Configurable subtitle segmentation by max duration and silence threshold","Audio playback URL output"],"authentication":"API Key required (configured via n8n Credentials tab)","commonUseCases":["Automated voice announcements in Thai or other supported languages","Creating subtitles for podcasts or video content","Generating audio from text documents","Transcribing audio files into text or subtitle format"],"limitations":["Subtitle generation (Gensub) requires a publicly accessible audio URL only","Audio URLs must be hosted on free platforms like EdgeOne Pages for Gensub functionality","Gensub has a default request timeout of 60 seconds (configurable up to 60000ms)"],"relatedNodes":["n8n-nodes-core.webhook","n8n-nodes-core.httpRequest","n8n-nodes-core.code"]}


node_type: @xano/n8n-nodes-xano.xano
package_name: @xano/n8n-nodes-xano
display_name: Xano
description: Interact with Xano API to manage workspaces, tables, and content.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: xanosean
author_github_url: https://github.com/xano-inc/n8n-nodes-xano.git
npm_package_name: @xano/n8n-nodes-xano
npm_version: 1.0.6
community_fetched_at: 2026-03-25T21:19:40.746Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "table",
      "options": [
        {
          "name": "Table",
          "value": "table"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTableContent",
      "options": [
        {
          "name": "Create Row",
          "value": "createRow",
          "action": "Create a row",
          "description": "Add a new row to a table"
        },
        {
          "name": "Create Row Bulk",
          "value": "bulkCreateContent",
          "action": "Create bulk rows",
          "description": "Bulk create rows in a table"
        },
        {
          "name": "Delete a Row",
          "value": "deleteSingleContent",
          "action": "Delete a row",
          "description": "Delete a single row from a table"
        },
        {
          "name": "Get a Row",
          "value": "getSingleContent",
          "action": "Get a row",
          "description": "Get a single row from a table"
        },
        {
          "name": "Get Many Rows",
          "value": "getTableContent",
          "action": "Get many rows",
          "description": "Get all rows from a table"
        },
        {
          "name": "Search Row",
          "value": "searchRow",
          "action": "Search row",
          "description": "Search for a row in a table"
        },
        {
          "name": "Update Row by ID",
          "value": "updateRow",
          "action": "Update row by ID",
          "description": "Update a new row to a table"
        },
        {
          "name": "Update Rows in Bulk by ID",
          "value": "bulkUpdateContent",
          "action": "Update rows in bulk by ID",
          "description": "Bulk Update rows to a table"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "table"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"createRow","name":"Create Row","description":"Add a new row to a table","resource":"table"},{"operation":"bulkCreateContent","name":"Create Row Bulk","description":"Bulk create rows in a table","resource":"table"},{"operation":"deleteSingleContent","name":"Delete a Row","description":"Delete a single row from a table","resource":"table"},{"operation":"getSingleContent","name":"Get a Row","description":"Get a single row from a table","resource":"table"},{"operation":"getTableContent","name":"Get Many Rows","description":"Get all rows from a table","resource":"table"},{"operation":"searchRow","name":"Search Row","description":"Search for a row in a table","resource":"table"},{"operation":"updateRow","name":"Update Row by ID","description":"Update a new row to a table","resource":"table"},{"operation":"bulkUpdateContent","name":"Update Rows in Bulk by ID","description":"Bulk Update rows to a table","resource":"table"}]

npm_readme:
  # 📘 n8n-nodes-xano — Custom Node Documentation

  This is an n8n community node. It lets you use [Xano](https://www.xano.com/) in your n8n workflows, enabling workflow automation through custom API actions like managing rows, fetching table schemas, and more.

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

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

  ---

  ## Installation

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

  ## 🔧 Operations

  | Action                   | Value (operation)     | Description                              |
  | ------------------------ | --------------------- | ---------------------------------------- |
  | ✅ Create Row            | `createRow`           | Create a new row in a selected table     |
  | ✅ Update Row            | `updateRow`           | Update a row with specific field values  |
  | ✅ Delete Single Content | `deleteSingleContent` | Delete a single row by ID                |
  | ✅ Get a Row             | `getSingleContent`    | Fetch a row by ID                        |
  | ✅ Get Many Rows         | `getTableContent`     | Fetch multiple rows with pagination      |
  | ✅ Create Bulk Rows      | `bulkCreateContent`   | Insert multiple rows                     |
  | ✅ Update Bulk Rows      | `bulkUpdateContent`   | Bulk update multiple records             |
  | ✅ Search Rows           | `searchRow`           | Search using filter queries (JSON input) |

  ## Credentials

  To use this node in your workflows, you’ll need to authenticate your Xano account using the **Metadata API Access Token**.

  ### 🔑 Step 1: Get Your Xano Metadata API Access Token

  1. **Log in to your Xano account**
     Visit: [https://xano.com](https://xano.com)

  2. **Access your instance**
     In the lower-left corner of the dashboard, click **Instances**.

  3. **Open instance settings**
     Click the ⚙️ icon next to your instance name.

  4. **Select Metadata API**
     From the panel that opens, select **Metadata API**.

  5. **Generate an Access Token**
     Click on **➕ Create Token** and configure the following:
     - **Name**: Something descriptive like `n8n integration token`
     - **Expiry**: Set an expiry (e.g. 7 days, or "Never" if preferred)
     - **Scopes**: Select the necessary access:
       - ✅ `Database` (CRUD)

       - ✅ `Content`, `API Groups`, or other required scopes for your use case

     > ⚠️ Make sure to select `Read` and `Update` at a minimum for basic operations.

  6. **Copy the generated access token**
     This token will be shown only once. Store it securely.

  ### 🔌 Step 2: Add Credentials in n8n

  1. Open your n8n instance
  2. Go to **Credentials** and click **"New"**
  3. Search for **Xano API** (your node’s credential type)
  4. In the **Access Token** field, paste the token from Xano

  #### ✅ Successful connection will show:

  ![Connection Success](./assets/success.png)

  #### ❌ If token is invalid or expired:

  ![Connection Failed](./assets/error.png)

  > If the token is invalid, regenerate one from Xano and repeat the above steps.

  ### ✅ Final Step

  Once the connection is verified, you’re ready to start using Xano in your workflows via this custom node!

  ## Compatibility

  Tested on n8n v1.100.0 and above.

  ## Usage

  Note about the **Search Rows** operation. It uses a simplified version of the [external filtering search](https://docs.xano.com/xano-features/metadata-api/search#search) syntax.

  Here's a quick example where I'm searching for the record where id = 2.

  `[{"id|=":"2"}]`

  Simply add the JSON above to the Search field.

  **Pro tip**: Open Dev Tools in your browser then use the Xano UI filter in your table view to see what syntax gets generated by the /content API request, then copy the value from the search field in the payload and use that.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Xano Documentation](https://docs.xano.com/)

  ## Version history

  ### 1.0.1

  - Initial release

  ### 1.0.2

  - Minor updates

  ### 1.0.3

  - Minor updates

  ### 1.0.4

  - Minor updates

  ### 1.0.5

  - Minor updates

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by interacting with the Xano API to manage workspaces, tables, and content through CRUD operations and search functionality.","capabilities":["Create a new row in a selected table","Update a row with specific field values","Delete a single row by ID","Fetch a row by ID","Fetch multiple rows with pagination","Insert multiple rows in bulk","Update multiple records in bulk","Search rows using filter queries (JSON input)"],"authentication":"API key required (Xano Metadata API Access Token with Database scope)","commonUseCases":["Automating data entry into Xano tables","Syncing data between n8n and Xano databases","Bulk data migration or updates","Searching and filtering Xano content dynamically"],"limitations":["Search Rows operation uses a simplified version of Xano's external filtering search syntax","Requires manual configuration of token scopes (Database, Content, API Groups) in Xano dashboard","Token must be generated with specific scopes and may expire based on configured settings"],"relatedNodes":["n8n community nodes","Xano API nodes"]}


node_type: n8n-nodes-presenton.presenton
package_name: n8n-nodes-presenton
display_name: Presenton
description: Interact with presenton API (async generation + status checking)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: badu5
author_github_url: https://github.com/shivarajbadu/
npm_package_name: n8n-nodes-presenton
npm_version: 1.2.7
community_fetched_at: 2026-03-25T21:19:40.746Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "generateAsync",
      "options": [
        {
          "name": "Generate Presentation (Async)",
          "value": "generateAsync",
          "action": "Initiate presentation generation",
          "description": "Initiate presentation generation asynchronously"
        },
        {
          "name": "Check Presentation Status",
          "value": "checkStatus",
          "action": "Poll or check until presentation is done",
          "description": "Poll or check until presentation is done"
        },
        {
          "name": "Upload File",
          "value": "uploadFile",
          "action": "Upload a file to presenton to reference later",
          "description": "Upload a file to Presenton to reference later"
        }
      ],
      "required": true,
      "description": "What you want to do with Presenton",
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Presentation (Async)",
      "value": "generateAsync",
      "action": "Initiate presentation generation",
      "description": "Initiate presentation generation asynchronously"
    },
    {
      "name": "Check Presentation Status",
      "value": "checkStatus",
      "action": "Poll or check until presentation is done",
      "description": "Poll or check until presentation is done"
    },
    {
      "name": "Upload File",
      "value": "uploadFile",
      "action": "Upload a file to presenton to reference later",
      "description": "Upload a file to Presenton to reference later"
    }
  ]

npm_readme:
  ## Presenton for n8n

  Generate professional presentations with the Presenton API directly from your n8n workflows. This community node supports asynchronous presentation generation, file uploads, and task status checks.

  Homepage: [presenton.ai](https://presenton.ai) • API docs: [presenton.ai/docs/api-reference](https://presenton.ai/docs/api-reference)

  ### Features

  - **Generate Presentation (Async)**: Kick off a background job to create PPTX or PDF
  - **Check Presentation Status**: Poll a task by ID until it’s complete
  - **Upload File**: Upload binary files and reference them during generation

  ## Installation

  ### Install in n8n (Community nodes)

  1. In n8n, go to Settings → Community Nodes → Install.
  2. Search for or enter the package name: `n8n-nodes-Presenton`.
  3. Confirm installation and restart n8n if prompted.

  ### Self-hosted filesystem install

  If you mount community nodes from disk, add this package to your custom nodes directory and install:

  ```bash
  npm install n8n-nodes-Presenton
  ```

  Minimum Node.js version: 20

  ## Credentials

  Create credentials of type `Presenton API`:

  - **API Key**: Your Presenton API key
  - **Base API URL** (optional): Override the default `https://api.presenton.ai` for staging or self-hosted deployments

  The node adds the `Authorization: Bearer <apiKey>` header automatically.

  ## Node operations

  ### Generate Presentation (Async)

  Starts a background job: `POST /api/v1/ppt/presentation/generate/async`

  - **content**: Main content to generate from
  - **slides_markdown**: Optional list of slide markdown strings
  - **instructions**: Additional guidance for the generator
  - **tone**: `default | professional | educational | funny | sale_pitch | causal`
  - **verbosity**: `standard | concise | text-heavy`
  - **web_search**: Allow web search during generation (boolean)
  - **image_type**: `stock | ai-generated`
  - **theme**: Theme name (string)
  - **noOfSlides**: Number of slides (number)
  - **language**: e.g. `English`
  - **template**: e.g. `general`
  - **include_table_of_contents**: boolean
  - **include_title_slide**: boolean
  - **files**: A file ID returned by the Upload File operation (string[])
  - **export_as**: `pptx | pdf`

  The node cleans empty values before sending. Response typically includes a task identifier you can pass to Check Presentation Status.

  ### Check Presentation Status

  Checks a task: `GET /api/v1/ppt/presentation/status/{taskId}`

  - **taskId**: The ID returned by Generate Presentation (Async)

  Returns the current status. When complete, the API usually includes result metadata (such as download links) defined by Presenton.

  ### Upload File

  Uploads a binary file: `POST /api/v1/ppt/files/upload`

  - **binaryPropertyName**: Name of the binary property on the incoming item (default: `data`)

  Returns a file ID you can set in the `files` field of the Generate Presentation (Async) operation.

  ## Typical workflow examples

  ### Generate a presentation from text

  1. Set operation to “Generate Presentation (Async)”.
  2. Fill in `content`, choose `export_as` (e.g. `pptx`), adjust options (tone, verbosity, slides, etc.).
  3. Use “Check Presentation Status” with the returned `taskId` until status is complete.

  ### Upload then generate

  1. Add a node with operation “Upload File” and set `binaryPropertyName` to the property holding your file.
  2. From its response, read the returned `file id`.
  3. Pass that id into the `files` field of “Generate Presentation (Async)”, then check status as above.

  ## Error handling

  - The node validates required parameters and throws meaningful errors (e.g., invalid slide count, missing task ID, or missing binary data).
  - If you enable “Continue On Fail”, errors are returned in the item’s JSON so your workflow can handle them.

  ## Development

  Clone, install, and build:

  ```bash
  npm i
  npm run dev   # TypeScript watch
  # or
  npm run build # build to dist
  ```

  Linting and formatting:

  ```bash
  npm run lint
  npm run lintfix
  npm run format
  ```

  To test locally, follow n8n’s guide to running custom nodes and point n8n to your built `dist` directory.

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"A community node that enables asynchronous generation of professional presentations (PPTX or PDF) using the Presenton API, supporting file uploads, status checking, and customizable generation parameters.","capabilities":["Asynchronous presentation generation from text content","Generation from markdown slide lists","Customizable tone, verbosity, and theme","Web search integration during generation","AI-generated or stock image support","Custom slide count and language selection","Template selection","Table of contents and title slide inclusion","Binary file upload for use in generation","Task status polling until completion"],"authentication":"API Key required (Bearer token)","commonUseCases":["Automated creation of pitch decks from text input","Generating educational or sales presentations from content","Converting uploaded documents or drafts into slide decks","Workflow automation for content-to-presentation conversion"],"limitations":["Generation is asynchronous, requiring a separate status check node","File uploads require a separate operation to obtain file IDs","Minimum Node.js version 20 required for self-hosted installation","Some result metadata (like download links) depends on Presenton API definitions"],"relatedNodes":["Wait Until Node","Code Node","Set Node","HTTP Request Node","Binary File Node"]}


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

updated_at: 2026-03-25 21:19:40
author_name: remyabyssale
author_github_url: https://github.com/getabyssale/
npm_package_name: n8n-nodes-abyssale
npm_version: 1.0.3
community_fetched_at: 2026-03-25T21:19:40.746Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "banner",
      "options": [
        {
          "name": "Banner",
          "value": "banner"
        },
        {
          "name": "Design",
          "value": "design"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateSingle",
      "options": [
        {
          "name": "Export Banners",
          "value": "exportBanners",
          "action": "Export banners",
          "description": "Export one or multiple previously generated visuals in .zip format"
        },
        {
          "name": "Generate HTML5 Banner Ads",
          "value": "generateHTML5BannerAds",
          "action": "Generate html5 banner ads",
          "description": "Generate HTML5 banner ads from an animated design"
        },
        {
          "name": "Generate Multi-Format Animated GIFs",
          "value": "generateMultiFormatGIFs",
          "action": "Generate multi format animated gifs",
          "description": "Generate multiple animated GIFs at once from a design created in Abyssale"
        },
        {
          "name": "Generate Multi-Format Images",
          "value": "generateMultiFormatImages",
          "action": "Generate multiple images",
          "description": "Generate a multiple images (JPEG, PNG, PDF,..) from a design"
        },
        {
          "name": "Generate Multi-Format PDFs for Printing",
          "value": "generateMultiFormatPDFs",
          "action": "Generate multi format pdfs for printing",
          "description": "Generate multiple printable PDFs at once from a design created in Abyssale"
        },
        {
          "name": "Generate Multi-Format Videos",
          "value": "generateMultiFormatVideos",
          "action": "Generate multi format videos",
          "description": "Generate multiple videos at once from an animated design created in Abyssale"
        },
        {
          "name": "Generate Single Image",
          "value": "generateSingle",
          "action": "Generate a single image",
          "description": "Generate a single image (JPEG, PNG, PDF) from a design"
        },
        {
          "name": "Get Banner",
          "value": "getBanner",
          "action": "Get banner",
          "description": "Retrieves the details about a previously generated banner"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "banner"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDesign",
      "options": [
        {
          "name": "Get a Design",
          "value": "getDesign",
          "action": "Get a design",
          "description": "Retrieves the details about a design you created on Abyssale"
        },
        {
          "name": "Get a Design Format",
          "value": "getDesignFormat",
          "action": "Get a design format",
          "description": "Retrieves the details about a format added to a design you created on Abyssale"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "design"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"exportBanners","name":"Export Banners","description":"Export one or multiple previously generated visuals in .zip format","resource":"banner"},{"operation":"generateHTML5BannerAds","name":"Generate HTML5 Banner Ads","description":"Generate HTML5 banner ads from an animated design","resource":"banner"},{"operation":"generateMultiFormatGIFs","name":"Generate Multi-Format Animated GIFs","description":"Generate multiple animated GIFs at once from a design created in Abyssale","resource":"banner"},{"operation":"generateMultiFormatImages","name":"Generate Multi-Format Images","description":"Generate a multiple images (JPEG, PNG, PDF,..) from a design","resource":"banner"},{"operation":"generateMultiFormatPDFs","name":"Generate Multi-Format PDFs for Printing","description":"Generate multiple printable PDFs at once from a design created in Abyssale","resource":"banner"},{"operation":"generateMultiFormatVideos","name":"Generate Multi-Format Videos","description":"Generate multiple videos at once from an animated design created in Abyssale","resource":"banner"},{"operation":"generateSingle","name":"Generate Single Image","description":"Generate a single image (JPEG, PNG, PDF) from a design","resource":"banner"},{"operation":"getBanner","name":"Get Banner","description":"Retrieves the details about a previously generated banner","resource":"banner"},{"operation":"getDesign","name":"Get a Design","description":"Retrieves the details about a design you created on Abyssale","resource":"design"},{"operation":"getDesignFormat","name":"Get a Design Format","description":"Retrieves the details about a format added to a design you created on Abyssale","resource":"design"}]

npm_readme:
  # n8n-nodes-abyssale

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

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

  [Abyssale](https://www.abyssale.com/) helps you generate creative content at scale.

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

  ## Installation

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

  ## Operations

  - Banner
    - Export banners
    - Generate html5 banner ads
    - Generate multi format animated gifs
    - Generate multiple images
    - Generate multiple format pds for printing
    - Generate multiple format videos
    - Generate a single image
    - Get banner
    - Watch banner creation
    - Watch banner batch creation
    - Watch banners export
  - Design
    - Get a design
    - Get a design format
    - Watch design status changes

  ## Credentials

  You can use abyssale access token to use this node.

  ### Access token

  1. Follow this [tutorial](https://help.abyssale.com/en/articles/329008-how-to-create-your-abyssale-api-key) to generate your api key.
  2. Copy the token.

  ## Compatibility

  Compatible with n8n@1.117.3 or later

  ## Usage

  ### Generate marketing visuals with n8n
  Transform your n8n workflows with automated visual generation. 
  Pull data from any source and turn it into engaging visuals for every channel - from social posts to email campaigns.

  #### Basic image generation
  1. Add an **Abyssale** node to your workflow.
  2. Select the **Generate a single image** operation from the node's dropdown menu.
  3. Add your Abyssale API credential.
  4. Choose a static design. The design must be created in the Abyssale app beforehand and will be used as the base for your generated images.
  5. Select your desired format you want to use.
  6. Configure the design elements you want to customize. Map input data to specific elements like text, images, or colors to personalize each generated visual.
  7. Execute the node by clicking **Execute step**.
  8. Abyssale will automatically generate an image with your specified element modifications applied.

  ## Resources

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables the consumption of the Abyssale API to generate creative marketing visuals, including banners, images, videos, and animated GIFs.","capabilities":["Generate HTML5 banner ads","Generate multi-format animated GIFs","Generate multiple images","Generate multiple format PDFs for printing","Generate multiple format videos","Generate a single image","Export banners","Get banner details","Watch banner creation status","Watch banner batch creation status"],"authentication":"API key (Abyssale access token)","commonUseCases":["Automated social media post generation","Email campaign visual creation","Dynamic marketing material personalization","Multi-channel content scaling"],"limitations":["Static designs must be created in the Abyssale app beforehand","Requires n8n version 1.117.3 or later","Community node (not official n8n product)"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-chartmogul.chartmogul
package_name: n8n-nodes-chartmogul
display_name: ChartMogul
description: Interact with ChartMogul API
category: Community
development_style: declarative
version: 2.0.2
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: gef-chartmogul
author_github_url: https://github.com/chartmogul/
npm_package_name: n8n-nodes-chartmogul
npm_version: 2.0.2
community_fetched_at: 2026-03-25T21:19:40.747Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-chartmogul

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

  [ChartMogul](https://www.chartmogul.com/) is a subscription analytics platform that helps SaaS (Software-as-a-Service) and recurring revenue businesses understand, measure, and grow their revenue. ChartMogul CRM is a customer relationship management platform built specifically for B2B SaaS companies that unifies sales pipeline tracking with subscription analytics, enabling teams to manage leads, opportunities, and recurring revenue in a single integrated system.

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

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

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

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

  ## Operations
  V1 of the ChartMogul N8N node focuses on functions that help you interface with ChartMogul CRM. These are based on the publicly available endpoints found at [https://dev.chartmogul.com/](https://dev.chartmogul.com/).
  Functions:
  1. Sources
  2. Customers
  3. Contacts
  4. Enrichment (Custom Attributes and Tags)
  5. Notes and Call Logs
  6. Opportunities
  7. Tasks
     
  ## 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._
  You need to have a ChartMogul account to interact with this node.

  In ChartMogul, create an API key by navigating to **Profile > View Profile > API keys**. Then:
  1. Click **Add API Key**.
  2. Enter a unique name for the key in the **Name** field.
  3. A **Read & Write** key is required for this node.
  4. Click **Add** to create the key.
  5. Copy your newly created key and create a ChartMogul credential in N8N
  <img width="776" height="370" alt="image" src="https://github.com/user-attachments/assets/6443c18e-fe9e-4146-a3e1-b4e62862b774" />

  ## Compatibility

  This node was developed and tested using N8N version 1.116.2.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [ChartMogul Help Center](https://help.chartmogul.com)
  * [ChartMogul Developer Reference](https://dev.chartmogul.com)
    
  ## Versioning

  This node implements n8n's versioning system to support future updates while maintaining backwards compatibility. The current version is v1.

  For detailed information about the versioning structure and how to add new versions, see [VERSIONING.md](VERSIONING.md).

  ## Version history

  **v1.0.4** (Current)
  - Implemented full versioning structure
  - Reorganized codebase with v1 directory for future version support

  **v1.0.0**
  - Initial Release

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by interacting with the ChartMogul API for SaaS subscription analytics and CRM management.","capabilities":["Retrieve and manage customer data","Access contact information","Perform data enrichment with custom attributes and tags","Manage notes and call logs","Track and manage sales opportunities","Create and assign tasks"],"authentication":"API Key (Read & Write required)","commonUseCases":["Automating SaaS revenue tracking workflows","Syncing customer data between ChartMogul and other tools","Enriching lead records with custom attributes","Automating sales pipeline management"],"limitations":["Limited to ChartMogul CRM endpoints (not all ChartMogul API features)","Community node status may lack official support","Requires a paid ChartMogul account with API key access"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: @crono-one/n8n-nodes-crono-public-api.cronoPublicApi
package_name: @crono-one/n8n-nodes-crono-public-api
display_name: Crono
description: Consume the Crono Public API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: alen_crono
author_github_url: https://github.com/crono-one/n8n-nodes-crono-public-api.git
npm_package_name: @crono-one/n8n-nodes-crono-public-api
npm_version: 1.0.0
community_fetched_at: 2026-03-25T21:19:40.747Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "company",
      "options": [
        {
          "name": "Activity",
          "value": "activity"
        },
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Deal",
          "value": "deal"
        },
        {
          "name": "External Property",
          "value": "externalProperty"
        },
        {
          "name": "Import",
          "value": "import"
        },
        {
          "name": "List",
          "value": "list"
        },
        {
          "name": "Note",
          "value": "note"
        },
        {
          "name": "Pipeline",
          "value": "pipeline"
        },
        {
          "name": "Strategy",
          "value": "strategy"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a company"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a company"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many companies"
        },
        {
          "name": "Import",
          "value": "import",
          "action": "Import companies"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search companies"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a company"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many contacts"
        },
        {
          "name": "Import",
          "value": "import",
          "action": "Import contacts"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search contacts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a deal"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a deal"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many deals"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search deals"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a deal"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deal"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a note"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a note"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many notes"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search notes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search tasks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an activity"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many activities"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search activities"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "activity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search lists"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "list"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many pipelines"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pipeline"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search strategies"
        },
        {
          "name": "Search Details",
          "value": "searchDetails",
          "action": "Search strategy details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "strategy"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search external properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "externalProperty"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an import"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many imports"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "import"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","resource":"company"},{"operation":"get","name":"Get","resource":"company"},{"operation":"getAll","name":"Get Many","resource":"company"},{"operation":"import","name":"Import","resource":"company"},{"operation":"search","name":"Search","resource":"company"},{"operation":"update","name":"Update","resource":"company"},{"operation":"create","name":"Create","resource":"contact"},{"operation":"get","name":"Get","resource":"contact"},{"operation":"getAll","name":"Get Many","resource":"contact"},{"operation":"import","name":"Import","resource":"contact"},{"operation":"search","name":"Search","resource":"contact"},{"operation":"update","name":"Update","resource":"contact"},{"operation":"create","name":"Create","resource":"deal"},{"operation":"get","name":"Get","resource":"deal"},{"operation":"getAll","name":"Get Many","resource":"deal"},{"operation":"search","name":"Search","resource":"deal"},{"operation":"update","name":"Update","resource":"deal"},{"operation":"create","name":"Create","resource":"note"},{"operation":"get","name":"Get","resource":"note"},{"operation":"getAll","name":"Get Many","resource":"note"},{"operation":"search","name":"Search","resource":"note"},{"operation":"create","name":"Create","resource":"task"},{"operation":"search","name":"Search","resource":"task"},{"operation":"get","name":"Get","resource":"activity"},{"operation":"getAll","name":"Get Many","resource":"activity"},{"operation":"search","name":"Search","resource":"activity"},{"operation":"search","name":"Search","resource":"list"},{"operation":"getAll","name":"Get Many","resource":"pipeline"},{"operation":"search","name":"Search","resource":"strategy"},{"operation":"searchDetails","name":"Search Details","resource":"strategy"},{"operation":"search","name":"Search","resource":"externalProperty"},{"operation":"get","name":"Get","resource":"user"},{"operation":"getAll","name":"Get Many","resource":"user"},{"operation":"search","name":"Search","resource":"user"},{"operation":"get","name":"Get","resource":"import"},{"operation":"getAll","name":"Get Many","resource":"import"}]

npm_readme:
  # n8n-nodes-crono-public-api

  This is an n8n community node. It lets you use Crono Public API in your n8n workflows.

  Crono Public API gives programmatic access to Crono CRM data such as companies, contacts, deals, activities, and more.

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

  ## Installation

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

  ## Operations

  - Activities: Get, Get Many, Search
  - Companies: Create, Get, Get Many, Search, Update, Import
  - Contacts: Create, Get, Get Many, Search, Update, Import
  - Deals: Create, Get, Get Many, Search, Update
  - External Properties: Search
  - Imports: Get, Get Many
  - Lists: Search
  - Notes: Create, Get, Get Many, Search
  - Pipelines: Get Many
  - Strategies: Search, Search Details
  - Tasks: Create, Search
  - Users: Get, Get Many, Search

  ## Credentials

  This node uses Crono Public API credentials.

  Credentials are required for all operations.

  You need:
  - API Key
  - API Secret

  The node sends credentials via headers:
  - `X-Api-Key`
  - `X-Api-Secret`

  ## Compatibility

  Minimum n8n version: 1.120.4  
  Tested against n8n version: 1.120.4

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Crono Public API documentation](https://ext.crono.one/docs/)

  ## Version history

  * [CHANGELOG](./CHANGELOG.md)

  ----

ai_documentation_summary:
  {"purpose":"This n8n community node enables programmatic access to Crono CRM data by consuming the Crono Public API within n8n workflows.","capabilities":["Retrieve company data","Retrieve contact data","Retrieve deal data","Retrieve activity data","Create new companies","Create new contacts","Create new deals","Create new tasks","Create new notes","Update existing companies"],"authentication":"API Key and API Secret required, sent via X-Api-Key and X-Api-Secret headers","commonUseCases":["Automating CRM data synchronization between n8n and Crono","Creating and managing leads and contacts through workflow automation","Tracking deal progression and activities","Generating reports on company and contact data"],"limitations":["Requires valid API credentials (API Key and Secret) for all operations","Limited to Crono Public API access (no private API features)"],"relatedNodes":["Crono Private API node","Generic HTTP Request node","CRM integration nodes"]}


node_type: n8n-nodes-atriomail-email.atriomail
package_name: n8n-nodes-atriomail-email
display_name: Atriomail
description: Manage email domains, mailboxes, forwarders, and catch-all configurations with Atriomail
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: atriomail
author_github_url: https://github.com/Atriomail/n8n-atriomail.git
npm_package_name: n8n-nodes-atriomail-email
npm_version: 0.2.1
community_fetched_at: 2026-03-25T21:19:40.747Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "domain",
      "options": [
        {
          "name": "Catch-All",
          "value": "catchAll"
        },
        {
          "name": "Domain",
          "value": "domain"
        },
        {
          "name": "Forwarder",
          "value": "forwarder"
        },
        {
          "name": "Mailbox",
          "value": "mailbox"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a domain",
          "description": "Create a new domain"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a domain",
          "description": "Delete a domain"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a domain",
          "description": "Get a domain by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many domains",
          "description": "Get many domains"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a domain",
          "description": "Update a domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "domain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a mailbox",
          "description": "Create a new mailbox"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a mailbox",
          "description": "Delete a mailbox"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a mailbox",
          "description": "Get a mailbox by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many mailboxes",
          "description": "Get many mailboxes"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a mailbox",
          "description": "Update a mailbox"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mailbox"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a forwarder",
          "description": "Create a new forwarder"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a forwarder",
          "description": "Delete a forwarder"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a forwarder",
          "description": "Get a forwarder by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many forwarders",
          "description": "Get many forwarders"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a forwarder",
          "description": "Update a forwarder"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "forwarder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a catch all",
          "description": "Create a new catch-all configuration"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a catch all",
          "description": "Delete a catch-all configuration"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a catch all",
          "description": "Get a catch-all configuration by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many catch alls",
          "description": "Get many catch-all configurations"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a catch all",
          "description": "Update a catch-all configuration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "catchAll"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Create a new domain","resource":"domain"},{"operation":"delete","name":"Delete","description":"Delete a domain","resource":"domain"},{"operation":"get","name":"Get","description":"Get a domain by ID","resource":"domain"},{"operation":"getAll","name":"Get Many","description":"Get many domains","resource":"domain"},{"operation":"update","name":"Update","description":"Update a domain","resource":"domain"},{"operation":"create","name":"Create","description":"Create a new mailbox","resource":"mailbox"},{"operation":"delete","name":"Delete","description":"Delete a mailbox","resource":"mailbox"},{"operation":"get","name":"Get","description":"Get a mailbox by ID","resource":"mailbox"},{"operation":"getAll","name":"Get Many","description":"Get many mailboxes","resource":"mailbox"},{"operation":"update","name":"Update","description":"Update a mailbox","resource":"mailbox"},{"operation":"create","name":"Create","description":"Create a new forwarder","resource":"forwarder"},{"operation":"delete","name":"Delete","description":"Delete a forwarder","resource":"forwarder"},{"operation":"get","name":"Get","description":"Get a forwarder by ID","resource":"forwarder"},{"operation":"getAll","name":"Get Many","description":"Get many forwarders","resource":"forwarder"},{"operation":"update","name":"Update","description":"Update a forwarder","resource":"forwarder"},{"operation":"create","name":"Create","description":"Create a new catch-all configuration","resource":"catchAll"},{"operation":"delete","name":"Delete","description":"Delete a catch-all configuration","resource":"catchAll"},{"operation":"get","name":"Get","description":"Get a catch-all configuration by ID","resource":"catchAll"},{"operation":"getAll","name":"Get Many","description":"Get many catch-all configurations","resource":"catchAll"},{"operation":"update","name":"Update","description":"Update a catch-all configuration","resource":"catchAll"}]

npm_readme:
  # n8n-nodes-atriomail

  This is an n8n community node for [Atriomail](https://system.atriomail.com) - an Email System Management API for managing domains, mailboxes, forwarders, and catch-all configurations.

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

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

  ## Installation

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

  ## Operations

  ### Domain
  - **Create** - Create a new email domain
  - **Delete** - Delete an existing domain
  - **Get** - Retrieve a specific domain by ID
  - **Get Many** - List all domains
  - **Update** - Update domain settings (active status, description)

  ### Mailbox
  - **Create** - Create a new mailbox with email address and password
  - **Delete** - Delete an existing mailbox
  - **Get** - Retrieve a specific mailbox by ID
  - **Get Many** - List all mailboxes
  - **Update** - Update mailbox settings (name, password, quota, active status)

  ### Forwarder
  - **Create** - Create a new email forwarder
  - **Delete** - Delete an existing forwarder
  - **Get** - Retrieve a specific forwarder by ID
  - **Get Many** - List all forwarders
  - **Update** - Update forwarder settings (forward-to addresses, active status)

  ### Catch-All
  - **Create** - Create a new catch-all configuration for a domain
  - **Delete** - Delete an existing catch-all configuration
  - **Get** - Retrieve a specific catch-all by ID
  - **Get Many** - List all catch-all configurations
  - **Update** - Update catch-all settings (forward-to addresses, active status)

  ## Credentials

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

  1. **API URL**: Your Atriomail instance URL (default: `https://system.atriomail.com`)
  2. **API Token**: Your API token generated from the Atriomail dashboard

  ### Getting your API Token

  1. Log in to your Atriomail dashboard
  2. Navigate to your account settings
  3. Generate a new API token
  4. Copy the token and use it in the n8n credentials

  ## Compatibility

  - Tested with n8n version 1.0.0 and above
  - Requires Node.js 18.10 or higher

  ## Usage

  ### Create a Domain

  1. Add the Atriomail node to your workflow
  2. Select **Domain** as the resource
  3. Select **Create** as the operation
  4. Enter the domain name (e.g., `example.com`)
  5. Optionally set the domain as active and add a description

  ### Create a Mailbox

  1. Select **Mailbox** as the resource
  2. Select **Create** as the operation
  3. Choose the domain from the dropdown (domains are loaded dynamically)
  4. Enter the local part (e.g., `john` for `john@example.com`)
  5. Set a password for the mailbox
  6. Optionally set display name and quota

  ### Create a Forwarder

  1. Select **Forwarder** as the resource
  2. Select **Create** as the operation
  3. Choose the domain from the dropdown
  4. Enter the local part (e.g., `sales` for `sales@example.com`)
  5. Enter comma-separated email addresses to forward to

  ### Create a Catch-All

  1. Select **Catch-All** as the resource
  2. Select **Create** as the operation
  3. Choose the domain from the dropdown
  4. Enter comma-separated email addresses to receive catch-all emails

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Atriomail API Documentation](https://system.atriomail.com/api/documentation)

  ## License

  [MIT](LICENSE)

  ## More Information

  [Atriomail](https://atriomail.com)

ai_documentation_summary:
  {"purpose":"This n8n community node manages email domain configurations, mailboxes, forwarders, and catch-all settings via the Atriomail API.","capabilities":["Create email domains","Delete email domains","Retrieve specific or list all domains","Update domain settings (active status, description)","Create mailboxes with custom email addresses and passwords","Delete mailboxes","Retrieve specific or list all mailboxes","Update mailbox settings (name, password, quota, active status)","Create email forwarders","Delete forwarders"],"authentication":"API Token required","commonUseCases":["Automating email domain registration in n8n workflows","Managing mailbox creation and password resets","Setting up email forwarding rules dynamically","Configuring catch-all email addresses for domain-wide forwarding"],"limitations":["Community node (not official n8n node)","Requires manual API token generation from Atriomail dashboard","Requires Node.js 18.10 or higher"],"relatedNodes":["n8n-nodes-base-httpRequest","n8n-nodes-base-set"]}


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

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

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

npm_readme:
  # n8n-nodes-perigon

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

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

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

  ## Installation

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

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

  Alternatively, you can install it using npm:

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

  ## Documentation

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

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

  ## Credentials

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

  ### Getting Your API Key

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

  ### Adding Credentials to n8n

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

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

  ## Resources and Operations

  The Perigon node supports the following resources:

  ### 📰 Article

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

  **Operations:**

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

  **Key Features:**

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

  **Common Use Cases:**

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

  ### 📚 Story

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

  **Operations:**

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

  **Key Features:**

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

  **Common Use Cases:**

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

  ### 🌐 Wikipedia

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

  **Operations:**

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

  **Key Features:**

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

  **Common Use Cases:**

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

  ### 👤 Person

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

  **Operations:**

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

  **Key Features:**

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

  **Common Use Cases:**

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

  ### 🏢 Company

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

  **Operations:**

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

  **Key Features:**

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

  **Common Use Cases:**

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

  ### ✍️ Journalist

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

  **Operations:**

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

  **Key Features:**

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

  **Common Use Cases:**

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

  ### 📡 Source

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

  **Operations:**

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

  **Key Features:**

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

  **Common Use Cases:**

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

  ### 🏷️ Topic

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

  **Operations:**

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

  **Key Features:**

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

  **Common Use Cases:**

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

  ### 🤖 Summarize

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

  **Operations:**

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

  **Key Features:**

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

  **Common Use Cases:**

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

  ## Example Usage

  ### Search Recent Tech News

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

  ### Find News Stories About Climate Change

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

  ### Search for Journalists Covering Finance

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

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

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

  ### Generate AI Summary of News

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

  ### Search Companies by Industry

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

  ### Find Journalist Contacts for PR Campaign

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

  ### Get Detailed Journalist Information

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

  ## AI Agent Compatibility

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

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

  ## Advanced Features

  ### Boolean Search Syntax

  Many search fields support advanced Boolean operators for precise querying:

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

  **Example Complex Query:**

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

  ### Semantic Vector Search

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

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

  ## Resources

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

  ## Support

  For issues, questions, or feature requests:

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

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with the Perigon API for accessing news intelligence, including articles, story clusters, Wikipedia data, and public figures.","capabilities":["Search and filter news articles from 140,000+ sources","Vector search for semantic similarity on news articles","Track evolving news narratives through story clusters","Search and analyze Wikipedia articles","Search for public figures, politicians, and celebrities","AI-powered summarization capabilities","Boolean operator support (AND, OR, NOT)","Advanced filtering by category, geography, language, and source","Temporal filtering with date ranges","Pagination support"],"authentication":"API key required","commonUseCases":["Real-time news monitoring and alerting","Media analysis and trend detection","Competitive intelligence gathering","Crisis communications and reputation management","Knowledge base enrichment and fact-checking"],"limitations":[],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Code"]}


node_type: n8n-nodes-binalyze-air.air
package_name: n8n-nodes-binalyze-air
display_name: AIR
description: Manage Binalyze AIR resources
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: emretinaztepe
author_github_url: https://github.com/binalyze/
npm_package_name: n8n-nodes-binalyze-air
npm_version: 1.4.3
community_fetched_at: 2026-03-25T21:19:40.748Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "organizations",
      "options": [
        {
          "name": "Acquisition",
          "value": "acquisitions",
          "description": "Manage acquisition profiles and remote acquisitions"
        },
        {
          "name": "Asset",
          "value": "assets",
          "description": "Manage endpoint assets and their operations"
        },
        {
          "name": "Baseline",
          "value": "baselines",
          "description": "Manage baselines and comparisons"
        },
        {
          "name": "Case",
          "value": "cases",
          "description": "Manage cases and case operations"
        },
        {
          "name": "InterACT",
          "value": "interact",
          "description": "Interactive shell sessions and command execution on devices"
        },
        {
          "name": "Organization",
          "value": "organizations",
          "description": "Manage organizations"
        },
        {
          "name": "Repository",
          "value": "repositories",
          "description": "Manage evidence repositories"
        },
        {
          "name": "Task",
          "value": "tasks",
          "description": "Manage tasks and task assignments"
        },
        {
          "name": "Triage Rule",
          "value": "triagerules",
          "description": "Manage triage rules"
        },
        {
          "name": "User",
          "value": "users",
          "description": "Manage users"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Assign Evidence Acquisition Task",
          "value": "assignEvidenceTask",
          "action": "Assign an evidence acquisition task",
          "description": "Assign an evidence acquisition task by filter"
        },
        {
          "name": "Get Acquisition Profile",
          "value": "get",
          "action": "Get an acquisition profile",
          "description": "Retrieve a specific acquisition profile"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "acquisitions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add Tags",
          "value": "addTags",
          "action": "Add tags to assets",
          "description": "Add tags to assets by filter"
        },
        {
          "name": "Assign Isolation Task",
          "value": "setIsolation",
          "action": "Assign isolation task to an asset",
          "description": "Assign isolation task to an asset"
        },
        {
          "name": "Assign Reboot Task",
          "value": "reboot",
          "action": "Assign reboot task to assets",
          "description": "Assign reboot task to an asset"
        },
        {
          "name": "Assign Shutdown Task",
          "value": "shutdown",
          "action": "Assign shutdown task to asset",
          "description": "Assign shutdown task to an asset"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an asset",
          "description": "Retrieve a specific asset"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many assets",
          "description": "Retrieve many assets"
        },
        {
          "name": "Get Tasks",
          "value": "getAssetTasks",
          "action": "Get asset tasks",
          "description": "Get tasks for a specific asset"
        },
        {
          "name": "Remove Tags",
          "value": "removeTags",
          "action": "Remove tags from assets",
          "description": "Remove tags from assets by filter"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assets"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "acquireBaseline",
      "options": [
        {
          "name": "Acquire Baseline",
          "value": "acquireBaseline",
          "action": "Acquire a baseline",
          "description": "Acquire baseline for endpoints"
        },
        {
          "name": "Compare Baselines",
          "value": "compareBaseline",
          "action": "Compare baselines",
          "description": "Compare two baseline acquisition results from the same endpoint"
        },
        {
          "name": "Get Comparison Report",
          "value": "getComparisonReport",
          "action": "Get comparison report",
          "description": "Get baseline comparison report"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "baselines"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Change Owner",
          "value": "changeOwner",
          "action": "Change case owner",
          "description": "Change the owner of a case"
        },
        {
          "name": "Check Name",
          "value": "checkName",
          "action": "Check case name availability",
          "description": "Check if a case name is available"
        },
        {
          "name": "Close Case",
          "value": "closeCase",
          "action": "Close a case",
          "description": "Close a specific case"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a case",
          "description": "Create a new case"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a case",
          "description": "Retrieve a specific case"
        },
        {
          "name": "Get Activities",
          "value": "getActivities",
          "action": "Get case activities",
          "description": "Get activities for a specific case"
        },
        {
          "name": "Get Endpoints",
          "value": "getEndpoints",
          "action": "Get case endpoints",
          "description": "Get endpoints for a specific case"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many cases",
          "description": "Retrieve many cases"
        },
        {
          "name": "Get Tasks",
          "value": "getTasks",
          "action": "Get case tasks",
          "description": "Get tasks for a specific case"
        },
        {
          "name": "Get Users",
          "value": "getUsers",
          "action": "Get case users",
          "description": "Get users for a specific case"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "cases"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createSession",
      "options": [
        {
          "name": "Close Session",
          "value": "closeSession",
          "action": "Close a session",
          "description": "Close an InterACT session"
        },
        {
          "name": "Create InterACT Session",
          "value": "createSession",
          "action": "Create an interact session",
          "description": "Create a new InterACT shell session for an asset"
        },
        {
          "name": "Execute Async Command",
          "value": "executeAsyncCommand",
          "action": "Execute an async command",
          "description": "Execute an asynchronous command in an InterACT session"
        },
        {
          "name": "Execute Command",
          "value": "executeCommand",
          "action": "Execute a command",
          "description": "Execute a command in an InterACT session"
        },
        {
          "name": "Get Command Response",
          "value": "getCommandMessage",
          "action": "Get a command response",
          "description": "Get the result of a command execution"
        },
        {
          "name": "Interrupt Command",
          "value": "interruptCommand",
          "action": "Interrupt a command",
          "description": "Interrupt a running command"
        },
        {
          "name": "Wait for Session to Be Live",
          "value": "waitForSession",
          "action": "Wait for session to be live",
          "description": "Wait for an InterACT session to become live by monitoring task status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "interact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add Tags",
          "value": "addTags",
          "action": "Add tags to an organization",
          "description": "Add tags to an organization"
        },
        {
          "name": "Assign User",
          "value": "assignUser",
          "action": "Assign a user to an organization",
          "description": "Assign a user to an organization"
        },
        {
          "name": "Check Name Exists",
          "value": "checkNameExists",
          "action": "Check if organization name exists",
          "description": "Check if an organization name already exists"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create an organization",
          "description": "Create a new organization"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an organization",
          "description": "Retrieve a specific organization"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many organizations",
          "description": "Retrieve many organizations"
        },
        {
          "name": "Get Users",
          "value": "getUsers",
          "action": "Get users of an organization",
          "description": "Retrieve users assigned to an organization"
        },
        {
          "name": "Remove Tags",
          "value": "removeTags",
          "action": "Remove tags from an organization",
          "description": "Remove tags from an organization"
        },
        {
          "name": "Remove User",
          "value": "removeUser",
          "action": "Remove a user from an organization",
          "description": "Remove a user from an organization"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an organization",
          "description": "Update an organization"
        },
        {
          "name": "Update Shareable Deployment",
          "value": "updateShareableDeployment",
          "action": "Update shareable deployment status",
          "description": "Update organization shareable deployment status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "organizations"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a repository",
          "description": "Get a repository by name"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many repositories",
          "description": "Get many repositories"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "repositories"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task",
          "description": "Retrieve a specific task"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tasks",
          "description": "Retrieve many tasks"
        },
        {
          "name": "Get Task Assignments",
          "value": "getTaskAssignments",
          "action": "Get task assignments",
          "description": "Retrieve assignments for a specific task"
        },
        {
          "name": "Wait for Completion",
          "value": "waitForCompletion",
          "action": "Wait for task completion",
          "description": "Wait for a task to complete with polling"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tasks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Assign Triage Task",
          "value": "assignTask",
          "action": "Assign a triage task",
          "description": "Assign a triage task"
        },
        {
          "name": "Create Triage Rule",
          "value": "create",
          "action": "Create a triage rule",
          "description": "Create a new triage rule"
        },
        {
          "name": "Delete Triage Rule",
          "value": "delete",
          "action": "Delete a triage rule",
          "description": "Delete a triage rule"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a triage rule",
          "description": "Retrieve a specific triage rule"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many triage rules",
          "description": "Retrieve many triage rules"
        },
        {
          "name": "Update Triage Rule",
          "value": "update",
          "action": "Update a triage rule",
          "description": "Update a triage rule"
        },
        {
          "name": "Validate Triage Rule",
          "value": "validate",
          "action": "Validate a triage rule",
          "description": "Validate a triage rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "triagerules"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users",
          "description": "Retrieve many users"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Retrieve a specific user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"assignEvidenceTask","name":"Assign Evidence Acquisition Task","description":"Assign an evidence acquisition task by filter","resource":"acquisitions"},{"operation":"get","name":"Get Acquisition Profile","description":"Retrieve a specific acquisition profile","resource":"acquisitions"},{"operation":"addTags","name":"Add Tags","description":"Add tags to assets by filter","resource":"assets"},{"operation":"setIsolation","name":"Assign Isolation Task","description":"Assign isolation task to an asset","resource":"assets"},{"operation":"reboot","name":"Assign Reboot Task","description":"Assign reboot task to an asset","resource":"assets"},{"operation":"shutdown","name":"Assign Shutdown Task","description":"Assign shutdown task to an asset","resource":"assets"},{"operation":"get","name":"Get","description":"Retrieve a specific asset","resource":"assets"},{"operation":"getAll","name":"Get Many","description":"Retrieve many assets","resource":"assets"},{"operation":"getAssetTasks","name":"Get Tasks","description":"Get tasks for a specific asset","resource":"assets"},{"operation":"removeTags","name":"Remove Tags","description":"Remove tags from assets by filter","resource":"assets"},{"operation":"acquireBaseline","name":"Acquire Baseline","description":"Acquire baseline for endpoints","resource":"baselines"},{"operation":"compareBaseline","name":"Compare Baselines","description":"Compare two baseline acquisition results from the same endpoint","resource":"baselines"},{"operation":"getComparisonReport","name":"Get Comparison Report","description":"Get baseline comparison report","resource":"baselines"},{"operation":"changeOwner","name":"Change Owner","description":"Change the owner of a case","resource":"cases"},{"operation":"checkName","name":"Check Name","description":"Check if a case name is available","resource":"cases"},{"operation":"closeCase","name":"Close Case","description":"Close a specific case","resource":"cases"},{"operation":"create","name":"Create","description":"Create a new case","resource":"cases"},{"operation":"get","name":"Get","description":"Retrieve a specific case","resource":"cases"},{"operation":"getActivities","name":"Get Activities","description":"Get activities for a specific case","resource":"cases"},{"operation":"getEndpoints","name":"Get Endpoints","description":"Get endpoints for a specific case","resource":"cases"},{"operation":"getAll","name":"Get Many","description":"Retrieve many cases","resource":"cases"},{"operation":"getTasks","name":"Get Tasks","description":"Get tasks for a specific case","resource":"cases"},{"operation":"getUsers","name":"Get Users","description":"Get users for a specific case","resource":"cases"},{"operation":"closeSession","name":"Close Session","description":"Close an InterACT session","resource":"interact"},{"operation":"createSession","name":"Create InterACT Session","description":"Create a new InterACT shell session for an asset","resource":"interact"},{"operation":"executeAsyncCommand","name":"Execute Async Command","description":"Execute an asynchronous command in an InterACT session","resource":"interact"},{"operation":"executeCommand","name":"Execute Command","description":"Execute a command in an InterACT session","resource":"interact"},{"operation":"getCommandMessage","name":"Get Command Response","description":"Get the result of a command execution","resource":"interact"},{"operation":"interruptCommand","name":"Interrupt Command","description":"Interrupt a running command","resource":"interact"},{"operation":"waitForSession","name":"Wait for Session to Be Live","description":"Wait for an InterACT session to become live by monitoring task status","resource":"interact"},{"operation":"addTags","name":"Add Tags","description":"Add tags to an organization","resource":"organizations"},{"operation":"assignUser","name":"Assign User","description":"Assign a user to an organization","resource":"organizations"},{"operation":"checkNameExists","name":"Check Name Exists","description":"Check if an organization name already exists","resource":"organizations"},{"operation":"create","name":"Create","description":"Create a new organization","resource":"organizations"},{"operation":"get","name":"Get","description":"Retrieve a specific organization","resource":"organizations"},{"operation":"getAll","name":"Get Many","description":"Retrieve many organizations","resource":"organizations"},{"operation":"getUsers","name":"Get Users","description":"Retrieve users assigned to an organization","resource":"organizations"},{"operation":"removeTags","name":"Remove Tags","description":"Remove tags from an organization","resource":"organizations"},{"operation":"removeUser","name":"Remove User","description":"Remove a user from an organization","resource":"organizations"},{"operation":"update","name":"Update","description":"Update an organization","resource":"organizations"},{"operation":"updateShareableDeployment","name":"Update Shareable Deployment","description":"Update organization shareable deployment status","resource":"organizations"},{"operation":"get","name":"Get","description":"Get a repository by name","resource":"repositories"},{"operation":"getAll","name":"Get Many","description":"Get many repositories","resource":"repositories"},{"operation":"get","name":"Get","description":"Retrieve a specific task","resource":"tasks"},{"operation":"getAll","name":"Get Many","description":"Retrieve many tasks","resource":"tasks"},{"operation":"getTaskAssignments","name":"Get Task Assignments","description":"Retrieve assignments for a specific task","resource":"tasks"},{"operation":"waitForCompletion","name":"Wait for Completion","description":"Wait for a task to complete with polling","resource":"tasks"},{"operation":"assignTask","name":"Assign Triage Task","description":"Assign a triage task","resource":"triagerules"},{"operation":"create","name":"Create Triage Rule","description":"Create a new triage rule","resource":"triagerules"},{"operation":"delete","name":"Delete Triage Rule","description":"Delete a triage rule","resource":"triagerules"},{"operation":"get","name":"Get","description":"Retrieve a specific triage rule","resource":"triagerules"},{"operation":"getAll","name":"Get Many","description":"Retrieve many triage rules","resource":"triagerules"},{"operation":"update","name":"Update Triage Rule","description":"Update a triage rule","resource":"triagerules"},{"operation":"validate","name":"Validate Triage Rule","description":"Validate a triage rule","resource":"triagerules"},{"operation":"getAll","name":"Get Many","description":"Retrieve many users","resource":"users"},{"operation":"get","name":"Get","description":"Retrieve a specific user","resource":"users"}]

npm_readme:
  ![Banner image](https://github.com/binalyze/n8n-nodes-binalyze-air/blob/main/assets/header-image.jpg)

  # n8n-nodes-binalyze-air

  This is an n8n community node that integrates with Binalyze AIR (Automated Incident Response) platform.

  ## Table of Contents

  - [Installation](#installation)
  - [Configuration](#configuration)
  - [Supported Resources](#supported-resources)
    - [Acquisitions](#acquisitions)
    - [Assets](#assets)
    - [Baselines](#baselines)
    - [Cases](#cases)
    - [InterACT](#interact)
    - [Organizations](#organizations)
    - [Repositories](#repositories)
    - [Tasks](#tasks)
    - [Triage Rules](#triage-rules)
    - [Users](#users)
  - [Trigger Node](#trigger-node)
    - [How to Use](#how-to-use)
    - [Supported Event Types](#supported-event-types)
    - [Event Data Structure](#event-data-structure)
  - [Development](#development)
  - [Testing](#testing)
  - [TODO](#todo)

  ## Installation

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

  ## Configuration

  Before using this node, you need to configure your Binalyze AIR credentials:

  ### Step 1: Create AIR API Key

  1. Go to AIR > Integrations > API Tokens > Add New
  	* Provide a Token Name
  	* Select an Organization
  	* Select a Role
  	* Define Expiration time
  2. Click Save button, and copy the token as you will not be able to see it again
  3. Click 'I got the token' button

  ### Step 2: Create AIR Credentials on your n8n instance

  1. In n8n, go to Settings → Credentials
  2. Add a new credential for "Binalyze AIR API"
  3. Enter your AIR instance URL and API token

  ## Supported Resources

  This node provides comprehensive coverage of Binalyze AIR's features listed below:

  ### Acquisitions
  Manage evidence acquisition profiles and tasks.

  **Operations:**
  - `get` - Retrieve a specific acquisition profile
  - `assignEvidenceTask` - Assign an evidence acquisition task by filter
  - `assignImageTask` - Assign an image acquisition task by filter
  - `createOffNetworkTask` - Create an off-network acquisition task

  ### Assets
  Manage endpoints and their associated tasks, tags, and status.

  **Operations:**
  - `addTags` - Add tags to assets by filter
  - `get` - Retrieve a specific asset
  - `getAssetTasks` - Get tasks for a specific asset
  - `getAll` - Retrieve many assets
  - `reboot` - Assign reboot task to a specific asset (returns standardized response with success status, message, asset details, task, and error information)
  - `removeTags` - Remove tags from assets by filter
  - `setIsolation` - Assign isolation task to a specific asset (checks for existing tasks and current isolation status, returns standardized response)
  - `shutdown` - Assign shutdown task to a specific asset (returns standardized response with success status, message, asset details, task, and error information)

  ### Baselines
  Acquire and compare system baselines.

  **Operations:**
  - `acquireBaseline` - Acquire baseline for endpoints
  - `compareBaseline` - Compare two baseline acquisition results from the same endpoint
  - `getComparisonReport` - Get baseline comparison report

  ### Cases
  Manage incident response cases, notes, and activities.

  **Operations:**
  - `changeOwner` - Change the owner of a case
  - `checkName` - Check if a case name is available
  - `closeCase` - Close a specific case
  - `create` - Create a new case
  - `get` - Retrieve a specific case
  - `getActivities` - Get activities for a specific case
  - `getEndpoints` - Get endpoints for a specific case
  - `getAll` - Retrieve many cases
  - `getTasks` - Get tasks for a specific case
  - `getUsers` - Get users for a specific case

  ### InterACT
  Execute commands and interact with endpoints remotely.

  **Operations:**
  - `createSession` - Create a new InterACT shell session for an asset
  - `waitForSession` - Wait for an InterACT session to become live by monitoring task status (supports indefinite wait with timeout=0)
  - `closeSession` - Close an InterACT session
  - `executeCommand` - Execute a command in an InterACT session
  - `executeAsyncCommand` - Execute an asynchronous command in an InterACT session
  - `getCommandMessage` - Get the result of a command execution
  - `interruptCommand` - Interrupt a running command

  ### Organizations
  Manage organizations and their users.

  **Operations:**
  - `addTags` - Add tags to an organization
  - `assignUser` - Assign a user to an organization
  - `checkNameExists` - Check if an organization name already exists
  - `create` - Create a new organization
  - `get` - Retrieve a specific organization
  - `getAll` - Retrieve many organizations
  - `getUsers` - Retrieve users assigned to an organization
  - `removeTags` - Remove tags from an organization
  - `removeUser` - Remove a user from an organization
  - `update` - Update an organization
  - `updateShareableDeployment` - Update organization shareable deployment status

  ### Repositories
  Manage evidence repositories.

  **Operations:**
  - `get` - Get a repository by name, ID, or from list selection
  - `getAll` - Get many repositories with filtering options

  ### Tasks
  Manage and monitor tasks and assignments.

  **Operations:**
  - `cancelTask` - Cancel a specific task
  - `cancelTaskAssignment` - Cancel a specific task assignment
  - `deleteTask` - Delete a specific task
  - `deleteTaskAssignment` - Delete a specific task assignment
  - `get` - Retrieve a specific task
  - `getAll` - Retrieve many tasks
  - `getTaskAssignments` - Retrieve assignments for a specific task
  - `waitForCompletion` - Wait for a task to complete with polling

  ### Triage Rules
  Create and manage triage rules for automated analysis.

  **Operations:**
  - `assignTask` - Assign a triage task
  - `create` - Create a new triage rule
  - `delete` - Delete a triage rule
  - `get` - Retrieve a specific triage rule
  - `getAll` - Retrieve many triage rules
  - `update` - Update a triage rule
  - `validate` - Validate a triage rule

  ### Users
  Manage user accounts and permissions.

  **Operations:**
  - `getAll` - Retrieve many users
  - `get` - Retrieve a specific user

  ## Trigger Node

  The On AIR Event-Trigger node allows you to trigger workflows based on AIR events.

  ### How to Use

  1. Add the On new AIR Trigger node to your workflow
  2. Configure your AIR API credentials
  3. Select the event types you want to listen for from the dynamically loaded list
  4. Configure the Bearer token that AIR will use for webhook authentication
  5. Copy the webhook URL from the node
  6. Create an event subscription in AIR:
     - Go to AIR > Integrations > Event Subscriptions
     - Add a new subscription with the webhook URL
     - Select the same event types
     - Provide the same Bearer token you configured in the trigger node

  ### Supported Event Types

  The trigger node dynamically loads available [event types](https://kb.binalyze.com/air/features/event-subscription) from your AIR instance, which may include:
  - TaskProcessingCompletedEvent
  - TaskProcessingFailedEvent
  - TaskCompletedEvent
  - TaskFailedEvent
  - CaseClosedEvent
  - EndpointRegisteredEvent
  - ...  

  ### Event Data Structure

  When an event is triggered, the node outputs data in the following format:
  ```json
  {
    "eventName": "TaskCompletedEvent",
    "organizationId": 0,
    "data": {
      "id": "task-id",
      "name": "Task Name",
      "type": "Task Type",
      "organizationId": "org-id",
      "totalAssignedEndpoints": 5,
      "totalCompletedEndpoints": 4
    }
  }
  ```

  ## Development

  To set up the development environment:

  1. Clone this repository
  2. Install dependencies: `yarn install`
  3. Build the project: `yarn build`
  4. Link the project using: 
     - `npm link`
     - `npm link n8n-nodes-binalyze-air`
  5. Start the development environment:
     - `yarn dev` - Start n8n in watch mode with automatic rebuilds
     - `yarn debug` - Start n8n in debug mode with verbose logging

  ### Development Scripts

  - `yarn build` - Build the project
  - `yarn dev` - Start development environment with file watching
  - `yarn debug` - Start development environment with debug logging enabled
  - `yarn restart:n8n` - Restart n8n without rebuilding

  ### Debug Mode

  The `yarn debug` command enables comprehensive debug logging to help troubleshoot issues:

  **Features:**
  - **Verbose Logging**: Sets `N8N_LOG_LEVEL=debug` for detailed n8n logs
  - **Console Output**: Direct log output to console (`N8N_LOG_OUTPUT=console`)
  - **Debug Patterns**: Enables debug output for n8n core and community nodes (`DEBUG=n8n*,n8n-nodes-*`)
  - **Error Details**: Shows detailed error information (`N8N_DETAILED_ERROR_OUTPUT=true`)
  - **Development Mode**: Sets `NODE_ENV=development` for enhanced debugging

  **Usage:**
  ```bash
  # Start development with debug logging
  yarn debug

  # Or manually start debug mode
  ./scripts/dev-watch.sh --debug
  ./scripts/restart-n8n.sh --debug
  ```

  **Debug Output Examples:**
  ```
  16:38:21.490   debug   Loaded all credentials and nodes from n8n-nodes-binalyze-air { "credentials": 1, "nodes": 1 }
  16:38:21.662   info    n8n ready on ::, port 5678
  16:38:23.607   info    Version: 1.103.2
  ```

  When debug mode is active, you'll see detailed information about:
  - Node and credential loading
  - API requests and responses
  - Workflow execution steps
  - Error stack traces
  - Internal n8n operations

  ## Testing

  The project includes an end-to-end testing workflow that can be managed using the e2e.js script.

  ### Prerequisites

  1. Create a `.env.local.yml` file in the project root with your credentials:
     ```yaml
     # n8n instance configuration
     N8N:
       INSTANCE_URL: http://127.0.0.1:5678
       API_TOKEN: your_n8n_api_token_here
     ```

  2. Ensure your n8n instance is running and you have a valid API token.

  ### Download Test Workflow

  To download the test workflow from your n8n instance:
  ```bash
  npm run test:download
  # or
  yarn test:download
  ```
  Or using the Node.js script directly:
  ```bash
  node test/e2e.js download
  ```

  This will download the `n8n-nodes-binalyze-air-e2e` workflow and save it to `test/n8n-nodes-binalyze-air-e2e.json`.

  ### Command Options

  Both commands support additional options:

  ```bash
  # Use a custom n8n instance URL
  node test/e2e.js download --url http://n8n.example.com:5678

  # Use a custom workflow name
  node test/e2e.js download --name my-custom-workflow

  # Use a custom output file
  node test/e2e.js download --file my-workflow.json
  ```


  ## TODO
  - Add interACT Library related operations

ai_documentation_summary:
  {"purpose":"This n8n community node integrates with the Binalyze AIR (Automated Incident Response) platform to manage security operations, evidence acquisition, and incident response workflows.","capabilities":["Manage evidence acquisition profiles and tasks","Manage endpoints, tags, and asset status (reboot, shutdown, isolation)","Acquire and compare system baselines","Create, manage, and close incident response cases","Execute remote commands via InterACT sessions","Manage organizations and user assignments","Manage evidence repositories","Monitor and manage task assignments and completion","Create, update, and validate triage rules","Manage user accounts and permissions"],"authentication":"API Key required (Binalyze AIR API Token)","commonUseCases":["Automated incident response workflows","Remote endpoint management and command execution","Evidence collection and acquisition automation","System baseline comparison and reporting","Incident case management and triage"],"limitations":["Community node (not official n8n node)","Requires manual API token creation in Binalyze AIR platform","README truncated (some details may be incomplete)"],"relatedNodes":["n8n-nodes-base-code","n8n-nodes-base-if","n8n-nodes-base-set"]}


node_type: n8n-nodes-llmlayer.llmLayer
package_name: n8n-nodes-llmlayer
display_name: LLMLayer
description: Search and answer questions using LLMLayer API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: yassine.khazzan
author_github_url: https://github.com/YassKhazzan/
npm_package_name: n8n-nodes-llmlayer
npm_version: 1.0.3
community_fetched_at: 2026-03-25T21:19:40.749Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "answer",
      "options": [
        {
          "name": "Answer",
          "value": "answer",
          "description": "Search and generate AI answers"
        },
        {
          "name": "Web Search",
          "value": "webSearch",
          "description": "Search the web for information"
        },
        {
          "name": "Scrape",
          "value": "scrape",
          "description": "Scrape content from a URL"
        },
        {
          "name": "YouTube",
          "value": "youtube",
          "description": "Get YouTube video transcript"
        },
        {
          "name": "PDF",
          "value": "pdf",
          "description": "Extract content from PDF"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate an answer",
          "description": "Generate an answer based on search results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "answer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search the web",
          "description": "Search the web"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webSearch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrapeUrl",
      "options": [
        {
          "name": "Scrape URL",
          "value": "scrapeUrl",
          "action": "Scrape content from URL",
          "description": "Scrape content from a URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scrape"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTranscript",
      "options": [
        {
          "name": "Get Transcript",
          "value": "getTranscript",
          "action": "Get YouTube transcript",
          "description": "Get YouTube video transcript"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "youtube"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "extractContent",
      "options": [
        {
          "name": "Extract Content",
          "value": "extractContent",
          "action": "Extract PDF content",
          "description": "Extract text from PDF"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"generate","name":"Generate","description":"Generate an answer based on search results","resource":"answer"},{"operation":"search","name":"Search","description":"Search the web","resource":"webSearch"},{"operation":"scrapeUrl","name":"Scrape URL","description":"Scrape content from a URL","resource":"scrape"},{"operation":"getTranscript","name":"Get Transcript","description":"Get YouTube video transcript","resource":"youtube"},{"operation":"extractContent","name":"Extract Content","description":"Extract text from PDF","resource":"pdf"}]

npm_readme:
  # n8n-nodes-llmlayer

  An n8n **Community Node** for [LLMLayer](https://llmlayer.ai) — a Search & Answer API that combines web search with AI-generated, source-grounded responses.

  ---

  ## Features

  * **AI‑Powered Answers**: Generate comprehensive answers using popular models (GPT‑4o, Claude 3.5, Gemini, etc.).
  * **Web Search**: General, news, shopping, videos, images, and scholar search types.
  * **Content Extraction**: Scrape public pages and return Markdown/HTML, or request PDFs/screenshots.
  * **YouTube Transcripts**: Retrieve transcripts from YouTube videos.
  * **PDF Text**: Extract text and metadata from PDFs.

  > Availability of specific models/features depends on your LLMLayer account and current API support.

  ---

  ## Compatibility

  * **n8n**: 1.68+ recommended
  * **Node.js**: 20+ recommended (align with n8n’s LTS baseline)

  ---

  ## Installation

  ### A) n8n Cloud / In‑Editor Browse

  If/when this package is **verified by n8n**, you can install it directly from the editor:

  1. **Settings → Community Nodes → Browse**
  2. Search for `LLMLayer` or `n8n-nodes-llmlayer`
  3. Click **Install**

  > If it’s not yet verified, use the self‑hosted options below.

  ### B) Self‑Hosted n8n

  **From the UI**

  1. **Settings → Community Nodes → Install**
  2. Enter `n8n-nodes-llmlayer`
  3. Install and restart n8n if prompted

  **Using npm inside your instance**

  ```bash
  npm install n8n-nodes-llmlayer
  ```

  **Using Docker (inside the container)**

  ```bash
  docker exec -it <n8n-container> npm install n8n-nodes-llmlayer
  ```

  Then restart your container.

  **Via environment variable (install at startup)**

  ```bash
  # Add to your n8n environment
  N8N_COMMUNITY_PACKAGES=n8n-nodes-llmlayer
  ```

  ---

  ## Authentication

  1. Sign up at **[https://app.llmlayer.ai](https://app.llmlayer.ai)** and create an API key.
  2. In n8n, go to **Credentials → New → LLMLayer**.
  3. Paste your API key and **Save**.

  > This node sends your queries/URLs to LLMLayer; review your privacy and data‑handling requirements before production use.

  ---

  ## Node Overview

  The node exposes the following **resources**:

  ### 1) Answer

  Generate AI answers grounded in real‑time search.

  * **Query** — Question/prompt
  * **Model** — Pick from supported models
  * **Answer Type** — `markdown` | `html` | `json`
  * **Search Type** — `general` | `news`
  * **System Prompt** — Optional instructions
  * **Location / Date Filter / Recency** — Tune search context
  * **Citations / Return Sources** — Include sources and documents
  * **Temperature / Max Tokens** — Output control

  ### 2) Web Search

  Perform targeted searches.

  * **Search Type** — `general`, `news`, `shopping`, `videos`, `images`, `scholar`
  * **Query**, **Location**, **Recency**
  * **Domain Filters** — Include/exclude specific domains

  ### 3) Scrape

  Extract content from public web pages.

  * **URL**
  * **Format** — `markdown`, `html`, `pdf`, `screenshot`
  * **Include Images / Links**

  ### 4) YouTube

  Fetch video transcripts.

  * **URL**
  * **Language** (optional)

  ### 5) PDF

  Extract text from a PDF URL.

  * **URL**

  ---

  ## Usage Examples

  ### Answer (Markdown)

  ```json
  {
    "resource": "answer",
    "query": "What are the latest developments in AI?",
    "model": "openai/gpt-4o-mini",
    "answer_type": "markdown",
    "citations": true,
    "return_sources": true
  }
  ```

  ### News Search (Past Week, US)

  ```json
  {
    "resource": "webSearch",
    "query": "artificial intelligence breakthroughs",
    "search_type": "news",
    "recency": "week",
    "location": "us"
  }
  ```

  ### Structured JSON Answer

  ```json
  {
    "resource": "answer",
    "query": "List top 5 programming languages",
    "model": "anthropic/claude-3-5-sonnet-latest",
    "answer_type": "json",
    "json_schema": {
      "type": "object",
      "properties": {
        "languages": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {"type": "string"},
              "rank": {"type": "number"},
              "use_cases": {"type": "array"}
            },
            "required": ["name", "rank"]
          }
        }
      },
      "required": ["languages"]
    }
  }
  ```

  ---

  ## Error Handling & Tips

  * Enable **Continue On Fail** to keep workflows running on non‑critical errors.
  * Common issues:

      * **401/403** → Invalid/expired API key
      * **429** → Rate limit exceeded (add a Wait node or retry)
      * **Network timeouts** → Increase node timeout or add retries
      * **Access‑restricted pages** (Scrape) → Paywalls/blocks/dynamic content may limit extraction

  ---

  ## Support

  * **Docs**: [https://docs.llmlayer.ai](https://docs.llmlayer.ai)
  * **Issues**: [https://github.com/YassKhazzan/n8n-nodes-llmlayer/issues](https://github.com/YassKhazzan/n8n-nodes-llmlayer/issues)
  * **Email**: [support@llmlayer.ai](mailto:support@llmlayer.ai)

  ---

  ## License

  MIT

  ---

  ## Author

  Yassine Khazzan — [LLMLayer](https://llmlayer.ai)

  ---

  ## Changelog

  ### 1.0.2

  * Polish: README, metadata, minor fixes

  ### 1.0.1

  * Passed security scan

  ### 1.0.0

  * Initial release with Answer, Web Search, Scrape, YouTube, PDF

ai_documentation_summary:
  {"purpose":"A community n8n node that integrates with the LLMLayer API to perform web search, scrape content, extract PDFs, and generate AI-powered answers grounded in real-time sources.","capabilities":["Generate AI answers with citations and source grounding","Perform web searches across multiple types (general, news, shopping, videos, images, scholar)","Scrape public web pages and extract content in Markdown, HTML, PDF, or screenshot formats","Retrieve YouTube video transcripts","Extract text and metadata from PDF URLs","Configure output formats (Markdown, HTML, JSON) with custom schemas","Filter search results by location, date, and domain","Control AI generation via temperature and token limits"],"authentication":"API key required (configured via n8n Credentials)","commonUseCases":["Researching current events with source citations","Extracting structured data from web pages","Analyzing YouTube content via transcripts","Processing PDF documents for text extraction","Generating grounded answers for RAG workflows"],"limitations":["Availability of specific models and features depends on the user's LLMLayer account and API support","Scraping may be limited by paywalls, access restrictions, or dynamic content on target pages","Rate limits may require retry logic or wait nodes to prevent 429 errors","Not yet verified by n8n for direct installation in n8n Cloud (may require self-hosted installation)"],"relatedNodes":["n8n-nodes-webhook.webhook","n8n-nodes-http.request","n8n-nodes.wait.wait","n8n-nodes.code.code"]}


node_type: n8n-nodes-crossmint.crossmintWallets
package_name: n8n-nodes-crossmint
display_name: Crossmint Wallets
description: Interact with Crossmint Wallet APIs
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: manuxmint
author_github_url: https://github.com/crossmint/
npm_package_name: n8n-nodes-crossmint
npm_version: 1.1.0
community_fetched_at: 2026-03-25T21:19:40.749Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "wallet",
      "options": [
        {
          "name": "Wallet",
          "value": "wallet",
          "description": "Crossmint wallet operations"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getOrCreateWallet",
      "options": [
        {
          "name": "Create Transfer",
          "value": "createTransfer",
          "action": "Create transfer",
          "description": "Create Transfer from Crossmint wallet to any address"
        },
        {
          "name": "Get Balance",
          "value": "getBalance",
          "action": "Get balance",
          "description": "Get balance of any wallet"
        },
        {
          "name": "Get or Create Wallet",
          "value": "getOrCreateWallet",
          "action": "Get or create wallet",
          "description": "Get or Create Crossmint wallet for company or user"
        },
        {
          "name": "Get Wallet",
          "value": "getWallet",
          "action": "Get wallet",
          "description": "Retrieve a wallet by its locator"
        },
        {
          "name": "Sign Transaction",
          "value": "signTransaction",
          "action": "Sign transaction",
          "description": "Sign transaction with private key and submit signature in one step"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "wallet"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"createTransfer","name":"Create Transfer","description":"Create Transfer from Crossmint wallet to any address","resource":"wallet"},{"operation":"getBalance","name":"Get Balance","description":"Get balance of any wallet","resource":"wallet"},{"operation":"getOrCreateWallet","name":"Get or Create Wallet","description":"Get or Create Crossmint wallet for company or user","resource":"wallet"},{"operation":"getWallet","name":"Get Wallet","description":"Retrieve a wallet by its locator","resource":"wallet"},{"operation":"signTransaction","name":"Sign Transaction","description":"Sign transaction with private key and submit signature in one step","resource":"wallet"}]

npm_readme:
  # n8n Community Node for Crossmint

  ## Table of Contents

  - [Installation](#-installation-local-development-setup)
  - [Your First Workflow Using Crossmint](#️-your-first-workflow-using-crossmint)
    - [Step 1: Add the Crossmint Node to Your Workflow](#step-1-add-the-crossmint-node-to-your-workflow)
    - [Step 2: Set Up Crossmint Project & Credentials](#step-2-set-up-crossmint-project--credentials)
    - [Getting Test USDC for Staging](#getting-test-usdc-for-staging)
  - [Supported Operations](#-supported-operations)
    - [Resource: Wallet](#resource-wallet)
    - [Resource: Checkout](#resource-checkout)
  - [API Reference](#-api-reference)
    - [Wallet Operations](#wallet-operations)
    - [Checkout Operations](#checkout-operations)
    - [Additional Resources](#additional-resources)
  - [Understanding Wallet Locators](#-understanding-wallet-locators)
    - [Locator Types](#locator-types)
    - [Chain Types](#chain-types)
    - [Best Practices](#best-practices)
  - [Admin Signer Private Key](#-admin-signer-private-key)
  - [Example Workflows](#-example-workflows)
  - [License](#-license)

  This community node for n8n provides a complete integration with Crossmint's **Wallet** and **Checkout** APIs. It allows users and AI agents to program digital money inside wallets, and automate the purchase of physical products all within your n8n workflows.

  ### 🏗️ Recent Updates
  - **Modular Architecture**: Refactored codebase into organized modules for better maintainability
  - **Enhanced Error Handling**: Improved error reporting with proper API error propagation
  - **Development Workflow**: Added `npm run dev` for automatic rebuilds during development
  - **Code Quality**: Fixed all linting issues and added comprehensive type safety

  ## 🚀 Installation (Local Development Setup)


  For now you have to run the Crossmint node from source:

  1.  **Clone the repository:** (anywhere in your disk - doesn't need to be inside the n8n folder)
      ```bash
      git clone https://github.com/Crossmint/n8n-nodes-crossmint.git
      cd n8n-nodes-crossmint
      ```
  2.  **Install dependencies and build:**
      ```bash
      npm install
      npm run build
      ```

      **Development Commands:**
      ```bash
      sudo npm run dev          # Run in development mode with auto-reload
      ```


  > **📝 Note**: You must use the self-hosted version of n8n to run Crossmint nodes. Follow [this guide](https://docs.n8n.io/integrations/creating-nodes/build/n8n-node/) to set it up.


  ## ⚙️ Your First Workflow Using Crossmint

  Once you've installed the community node, here's how to add and configure your first Crossmint node:

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

  1. In your n8n workflow editor, click the **"+"** button to add a new node
  2. Search for **"Crossmint"** in the node library
  3. Select the **Crossmint** node from the results

  <div align="center">
  <img src="./images/crossmint-search.png" alt="Crossmint node search" width="50%">
  </div>


  4. For this example, we'll use **"Get or Create Wallet"** operation:

  <div align="center">
  <img src="./images/crossmint-config.png" alt="Crossmint node configuration" width="50%">
  </div>


  ### Step 2: Set Up Crossmint Project & Credentials

  5. First, create a Crossmint project in Staging:
     - Go to [Crossmint Staging Console](https://staging.crossmint.com/console/overview)
     - Create a new project or select an existing one
     - Copy your **server-side API key** from the project settings

  <div align="center">
  <img src="./images/crossmint-staging-console.png" alt="Crossmint staging console" width="75%">
  </div>


  6. Back in n8n, in your Crossmint node, click on **"Credential to connect with"** dropdown
  7. Select **"Create New"** to add your Crossmint credentials (this will be available for all future Crossmint nodes)

  8. In the credential configuration:
     - Enter your Crossmint **API Key** (must be a **server-side** API key)
     - Set **Environment** to **"Staging"** for testing
     - Click **"Save"**

  <div align="center">
  <img src="./images/credential-form.png" alt="Crossmint API credential form" width="75%">
  </div>


  9. Complete the wallet configuration (e.g., set Owner Type to "Email" and enter an email address)

  <div align="center">
  <img src="./images/completed-config.png" alt="Completed node configuration" width="50%">
  </div>


  > **⚠️ Important**: Always use **server-side API keys** from Crossmint. Client-side keys will not work. For initial testing, always use **Staging** environment.

  ### Getting Test USDC for Staging

  To test transactions in staging, you'll need test USDC tokens. You can get them from:

  - **Circle Faucet**: [https://faucet.circle.com/](https://faucet.circle.com/) - Get free testnet USDC
  - **Crossmint Telegram**: [https://t.me/crossmintdevs](https://t.me/crossmintdevs) - Request USDC from Crossmint

  ## 💡 Supported Operations

  The node is organized into two primary resources: **Wallet** and **Checkout**.

  ### Resource: Wallet
  Operations for managing blockchain wallets which can hold and transfer money (in cryptocurrencies like USDC).

  * **Get or Create Wallet**: Creates a non-custodial smart wallet or retrieves an existing one. You maintain full control via a private key that authorizes all transactions. This operation is idempotent.
    - `Chain Type` - Blockchain type (solana)
    - `Owner Type` - Optional owner identifier type (email, userId, phone, twitter, x, none)
    - `Owner Details` - Specific owner information based on selected type
    - `Admin Signer` - Private key that authorizes all transactions from this wallet ([see Admin Signer Private Key](#🔐-admin-signer-private-key))

  * **Get Wallet**: Retrieves wallet details using its wallet locator (address, email, user ID, etc.).
    - `Wallet` - Wallet identifier (address, email, userId, phone, twitter, x)
    - `Chain Type` - Required for non-address locators (solana)

  * **Create Transfer**: Sends tokens (like USDC) between wallets. Requires the wallet's private key to digitally sign and authorize the transfer.
    - `Blockchain Type` - Network type for both wallets (solana)
    - `Origin Wallet` - Source wallet for the transfer
    - `Recipient Wallet` - Destination wallet for the transfer
    - `Token Chain` - Specific blockchain network (e.g., solana, solana-devnet)
    - `Token Name` - Token symbol or identifier (e.g., usdc)
    - `Amount` - Token amount to transfer

  * **Get Balance**: Checks token balances for a wallet across one or more blockchain networks.
    - `Wallet` - Wallet locator to check balance for (address, email, userId, phone, twitter, x)
    - `Chain Type` - Required for non-address locators (solana)
    - `Chains` - Blockchain network to query (e.g., solana, solana-devnet)
    - `Tokens` - Comma-separated list of token symbols to query

  * **Sign Transaction**: Signs a transaction with a private key and submits the signature to complete pending transactions.
    - `Chain` - Blockchain network for transaction signing
    - `Wallet Address` - Wallet address from Create Transfer response
    - `Transaction ID` - Transaction ID that needs approval
    - `Transaction Data` - Hash or message to sign from transfer response
    - `Signer Address` - Address of the external signer
    - `Signer Private Key` - Private key to sign the transaction
    - `Wait for Completion` - Poll until transaction reaches final status

  ### Resource: Checkout
  Operations to automate the purchase of products using digital money (e.g. tokens like USDC). This is a two-step process.

  * **Create Order**: Creates a purchase order for a product from Amazon or Shopify.
    - `Platform` - E-commerce platform (amazon or shopify)
    - `Product Identifier` - Product URL or ASIN/ID from platform (e.g., Amazon URL or ASIN like B01DFSADS2)
    - `Recipient Email` - Email address for order confirmation
    - `Recipient Name` - Full name for shipping address
    - `Address Line 1` - Primary shipping address
    - `Address Line 2` - Secondary address (optional)
    - `City` - Shipping city
    - `State` - Shipping state/province (optional)
    - `Postal Code` - ZIP/postal code
    - `Country` - Shipping country (Amazon: US only, Shopify: varies by store)
    - `Environment` - Environment to use for payment methods (Staging/Testnet or Production/Mainnet)
    - `Payment Method` - Blockchain network for payment
    - `Payment Currency` - Currency for payment (e.g., usdc)
    - `Payer Address` - Wallet address that will pay for the order

  * **Pay Order**: Executes the payment for a previously created order using the serialized transaction from Create Order.
    - `Serialized Transaction` - Transaction data from Create Order response
    - `Payment Chain` - Blockchain network for payment
    - `Payer Wallet Address` - Wallet address making the payment
    - `Private Key` - Private key to authorize the payment


  ## 📖 API Reference

  For detailed information about each operation, parameters, and response formats, refer to the official Crossmint API documentation:

  ### Wallet Operations
  - **Get or Create Wallet**: [Crossmint Wallets API](https://docs.crossmint.com/api-reference/wallets/create-wallet)
  - **Get Wallet**: [Crossmint Wallets API - Get Wallet](https://docs.crossmint.com/api-reference/wallets/get-wallet-by-locator)
  - **Create Transfer**: [Crossmint Wallets API - Transfer Tokens](https://docs.crossmint.com/api-reference/wallets/transfer-token)
  - **Get Balance**: [Crossmint Wallets API - Get Balance](https://docs.crossmint.com/api-reference/wallets/get-wallet-balance)
  - **Sign Transaction**: [Crossmint Wallets API - Submit Approvals](https://docs.crossmint.com/api-reference/wallets/submit-transaction-approvals)

  ### Checkout Operations
  - **Create Order**: [Crossmint Checkout API - Create Order](https://docs.crossmint.com/api-reference/headless/create-order)
  - **Pay Order**: [Crossmint Checkout API - Submit Transaction](https://docs.crossmint.com/api-reference/wallets/create-transaction)


  ### Additional Resources
  - [Supported Chains and Tokens](https://docs.crossmint.com/introduction/supported-chains#supported-chains)

  ## 🔑 Understanding Wallet Locators

  Wallet locators are a key concept used throughout all Crossmint node operations. They provide a flexible way to identify and reference wallets using different types of identifiers.

  ### Locator Types

  | Type | Format | Example | Use Case |
  |------|--------|---------|----------|
  | **Wallet Address** | `1A1z...` | `1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa` | Direct blockchain address reference |
  | **Email** | `email:{email}:{chainType}:smart` | `email:user@example.com:solana:smart` | User identification by email |
  | **User ID** | `userId:{id}:{chainType}:smart` | `userId:user-123:solana:smart` | Custom user identifier |
  | **Phone Number** | `phoneNumber:{phone}:{chainType}:smart` | `phoneNumber:+1234567890:solana:smart` | SMS-based identification |
  | **Twitter Handle** | `twitter:{handle}:{chainType}:smart` | `twitter:username:solana:smart` | Social media identification |
  | **X Handle** | `x:{handle}:{chainType}:smart` | `x:username:solana:smart` | X (formerly Twitter) identification |


  For more detailed information about wallet locator formats and specifications, see: [Crossmint Wallet Locators Documentation](https://docs.crossmint.com/api-reference/wallets/get-wallet-by-locator)

  ### Chain Types

  - **Solana**: Solana blockchain

  ### Best Practices

  1. **Email locators** are ideal for user-friendly identification
  2. **Wallet addresses** provide direct blockchain access
  3. **User ID locators** work well with existing user management systems
  4. Always specify the correct chain type for non-address locators

  ## 🔐 Admin Signer Private Key

  The **Admin Signer Private Key** is a critical security component that gives you full control over your Crossmint wallet. Understanding how it works is essential for secure wallet management.

  ### What is an Admin Signer?

  The Admin Signer is the private key that acts as the "master key" for your smart wallet. It's used to:
  - **Authorize all transactions** from the wallet
  - **Sign transfer approvals** when moving tokens
  - **Control wallet permissions** and operations

  ### Key Requirements by Blockchain

  **For Solana:**
  - Format: Base58 encoded string
  - Example: `5Kb8kLf9CJtPkDCe4jfE9TjC8d7X9e3Jh4F6h8F2K3h7J9F4K6h8F2K3h7J9F4K6h`
  - Typically 64 bytes when decoded

  ### Generating Private Keys

  You can generate secure private keys using:
  - **Crossmint Generator**: [https://www.val.town/x/Crossmint/crypto-address-generator](https://www.val.town/x/Crossmint/crypto-address-generator)
  - **Phantom Wallet**: Export private key from an existing Solana wallet
  - **Solana CLI**: Generate Solana keypairs
  - **Hardware wallets**: Export or derive keys securely

  ### Security Best Practices

  ⚠️ **Critical Security Guidelines:**

  1. **Never share** your private key with anyone
  2. **Store securely** - use environment variables or secure vaults
  3. **Use different keys** for staging vs production
  4. **Backup safely** - store in multiple secure locations
  5. **Test first** - always test with small amounts on testnet
  6. **Rotate regularly** - consider changing keys periodically

  ### How It Works in Crossmint

  1. **Wallet Creation**: Your private key becomes the admin signer for the smart wallet
  2. **Transaction Flow**:
     - Create transaction → Crossmint generates approval request
     - Sign with private key → Submit signature to complete transaction
  3. **Non-Custodial**: You control the key, you control the wallet

  ## 📁 Example Workflows

  Ready-to-use workflow examples are available in the `workflows-examples/` folder:

  - [buy-celsius.json](workflows-examples/buy-celsius.json): Complete flow demonstrating wallet operations (get wallet, check balance) followed by checkout (create order and pay order).

  <div align="center">
  <img src="./images/buy-celsius.png" alt="Buy Celsius workflow" width="100%">
  </div>

  - [buy-items-amazon.json](workflows-examples/buy-items-amazon.json): Advanced workflow with AI-powered order processing that accepts free-form messages via Chat (can be Telegram), extracts order details using OpenAI, and automatically purchases Amazon products.

  <div align="center">
  <img src="./images/buy-items-from-amazon.png" alt="Buy items from Amazon workflow" width="100%">
  </div>

  To use these examples:
  1. Import the JSON file into your n8n instance
  2. Configure your Crossmint API credentials
  3. Update any personal information (email addresses, wallet addresses, etc.)
  4. Execute the workflow

  ## 📄 License

  MIT

  -----

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with Crossmint's Wallet and Checkout APIs to manage digital wallets, create non-custodial smart wallets, and automate the purchase of physical products within n8n workflows.","capabilities":["Create or retrieve non-custodial smart wallets","Manage wallet details using various locator types (address, email, userId, phone, twitter, x)","Automate purchase of physical products via Checkout API","Handle blockchain transactions (e.g., Solana)","Support multiple owner identifier types (email, userId, phone, twitter, x, none)","Test transactions using Staging environment and testnet tokens"],"authentication":"API key required (server-side API key from Crossmint Console)","commonUseCases":["Automating digital wallet creation for AI agents or users","Testing wallet transactions in a staging environment","Automating the purchase of physical goods using blockchain payments","Managing wallet ownership via email or social identifiers"],"limitations":["Requires self-hosted n8n version (not available in cloud-hosted n8n)","Must use server-side API keys; client-side keys are not supported","Initial setup requires running node from source (git clone, npm install, npm run build)","Development mode requires manual setup of npm run dev for auto-rebuilds"],"relatedNodes":["n8n HTTP Request","n8n Credentials","n8n Blockchain nodes"]}


node_type: @picsart/n8n-nodes-picsart-creative-apis.picsartVideo
package_name: @picsart/n8n-nodes-picsart-creative-apis
display_name: Picsart Video AI
description: Generate images and stickers with Picsart API: generate from prompt
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: romiksar
author_github_url: https://github.com/PicsArt/n8n-plugin.git
npm_package_name: @picsart/n8n-nodes-picsart-creative-apis
npm_version: 5.3.2
community_fetched_at: 2026-03-25T21:19:40.749Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "video",
      "options": [
        {
          "name": "Video",
          "value": "video"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Add Watermark",
      "options": [
        {
          "name": "Add Watermark",
          "value": "Add Watermark",
          "action": "Add watermark to video",
          "description": "Add a watermark image to your video"
        },
        {
          "name": "Clip a Video",
          "value": "Clip a Video",
          "action": "Clip a video",
          "description": "Trim the video to a specific segment (start/end in milliseconds)"
        },
        {
          "name": "Compress Video to Size",
          "value": "Compress video to size",
          "action": "Compress video to size",
          "description": "Reduce your video file to a specific size in MB without losing quality"
        },
        {
          "name": "Crop Video",
          "value": "Crop Video",
          "action": "Crop video to desired size",
          "description": "Crop the video to width/height with optional start position"
        },
        {
          "name": "Fit Video",
          "value": "Fit Video",
          "action": "Fit video to ratio or dimensions",
          "description": "Fit video to different ratios or width/height; optional background"
        },
        {
          "name": "Make Video CTV-Compatible",
          "value": "Make Video CTV-Compatible",
          "action": "Make video ctv compatible",
          "description": "Convert video to meet CTV (Connected TV) requirements"
        },
        {
          "name": "Mute Video",
          "value": "Mute Video",
          "action": "Mute video audio",
          "description": "Set video volume to 0 (mute) or keep original volume"
        },
        {
          "name": "Video Filters and Effects",
          "value": "Video Filters and Effects",
          "action": "Apply effect or filter to video",
          "description": "Apply one of 24+ effects (e.g. vignette, sharpen, noise) to a video"
        },
        {
          "name": "Video FPS Upscale",
          "value": "Video FPS Upscale",
          "action": "Upscale video to 60 FPS",
          "description": "Upscale low FPS video to 60 FPS using Generative AI"
        },
        {
          "name": "Video Highlights",
          "value": "Video Highlights",
          "action": "Create highlights video",
          "description": "Pick segments from a video and concatenate them into one output"
        },
        {
          "name": "Video to GIF",
          "value": "Video to GIF",
          "action": "Convert video to GIF",
          "description": "Convert video to GIF (format GIF)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"Add Watermark","name":"Add Watermark","description":"Add a watermark image to your video","resource":"video"},{"operation":"Clip a Video","name":"Clip a Video","description":"Trim the video to a specific segment (start/end in milliseconds)","resource":"video"},{"operation":"Compress video to size","name":"Compress Video to Size","description":"Reduce your video file to a specific size in MB without losing quality","resource":"video"},{"operation":"Crop Video","name":"Crop Video","description":"Crop the video to width/height with optional start position","resource":"video"},{"operation":"Fit Video","name":"Fit Video","description":"Fit video to different ratios or width/height; optional background","resource":"video"},{"operation":"Make Video CTV-Compatible","name":"Make Video CTV-Compatible","description":"Convert video to meet CTV (Connected TV) requirements","resource":"video"},{"operation":"Mute Video","name":"Mute Video","description":"Set video volume to 0 (mute) or keep original volume","resource":"video"},{"operation":"Video Filters and Effects","name":"Video Filters and Effects","description":"Apply one of 24+ effects (e.g. vignette, sharpen, noise) to a video","resource":"video"},{"operation":"Video FPS Upscale","name":"Video FPS Upscale","description":"Upscale low FPS video to 60 FPS using Generative AI","resource":"video"},{"operation":"Video Highlights","name":"Video Highlights","description":"Pick segments from a video and concatenate them into one output","resource":"video"},{"operation":"Video to GIF","name":"Video to GIF","description":"Convert video to GIF (format GIF)","resource":"video"}]

npm_readme:
  # @picsart/n8n-nodes-picsart-creative-apis

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

  n8n community nodes for image processing and generation using Picsart APIs.
  ## 💻 Development

  ### Setup
  ```bash
  git clone <repository-url>
  cd n8n-nodes-picsart-creative-apis
  pnpm install
  pnpm run build
  ```

  ### Available Scripts
  ```bash
  pnpm run dev        # Watch mode
  pnpm run build      # Build
  pnpm run lint       # Lint code
  pnpm run lintfix    # Fix linting issues
  ```

  ### Docker Development
  ```bash
  ./rebuild.sh
  # Open http://localhost:5678
  ```

  ## 🚀 Release

  Use the automated release script:

  ```bash
  ./release.sh patch    # Bug fixes (0.1.0 → 0.1.1)
  ./release.sh minor    # New features (0.1.0 → 0.2.0)
  ./release.sh major    # Breaking changes (0.1.0 → 1.0.0)
  ```

  Then push:
  ```bash
  git push && git push --tags
  ```

  CI/CD will automatically publish to npm.

  ## 📖 Resources

  - [Picsart API Documentation](https://docs.picsart.io/)
  - [n8n Documentation](https://docs.n8n.io/)
  - [Creating n8n Nodes](https://docs.n8n.io/integrations/creating-nodes/)
    
  ## Installation

  **For n8n Cloud:**
  1. Settings > Community Nodes > Install
  2. Enter: `@picsart/n8n-nodes-picsart-creative-apis`

  **For Self-hosted:**

  npm install @picsart/n8n-nodes-picsart-creative-apis

  Then restart n8n.

  **Setup Credentials:**
  1. Get API key from [Picsart Console](https://console.picsart.io/dashboard)
  2. In n8n: Settings → Credentials → Add "Picsart API"
  3. Paste your API key


  ## 📚 Nodes

  ### Picsart Text2Image
  Generate images from text prompts using Picsart GenAI API.

  **Key Parameters:**
  - Prompt (required): Text description of the image to generate
  - Width: Image width in pixels (default: 1024, max: 1024)
  - Height: Image height in pixels (default: 1024, max: 1024)

  **Output:** Binary image + JSON with prompt, dimensions, transaction ID, and image URL

  **Documentation:** [Picsart Text2Image API](https://docs.picsart.io/reference/genai-text2image-1)

  ### Picsart Enhance
  Upscale and enhance images with AI.

  **Key Parameters:**
  - Image URL (required, supports JPG/PNG/WEBP)
  - Upscale Factor: 2x, 4x, 6x, 8x, 16x
  - Format: JPG | PNG | WEBP

  **Output:** Binary image + JSON with URL and credits

  ### Picsart Remove Background

  **Key Parameters:**
  - Image URL (required)
  - Output Type: cutout | mask
  - Background: color, image URL, or transparent
  - Effects: blur, stroke, shadow
  - Format: JPG | PNG | WEBP

  **Output:** Binary image + JSON with URL and credits

ai_documentation_summary:
  {"purpose":"This n8n community node package provides three nodes for generating and processing images using the Picsart API, including text-to-image generation, image enhancement, and background removal.","capabilities":["Generate images from text prompts (Text2Image)","Upscale and enhance images (Enhance)","Remove image backgrounds (Remove Background)","Support for JPG, PNG, and WEBP formats","Variable image dimensions for generation","Multiple upscale factors (2x to 16x)","Customizable background options (color, image URL, transparent)"],"authentication":"API key required","commonUseCases":["Creating custom images from descriptive text prompts","Upscaling low-resolution images for print quality","Removing backgrounds for product listings or e-commerce","Batch processing image assets for content creation"],"limitations":["Text2Image generation limited to 1024x1024 maximum dimensions","Enhance and Remove Background nodes require image URLs as input","Background removal supports only specific output types (cutout or mask)"],"relatedNodes":["Picsart Text2Image","Picsart Enhance","Picsart Remove Background"]}


node_type: @picsart/n8n-nodes-picsart-creative-apis.picsartGeneration
package_name: @picsart/n8n-nodes-picsart-creative-apis
display_name: Picsart Generative AI-Hub
description: Generate images and stickers with Picsart API: generate from prompt
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: romiksar
author_github_url: https://github.com/PicsArt/n8n-plugin.git
npm_package_name: @picsart/n8n-nodes-picsart-creative-apis
npm_version: 5.3.2
community_fetched_at: 2026-03-25T21:19:40.750Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "text2Image",
      "options": [
        {
          "name": "text2Image",
          "value": "text2Image",
          "action": "Generate an image from text prompt",
          "description": "Generate an image from a text prompt using AI"
        },
        {
          "name": "text2Sticker",
          "value": "text2Sticker",
          "action": "Generate a sticker from text prompt",
          "description": "Generate a sticker from a text prompt using AI"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "text2Image",
      "value": "text2Image",
      "action": "Generate an image from text prompt",
      "description": "Generate an image from a text prompt using AI"
    },
    {
      "name": "text2Sticker",
      "value": "text2Sticker",
      "action": "Generate a sticker from text prompt",
      "description": "Generate a sticker from a text prompt using AI"
    }
  ]

npm_readme:
  # @picsart/n8n-nodes-picsart-creative-apis

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

  n8n community nodes for image processing and generation using Picsart APIs.
  ## 💻 Development

  ### Setup
  ```bash
  git clone <repository-url>
  cd n8n-nodes-picsart-creative-apis
  pnpm install
  pnpm run build
  ```

  ### Available Scripts
  ```bash
  pnpm run dev        # Watch mode
  pnpm run build      # Build
  pnpm run lint       # Lint code
  pnpm run lintfix    # Fix linting issues
  ```

  ### Docker Development
  ```bash
  ./rebuild.sh
  # Open http://localhost:5678
  ```

  ## 🚀 Release

  Use the automated release script:

  ```bash
  ./release.sh patch    # Bug fixes (0.1.0 → 0.1.1)
  ./release.sh minor    # New features (0.1.0 → 0.2.0)
  ./release.sh major    # Breaking changes (0.1.0 → 1.0.0)
  ```

  Then push:
  ```bash
  git push && git push --tags
  ```

  CI/CD will automatically publish to npm.

  ## 📖 Resources

  - [Picsart API Documentation](https://docs.picsart.io/)
  - [n8n Documentation](https://docs.n8n.io/)
  - [Creating n8n Nodes](https://docs.n8n.io/integrations/creating-nodes/)
    
  ## Installation

  **For n8n Cloud:**
  1. Settings > Community Nodes > Install
  2. Enter: `@picsart/n8n-nodes-picsart-creative-apis`

  **For Self-hosted:**

  npm install @picsart/n8n-nodes-picsart-creative-apis

  Then restart n8n.

  **Setup Credentials:**
  1. Get API key from [Picsart Console](https://console.picsart.io/dashboard)
  2. In n8n: Settings → Credentials → Add "Picsart API"
  3. Paste your API key


  ## 📚 Nodes

  ### Picsart Text2Image
  Generate images from text prompts using Picsart GenAI API.

  **Key Parameters:**
  - Prompt (required): Text description of the image to generate
  - Width: Image width in pixels (default: 1024, max: 1024)
  - Height: Image height in pixels (default: 1024, max: 1024)

  **Output:** Binary image + JSON with prompt, dimensions, transaction ID, and image URL

  **Documentation:** [Picsart Text2Image API](https://docs.picsart.io/reference/genai-text2image-1)

  ### Picsart Enhance
  Upscale and enhance images with AI.

  **Key Parameters:**
  - Image URL (required, supports JPG/PNG/WEBP)
  - Upscale Factor: 2x, 4x, 6x, 8x, 16x
  - Format: JPG | PNG | WEBP

  **Output:** Binary image + JSON with URL and credits

  ### Picsart Remove Background

  **Key Parameters:**
  - Image URL (required)
  - Output Type: cutout | mask
  - Background: color, image URL, or transparent
  - Effects: blur, stroke, shadow
  - Format: JPG | PNG | WEBP

  **Output:** Binary image + JSON with URL and credits

ai_documentation_summary:
  {"purpose":"A community n8n node package that enables image generation and manipulation using Picsart's creative APIs, including text-to-image generation, image enhancement, and background removal.","capabilities":["Generate images from text prompts (Text2Image)","Upscale and enhance images (Enhance)","Remove image backgrounds (Remove Background)","Support for JPG, PNG, and WEBP formats","Variable image dimensions for generation","Multiple upscale factors (2x to 16x)","Customizable background options (color, image URL, transparent)"],"authentication":"API Key required (obtained from Picsart Console)","commonUseCases":["Creating images from descriptive text prompts for content generation","Upscaling low-resolution images for high-quality output","Removing backgrounds from product photos or illustrations","Batch processing image enhancements in automated workflows"],"limitations":["Text2Image generation is limited to 1024x1024 pixel dimensions","Enhance and Remove Background nodes require input image URLs","Background removal supports limited effect types (blur, stroke, shadow)","No specific rate limits mentioned in documentation"],"relatedNodes":["Picsart Text2Image","Picsart Enhance","Picsart Remove Background","n8n Binary Node","n8n HTTP Request Node"]}


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-03-25 21:19:40
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-03-25T21:19:40.750Z
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:
  [{"operation":"getAll","name":"Get All","description":"Get all user audit logs","resource":"auditLogs"},{"operation":"getBrandProtection","name":"Get Brand Protection","description":"Get brand protection data by type","resource":"brandProtection"},{"operation":"getBotnetData","name":"Get Botnet Data","description":"Get botnet data","resource":"darkWebMonitoring"},{"operation":"getBlackmarket","name":"Get Blackmarket Data","description":"Get blackmarket data","resource":"darkWebMonitoring"},{"operation":"getSuspiciousContent","name":"Get Suspicious Content","description":"Get suspicious content","resource":"darkWebMonitoring"},{"operation":"getPiiExposure","name":"Get PII Exposure","description":"Get PII exposure data","resource":"darkWebMonitoring"},{"operation":"getImContent","name":"Get IM Content","description":"Get IM content","resource":"darkWebMonitoring"},{"operation":"getDigitalAssets","name":"Get Digital Assets","description":"Get all digital assets","resource":"digitalFootprint"},{"operation":"addAsset","name":"Add Asset","description":"Add a new digital asset","resource":"digitalFootprint"},{"operation":"markFalsePositive","name":"Mark False Positive","description":"Mark an asset as false positive","resource":"digitalFootprint"},{"operation":"toggleMonitoring","name":"Toggle Monitoring","description":"Toggle monitoring for an asset","resource":"digitalFootprint"},{"operation":"getFraudProtection","name":"Get Fraud Protection","description":"Get fraud protection data","resource":"fraudProtection"},{"operation":"getAll","name":"Get All","description":"Get all incidents","resource":"incident"},{"operation":"get","name":"Get","description":"Get a single incident","resource":"incident"},{"operation":"addComment","name":"Add Comment","description":"Add a comment to an incident","resource":"incident"},{"operation":"addTag","name":"Add Tag","description":"Add a tag to an incident","resource":"incident"},{"operation":"removeTag","name":"Remove Tag","description":"Remove a tag from an incident","resource":"incident"},{"operation":"createDomain","name":"Create Domain Takedown","description":"Create a domain takedown request","resource":"takedown"},{"operation":"createSocialMedia","name":"Create Social Media Takedown","description":"Create a social media takedown request","resource":"takedown"},{"operation":"createSourceCode","name":"Create Source Code Leak Takedown","description":"Create a source code leak takedown request","resource":"takedown"},{"operation":"getProgress","name":"Get 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-caspioofficial.caspio
package_name: n8n-nodes-caspioofficial
display_name: Caspio
description: Interact with Caspio REST API.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: sysmonitor
author_github_url: https://github.com/CaspioInnovations/n8n-node-caspioofficial.git
npm_package_name: n8n-nodes-caspioofficial
npm_version: 1.0.4
community_fetched_at: 2026-03-25T21:19:40.751Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "record",
      "options": [
        {
          "name": "Attachment",
          "value": "attachment"
        },
        {
          "name": "Data Import/Export Task",
          "value": "task"
        },
        {
          "name": "Directory",
          "value": "directory"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Record",
          "value": "record"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create record",
          "description": "Create a new record in a table"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete records",
          "description": "Delete a record from a table"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many records",
          "description": "Returns records from a table or a view"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update records",
          "description": "Update a record in a table"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "record"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listFiles",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete file",
          "description": "Delete a file from Files area"
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download file",
          "description": "Download a file from Files area"
        },
        {
          "name": "Get File Properties",
          "value": "listFiles",
          "action": "Get file properties",
          "description": "Returns file properties from Fiels area"
        },
        {
          "name": "Get Folder Properties",
          "value": "listFolders",
          "action": "Get folder properties",
          "description": "Returns folder properties from Files area"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload file",
          "description": "Upload a file to Files area"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete attachments",
          "description": "Delete files from an attachment field"
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download attachments",
          "description": "Download files from an attachment field"
        },
        {
          "name": "Get Properties",
          "value": "list",
          "action": "Get attachment properties",
          "description": "Returns file properties stored in an attachment field"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload attachment",
          "description": "Upload a file to an attachment field"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "attachment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Many",
          "value": "get",
          "action": "Get many data import export tasks",
          "description": "Returns the list of data import/export tasks"
        },
        {
          "name": "Run",
          "value": "run",
          "action": "Run data import export task",
          "description": "Run a chosen data import export task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getUsers",
      "options": [
        {
          "name": "Activate User",
          "value": "activateUser",
          "action": "Activate user",
          "description": "Activate a user in a directory"
        },
        {
          "name": "Create User",
          "value": "createUser",
          "action": "Create user",
          "description": "Create a new user in a directory"
        },
        {
          "name": "Delete User",
          "value": "deleteUsers",
          "action": "Delete users",
          "description": "Delete users from a directory"
        },
        {
          "name": "Get Many Directories",
          "value": "list",
          "action": "Get many directories",
          "description": "Returns the list of directories"
        },
        {
          "name": "Get Many Users",
          "value": "getUsers",
          "action": "Get many users",
          "description": "Returns the list of users in a directory"
        },
        {
          "name": "Update User",
          "value": "updateUsers",
          "action": "Update users",
          "description": "Update a user in a directory"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "directory"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Create a new record in a table","resource":"record"},{"operation":"delete","name":"Delete","description":"Delete a record from a table","resource":"record"},{"operation":"getMany","name":"Get Many","description":"Returns records from a table or a view","resource":"record"},{"operation":"update","name":"Update","description":"Update a record in a table","resource":"record"},{"operation":"delete","name":"Delete","description":"Delete a file from Files area","resource":"file"},{"operation":"download","name":"Download","description":"Download a file from Files area","resource":"file"},{"operation":"listFiles","name":"Get File Properties","description":"Returns file properties from Fiels area","resource":"file"},{"operation":"listFolders","name":"Get Folder Properties","description":"Returns folder properties from Files area","resource":"file"},{"operation":"upload","name":"Upload","description":"Upload a file to Files area","resource":"file"},{"operation":"delete","name":"Delete","description":"Delete files from an attachment field","resource":"attachment"},{"operation":"download","name":"Download","description":"Download files from an attachment field","resource":"attachment"},{"operation":"list","name":"Get Properties","description":"Returns file properties stored in an attachment field","resource":"attachment"},{"operation":"upload","name":"Upload","description":"Upload a file to an attachment field","resource":"attachment"},{"operation":"get","name":"Get Many","description":"Returns the list of data import/export tasks","resource":"task"},{"operation":"run","name":"Run","description":"Run a chosen data import export task","resource":"task"},{"operation":"activateUser","name":"Activate User","description":"Activate a user in a directory","resource":"directory"},{"operation":"createUser","name":"Create User","description":"Create a new user in a directory","resource":"directory"},{"operation":"deleteUsers","name":"Delete User","description":"Delete users from a directory","resource":"directory"},{"operation":"list","name":"Get Many Directories","description":"Returns the list of directories","resource":"directory"},{"operation":"getUsers","name":"Get Many Users","description":"Returns the list of users in a directory","resource":"directory"},{"operation":"updateUsers","name":"Update User","description":"Update a user in a directory","resource":"directory"}]

npm_readme:
  # n8n-nodes-caspioofficial

  This is an n8n community node for integrating with [Caspio](https://www.caspio.com/). Caspio is a low-code platform that helps you create custom business applications fast, combining database management, application building, and workflow automation in a single platform.

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

  ## Installation

  ### Community Nodes (n8n Cloud)

  For verified community nodes on n8n Cloud:

  1. Open your n8n workflow editor
  2. Select the **+** button or press **Tab** to open the nodes panel
  3. Search for "Caspio" and select it
  4. Select **Install** to add the node

  ### Self-Hosted

  For self-hosted n8n instances:

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter the npm package name: `n8n-nodes-caspioofficial`
  4. Agree to the risks of installing community nodes
  5. Select **Install**

  Note: Only the instance owner can install community nodes. Admin accounts can uninstall nodes if needed.

  ## Documentation

  This node provides comprehensive integration with Caspio's REST API:

  - **[Credentials Setup](https://howto.caspio.com/integrate-your-apps/integration-with-n8n/n8n-integration-credentials)** - Configure OAuth2 authentication with your Caspio account
  - **[Action Node Operations](https://howto.caspio.com/integrate-your-apps/integration-with-n8n/n8n-integration-actions)** - Work with tables, views, directories, files, attachments, and tasks
  - **[Trigger Node Setup](https://howto.caspio.com/integrate-your-apps/integration-with-n8n/n8n-integration-triggers)** - Set up webhooks for real-time event notifications

  ## Compatibility

  This node uses Caspio REST API v3.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Caspio REST API documentation](https://howto.caspio.com/web-services-api/rest-api/)
  - [Caspio homepage](https://www.caspio.com/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with Caspio's REST API v3 for integrating low-code business applications with n8n workflows.","capabilities":["OAuth2 authentication with Caspio accounts","Work with Caspio tables","Work with Caspio views","Work with Caspio directories","Work with Caspio files","Work with Caspio attachments","Work with Caspio tasks","Set up webhooks for real-time event notifications"],"authentication":"OAuth2","commonUseCases":["Automate data entry and updates in Caspio applications","Trigger Caspio workflows via n8n webhooks","Sync data between n8n and Caspio databases","Manage Caspio files and attachments programmatically"],"limitations":["Requires manual installation via npm package (n8n-nodes-caspioofficial)","Only available as a community node (not official n8n node)","Limited to Caspio REST API v3"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Credentials"]}


node_type: n8n-nodes-documentero.documentero
package_name: n8n-nodes-documentero
display_name: Documentero
description: Generate Word, Excel or PDF Document based on Document Template. Get API Key from Documentero APP
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: documentero
author_github_url: https://github.com/documentero/
npm_package_name: n8n-nodes-documentero
npm_version: 1.0.4
community_fetched_at: 2026-03-25T21:19:40.752Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate Document",
          "value": "generate",
          "action": "Generate document"
        },
        {
          "name": "Generate Document and Send as Email Attachment",
          "value": "generateAndEmail",
          "action": "Generate document and send as email attachment"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Document",
      "value": "generate",
      "action": "Generate document"
    },
    {
      "name": "Generate Document and Send as Email Attachment",
      "value": "generateAndEmail",
      "action": "Generate document and send as email attachment"
    }
  ]

npm_readme:
  # n8n-nodes-documentero

  An n8n community node that integrates the **Documentero API - Document Generation** into your workflows.

  [Documentero – Document Generation](https://documentero.com) is a cloud-based document generation service. Generate Word, Excel, and PDF documents from ****.docx/.xlsx templates** via API. Templates support dynamic fields, tables, formulas, conditional sections, images, HTML, Markdown, and QR codes.

  [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)
  - [License](#license)

  ## Installation

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

  ## Operations

  Supported operations:

  - **Generate Document** — Populate a .xlsx or .docx template and generate a document.
  - **Generate and Email Document** — Populate a .xlsx or .docx template and send the generated document as an email attachment.

  Response fields:

  - **data (binary)** — The generated document as a binary file (.docx / .pdf / .xlsx). JSON metadata from the API response is returned alongside the binary; base64 content is removed.

  ## Credentials

  Obtain your API key for Documentero:

  1. Log in: https://app.documentero.com/login
  2. Open Account Settings: https://app.documentero.com/admin/account
  3. Copy the API key assigned to your account.
     
  	![Documentero API Key Location](assets/documenteroapikey.png)

  4. Use this API key when creating the n8n credentials for the node.
     
  	![Documentero n8n Connection](assets/n8napikey.png)

  ## Usage

  - Create or upload template(s) (.docx/.xlsx) in your Documentero account: https://app.documentero.com
    
  	![Documentero Sample Template](assets/documenterosample.png)

  - Optional: After adding the template, set the output format and default filename on the template overview page in Documentero.
  - Add a Documentero node to your workflow.
    
  	![Documentero Workflow](assets/n8nflow.png)

  - Choose an operation:
  	- Generate Document — pass the generated file to downstream nodes (e.g., OneDrive, Google Drive, Outlook).
  	- Generate and Email Document — let Documentero email the generated file for you.
  - Select the template to use from the “Document Template” dropdown.
  - In Documentero (Template Overview → API/JSON), copy the JSON structure and paste it into the node’s Data (JSON) field, then fill in values.
    
  	![Documentero Template Overview](assets/documenterodef.png)

  - Run the workflow.
  - The node outputs the generated file under binary > data for further processing (.docx / .pdf / .xlsx).

  	![Documentero Flow](assets/n8nnodesample.png)

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Documentero Homepage](https://documentero.com)
  * [Documentero App](https://app.documentero.com)
  * [Documentero Docs](https://docs.documentero.com)

  ## License

  MIT © Documentero

ai_documentation_summary:
  {"purpose":"This n8n community node integrates the Documentero API to generate Word, Excel, or PDF documents from templates populated with dynamic data.","capabilities":["Generate documents from .docx or .xlsx templates","Output documents in Word, Excel, or PDF formats","Support dynamic fields, tables, formulas, conditional sections, images, HTML, Markdown, and QR codes in templates","Generate and email documents directly as attachments","Return generated files as binary data for downstream processing"],"authentication":"API key required (obtained from Documentero app account settings)","commonUseCases":["Automated invoice or contract generation","Creating personalized marketing materials","Generating reports with dynamic data","Sending document attachments via email workflows"],"limitations":["Limited to document generation; no direct editing of existing documents","Templates must be pre-uploaded to Documentero account","Requires external API key management"],"relatedNodes":["n8n-nodes-base.binary","n8n-nodes-base.email","n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-dalil-ai.dalilAi
package_name: n8n-nodes-dalil-ai
display_name: Dalil AI
description: Consume Dalil AI API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: dalil-ai
author_github_url: https://github.com/dalil-ai/
npm_package_name: n8n-nodes-dalil-ai
npm_version: 0.2.1
community_fetched_at: 2026-03-25T21:19:40.752Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "people",
      "options": [
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Note",
          "value": "note"
        },
        {
          "name": "Note Relation",
          "value": "noteTarget"
        },
        {
          "name": "Opportunity",
          "value": "opportunity"
        },
        {
          "name": "Person",
          "value": "people"
        },
        {
          "name": "Pipeline",
          "value": "pipeline"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "Task Relation",
          "value": "taskTarget"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a person",
          "description": "Create a new person"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a person",
          "description": "Delete a person"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a person",
          "description": "Get a person"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many people",
          "description": "Get many people"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for people",
          "description": "Search for people by name or email"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a person",
          "description": "Update a person"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "people"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a company",
          "description": "Create a new company"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a company",
          "description": "Delete a company"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a company",
          "description": "Get a company"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many companies",
          "description": "Get many companies"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for companies",
          "description": "Search for companies by name"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a company",
          "description": "Update a company"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a note",
          "description": "Create a new note"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a note",
          "description": "Delete a note"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a note",
          "description": "Get a note"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many notes",
          "description": "Get many notes"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for notes",
          "description": "Search for notes by title"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a note",
          "description": "Update a note"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a note relation",
          "description": "Create a new note relation"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a note relation",
          "description": "Delete a note relation"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a note relation",
          "description": "Get a note relation"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many note relations",
          "description": "Get many note relations"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a note relation",
          "description": "Update a note relation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "noteTarget"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "description": "Create a new task"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task",
          "description": "Delete a task"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task",
          "description": "Get a task"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tasks",
          "description": "Get many tasks"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for tasks",
          "description": "Search for tasks by title"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task",
          "description": "Update a task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task relation",
          "description": "Create a new task relation"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task relation",
          "description": "Delete a task relation"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task relation",
          "description": "Get a task relation"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many task relations",
          "description": "Get many task relations"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task relation",
          "description": "Update a task relation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "taskTarget"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a pipeline record",
          "description": "Create a new pipeline record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a pipeline record",
          "description": "Delete a pipeline record"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a pipeline record",
          "description": "Get a pipeline record"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many pipeline records",
          "description": "Get many pipeline records"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for pipeline records",
          "description": "Search for pipeline records by name"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a pipeline record",
          "description": "Update a pipeline record"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pipeline"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an opportunity",
          "description": "Create a new opportunity"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an opportunity",
          "description": "Delete an opportunity"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an opportunity",
          "description": "Get an opportunity"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many opportunities",
          "description": "Get many opportunities"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for opportunities",
          "description": "Search for opportunities by name"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an opportunity",
          "description": "Update an opportunity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "opportunity"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [{"operation":"create","name":"Create","description":"Create a new person","resource":"people"},{"operation":"delete","name":"Delete","description":"Delete a person","resource":"people"},{"operation":"get","name":"Get","description":"Get a person","resource":"people"},{"operation":"getAll","name":"Get Many","description":"Get many people","resource":"people"},{"operation":"search","name":"Search","description":"Search for people by name or email","resource":"people"},{"operation":"update","name":"Update","description":"Update a person","resource":"people"},{"operation":"create","name":"Create","description":"Create a new company","resource":"company"},{"operation":"delete","name":"Delete","description":"Delete a company","resource":"company"},{"operation":"get","name":"Get","description":"Get a company","resource":"company"},{"operation":"getAll","name":"Get Many","description":"Get many companies","resource":"company"},{"operation":"search","name":"Search","description":"Search for companies by name","resource":"company"},{"operation":"update","name":"Update","description":"Update a company","resource":"company"},{"operation":"create","name":"Create","description":"Create a new note","resource":"note"},{"operation":"delete","name":"Delete","description":"Delete a note","resource":"note"},{"operation":"get","name":"Get","description":"Get a note","resource":"note"},{"operation":"getAll","name":"Get Many","description":"Get many notes","resource":"note"},{"operation":"search","name":"Search","description":"Search for notes by title","resource":"note"},{"operation":"update","name":"Update","description":"Update a note","resource":"note"},{"operation":"create","name":"Create","description":"Create a new note relation","resource":"noteTarget"},{"operation":"delete","name":"Delete","description":"Delete a note relation","resource":"noteTarget"},{"operation":"get","name":"Get","description":"Get a note relation","resource":"noteTarget"},{"operation":"getAll","name":"Get Many","description":"Get many note relations","resource":"noteTarget"},{"operation":"update","name":"Update","description":"Update a note relation","resource":"noteTarget"},{"operation":"create","name":"Create","description":"Create a new task","resource":"task"},{"operation":"delete","name":"Delete","description":"Delete a task","resource":"task"},{"operation":"get","name":"Get","description":"Get a task","resource":"task"},{"operation":"getAll","name":"Get Many","description":"Get many tasks","resource":"task"},{"operation":"search","name":"Search","description":"Search for tasks by title","resource":"task"},{"operation":"update","name":"Update","description":"Update a task","resource":"task"},{"operation":"create","name":"Create","description":"Create a new task relation","resource":"taskTarget"},{"operation":"delete","name":"Delete","description":"Delete a task relation","resource":"taskTarget"},{"operation":"get","name":"Get","description":"Get a task relation","resource":"taskTarget"},{"operation":"getAll","name":"Get Many","description":"Get many task relations","resource":"taskTarget"},{"operation":"update","name":"Update","description":"Update a task relation","resource":"taskTarget"},{"operation":"create","name":"Create","description":"Create a new pipeline record","resource":"pipeline"},{"operation":"delete","name":"Delete","description":"Delete a pipeline record","resource":"pipeline"},{"operation":"get","name":"Get","description":"Get a pipeline record","resource":"pipeline"},{"operation":"getAll","name":"Get Many","description":"Get many pipeline records","resource":"pipeline"},{"operation":"search","name":"Search","description":"Search for pipeline records by name","resource":"pipeline"},{"operation":"update","name":"Update","description":"Update a pipeline record","resource":"pipeline"},{"operation":"create","name":"Create","description":"Create a new opportunity","resource":"opportunity"},{"operation":"delete","name":"Delete","description":"Delete an opportunity","resource":"opportunity"},{"operation":"get","name":"Get","description":"Get an opportunity","resource":"opportunity"},{"operation":"getAll","name":"Get Many","description":"Get many opportunities","resource":"opportunity"},{"operation":"search","name":"Search","description":"Search for opportunities by name","resource":"opportunity"},{"operation":"update","name":"Update","description":"Update an opportunity","resource":"opportunity"}]

npm_readme:
  # n8n-nodes-dalil-ai

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

  Dalil AI is a CRM platform that helps you manage your customer relationships and sales pipeline.

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

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

  ## Installation

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

  ## Operations

  **People:**
  - Create, Update, Delete, Get, Get Many

  **Company:**
  - Create, Update, Delete, Get, Get Many

  **Opportunity:**
  - Create, Update, Delete, Get, Get Many

  **Task:**
  - Create, Update, Delete, Get, Get Many

  **Note:**
  - Create, Update, Delete, Get, Get Many

  **Task Target (Relations):**
  - Create, Update, Delete, Get, Get Many

  **Note Target (Relations):**
  - Create, Update, Delete, Get, Get Many

  **Pipeline:**
  - Create, Update, Delete, Get, Get Many

  ## Credentials

  You'll need to create Dalil AI API credentials. You can find these in your Dalil AI account settings.

  ## Compatibility

  This was tested against n8n version 1.0+.

  ## Usage

  This node allows you to interact with Dalil AI's CRM system to manage contacts, companies, opportunities, tasks, and notes.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Dalil AI](https://dalil.ai)

  ---

  # Dalil AI n8n Node - Complete User Guide

  Welcome to the comprehensive guide for using the Dalil AI n8n node. This documentation will help users of all experience levels - from beginners to advanced developers - understand and effectively use the DalilAI n8n node.

  ## Table of Contents

  1. [Overview](#overview)
  2. [Authentication Setup](#authentication-setup)
  3. [Understanding Resources](#understanding-resources)
  4. [Core Concepts](#core-concepts)
  5. [Operations Guide](#operations-guide)
  6. [Understanding Field Types and Values](#understanding-field-types-and-values)
  7. [Query Parameters](#query-parameters)
  8. [Triggers and Webhooks](#triggers-and-webhooks)
  9. [Advanced Features](#advanced-features)
  10. [Troubleshooting](#troubleshooting)

  ## Overview

  The Dalil AI n8n node allows you to seamlessly integrate with the Dalil AI CRM system, enabling automation of customer relationship management tasks. The node supports comprehensive CRUD (Create, Read, Update, Delete) operations across multiple resources and provides real-time webhook notifications for data changes.

  ### Supported Resources
  - **People**: Individual contacts and customers
  - **Company**: Organizations and businesses
  - **Opportunity**: Sales deals and prospects
  - **Task**: To-do items and assignments
  - **Note**: Documentation and comments
  - **Task Relations**: Link tasks to multiple records
  - **Note Relations**: Link notes to multiple records
  - **Pipeline**: Workflow stages and processes

  ## Authentication Setup

  Before using the Dalil AI node, you need to configure your API credentials:

  1. **Create Credentials**: In your n8n instance, go to Settings > Credentials
  2. **Add New Credential**: Select "Dalil AI API"
  3. **Configure**:
     - **API Key**: Your authentication token from Dalil AI settings

  ## Understanding Resources

  ### Core Resources

  #### People
  Represents individual contacts in your CRM.
  - **Use Case**: Store customer information, contacts, leads
  - **Key Fields**: First Name, Last Name, Email, Phone, Company ID
  - **Relationships**: Belongs to Company, has Tasks/Notes

  #### Company  
  Represents businesses and organizations.
  - **Use Case**: Manage client companies, prospects, vendors
  - **Key Fields**: Name, Domain URL, Industry, Employees, Address
  - **Relationships**: Has People, Opportunities, Tasks/Notes

  #### Opportunity
  Represents sales deals and revenue opportunities.
  - **Use Case**: Track sales pipeline, deals, revenue forecasts
  - **Key Fields**: Name, Amount, Stage, Close Date, Company ID
  - **Relationships**: Belongs to Company and people, has Tasks/Notes

  #### Task
  Represents actionable items and assignments.
  - **Use Case**: Track work items, follow-ups, assignments
  - **Key Fields**: Title, Body, Status, Due Date, Assignee ID
  - **Relationships**: Can be linked to any record via Task Relations

  #### Note
  Represents documentation and comments.
  - **Use Case**: Store meeting notes, customer interactions, documentation
  - **Key Fields**: Title, Body, Visibility Level
  - **Relationships**: Can be linked to any record via Note Relations

  ### Relationship Resources

  #### Task Relations (taskTarget)
  Creates many-to-many relationships between tasks and other records.
  - **Purpose**: One task can be related to multiple People, Companies, or Opportunities
  - **Use Case**: Project tasks affecting multiple contacts or deals
  - **Key Fields**: Task ID, Person ID, Company ID, Opportunity ID

  #### Note Relations (noteTarget)  
  Creates many-to-many relationships between notes and other records.
  - **Purpose**: One note can be related to multiple People, Companies, or Opportunities
  - **Use Case**: Meeting notes involving multiple participants or deals
  - **Key Fields**: Note ID, Person ID, Company ID, Opportunity ID

  #### Pipeline
  Defines workflow stages and custom processes.
  - **Purpose**: Create custom workflows beyond standard opportunity stages
  - **Use Case**: Support tickets, hiring processes, custom workflows
  - **Key Fields**: Name, Status, Custom Fields

  ## Core Concepts

  ### Operations
  Each resource supports standard CRUD operations:

  - **Create**: Add new records
  - **Get**: Retrieve a single record by ID
  - **Get Many**: Retrieve multiple records with filtering
  - **Update**: Modify existing records
  - **Delete**: Remove records

  ### Field Types
  Understanding field types is crucial for proper data entry:

  #### Standard Field Types
  - **TEXT**: Plain text strings (e.g., "John Smith")
  - **NUMBER**: Numeric values (e.g., 100, 3.14)
  - **BOOLEAN**: True/false values
  - **DATE_TIME**: ISO 8601 format dates (e.g., "2024-01-15T10:30:00Z")
  - **SELECT**: Single choice from predefined options
  - **MULTI_SELECT**: Multiple choices from predefined options
  - **RATING**: Scale of 1-5 (represented as "RATING_1" through "RATING_5")

  #### Complex Field Types
  - **EMAILS**: Email addresses with primary and additional emails
  - **PHONES**: Phone numbers with country codes and calling codes
  - **LINKS**: URLs with labels and secondary links
  - **ADDRESS**: Complete address information
  - **FULL_NAME**: First and last name components
  - **MONEY**: Amount with currency code (stored in micros)

  ### Select Values Format
  **IMPORTANT**: Select field values must be in uppercase with underscores, not the display labels.

  **Frontend Display** → **API Value Required**
  - "Lead" → "LEAD"
  - "New Customer" → "NEW_CUSTOMER"  
  - "In Progress" → "IN_PROGRESS"
  - "On Site" → "ON_SITE"
  - "Remote Work" → "REMOTE_WORK"

  **Example for Opportunity Stage:**
  - Display: "Discovery" → Value: "DISCOVERY"
  - Display: "Proposal" → Value: "PROPOSAL"
  - Display: "Negotiation" → Value: "NEGOTIATION"

  ## Operations Guide

  ### Creating Records

  #### People - Create
  **Required Fields:**
  - First Name

  **Example:**
  ```javascript
  {
    "firstName": "John",
    "additionalFields": {
      "lastName": "Smith",
      "primaryEmail": "john.smith@company.com",
      "jobTitle": "Software Engineer",
      "companyId": "123e4567-e89b-12d3-a456-426614174000"
    }
  }
  ```

  #### Company - Create
  **Required Fields:**
  - Company Name

  **Example:**
  ```javascript
  {
    "name": "Acme Corp",
    "additionalFields": {
      "domainUrl": "https://acmecorp.com",
      "industry": "Technology",
      "employees": 50,
      "addressStreet1": "123 Main St",
      "addressCity": "San Francisco",
      "addressState": "CA",
      "addressCountry": "United States"
    }
  }
  ```

  #### Opportunity - Create
  **Required Fields:**
  - Name

  **Example:**
  ```javascript
  {
    "name": "Q1 Software License Deal",
    "additionalFields": {
      "amount": 50000,
      "currencyCode": "USD",
      "stage": "DISCOVERY",
      "closeDate": "2024-03-31",
      "companyId": "123e4567-e89b-12d3-a456-426614174000"
    }
  }
  ```

  #### Task - Create
  **Required Fields:**
  - Title

  **Example:**
  ```javascript
  {
    "title": "Follow up with client",
    "additionalFields": {
      "body": "Call to discuss proposal feedback",
      "status": "TODO",
      "dueAt": "2024-01-20T15:00:00Z",
      "assigneeId": "123e4567-e89b-12d3-a456-426614174000"
    }
  }
  ```

  #### Note - Create
  **Required Fields:**
  - Title

  **Example:**
  ```javascript
  {
    "title": "Client Meeting Notes",
    "additionalFields": {
      "body": "Discussed project requirements and timeline",
      "visibilityLevel": 1
    }
  }
  ```

  ### Creating Relationships

  #### Task Relations (taskTarget) - Create
  Links a task to multiple records.

  **⚠️ Important Constraint: Single Relation Per Record**
  Each taskTarget record can only link to **ONE** relation ID at a time. You cannot add both `personId` and `companyId` in the same taskTarget record.

  **❌ Incorrect - Multiple Relations in One Record:**
  ```javascript
  {
    "taskId": "task-uuid-here",
    "personId": "person-uuid-here",      // ❌ Cannot combine
    "companyId": "company-uuid-here"     // ❌ Cannot combine
  }
  ```

  **✅ Correct - Separate Records for Each Relation:**

  **First Record (Person Relation):**
  ```javascript
  {
    "taskId": "task-uuid-here",
    "personId": "person-uuid-here"
  }
  ```

  **Second Record (Company Relation):**
  ```javascript
  {
    "taskId": "task-uuid-here",
    "companyId": "company-uuid-here"
  }
  ```

  **Third Record (Opportunity Relation):**
  ```javascript
  {
    "taskId": "task-uuid-here",
    "opportunityId": "opportunity-uuid-here"
  }
  ```

  #### Note Relations (noteTarget) - Create
  Links a note to multiple records.

  **⚠️ Important Constraint: Single Relation Per Record**
  Each noteTarget record can only link to **ONE** relation ID at a time. You cannot add both `personId` and `companyId` in the same noteTarget record.

  **❌ Incorrect - Multiple Relations in One Record:**
  ```javascript
  {
    "noteId": "note-uuid-here",
    "personId": "person-uuid-here",      // ❌ Cannot combine
    "companyId": "company-uuid-here"     // ❌ Cannot combine
  }
  ```

  **✅ Correct - Separate Records for Each Relation:**

  **First Record (Person Relation):**
  ```javascript
  {
    "noteId": "note-uuid-here",
    "personId": "person-uuid-here"
  }
  ```

  **Second Record (Company Relation):**
  ```javascript
  {
    "noteId": "note-uuid-here",
    "companyId": "company-uuid-here"
  }
  ```

  **Workflow Example:**
  To link a single note to both a person and a company, create two separate n8n node executions:

  1. **First Node Execution:**
     - Operation: Create noteTarget
     - noteId: "your-note-uuid"
     - personId: "your-person-uuid"

  2. **Second Node Execution:**
     - Operation: Create noteTarget  
     - noteId: "your-note-uuid"
     - companyId: "your-company-uuid"


  ### Updating Records

  Updates require the record ID and any fields you want to modify:

  **Example - Update Person:**
  ```javascript
  {
    "personId": "123e4567-e89b-12d3-a456-426614174000",
    "updateFields": {
      "jobTitle": "Senior Software Engineer",
      "primaryEmail": "john.smith.senior@company.com"
    }
  }
  ```

  ### Getting Records

  #### Get Single Record
  Requires only the record ID:
  - **Person ID**: UUID of the person to retrieve
  - **Depth**: Level of related data to include (0, 1, or 2)

  #### Get Many Records
  Supports filtering, sorting, and pagination:
  - **Return All**: Whether to fetch all results or limit
  - **Limit**: Maximum records to return (1-60)
  - **Filter**: Conditions to filter results
  - **Order By**: Sorting criteria
  - **Depth**: Level of related data to include

  ## Understanding Field Types and Values

  ### Custom Properties
  Each resource can have custom fields specific to your workspace. The node dynamically loads available custom properties and shows the expected format.

  **Custom Property Types:**
  - **Text Fields**: Accept plain strings
  - **Select Fields**: Accept predefined values (use API format, not display labels)
  - **Multi-Select Fields**: Accept arrays of predefined values
  - **Date Fields**: Accept ISO 8601 formatted dates
  - **Boolean Fields**: Accept true/false
  - **Rating Fields**: Accept "RATING_1" through "RATING_5"


  ## Query Parameters

  ### Filtering
  Filter results using field conditions with comparators:

  **Format:** `field[comparator]:value,field2[comparator]:value2`

  **Available Comparators:**
  - `eq`: Equal to
  - `neq`: Not equal to  
  - `gt`: Greater than
  - `gte`: Greater than or equal
  - `lt`: Less than
  - `lte`: Less than or equal
  - `in`: In list (comma-separated values)
  - `startsWith`: Starts with text
  - `like`: Contains text (case-sensitive)
  - `ilike`: Contains text (case-insensitive)
  - `is`: For NULL/NOT_NULL values
  - `containsAny`: For array fields

  **Simple Field Examples:**
  ```
  score[gt]:5
  employees[gte]:50
  stage[in]:[DISCOVERY,PROPOSAL]
  createdAt[gte]:2024-01-01
  city[is]:NOT_NULL
  ```

  **Nested Field Examples:**
  For composite fields, use dot notation to access subfields:

  **People/Person Fields:**
  ```
  name.firstName[eq]:John
  name.lastName[eq]:Smith
  emails.primaryEmail[like]:@company.com
  emails.primaryEmail[is]:NOT_NULL
  phones.primaryPhoneNumber[startsWith]:+1
  phones.primaryPhoneCountryCode[eq]:US
  linkedinLink.primaryLinkUrl[like]:linkedin.com
  whatsapp.primaryPhoneNumber[startsWith]:+1
  ```

  **Company Fields:**
  ```
  name[eq]:Acme Corp
  domainName.primaryLinkUrl[eq]:acme.com
  address.addressCity[eq]:New York
  address.addressCountry[eq]:USA
  annualRecurringRevenue.amountMicros[gt]:1000000
  linkedinLink.primaryLinkUrl[like]:linkedin.com
  ```

  **Opportunity Fields:**
  ```
  name[eq]:Big Deal
  amount.amountMicros[gt]:500000
  amount.currencyCode[eq]:USD
  ```

  **Complex Filters with Conjunctions:**
  Use `and`, `or`, `not` to combine conditions:
  ```
  and(name.firstName[eq]:John,name.lastName[eq]:Smith)
  or(emails.primaryEmail[like]:@company.com,phones.primaryPhoneNumber[startsWith]:+1)
  not(emails.primaryEmail[is]:NULL)
  and(score[gt]:5,or(name.firstName[eq]:John,name.firstName[eq]:Jane))
  ```

  ### Sorting (Order By)
  Sort results by one or more fields:

  **Format:** `field1,field2[DIRECTION]`

  **Available Directions:**
  - `AscNullsFirst`: Ascending, nulls first (default)
  - `AscNullsLast`: Ascending, nulls last
  - `DescNullsFirst`: Descending, nulls first  
  - `DescNullsLast`: Descending, nulls last

  **Simple Field Examples:**
  ```
  createdAt[DescNullsLast]
  score[DescNullsFirst]
  position[AscNullsLast]
  ```

  **Nested Field Examples:**
  For composite fields, use dot notation to access subfields:

  **People/Person Sorting:**
  ```
  name.firstName[AscNullsFirst]
  name.lastName[DescNullsLast]
  emails.primaryEmail[AscNullsLast]
  phones.primaryPhoneNumber[DescNullsFirst]
  ```

  **Company Sorting:**
  ```
  name[AscNullsFirst]
  domainName.primaryLinkUrl[AscNullsLast]
  address.addressCity[DescNullsFirst]
  annualRecurringRevenue.amountMicros[DescNullsLast]
  ```

  **Multiple Field Sorting:**
  ```
  name.firstName,name.lastName[DescNullsFirst]
  score[DescNullsLast],name.firstName[AscNullsLast]
  createdAt[DescNullsFirst],name.firstName[AscNullsFirst]
  ```

  ### Depth Levels
  Control how much related data to include:

  - **Depth 0**: Only the primary object
  - **Depth 1**: Primary object + direct relationships (default)
  - **Depth 2**: Primary object + relationships + their relationships

  **Example:**
  - Depth 0: Just the person record
  - Depth 1: Person + their company info
  - Depth 2: Person + company + company's opportunities

  ## Triggers and Webhooks

  The Dalil AI Trigger node allows you to react to real-time changes in your Dalil AI workspace.

  ### Setting Up Triggers

  1. **Add Trigger Node**: Drag "Dalil AI Trigger" to your workflow
  2. **Configure Entity**: Choose which resource to monitor (Company, People, Opportunity, Task)
  3. **Configure Action**: Choose which events to listen for (Create, Update, Delete, All)
  4. **Save and Activate**: The webhook will be automatically registered

  ### Trigger Configuration

  **Entity Options:**
  - **Company**: Monitor company record changes
  - **People**: Monitor person record changes  
  - **Opportunity**: Monitor opportunity changes
  - **Task**: Monitor task changes

  **Action Options:**
  - **All (*)**: Any change to the entity
  - **Create**: New records created
  - **Update**: Existing records modified
  - **Delete**: Records removed

  ### Webhook Response Structure

  When a trigger fires, you receive a structured webhook payload:

  ```javascript
  [
    {
      "targetUrl": "https://your-n8n-instance.com/webhook/...",
      "eventName": "company.updated",
      "objectMetadata": {
        "id": "8913832e-825b-4374-a527-f9e3524ef3a9",
        "nameSingular": "company"
      },
      "workspaceId": "20202020-1c25-4d02-bf25-6aeccf7ea419",
      "webhookId": "85124f96-2698-4368-8805-c2755070c1c1",
      "eventDate": "2025-06-26T04:51:21.005Z",
      "record": {
        // Complete record data with all fields
        "id": "2f51e0c3-6ed4-4ec7-8ecf-05f0282154fe",
        "name": "Acme Corp",
        "industry": "Technology",
        // ... all other fields
      },
      "updatedFields": [
        "address",
        "industry"
      ]
    }
  ]
  ```

  ### Key Webhook Fields

  #### eventName
  Identifies the specific event that occurred:
  - Format: `{entity}.{action}`
  - Examples: `company.created`, `people.updated`, `opportunity.deleted`
  - **Use Case**: Filter webhook processing based on event type

  #### updatedFields  
  Array of field names that were changed (only for update events):
  - **Use Case**: Process only specific field changes, ignore others
  - **Example**: Only send email notifications when contact info changes

  #### record
  Complete record data after the change:
  - **Create Events**: The newly created record
  - **Update Events**: Record with latest values  
  - **Delete Events**: The record before deletion

  #### eventDate
  ISO timestamp of when the event occurred:
  - **Use Case**: Order events, detect delayed processing

  ### Using Webhook Data

  **Example - Process Only Email Changes:**
  ```javascript
  // In your workflow's JavaScript code
  if (items[0].json.eventName === 'people.updated' && 
      items[0].json.updatedFields.includes('primaryEmail')) {
    // Send notification about email change
    return items;
  } else {
    // Skip processing
    return [];
  }
  ```

  **Example - Route by Event Type:**
  ```javascript
  const eventName = items[0].json.eventName;
  const [entity, action] = eventName.split('.');

  if (entity === 'company' && action === 'created') {
    // Handle new company
  } else if (entity === 'opportunity' && action === 'updated') {
    // Handle opportunity changes
  }
  ```

  ## Troubleshooting

  ### Common Issues

  #### Authentication Errors
  - **Symptom**: "Unauthorized" or credential errors
  - **Solution**: Verify API key

  #### Field Value Errors  
  - **Symptom**: "Invalid value" errors for select fields
  - **Solution**: Use API format values, not display labels
  - **Example**: Use "IN_PROGRESS" not "In Progress"

  #### Date Format Errors
  - **Symptom**: Date validation failures  
  - **Solution**: Use ISO 8601 format: "2024-01-15T10:30:00Z"
  - **Tools**: Use JavaScript `new Date().toISOString()`

  #### Relationship Errors
  - **Symptom**: "Record not found" when creating relations
  - **Solution**: Ensure referenced IDs exist and are valid UUIDs
  - **Check**: Verify record existence before creating relations

  #### Filter Syntax Errors
  - **Symptom**: No results or filter errors
  - **Solution**: Check comparator syntax and field names
  - **Example**: `name[eq]:value` not `name=value`


  ---

  This guide provides comprehensive coverage of the Dalil AI n8n node. For specific use cases or advanced configurations, refer to the API documentation or reach out to the support team.

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of customer relationship management tasks by allowing integration with the Dalil AI CRM platform.","capabilities":["Create, Update, Delete, Get, Get Many operations for People","Create, Update, Delete, Get, Get Many operations for Company","Create, Update, Delete, Get, Get Many operations for Opportunity","Create, Update, Delete, Get, Get Many operations for Task","Create, Update, Delete, Get, Get Many operations for Note","Create, Update, Delete, Get, Get Many operations for Task Target Relations","Create, Update, Delete, Get, Get Many operations for Note Target Relations","Create, Update, Delete, Get, Get Many operations for Pipeline","Real-time webhook notifications for data changes","Many-to-many relationship management between tasks and records"],"authentication":"API Key required","commonUseCases":["Automating customer contact management and lead tracking","Managing sales pipeline and opportunity tracking","Automating task assignments and follow-ups","Storing and linking meeting notes to customers and deals","Creating custom workflow processes and support tickets"],"limitations":[],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-webhook","n8n-nodes-crm"]}


node_type: n8n-nodes-dart.dart
package_name: n8n-nodes-dart
display_name: Dart
description: Dart streamlines project management so your team can get back to work that matters.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: dart-software
author_github_url: https://github.com/its-dart/
npm_package_name: n8n-nodes-dart
npm_version: 0.2.4
community_fetched_at: 2026-03-25T21:19:40.753Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Attachment",
      "options": [
        {
          "name": "Attachment",
          "value": "Attachment"
        },
        {
          "name": "Comment",
          "value": "Comment"
        },
        {
          "name": "Config",
          "value": "Config"
        },
        {
          "name": "Dartboard",
          "value": "Dartboard"
        },
        {
          "name": "Doc",
          "value": "Doc"
        },
        {
          "name": "Folder",
          "value": "Folder"
        },
        {
          "name": "Help Center Article",
          "value": "Help Center Article"
        },
        {
          "name": "Skill",
          "value": "Skill"
        },
        {
          "name": "Task",
          "value": "Task"
        },
        {
          "name": "View",
          "value": "View"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Add Task Comment",
      "options": [
        {
          "name": "Add Task Comment",
          "value": "Add Task Comment",
          "action": "Create a new comment",
          "routing": {
            "request": {
              "url": "=/comments",
              "method": "POST"
            }
          },
          "description": "Record a new comment that the user intends to add to a given task. This will save the comment in Dart for later access, search, etc."
        },
        {
          "name": "List Comments",
          "value": "List Comments",
          "action": "List comments",
          "routing": {
            "request": {
              "url": "=/comments/list",
              "method": "GET"
            }
          },
          "description": "List comments for a task with filtering options. Filter by author, text content, or date range. Sort by date or hierarchical thread order. Task ID required. Supports pagination."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Comment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get Config",
      "options": [
        {
          "name": "Get Config",
          "value": "Get Config",
          "action": "Get user space configuration",
          "routing": {
            "request": {
              "url": "=/config",
              "method": "GET"
            }
          },
          "description": "Get information about the user's space, including all of the possible values that can be provided to other endpoints"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Config"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get Dartboard",
      "options": [
        {
          "name": "Get Dartboard",
          "value": "Get Dartboard",
          "action": "Retrieve an existing dartboard",
          "routing": {
            "request": {
              "url": "=/dartboards/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve an existing dartboard. This will return the dartboard's information, including the title and description."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Dartboard"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create Doc",
      "options": [
        {
          "name": "Create Doc",
          "value": "Create Doc",
          "action": "Create a new doc",
          "routing": {
            "request": {
              "url": "=/docs",
              "method": "POST"
            }
          },
          "description": "Record a new doc that the user intends to write down. This will save the doc in Dart for later access, search, etc. By default the created doc will be in the Docs folder. More information can be included in the text."
        },
        {
          "name": "Delete Doc",
          "value": "Delete Doc",
          "action": "Delete an existing doc",
          "routing": {
            "request": {
              "url": "=/docs/{{$parameter[\"id\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Move an existing doc to the trash, where it can be recovered if needed. Nothing else about the doc will be changed."
        },
        {
          "name": "Get Doc",
          "value": "Get Doc",
          "action": "Retrieve an existing doc",
          "routing": {
            "request": {
              "url": "=/docs/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve an existing doc. This will return the doc's information, including the title, folder, text and others."
        },
        {
          "name": "List Docs",
          "value": "List Docs",
          "action": "List docs",
          "routing": {
            "request": {
              "url": "=/docs/list",
              "method": "GET"
            }
          },
          "description": "List docs with filtering and search capabilities. Filter by folder, title, text content, or use full-text search. Sort by creation/update date or title. Supports pagination."
        },
        {
          "name": "Update Doc",
          "value": "Update Doc",
          "action": "Update an existing doc",
          "routing": {
            "request": {
              "url": "=/docs/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update certain properties of an existing doc. This will save the doc in Dart for later access, search, etc. Any properties that are not specified will not be changed."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Doc"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get Folder",
      "options": [
        {
          "name": "Get Folder",
          "value": "Get Folder",
          "action": "Retrieve an existing folder",
          "routing": {
            "request": {
              "url": "=/folders/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve an existing folder. This will return the folder's information, including the title, description, all docs within it, and others."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "List Help Center Articles",
      "options": [
        {
          "name": "List Help Center Articles",
          "value": "List Help Center Articles",
          "action": "List help center articles by query",
          "routing": {
            "request": {
              "url": "=/help-center-articles/list",
              "method": "GET"
            }
          },
          "description": "Search for up to two help center articles by their semantic similarity to a short (1-5 word) query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Help Center Article"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Retrieve Skill By Title",
      "options": [
        {
          "name": "Retrieve Skill By Title",
          "value": "Retrieve Skill By Title",
          "action": "Retrieve a skill by title",
          "routing": {
            "request": {
              "url": "=/skills/by-title",
              "method": "GET"
            }
          },
          "description": "Retrieve a skill by its title. Skills are user-defined instructions or templates for performing specific task types in the workspace. Returns the skill's title and instructions if found."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Skill"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Add Task Time Tracking",
      "options": [
        {
          "name": "Add Task Time Tracking",
          "value": "Add Task Time Tracking",
          "action": "Add a time tracking entry to a task",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter[\"id\"]}}/time-tracking",
              "method": "POST"
            }
          },
          "description": "Record an additional time tracking entry on a task and return the updated task with refreshed time tracking"
        },
        {
          "name": "Create Task",
          "value": "Create Task",
          "action": "Create a new task",
          "routing": {
            "request": {
              "url": "=/tasks",
              "method": "POST"
            }
          },
          "description": "Record a new task that the user intends to do. By default the task will be assigned to the current user, have an unstarted status, have no parent, and be in the default dartboard. More information can be included in the description."
        },
        {
          "name": "Delete Task",
          "value": "Delete Task",
          "action": "Delete an existing task",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter[\"id\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Move an existing task to the trash, where it can be recovered if needed. Nothing else about the task will be changed."
        },
        {
          "name": "Get Task",
          "value": "Get Task",
          "action": "Retrieve an existing task",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve an existing task. This will return the task's information, including the title, dartboard, status, description and others."
        },
        {
          "name": "List Tasks",
          "value": "List Tasks",
          "action": "List tasks",
          "routing": {
            "request": {
              "url": "=/tasks/list",
              "method": "GET"
            }
          },
          "description": "List tasks with powerful filtering options. Filter by dartboard, status, assignee, tags, priority, dates, completion state, view, and more. Supports pagination with limit/offset."
        },
        {
          "name": "Move Task",
          "value": "Move Task",
          "action": "Move a task within its dartboard",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter[\"id\"]}}/move",
              "method": "POST"
            }
          },
          "description": "Move a task to a specific position within results sorted by the order field. Use afterTaskId to place the task after a specific task, or beforeTaskId to place it before one."
        },
        {
          "name": "Update Task",
          "value": "Update Task",
          "action": "Update an existing task",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update properties of an existing task. For customProperties, use property NAME (not ID) as key. Get property names from workspace config. Example: {\"customTextProperty\": \"Some text\"}. Fields not provided are unchanged."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Add Task Attachment From Url",
      "options": [
        {
          "name": "Add Task Attachment From Url",
          "value": "Add Task Attachment From Url",
          "action": "Attach a file from a provided URL to a task",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter[\"id\"]}}/attachments/from-url",
              "method": "POST"
            }
          },
          "description": "Attach a file from a provided URL to a task. The file will be downloaded and attached asynchronously. This operation may take a few moments to complete."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Attachment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get View",
      "options": [
        {
          "name": "Get View",
          "value": "Get View",
          "action": "Retrieve an existing view",
          "routing": {
            "request": {
              "url": "=/views/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve an existing view. This will return the view's information, including the title, description, and others."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "View"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /comments",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Comment"
          ],
          "operation": [
            "Add Task Comment"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /comments/list",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Comment"
          ],
          "operation": [
            "List Comments"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /config",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Config"
          ],
          "operation": [
            "Get Config"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /dartboards/{ID}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Dartboard"
          ],
          "operation": [
            "Get Dartboard"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /docs",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Doc"
          ],
          "operation": [
            "Create Doc"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /docs/{ID}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Doc"
          ],
          "operation": [
            "Get Doc"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /docs/{ID}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Doc"
          ],
          "operation": [
            "Update Doc"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /docs/{ID}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Doc"
          ],
          "operation": [
            "Delete Doc"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /docs/list",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Doc"
          ],
          "operation": [
            "List Docs"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /folders/{ID}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Folder"
          ],
          "operation": [
            "Get Folder"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /help-center-articles/list",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Help Center Article"
          ],
          "operation": [
            "List Help Center Articles"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /skills/by-title",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Skill"
          ],
          "operation": [
            "Retrieve Skill By Title"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /tasks",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Task"
          ],
          "operation": [
            "Create Task"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /tasks/{ID}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Task"
          ],
          "operation": [
            "Get Task"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "PUT /tasks/{ID}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Task"
          ],
          "operation": [
            "Update Task"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "DELETE /tasks/{ID}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Task"
          ],
          "operation": [
            "Delete Task"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /tasks/{ID}/attachments/from-url",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Attachment"
          ],
          "operation": [
            "Add Task Attachment From Url"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /tasks/{ID}/move",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Task"
          ],
          "operation": [
            "Move Task"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /tasks/{ID}/time-tracking",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Task"
          ],
          "operation": [
            "Add Task Time Tracking"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /tasks/list",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Task"
          ],
          "operation": [
            "List Tasks"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /views/{ID}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "View"
          ],
          "operation": [
            "Get View"
          ]
        }
      }
    }
  ]

operations:
  [{"operation":"Add Task Comment","name":"Add Task Comment","description":"Record a new comment that the user intends to add to a given task. This will save the comment in Dart for later access, search, etc.","resource":"Comment"},{"operation":"List Comments","name":"List Comments","description":"List comments for a task with filtering options. Filter by author, text content, or date range. Sort by date or hierarchical thread order. Task ID required. Supports pagination.","resource":"Comment"},{"operation":"Get Config","name":"Get Config","description":"Get information about the user's space, including all of the possible values that can be provided to other endpoints","resource":"Config"},{"operation":"Get Dartboard","name":"Get Dartboard","description":"Retrieve an existing dartboard. This will return the dartboard's information, including the title and description.","resource":"Dartboard"},{"operation":"Create Doc","name":"Create Doc","description":"Record a new doc that the user intends to write down. This will save the doc in Dart for later access, search, etc. By default the created doc will be in the Docs folder. More information can be included in the text.","resource":"Doc"},{"operation":"Delete Doc","name":"Delete Doc","description":"Move an existing doc to the trash, where it can be recovered if needed. Nothing else about the doc will be changed.","resource":"Doc"},{"operation":"Get Doc","name":"Get Doc","description":"Retrieve an existing doc. This will return the doc's information, including the title, folder, text and others.","resource":"Doc"},{"operation":"List Docs","name":"List Docs","description":"List docs with filtering and search capabilities. Filter by folder, title, text content, or use full-text search. Sort by creation/update date or title. Supports pagination.","resource":"Doc"},{"operation":"Update Doc","name":"Update Doc","description":"Update certain properties of an existing doc. This will save the doc in Dart for later access, search, etc. Any properties that are not specified will not be changed.","resource":"Doc"},{"operation":"Get Folder","name":"Get Folder","description":"Retrieve an existing folder. This will return the folder's information, including the title, description, all docs within it, and others.","resource":"Folder"},{"operation":"List Help Center Articles","name":"List Help Center Articles","description":"Search for up to two help center articles by their semantic similarity to a short (1-5 word) query","resource":"Help Center Article"},{"operation":"Retrieve Skill By Title","name":"Retrieve Skill By Title","description":"Retrieve a skill by its title. Skills are user-defined instructions or templates for performing specific task types in the workspace. Returns the skill's title and instructions if found.","resource":"Skill"},{"operation":"Add Task Time Tracking","name":"Add Task Time Tracking","description":"Record an additional time tracking entry on a task and return the updated task with refreshed time tracking","resource":"Task"},{"operation":"Create Task","name":"Create Task","description":"Record a new task that the user intends to do. By default the task will be assigned to the current user, have an unstarted status, have no parent, and be in the default dartboard. More information can be included in the description.","resource":"Task"},{"operation":"Delete Task","name":"Delete Task","description":"Move an existing task to the trash, where it can be recovered if needed. Nothing else about the task will be changed.","resource":"Task"},{"operation":"Get Task","name":"Get Task","description":"Retrieve an existing task. This will return the task's information, including the title, dartboard, status, description and others.","resource":"Task"},{"operation":"List Tasks","name":"List Tasks","description":"List tasks with powerful filtering options. Filter by dartboard, status, assignee, tags, priority, dates, completion state, view, and more. Supports pagination with limit/offset.","resource":"Task"},{"operation":"Move Task","name":"Move Task","description":"Move a task to a specific position within results sorted by the order field. Use afterTaskId to place the task after a specific task, or beforeTaskId to place it before one.","resource":"Task"},{"operation":"Update Task","name":"Update Task","description":"Update properties of an existing task. For customProperties, use property NAME (not ID) as key. Get property names from workspace config. Example: {\"customTextProperty\": \"Some text\"}. Fields not provided are unchanged.","resource":"Task"},{"operation":"Add Task Attachment From Url","name":"Add Task Attachment From Url","description":"Attach a file from a provided URL to a task. The file will be downloaded and attached asynchronously. This operation may take a few moments to complete.","resource":"Attachment"},{"operation":"Get View","name":"Get View","description":"Retrieve an existing view. This will return the view's information, including the title, description, and others.","resource":"View"}]

npm_readme:
  <div align="center">
    <h1>Dart n8n Node</h1>
    <p>
      <a href="https://www.npmjs.com/package/n8n-nodes-dart"><img src="https://img.shields.io/npm/v/n8n-nodes-dart" alt="NPM"></a>
      <a href="LICENSE"><img src="https://img.shields.io/github/license/its-dart/n8n-nodes-dart" alt="License"></a>
    </p>
  </div>

  [Dart](https://dartai.com?nr=1) is Project Management powered by AI.

  `n8n-nodes-dart` is the Dart n8n community node. It enables direct integration with Dart through n8n workflows.

  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Resources](#resources)

  ## Installation

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

  ## Credentials

  This node uses bearer token authentication with the Dart API. You'll need to:

  1. Sign up for a [Dart account](https://app.dartai.com)
  2. Get your API token from [your Dart profile](https://app.dartai.com/home?settings=account)
  3. Configure the Dart API credentials in n8n with your token

  ## Help and Resources

  - [Homepage](https://dartai.com/?nr=1)
  - [Web App](https://app.dartai.com/)
  - [Help Center](https://help.dartai.com/)
  - [Bugs and Features](https://app.dartai.com/p/r/JFyPnhL9En61)
  - [Library Source](https://github.com/its-dart/n8n-nodes-dart/)
  - [Chat on Discord](https://discord.gg/RExv8jEkSh)
  - Email us at [support@dartai.com](mailto:support@dartai.com)

  ## Contributing

  Contributions are welcome! Please open an issue or submit a pull request.

  ## License

  This project is licensed under [the MIT License](LICENSE).

ai_documentation_summary:
  {"purpose":"The Dart n8n node enables direct integration with the Dart AI project management platform, allowing users to manage projects and tasks within n8n workflows.","capabilities":["Project management automation","Task creation and updates","Team collaboration features","AI-powered project insights"],"authentication":"Bearer token authentication via API key","commonUseCases":["Automating project tracking in n8n","Integrating AI project management with existing workflows","Streamlining team collaboration tasks"],"limitations":["Requires manual API token setup from Dart dashboard"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-github","n8n-nodes-jira"]}


