# nodes

node_type: n8n-nodes-featherless.featherless
package_name: n8n-nodes-featherless
display_name: Featherless
description: Interact with Featherless API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs: "={{[\"main\"]}}"
updated_at: 2026-01-07 20:08:16
author_name: darinverheijke
author_github_url: https://github.com/featherlessai/
npm_package_name: n8n-nodes-featherless
npm_version: 0.1.6
community_fetched_at: 2026-01-07T20:08:16.118Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "chat",
      "options": [
        {
          "name": "Chat",
          "value": "chat",
          "action": "Send a chat message",
          "description": "Send a chat message"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Chat",
      "value": "chat",
      "action": "Send a chat message",
      "description": "Send a chat message"
    }
  ]

npm_readme:
  # n8n-nodes-featherless

  This is an n8n community node for Featherless API integration. It allows you to interact with various AI models through the Featherless AI platform directly from your n8n workflows.

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

  [Featherless](https://featherless.ai/) is a platform that provides access to over 10,000+ open-weight models through a unified API.

  ## Features

  - Interact with multiple AI models through a single node
  - Send chat messages to AI models
  - Customize model parameters such as temperature, max tokens, frequency penalty, and presence penalty
  - View truncated model descriptions in the model selector
  - Easy integration with n8n workflows

  ## Installation

  ### Community Node (Recommended)

  To install this node as a community node in n8n, follow these steps:

  1. Open your n8n instance
  2. Go to "Settings" > "Community Nodes"
  3. Select "Install"
  4. Enter `n8n-nodes-featherless` in the "Enter npm package name" field
  5. Agree to the risks of using community nodes (if prompted)
  6. Click "Install"

  After installation, the node will be available in the "Featherless" category in the node palette.

  ### Manual Installation (Advanced)

  If you prefer manual installation or are using a custom n8n setup:

  1. Open your n8n installation directory
  2. Navigate to the `nodes` subdirectory
  3. Run the following command:
     ```
     npm install n8n-nodes-featherless
     ```
  4. Restart your n8n instance

  **Note:** If you're using Docker or a server deployment, you may need to rebuild your container or restart your server for the changes to take effect.

  ### Troubleshooting

  If you encounter issues with the node not updating to new versions correctly or not displaying changes inside n8n, try the following:

  1. Clear your browser cache
  2. Restart your n8n instance
  3. If using Docker, rebuild and restart your container:
     ```
     docker-compose down
     docker-compose build
     docker-compose up -d
     ```
  4. For server deployments, restart the n8n service:
     ```
     sudo systemctl restart n8n
     ```

  ## Usage

  1. Add the Featherless node to your workflow
  2. Configure the Featherless API credentials (see Configuration section)
  3. Select the desired operation (currently only 'Chat' is available)
  4. Enter the model ID you want to use (click "View Available Models" button to see options)
  5. (Optional) Provide a system prompt to set the behavior of the AI
  6. Enter your message
  7. Adjust additional parameters as needed (temperature, max tokens, etc.)
  8. Execute the node to receive the AI's response

  ## Model Selection

  Enter the model ID directly in the "Model Name or ID" field. Use the "View Available Models" button next to the input field to open the [Featherless Models page](https://featherless.ai/models) in a new tab, where you can browse and copy the model IDs of available models.

  ## Configuration

  ### Featherless API Credentials

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

  1. Sign up for an account at [Featherless](https://featherless.ai/)
  2. Generate an API key in your Featherless dashboard
  3. In n8n, create a new credential of type 'Featherless API'
  4. Enter your API key

  ### Node Parameters

  - **Operation**: Currently, only 'Chat' is available
  - **Model**: Enter the model ID you want to use (e.g., "meta-llama/Meta-Llama-3.1-8B-Instruct")
  - **System Prompt**: (Optional) Set the behavior or role of the AI assistant
  - **Message**: The user's input message to the AI
  - **Temperature**: Controls the randomness of the AI's output (0.0 to 1.0)
  - **Additional Fields**: 
    - **Frequency Penalty**: Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far.
    - **Max Tokens**: The maximum number of tokens to generate in the chat completion.
    - **Presence Penalty**: Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far.
    - **Top P**: An alternative to sampling with temperature, called nucleus sampling. Top_p of 0.1 means only the tokens comprising the top 10% probability mass are considered.

  ## Examples

  ### Basic Chat Workflow

  1. Add a "Manual" trigger node
  2. Connect an Featherless node
  3. Configure the Featherless node:
     - Operation: Chat
     - Model: Enter a model ID (e.g., "deepseek-ai/DeepSeek-V3-0324")
     - Message: "Hello, can you explain what n8n is?"
  4. Execute the workflow
  5. The Featherless node will return the AI's response explaining n8n

  ### Dynamic System Prompt

  1. Start with a "Manual" trigger node
  2. Add a "Set" node to define a variable for the system prompt
  3. Connect a Featherless node
  4. Configure the Featherless node:
     - Operation: Chat
     - Model: Enter a model ID (use the "View Available Models" button to see options)
     - System Prompt: {{$node["Set"].json["systemPrompt"]}}
     - Message: "What's your primary function?"
  5. Execute the workflow
  6. The AI will respond based on the system prompt set in the "Set" node

  ## Support

  If you encounter any issues or have questions about this node, please [open an issue](https://github.com/darinverheijke/n8n-nodes-featherless/issues) on the GitHub repository.

  ## Contributing

  Contributions to improve this node are welcome. Please follow these steps:

  1. Fork the repository
  2. Create a new branch for your feature
  3. Commit your changes
  4. Push to the branch
  5. Create a new Pull Request

  ## License

  This project is licensed under the [MIT License](LICENSE.md).

  ## About n8n
  n8n is a free and open [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation tool. It can be self-hosted, easily extended, and used to automate workflows across various services and applications. n8n enables you to connect anything to everything.

  ## About Featherless
  Featherless AI is a serverless AI inference platform that offers access to over 10,000+ open-source models. Our goal is to make all AI models available for serverless inference. We provide inference via API to a continually expanding library of open-weight models.

  ## Changelog

  For a full list of changes, please refer to the [CHANGELOG.md](CHANGELOG.md) file.

ai_documentation_summary:
  {"purpose":"The Featherless node enables integration with the Featherless AI platform to send chat messages to over 10,000 open-weight AI models via a unified API, allowing users to customize model behavior and parameters within n8n workflows.","capabilities":["Send chat messages to AI models","Select from a wide range of AI models via model ID","Customize AI output with parameters like temperature, max tokens, frequency penalty, presence penalty, and top p","Set system prompts to define AI behavior","View available models through an interactive selector"],"authentication":"API key required (generated from the Featherless dashboard)","commonUseCases":["Generating AI responses to user queries using specific models","Dynamic AI interactions with system prompts set via variables","Automating content creation or explanation tasks using different AI models"],"limitations":["Only the 'Chat' operation is currently supported","Model descriptions are truncated in the selector","No support for other operations or model types beyond chat"],"relatedNodes":["Manual Trigger","Set Node","Function Node"]}


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

updated_at: 2026-01-07 20:08:16
author_name: gr33ndev
author_github_url: https://github.com/Gr33ndev/
npm_package_name: n8n-nodes-teamupcalendar
npm_version: 0.4.2
community_fetched_at: 2026-01-07T20:08:16.118Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "event",
      "options": [
        {
          "name": "Event",
          "value": "event",
          "description": "Work with calendar events"
        },
        {
          "name": "Subcalendar",
          "value": "subcalendar",
          "description": "Work with subcalendars"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an event",
          "description": "Create a new event"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an event",
          "description": "Delete an event"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an event",
          "description": "Retrieve a single event by ID"
        },
        {
          "name": "Get Auxiliary Info",
          "value": "getAuxiliaryInfo",
          "action": "Get auxiliary event info",
          "description": "Get an event's history, comments, and signups"
        },
        {
          "name": "Get Changed Events",
          "value": "getChanged",
          "action": "Get changed events",
          "description": "Get events that changed since a timestamp"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many events",
          "description": "Retrieve multiple events"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search events",
          "description": "Search events by keyword"
        },
        {
          "name": "Undo",
          "value": "undo",
          "action": "Undo an event action",
          "description": "Undo the last action on an event"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an event",
          "description": "Update an existing event"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "event"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an subcalendar",
          "description": "Create a new subcalendar"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a subcalendar",
          "description": "Delete a subcalendar"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a subcalendar",
          "description": "Retrieve a single subcalendar by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many subcalendars",
          "description": "Retrieve all subcalendars"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a subcalendar",
          "description": "Update an existing subcalendar"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subcalendar"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an event",
      "description": "Create a new event"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an event",
      "description": "Delete an event"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an event",
      "description": "Retrieve a single event by ID"
    },
    {
      "name": "Get Auxiliary Info",
      "value": "getAuxiliaryInfo",
      "action": "Get auxiliary event info",
      "description": "Get an event's history, comments, and signups"
    },
    {
      "name": "Get Changed Events",
      "value": "getChanged",
      "action": "Get changed events",
      "description": "Get events that changed since a timestamp"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many events",
      "description": "Retrieve multiple events"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search events",
      "description": "Search events by keyword"
    },
    {
      "name": "Undo",
      "value": "undo",
      "action": "Undo an event action",
      "description": "Undo the last action on an event"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an event",
      "description": "Update an existing event"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an subcalendar",
      "description": "Create a new subcalendar"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a subcalendar",
      "description": "Delete a subcalendar"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a subcalendar",
      "description": "Retrieve a single subcalendar by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many subcalendars",
      "description": "Retrieve all subcalendars"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a subcalendar",
      "description": "Update an existing subcalendar"
    }
  ]

npm_readme:
  # n8n-nodes-teamupcalendar

  This is a n8n community node. It lets you use [Teamup Calendar](https://teamup.com) in your n8n workflows.

  Teamup Calendar is a collaborative calendar platform that allows teams to share calendars, manage events, and coordinate
  schedules. It offers powerful features like subcalendars and flexible access controls.

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

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

  ## Installation

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

  ## Operations

  ### Event Operations

  - **Create**: Create a new calendar event with title, dates, subcalendar assignment, and optional fields like location,
    notes, and attendees
  - **Delete**: Remove events from the calendar
  - **Get**: Retrieve details of a specific event by its ID
  - **Get Auxiliary Info**: Fetch additional information related to an event
  - **Get Changed Events**: Retrieve events that have changed since a specified timestamp (max 30 days ago)
  - **Get Many**: Retrieve multiple events with filtering options by date range, subcalendar, and result limits
  - **Search events**: Find events based on keywords in titles or notes
  - **Undo**: Undo an event action
  - **Update**: Modify existing events including changing dates, titles, subcalendars, and other properties

  ### Subcalendar Operations

  - **Create**: Add a new subcalendar to the Teamup calendar
  - **Delete**: Remove a subcalendar from the Teamup calendar
  - **Get**: Retrieve details of a specific subcalendar by its ID
  - **Get Many**: Fetch all available subcalendars for the connected Teamup calendar
  - **Update**: Change properties of an existing subcalendar such as name and color

  ## Credentials

  To use this node, you need:

  1. **Teamup Calendar Account**: Sign up at [Teamup Calendar](https://teamup.com/register) and get your API key from
     there
  2. **Calendar Key**: The unique identifier for your Teamup calendar (found in your share calendar URL, Settings >
     Sharing > Create Link)

  ### Setting up credentials:

  1. Create a Teamup calendar or use an existing one
  2. Share your calendar via Settings > Sharing > Create Link
  3. Note your calendar key from that sharing URL (e.g., `https://teamup.com/ks1234567890` → key is `ks1234567890`)
  4. In n8n, create new "Teamup API" credentials with your calendar key and API token

  ## Compatibility

  - **Minimum n8n version**: 1.117.3
  - **Tested with**: n8n version 1.117.3 & 1.123.5

  ## Usage

  ### Basic Event Creation

  1. Select "Event" as resource and "Create" as operation
  2. Choose the target subcalendar
  3. Set event title, start date/time, and end date/time
  4. Optionally add location, notes, attendees, or mark as all-day event

  ### Filtering Events

  When using "Get Many" for events:

  - **Start Date**: Events starting on or after this date (defaults to today)
  - **End Date**: Events starting before this date (defaults to today's end of the day)
  - **Subcalendar**: Filter by specific subcalendar (optional)
  - **Limit**: Maximum number of events to return (default: 50, max: 1000)

  ### Date/Time Handling

  - All dates are automatically formatted for the Teamup API
  - Supports both date-only and full datetime values
  - Timezone handling follows your n8n instance settings

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Teamup Calendar API Documentation](https://apidocs.teamup.com/)
  * [Teamup Calendar Help Center](https://support.teamup.com/)

ai_documentation_summary:
  {"purpose":"The Teamup node enables integration with Teamup Calendar to manage events and subcalendars, allowing users to create, update, delete, search, and retrieve calendar events and subcalendars within n8n workflows.","capabilities":["Create events with title, dates, subcalendar, location, notes, and attendees","Delete events","Retrieve event details by ID","Fetch auxiliary event information","Get events that have changed since a timestamp (up to 30 days ago)","Retrieve multiple events with date range, subcalendar, and limit filters","Search events by keywords in title or notes","Undo event actions","Update event properties like dates, titles, and subcalendars","Create, delete, and update subcalendars with name and color settings"],"authentication":"API key required; users must obtain a Teamup API token and a calendar key from their Teamup account via sharing settings","commonUseCases":["Automating event creation for meetings or team schedules","Syncing calendar events between n8n and Teamup","Monitoring changes to events over time","Filtering and retrieving events by date or subcalendar for reporting","Managing team subcalendars with dynamic access and color coding"],"limitations":["Event filtering by date range is limited to a maximum of 30 days for 'Get Changed Events'","No support for advanced calendar permissions or user-level access controls in the node interface","Timezone handling relies on n8n instance settings and may require manual configuration"],"relatedNodes":["n8n-nodes-base.calendar","n8n-nodes-base.events","n8n-nodes-base.subcalendars"]}


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

updated_at: 2026-01-07 20:08:16
author_name: nexlevanalytics
author_github_url: https://github.com/alge-soft/n8n-nodes-nexlev.git
npm_package_name: @nexlev/n8n-nodes-nexlev
npm_version: 0.1.9
community_fetched_at: 2026-01-07T20:08:16.119Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "similarVideos",
      "options": [
        {
          "name": "Channel Analysis",
          "value": "channelAnalysis"
        },
        {
          "name": "Channel Analytic",
          "value": "channelAnalytics"
        },
        {
          "name": "Channel Content",
          "value": "channelContent"
        },
        {
          "name": "Niche Overview",
          "value": "nicheOverview"
        },
        {
          "name": "Similar Channel",
          "value": "similarChannels"
        },
        {
          "name": "Similar Thumbnail",
          "value": "similarThumbnails"
        },
        {
          "name": "Similar Video",
          "value": "similarVideos"
        },
        {
          "name": "Videos and Short",
          "value": "videosAndShorts"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAnalytics",
      "options": [
        {
          "name": "Get Analytics",
          "value": "getAnalytics",
          "action": "Get channel analytics",
          "routing": {
            "request": {
              "url": "/external/analytics/channel-analytics",
              "method": "POST"
            }
          },
          "description": "Get analytics data for a YouTube channel"
        },
        {
          "name": "Get Geography Demographics Revenue",
          "value": "getGeoDemoRev",
          "action": "Get geography demographics revenue",
          "routing": {
            "request": {
              "url": "/external/analytics/channel-analytics/geography-revenue",
              "method": "POST"
            }
          },
          "description": "Get geography, demographics, and revenue data for a YouTube channel"
        },
        {
          "name": "Get Short vs Long Views",
          "value": "getShortVsLongViews",
          "action": "Get short vs long views",
          "routing": {
            "request": {
              "method": "GET"
            }
          },
          "description": "Get short and long video views for a YouTube channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channelAnalytics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createJob",
      "options": [
        {
          "name": "Create Job",
          "value": "createJob",
          "action": "Create channel analysis job",
          "routing": {
            "request": {
              "url": "/external/channels/analysis/job/create",
              "method": "GET"
            }
          },
          "description": "Create a new channel analysis job"
        },
        {
          "name": "Get Result",
          "value": "getResult",
          "action": "Get channel analysis result",
          "routing": {
            "request": {
              "url": "/external/channels/analysis/job/status",
              "method": "GET"
            }
          },
          "description": "Get the status and results of a channel analysis job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channelAnalysis"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getVideos",
      "options": [
        {
          "name": "Get About",
          "value": "getAbout",
          "action": "Get channel about",
          "routing": {
            "request": {
              "url": "/external/channels/about",
              "method": "GET"
            }
          },
          "description": "Get about information for a YouTube channel"
        },
        {
          "name": "Get Outliers",
          "value": "getOutliers",
          "action": "Get channel outliers",
          "routing": {
            "request": {
              "url": "/external/outliers",
              "method": "GET"
            }
          },
          "description": "Get outlier videos from a YouTube channel"
        },
        {
          "name": "Get Playlists",
          "value": "getPlaylists",
          "action": "Get channel playlists",
          "routing": {
            "request": {
              "url": "/external/channels/playlists",
              "method": "GET"
            }
          },
          "description": "Get playlists from a YouTube channel"
        },
        {
          "name": "Get Shorts",
          "value": "getShorts",
          "action": "Get channel shorts",
          "routing": {
            "request": {
              "url": "/external/channels/shorts",
              "method": "GET"
            }
          },
          "description": "Get short videos from a YouTube channel"
        },
        {
          "name": "Get Videos",
          "value": "getVideos",
          "action": "Get channel videos",
          "routing": {
            "request": {
              "url": "/external/channels/videos",
              "method": "GET"
            }
          },
          "description": "Get videos from a YouTube channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channelContent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "analyze",
      "options": [
        {
          "name": "Analyze",
          "value": "analyze",
          "action": "Analyze channel niche overview",
          "routing": {
            "request": {
              "url": "/external/niche-overview/analyze",
              "method": "POST"
            }
          },
          "description": "Analyze and get niche overview for a YouTube channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "nicheOverview"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getSimilar",
      "options": [
        {
          "name": "Get Similar Videos",
          "value": "getSimilar",
          "action": "Get similar videos",
          "routing": {
            "request": {
              "url": "/external/similar-videos/videos",
              "method": "POST"
            }
          },
          "description": "Find similar videos based on a YouTube video"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "similarVideos"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search Similar Thumbnails",
          "value": "search",
          "action": "Search similar thumbnails",
          "routing": {
            "request": {
              "url": "/external/similar-thumbnails/search",
              "method": "POST"
            }
          },
          "description": "Find similar thumbnails based on text or image URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "similarThumbnails"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search Similar Channels",
          "value": "search",
          "action": "Search similar channels",
          "routing": {
            "request": {
              "url": "/external/similar-channels/search",
              "method": "POST"
            }
          },
          "description": "Find similar channels based on a YouTube channel"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "similarChannels"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDetails",
      "options": [
        {
          "name": "Get Bulk Subtitle",
          "value": "getBulkSubtitle",
          "action": "Get bulk video subtitles",
          "routing": {
            "request": {
              "url": "/external/videos/bulk-subtitle",
              "method": "POST"
            }
          },
          "description": "Get subtitles for multiple YouTube videos at once"
        },
        {
          "name": "Get Bulk Transcript",
          "value": "getBulkTranscript",
          "action": "Get bulk video transcripts",
          "routing": {
            "request": {
              "url": "/external/videos/bulk-transcript",
              "method": "POST"
            }
          },
          "description": "Get transcripts for multiple YouTube videos at once"
        },
        {
          "name": "Get Comments",
          "value": "getComments",
          "action": "Get video comments",
          "routing": {
            "request": {
              "url": "/external/videos/comments",
              "method": "GET"
            }
          },
          "description": "Get comments for a YouTube video"
        },
        {
          "name": "Get Details",
          "value": "getDetails",
          "action": "Get video details",
          "routing": {
            "request": {
              "url": "/external/videos/details",
              "method": "GET"
            }
          },
          "description": "Get detailed information for a YouTube video"
        },
        {
          "name": "Get RPM",
          "value": "getRPM",
          "action": "Get video RPM",
          "routing": {
            "request": {
              "url": "/external/videos/rpm",
              "method": "GET"
            }
          },
          "description": "Get RPM (Revenue Per Mille) for a YouTube video"
        },
        {
          "name": "Get Shorts Details",
          "value": "getShortsDetails",
          "action": "Get shorts details",
          "routing": {
            "request": {
              "url": "/external/shorts/details",
              "method": "GET"
            }
          },
          "description": "Get detailed information for a YouTube shorts video"
        },
        {
          "name": "Get Subtitle",
          "value": "getSubtitle",
          "action": "Get video subtitle",
          "routing": {
            "request": {
              "url": "/external/videos/subtitle",
              "method": "GET"
            }
          },
          "description": "Get subtitle for a YouTube video"
        },
        {
          "name": "Get Transcript",
          "value": "getTranscript",
          "action": "Get video transcript",
          "routing": {
            "request": {
              "url": "/external/videos/transcript",
              "method": "GET"
            }
          },
          "description": "Get transcript for a YouTube video"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "videosAndShorts"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Analytics",
      "value": "getAnalytics",
      "action": "Get channel analytics",
      "routing": {
        "request": {
          "url": "/external/analytics/channel-analytics",
          "method": "POST"
        }
      },
      "description": "Get analytics data for a YouTube channel"
    },
    {
      "name": "Get Geography Demographics Revenue",
      "value": "getGeoDemoRev",
      "action": "Get geography demographics revenue",
      "routing": {
        "request": {
          "url": "/external/analytics/channel-analytics/geography-revenue",
          "method": "POST"
        }
      },
      "description": "Get geography, demographics, and revenue data for a YouTube channel"
    },
    {
      "name": "Get Short vs Long Views",
      "value": "getShortVsLongViews",
      "action": "Get short vs long views",
      "routing": {
        "request": {
          "method": "GET"
        }
      },
      "description": "Get short and long video views for a YouTube channel"
    },
    {
      "name": "Create Job",
      "value": "createJob",
      "action": "Create channel analysis job",
      "routing": {
        "request": {
          "url": "/external/channels/analysis/job/create",
          "method": "GET"
        }
      },
      "description": "Create a new channel analysis job"
    },
    {
      "name": "Get Result",
      "value": "getResult",
      "action": "Get channel analysis result",
      "routing": {
        "request": {
          "url": "/external/channels/analysis/job/status",
          "method": "GET"
        }
      },
      "description": "Get the status and results of a channel analysis job"
    },
    {
      "name": "Get About",
      "value": "getAbout",
      "action": "Get channel about",
      "routing": {
        "request": {
          "url": "/external/channels/about",
          "method": "GET"
        }
      },
      "description": "Get about information for a YouTube channel"
    },
    {
      "name": "Get Outliers",
      "value": "getOutliers",
      "action": "Get channel outliers",
      "routing": {
        "request": {
          "url": "/external/outliers",
          "method": "GET"
        }
      },
      "description": "Get outlier videos from a YouTube channel"
    },
    {
      "name": "Get Playlists",
      "value": "getPlaylists",
      "action": "Get channel playlists",
      "routing": {
        "request": {
          "url": "/external/channels/playlists",
          "method": "GET"
        }
      },
      "description": "Get playlists from a YouTube channel"
    },
    {
      "name": "Get Shorts",
      "value": "getShorts",
      "action": "Get channel shorts",
      "routing": {
        "request": {
          "url": "/external/channels/shorts",
          "method": "GET"
        }
      },
      "description": "Get short videos from a YouTube channel"
    },
    {
      "name": "Get Videos",
      "value": "getVideos",
      "action": "Get channel videos",
      "routing": {
        "request": {
          "url": "/external/channels/videos",
          "method": "GET"
        }
      },
      "description": "Get videos from a YouTube channel"
    },
    {
      "name": "Analyze",
      "value": "analyze",
      "action": "Analyze channel niche overview",
      "routing": {
        "request": {
          "url": "/external/niche-overview/analyze",
          "method": "POST"
        }
      },
      "description": "Analyze and get niche overview for a YouTube channel"
    },
    {
      "name": "Get Similar Videos",
      "value": "getSimilar",
      "action": "Get similar videos",
      "routing": {
        "request": {
          "url": "/external/similar-videos/videos",
          "method": "POST"
        }
      },
      "description": "Find similar videos based on a YouTube video"
    },
    {
      "name": "Search Similar Thumbnails",
      "value": "search",
      "action": "Search similar thumbnails",
      "routing": {
        "request": {
          "url": "/external/similar-thumbnails/search",
          "method": "POST"
        }
      },
      "description": "Find similar thumbnails based on text or image URL"
    },
    {
      "name": "Search Similar Channels",
      "value": "search",
      "action": "Search similar channels",
      "routing": {
        "request": {
          "url": "/external/similar-channels/search",
          "method": "POST"
        }
      },
      "description": "Find similar channels based on a YouTube channel"
    },
    {
      "name": "Get Bulk Subtitle",
      "value": "getBulkSubtitle",
      "action": "Get bulk video subtitles",
      "routing": {
        "request": {
          "url": "/external/videos/bulk-subtitle",
          "method": "POST"
        }
      },
      "description": "Get subtitles for multiple YouTube videos at once"
    },
    {
      "name": "Get Bulk Transcript",
      "value": "getBulkTranscript",
      "action": "Get bulk video transcripts",
      "routing": {
        "request": {
          "url": "/external/videos/bulk-transcript",
          "method": "POST"
        }
      },
      "description": "Get transcripts for multiple YouTube videos at once"
    },
    {
      "name": "Get Comments",
      "value": "getComments",
      "action": "Get video comments",
      "routing": {
        "request": {
          "url": "/external/videos/comments",
          "method": "GET"
        }
      },
      "description": "Get comments for a YouTube video"
    },
    {
      "name": "Get Details",
      "value": "getDetails",
      "action": "Get video details",
      "routing": {
        "request": {
          "url": "/external/videos/details",
          "method": "GET"
        }
      },
      "description": "Get detailed information for a YouTube video"
    },
    {
      "name": "Get RPM",
      "value": "getRPM",
      "action": "Get video RPM",
      "routing": {
        "request": {
          "url": "/external/videos/rpm",
          "method": "GET"
        }
      },
      "description": "Get RPM (Revenue Per Mille) for a YouTube video"
    },
    {
      "name": "Get Shorts Details",
      "value": "getShortsDetails",
      "action": "Get shorts details",
      "routing": {
        "request": {
          "url": "/external/shorts/details",
          "method": "GET"
        }
      },
      "description": "Get detailed information for a YouTube shorts video"
    },
    {
      "name": "Get Subtitle",
      "value": "getSubtitle",
      "action": "Get video subtitle",
      "routing": {
        "request": {
          "url": "/external/videos/subtitle",
          "method": "GET"
        }
      },
      "description": "Get subtitle for a YouTube video"
    },
    {
      "name": "Get Transcript",
      "value": "getTranscript",
      "action": "Get video transcript",
      "routing": {
        "request": {
          "url": "/external/videos/transcript",
          "method": "GET"
        }
      },
      "description": "Get transcript for a YouTube video"
    }
  ]

npm_readme:
  # n8n-nodes-nexlev

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

  Nexlev is a YouTube analytics and similarity discovery platform that helps content creators analyze channel performance and discover similar content across YouTube.

  [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

  The Nexlev node supports the following operations:

  ### Channel Analysis

  - **Create Job**: Create a new channel analysis job
  - **Get Result**: Get the status and results of a channel analysis job

  ### Channel Analytics

  - **Get Analytics**: Retrieve comprehensive analytics data for a YouTube channel
  - **Get Geography Demographics Revenue**: Get geographic distribution, demographic breakdown, and revenue data
  - **Get Short vs Long Views**: Compare short-form vs long-form content performance

  ### Channel Content

  - **Get About**: Get about information for a YouTube channel
  - **Get Playlists**: Get playlists from a YouTube channel
  - **Get Videos**: Get videos from a YouTube channel
  - **Get Shorts**: Get short videos from a YouTube channel

  ### Niche Overview

  - **Analyze**: Analyze and get niche overview for a YouTube channel

  ### Similar Channels

  - **Search Similar Channels**: Find similar YouTube channels based on content type and audience

  ### Similar Thumbnails

  - **Search Similar Thumbnails**: Discover similar video thumbnails for content inspiration

  ### Similar Videos

  - **Get Similar Videos**: Find videos similar to a given video with similarity scores

  ### Videos and Shorts

  - **Get Bulk Transcript**: Get transcripts for multiple YouTube videos
  - **Get Comments**: Get comments for a YouTube video
  - **Get Details**: Get detailed information for a YouTube video
  - **Get Shorts Details**: Get detailed information for a YouTube shorts video
  - **Get Transcript**: Get transcript for a YouTube video

  ## Credentials

  To use this node, you need to obtain an API key from Nexlev.

  ### Prerequisites

  - Sign up for a Nexlev account and get your API key at [dashboard.nexlev.io/n8n-youtube](https://dashboard.nexlev.io/n8n-youtube)
  - The dashboard provides everything you need to get started with the n8n integration

  ### Authentication Method

  - **API Key**: Enter your Nexlev API key in the credential configuration
  - The API key is sent via the `x-api-key` header in all requests

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Tested with**: n8n 1.x
  - **Node version**: 0.2.0

  ## Usage

  ### Basic Setup

  1. **Install the node** following the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/)
  2. **Create credentials** with your Nexlev API key
  3. **Add the Nexlev node** to your workflow
  4. **Select a resource** (Channel Analytics, Similar Videos, Similar Thumbnails, or Similar Channels)
  5. **Choose an operation** and fill in the required parameters

  ### Example: Getting Similar Videos

  1. Add the Nexlev node to your workflow
  2. Select "Similar Videos" as the Resource
  3. Select "Get Similar Videos" as the Operation
  4. Enter a YouTube video ID (e.g., `gpyYCTgJO88`)
  5. The node will return a list of similar videos with similarity scores and metadata

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Nexlev n8n Integration Dashboard](https://dashboard.nexlev.io/n8n-youtube) - Get your API key and documentation

  ## Version history

  ### 0.2.0

  - Added support for getting playlists from YouTube channels
  - Added bulk transcript API for processing multiple videos
  - Added sub API support
  - Added support for videoURL parameter in similar videos operations
  - Fixed channel analysis job creation endpoint to use GET method

  ### 0.1.10

  - Fixed channel analysis job creation endpoint to use GET method

  ### 0.1.9

  - Added comprehensive operations documentation for all resources
  - Improved .gitignore with best practices
  - Better repository structure

  ### 0.1.8

  - Updated documentation with correct Nexlev dashboard links
  - Improved getting started experience

  ### 0.1.7

  - Bug fixes and improvements
  - Enhanced stability

  ### 0.1.6

  - Improvements and updates

  ### 0.1.0

  - Initial release
  - Support for Channel Analytics operations (Get Analytics, Geography/Demographics/Revenue, Short vs Long Views)
  - Support for Similar Videos discovery
  - Support for Similar Thumbnails search
  - Support for Similar Channels discovery
  - API key authentication
  - Multi-environment support (local, dev, prod)

ai_documentation_summary:
  {"purpose":"The Nexlev node enables n8n users to interact with the Nexlev API to analyze YouTube channels, discover similar content, and retrieve detailed analytics, videos, and metadata for content creators and marketers.","capabilities":["Create and manage channel analysis jobs","Retrieve comprehensive channel analytics including geographic, demographic, and revenue data","Compare short-form vs long-form content performance","Get channel about information, playlists, and videos","Search for similar YouTube channels based on content and audience","Discover similar video thumbnails for content inspiration","Find videos similar to a given video with similarity scores","Retrieve transcripts for individual or bulk videos","Get video and short video details and comments","Analyze niche performance and overview for a channel"],"authentication":"API key required; the key is sent in the `x-api-key` header of each request","commonUseCases":["Analyzing channel performance and audience demographics","Discovering content similar to a specific video or channel","Finding inspiration from similar thumbnails or videos","Automating video performance tracking and content recommendations","Batch processing video transcripts for content analysis"],"limitations":[],"relatedNodes":["YouTube integration nodes","Analytics and data processing nodes","Content discovery and recommendation nodes"]}


node_type: n8n-nodes-chainstream.chainstream
package_name: n8n-nodes-chainstream
display_name: Chainstream
description: Consume Chainstream API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  {
  "type": "main"
  }
  ]

updated_at: 2026-01-07 20:08:16
author_name: quantum01io
author_github_url: https://github.com/chainstream-io/
npm_package_name: n8n-nodes-chainstream
npm_version: 0.0.92
community_fetched_at: 2026-01-07T20:08:16.120Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "token",
      "options": [
        {
          "name": "Token",
          "value": "token"
        },
        {
          "name": "Wallet",
          "value": "wallet"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Candles",
          "value": "candles",
          "action": "Get token price candles",
          "description": "Get token price candles"
        },
        {
          "name": "Creation",
          "value": "creation",
          "action": "Get token creation information",
          "description": "Get token creation information"
        },
        {
          "name": "Detail",
          "value": "detail",
          "action": "Get detail of token",
          "description": "Get detail of token"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a token",
          "description": "Get a token"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many tokens",
          "description": "Get many tokens"
        },
        {
          "name": "Holders",
          "value": "holders",
          "action": "Get holders of a token",
          "description": "Get holders of a token"
        },
        {
          "name": "Liquidity",
          "value": "liquidity",
          "action": "Get all pools containing this token",
          "description": "Get all pools containing this token"
        },
        {
          "name": "Market Data",
          "value": "marketData",
          "action": "Get token market data",
          "description": "Get token market data"
        },
        {
          "name": "Metadata",
          "value": "metadata",
          "action": "Get metadata of token",
          "description": "Get metadata of token"
        },
        {
          "name": "Mint And Burn",
          "value": "mintAndBurn",
          "action": "Get mint and burn information for a token",
          "description": "Get mint and burn information for a token"
        },
        {
          "name": "Price by Time",
          "value": "price",
          "action": "Get token price at a specific timestamp",
          "description": "Get token price at a specific timestamp"
        },
        {
          "name": "Prices",
          "value": "prices",
          "action": "Get historical price data for a token",
          "description": "Get historical price data for a token"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search token informaton by criteria",
          "description": "Search token information by criteria"
        },
        {
          "name": "Security",
          "value": "security",
          "action": "Get token security information",
          "description": "Get token security information"
        },
        {
          "name": "Stats",
          "value": "stats",
          "action": "Get token statistics",
          "description": "Get token statistics"
        },
        {
          "name": "Top Holders",
          "value": "topHolders",
          "action": "Get the top 20 holders for a token",
          "description": "Get the top 20 holders for a token"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "token"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "balance",
      "options": [
        {
          "name": "Balance",
          "value": "balance",
          "action": "Get wallet balance",
          "description": "Get wallet balance"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "wallet"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Candles",
      "value": "candles",
      "action": "Get token price candles",
      "description": "Get token price candles"
    },
    {
      "name": "Creation",
      "value": "creation",
      "action": "Get token creation information",
      "description": "Get token creation information"
    },
    {
      "name": "Detail",
      "value": "detail",
      "action": "Get detail of token",
      "description": "Get detail of token"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a token",
      "description": "Get a token"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many tokens",
      "description": "Get many tokens"
    },
    {
      "name": "Holders",
      "value": "holders",
      "action": "Get holders of a token",
      "description": "Get holders of a token"
    },
    {
      "name": "Liquidity",
      "value": "liquidity",
      "action": "Get all pools containing this token",
      "description": "Get all pools containing this token"
    },
    {
      "name": "Market Data",
      "value": "marketData",
      "action": "Get token market data",
      "description": "Get token market data"
    },
    {
      "name": "Metadata",
      "value": "metadata",
      "action": "Get metadata of token",
      "description": "Get metadata of token"
    },
    {
      "name": "Mint And Burn",
      "value": "mintAndBurn",
      "action": "Get mint and burn information for a token",
      "description": "Get mint and burn information for a token"
    },
    {
      "name": "Price by Time",
      "value": "price",
      "action": "Get token price at a specific timestamp",
      "description": "Get token price at a specific timestamp"
    },
    {
      "name": "Prices",
      "value": "prices",
      "action": "Get historical price data for a token",
      "description": "Get historical price data for a token"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search token informaton by criteria",
      "description": "Search token information by criteria"
    },
    {
      "name": "Security",
      "value": "security",
      "action": "Get token security information",
      "description": "Get token security information"
    },
    {
      "name": "Stats",
      "value": "stats",
      "action": "Get token statistics",
      "description": "Get token statistics"
    },
    {
      "name": "Top Holders",
      "value": "topHolders",
      "action": "Get the top 20 holders for a token",
      "description": "Get the top 20 holders for a token"
    },
    {
      "name": "Balance",
      "value": "balance",
      "action": "Get wallet balance",
      "description": "Get wallet balance"
    }
  ]

npm_readme:
  **Version:** 0.0.92
  **Status:** Submitted to Creator Portal, awaiting approval  
  **Compatible with:** n8n v1.0.0+ (tested on v1.113.0)

  # n8n-nodes-chainstream

  [![Verified on MseeP](https://mseep.ai/badge.svg)](https://mseep.ai/app/bd76f121-1c8f-4f5d-9c65-1eac5d81b6af)

  `n8n-nodes-chainstream` is an n8n community node that enables workflows to access real-time blockchain data via [Chainstream](https://chainstream.io). It supports token, wallet, and trade queries across multiple chains, and is designed for reuse, easy extension, and straightforward review.

  ---

  ## 🚀 Installation

  ```bash
  npm install n8n-nodes-chainstream
  ```

  - Restart n8n to load the new community node.
  - Add the Chainstream node to your workflow and configure credentials.

  ---

  ## 🔐 Credentials

  Create a new credential in n8n:

  - **API Client ID** — Chainstream public key
  - **API Client Secret** — Chainstream private key

  ⚠️ Do not commit real keys to your repository or exported workflows. Use placeholders in templates and bind credentials after import.

  ---

  ## ⚡ Quickstart

  1. Go to **Workflows → Import** in n8n and upload `/templates/workflow.json` from this repo.
  2. Run:

     ```bash
     npm install n8n-nodes-chainstream
     ```

  3. Create and bind your Chainstream credential.
  4. Configure a trigger (e.g., Telegram, webhook, cron).
  5. Run the workflow and inspect the Chainstream node output.

  > Note: `/templates/workflow.json` uses credential placeholders. Replace them after import.

  ---

  ## 🧪 Example Node Configuration

  **Node:** Chainstream

  - **Credentials:** ChainstreamApi
  - **Resource:** token
  - **Operation:** get
  - **Chain ID:** 137
  - **Token Address:** `0x1234...abcd`
  - **Options:** (leave default)

  **Example output:**

  ```json
  {
  	"symbol": "ABC",
  	"name": "Token ABC",
  	"decimals": 18,
  	"address": "0x..."
  }
  ```

  For batch runs, use expressions or upstream nodes to supply dynamic parameters.

  ---

  ## 📚 Supported Resources

  Short summary of supported resources (full mapping in `DEVELOPER.md`):

  - **token** — metadata, prices, holders, liquidity, security, mint/burn
  - **trade** — listings, activities, leaderboards
  - **wallet** — balance queries

  ---

  ## 🧑‍💻 Developer Notes

  The `execute` method builds requests dynamically:

  1. Reads `resource` and `operation` per item
  2. Calls `buildRequest()` to map to `{ method, path, qs }`
  3. Sends request via `chainstreamApiRequest()`
  4. Wraps response with `constructExecutionMetaData()`
  5. Handles errors via `NodeOperationError`, respects `continueOnFail`

  Full handler mapping and endpoint patterns are in `DEVELOPER.md`.

  ---

  ## 🛠️ Troubleshooting

  - **Invalid resource/operation** → check for typos
  - **Bad parameters** → test with single item before batching
  - **API errors** → inspect node output, verify credentials
  - **Batch runs** → enable `Continue On Fail` to capture per-item errors

  Debug tips:

  - Use **Executions** view to inspect inputs/outputs
  - Add a **Set** node to test static parameters
  - Start with one item to simplify debugging

  ---

  ## 🧪 Contributing & CI

  ```bash
  npm run build   # Compile TypeScript
  npm run lint    # Run ESLint
  npm run test    # Run Jest tests
  ```

  - `prepublishOnly` runs build + lint before publishing
  - Use GitHub Actions to automate lint/build/test
  - Keep TypeScript strict and ESLint green

  To add a new operation:

  1. Add handler in `buildRequest()`
  2. Extract parameters via `getNodeParameter(..., i)`
  3. Return `{ method, path, qs? }`
  4. Add tests and update `DEVELOPER.md`

  ---

  ## 📦 Templates & Reviewer Guidance

  - `/templates/workflow.json` — example workflow
  - `/templates/README-template.md` — import instructions
  - If reviewers lack production keys, provide:
    - mock API
    - test account
    - recorded executions

  When submitting:

  - Include repo link, npm package name/version
  - Provide install steps and sample outputs
  - Add screenshots if possible

  ---

  ## 📬 Contact & Support

  - Maintainer: Chainstream Team – [ai@chainstream.io](mailto:ai@chainstream.io)
  - Issues & PRs: [GitHub Issues](https://github.com/chainstream-io/n8n-nodes-chainstream/issues)

  ---

  ## 📄 License

  MIT

  ---

ai_documentation_summary:
  {"purpose":"The Chainstream node enables n8n workflows to access real-time blockchain data via the Chainstream API, supporting queries for tokens, wallets, and trades across multiple blockchain chains.","capabilities":["Query token metadata, prices, holders, liquidity, and mint/burn events","Retrieve wallet balance information","Access trade listings, activities, and leaderboards","Supports dynamic parameter input via expressions or upstream nodes","Batch processing with error handling and continue-on-fail option"],"authentication":"API Client ID and API Client Secret (public and private keys) required for authentication","commonUseCases":["Monitoring token prices and market data","Tracking wallet balances across chains","Analyzing trade activities and market leaderboards","Building real-time blockchain analytics dashboards"],"limitations":["Requires valid Chainstream credentials with proper permissions","Batch operations may require manual error handling due to per-item failures","No built-in data transformation or filtering beyond what is supported by Chainstream API"],"relatedNodes":["Trigger nodes (e.g., webhook, cron, Telegram)","Set node for parameter testing","Executions view for debugging"]}


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

updated_at: 2026-01-07 20:08:16
author_name: pdf4me
author_github_url: https://github.com/pdf4me/
npm_package_name: n8n-nodes-pdf4me
npm_version: 1.5.5
community_fetched_at: 2026-01-07T20:08:16.120Z
ai_summary_generated_at: 2026-01-08 10:45:32
description:
  Comprehensive PDF and document processing: generate barcodes, convert files, extract data, manipulate images, and automate workflows with the PDF4ME API

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "ai",
      "options": [
        {
          "name": "AI",
          "value": "ai",
          "description": "AI-powered document processing and classification"
        },
        {
          "name": "Barcode",
          "value": "barcode",
          "description": "Generate QR codes and barcodes for use in documents"
        },
        {
          "name": "Convert",
          "value": "convert",
          "description": "Convert various document formats to and from PDF"
        },
        {
          "name": "Edit",
          "value": "edit",
          "description": "Edit PDF documents: add attachments, headers, footers, stamps, and signatures"
        },
        {
          "name": "Extract",
          "value": "extract",
          "description": "Extract data, text, tables, and attachments from documents"
        },
        {
          "name": "Find Search",
          "value": "findSearch",
          "description": "Find and replace text, convert PDF to editable format using OCR"
        },
        {
          "name": "Forms",
          "value": "forms",
          "description": "Create, fill, and manage PDF forms"
        },
        {
          "name": "Generate",
          "value": "generate",
          "description": "Generate PDFs from templates with data, manage Word documents"
        },
        {
          "name": "Image",
          "value": "image",
          "description": "Process and manipulate images: resize, crop, rotate, compress, and extract text"
        },
        {
          "name": "Merge & Split",
          "value": "mergeSplit",
          "description": "Merge multiple PDFs or split PDFs by various criteria"
        },
        {
          "name": "Optimize Compress",
          "value": "optimizeCompress",
          "description": "Compress and optimize PDF files"
        },
        {
          "name": "Organize",
          "value": "organize",
          "description": "Organize PDF pages: delete, extract, and rotate pages"
        },
        {
          "name": "PDF4me",
          "value": "pdf4me",
          "description": "PDF4me-specific operations: get documents and update hyperlinks"
        },
        {
          "name": "PDF",
          "value": "pdf",
          "description": "Get PDF metadata and repair PDF documents"
        },
        {
          "name": "Security",
          "value": "security",
          "description": "Protect and unlock PDF documents"
        },
        {
          "name": "Word",
          "value": "word",
          "description": "Manage Word document tracking changes"
        }
      ],
      "description": "Choose the type of PDF operation: generate documents, convert formats, process PDFs, extract data, or manage images",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "AI-Invoice Parser",
      "options": [
        {
          "name": "AI-Invoice Parser",
          "value": "AI-Invoice Parser",
          "action": "AI-Invoice Parser",
          "description": "Extract structured data from invoices using AI/ML technology for automated data entry"
        },
        {
          "name": "AI-Process Contract",
          "value": "AI-Process Contract",
          "action": "AI-Process Contract",
          "description": "Extract structured data from contracts using AI/ML technology for legal document analysis"
        },
        {
          "name": "AI-Process HealthCard",
          "value": "AI-Process HealthCard",
          "action": "AI-Process HealthCard",
          "description": "Extract structured data from health cards using AI/ML technology for member management"
        }
      ],
      "displayName": "AI Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Generate Barcode",
      "options": [
        {
          "name": "Add Barcode to PDF",
          "value": "Add Barcode To PDF",
          "action": "Add barcode to PDF",
          "description": "Add barcodes to existing PDF documents with positioning and styling options"
        },
        {
          "name": "Create Barcode",
          "value": "Generate Barcode",
          "action": "Create barcode",
          "description": "Generate various types of barcodes including QR codes, Code 128, Code 39, and more"
        },
        {
          "name": "Read SwissQR Code",
          "value": "Read SwissQR Code",
          "action": "Read SwissQR code",
          "description": "Read Swiss QR code data from PDF documents"
        },
        {
          "name": "Create SwissQR Bill",
          "value": "Create Swiss QR Bill",
          "action": "Create SwissQR bill",
          "description": "Create Swiss QR Bills using all compliance standards for digital payment transactions"
        },
        {
          "name": "Read Barcode from PDF",
          "value": "Read Barcode From PDF",
          "action": "Read barcode from PDF",
          "description": "Read single or multiple Barcodes or QR Codes from your PDF file"
        }
      ],
      "displayName": "Barcode Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "barcode"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Convert To PDF",
      "options": [
        {
          "name": "Convert JSON To Excel",
          "value": "Convert JSON To Excel",
          "action": "Convert JSON to Excel",
          "description": "Convert JSON data to Excel format"
        },
        {
          "name": "Convert to PDF",
          "value": "Convert To PDF",
          "action": "Convert to PDF",
          "description": "Convert various document formats to PDF"
        },
        {
          "name": "Convert VISIO",
          "value": "Convert VISIO",
          "action": "Convert VISIO",
          "description": "Convert VISIO files (.vsdx, .vsd) to PDF format with advanced conversion options"
        },
        {
          "name": "Convert Word to PDF Form",
          "value": "Convert Word To PDF Form",
          "action": "Convert Word to PDF Form",
          "description": "Convert Word documents to PDF forms"
        },
        {
          "name": "Create PDF/A",
          "value": "Create PDF/A",
          "action": "Create PDF/A",
          "description": "Convert PDF to PDF/A for long-term archiving and compliance"
        },
        {
          "name": "Flatten PDF",
          "value": "Flatten PDF",
          "action": "Flatten PDF",
          "description": "Convert interactive PDF elements into static, non-editable content"
        },
        {
          "name": "Convert Html to PDF",
          "value": "Convert HTML To PDF",
          "action": "Convert Html to PDF",
          "description": "Convert HTML files to PDF documents"
        },
        {
          "name": "Linearize PDF",
          "value": "Linearize PDF",
          "action": "Linearize PDF",
          "description": "Optimize PDFs for web viewing with faster loading and progressive display"
        },
        {
          "name": "Convert Markdown To PDF",
          "value": "Convert Markdown To PDF",
          "action": "Convert Markdown To PDF",
          "description": "Convert Markdown files to PDF documents"
        },
        {
          "name": "Convert PDF to Excel",
          "value": "Convert PDF To Excel",
          "action": "Convert PDF to Excel",
          "description": "Convert PDF documents to Excel spreadsheets"
        },
        {
          "name": "Convert PDF to PowerPoint",
          "value": "Convert PDF To PowerPoint",
          "action": "Convert PDF to PowerPoint",
          "description": "Convert PDF documents to PowerPoint format with OCR support"
        },
        {
          "name": "Convert PDF to Word",
          "value": "Convert PDF To Word",
          "action": "Convert PDF to Word",
          "description": "Convert PDF documents to Word format with OCR support"
        },
        {
          "name": "Convert Url to PDF",
          "value": "Convert URL to PDF",
          "action": "Convert Url to PDF",
          "description": "Convert web pages to PDF while preserving layout, styling, and content"
        }
      ],
      "displayName": "Convert Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "convert"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Add Attachment To PDF",
      "options": [
        {
          "name": "Add Attachment To PDF",
          "value": "Add Attachment To PDF",
          "action": "Add attachment to PDF",
          "description": "Add file attachments to PDF documents"
        },
        {
          "name": "Add HTML Header Footer to PDF",
          "value": "Add HTML Header Footer",
          "action": "Add HTML header footer to PDF",
          "description": "Add HTML-based headers and footers to PDF documents"
        },
        {
          "name": "Add Margin to PDF",
          "value": "Add Margin To PDF",
          "action": "Add margin to PDF",
          "description": "Add margins to PDF documents"
        },
        {
          "name": "Add Page Number to PDF",
          "value": "Add Page Number To PDF",
          "action": "Add page number to PDF",
          "description": "Add page numbers to PDF documents"
        },
        {
          "name": "Add Image Stamp To PDF",
          "value": "Add Image Stamp To PDF",
          "action": "Add image stamp to PDF",
          "description": "Add image stamps or watermarks to PDF documents"
        },
        {
          "name": "Sign PDF",
          "value": "Sign PDF",
          "action": "Sign PDF",
          "description": "Digitally sign PDF documents"
        },
        {
          "name": "Add Text Stamp To PDF",
          "value": "Add Text Stamp To PDF",
          "action": "Add text stamp to PDF",
          "description": "Add text stamps or watermarks to PDF documents"
        }
      ],
      "displayName": "Edit Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "edit"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Extract Resources",
      "options": [
        {
          "name": "Classify Document",
          "value": "Classify Document",
          "action": "Classify document",
          "description": "Classify documents using AI to determine document type and extract relevant information"
        },
        {
          "name": "Extract Attachment From PDF",
          "value": "Extract Attachment From PDF",
          "action": "Extract attachment from PDF",
          "description": "Extract file attachments from PDF documents"
        },
        {
          "name": "Extract Form Data From PDF",
          "value": "Extract Form Data From PDF",
          "action": "Extract form data from PDF",
          "description": "Extract form field data from PDF documents"
        },
        {
          "name": "Extract Resources",
          "value": "Extract Resources",
          "action": "Extract resources",
          "description": "Extract text and images from PDF documents"
        },
        {
          "name": "Extract Table From PDF",
          "value": "Extract Table From PDF",
          "action": "Extract table from PDF",
          "description": "Extract tables from PDF documents"
        },
        {
          "name": "Extract Text by Expression",
          "value": "Extract Text By Expression",
          "action": "Extract text by expression",
          "description": "Extract text from PDF using regular expressions"
        },
        {
          "name": "Extract Text from word",
          "value": "Extract Text From Word",
          "action": "Extract text from word",
          "description": "Extract text content from Word documents"
        },
        {
          "name": "Parse Document",
          "value": "Parse Document",
          "action": "Parse document",
          "description": "Parse documents to extract structured data using template-based parsing"
        }
      ],
      "displayName": "Extract Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "extract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Find And Replace Text",
      "options": [
        {
          "name": "Find and Replace Text",
          "value": "Find And Replace Text",
          "action": "Find and replace text",
          "description": "Find and replace text in PDF documents"
        },
        {
          "name": "Convert PDF to editable PDF using OCR",
          "value": "Convert PDF To Editable PDF Using OCR",
          "action": "Convert PDF to editable PDF using OCR",
          "description": "Convert PDF to editable PDF using OCR for scanned documents"
        }
      ],
      "displayName": "Find Search Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "findSearch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Fill PDF Form",
      "options": [
        {
          "name": "Add Form Fields To PDF",
          "value": "Add Form Fields To PDF",
          "action": "Add form fields to PDF",
          "description": "Add interactive form fields to PDF documents"
        },
        {
          "name": "Fill a PDF Form",
          "value": "Fill PDF Form",
          "action": "Fill a PDF form",
          "description": "Fill PDF forms with data or generate multiple documents from templates"
        }
      ],
      "displayName": "Forms Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "forms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Generate Document Single",
      "options": [
        {
          "name": "Enable Tracking changes in word",
          "value": "Enable Tracking Changes in Word",
          "action": "Enable tracking changes in word",
          "description": "Enable tracking changes in Word documents"
        },
        {
          "name": "Generate Document (Single)",
          "value": "Generate Document Single",
          "action": "Generate document (single)",
          "description": "Generate a single document from template with data"
        },
        {
          "name": "Generate Documents (Multiple)",
          "value": "Generate Documents Multiple",
          "action": "Generate documents (multiple)",
          "description": "Generate multiple documents from template with different data sets"
        },
        {
          "name": "Get Tracking Changes In Word",
          "value": "Get Tracking Changes in Word",
          "action": "Get tracking changes in word",
          "description": "Get tracking changes information from Word documents"
        },
        {
          "name": "Replace Text With Image In Word",
          "value": "Replace Text With Image In Word",
          "action": "Replace text with image in word",
          "description": "Replace specific text in Word documents with images"
        }
      ],
      "displayName": "Generate Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "generate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Compress Image",
      "options": [
        {
          "name": "Add Image watermark To Image",
          "value": "Add Image Watermark To Image",
          "action": "Add image watermark to image",
          "description": "Add image watermark to image documents"
        },
        {
          "name": "Add Text watermark To Image",
          "value": "Add Text Watermark To Image",
          "action": "Add text watermark to image",
          "description": "Add text watermarks to images with positioning and styling options"
        },
        {
          "name": "Compress Image",
          "value": "Compress Image",
          "action": "Compress image",
          "description": "Compress image documents"
        },
        {
          "name": "Convert Image Format",
          "value": "Convert Image Format",
          "action": "Convert image format",
          "description": "Convert image format (BMP, GIF, JPG, PNG, TIFF)"
        },
        {
          "name": "Create Image from PDF",
          "value": "Create Images From PDF",
          "action": "Create image from PDF",
          "description": "Create images from PDF pages"
        },
        {
          "name": "Crop Image",
          "value": "Crop Image",
          "action": "Crop image",
          "description": "Crop images with border or rectangle cropping options"
        },
        {
          "name": "Flip Image",
          "value": "Flip Image",
          "action": "Flip image",
          "description": "Flip image documents horizontally, vertically, or both"
        },
        {
          "name": "Get Image Metadata",
          "value": "Get Image Metadata",
          "action": "Get image metadata",
          "description": "Extract metadata information from images including EXIF data and properties"
        },
        {
          "name": "Image Extract Text",
          "value": "Image Extract Text",
          "action": "Image extract text",
          "description": "Extract text content from images using OCR (Optical Character Recognition)"
        },
        {
          "name": "Replace Text with Image",
          "value": "Replace Text With Image",
          "action": "Replace text with image",
          "description": "Replace specific text in PDF documents with images"
        },
        {
          "name": "Resize Image",
          "value": "Resize Image",
          "action": "Resize image",
          "description": "Resize images by percentage or specific dimensions with aspect ratio control"
        },
        {
          "name": "Rotate Image By Exif Data",
          "value": "Rotate Image By Exif Data",
          "action": "Rotate image by exif data",
          "description": "Rotate image automatically based on EXIF orientation metadata"
        },
        {
          "name": "Rotate Image",
          "value": "Rotate Image",
          "action": "Rotate image",
          "description": "Rotate images with custom angle, background color, and proportionate resize options"
        },
        {
          "name": "Read Barcode From Image",
          "value": "Read Barcode From Image",
          "action": "Read barcode from image",
          "description": "Read barcodes from images using OCR"
        },
        {
          "name": "Remove EXIF Tags From Image",
          "value": "Remove Exif Tags From Image",
          "action": "Remove EXIF tags from image",
          "description": "Remove metadata/EXIF tags from images for privacy and file size reduction"
        }
      ],
      "displayName": "Image Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Merge Multiple PDFs",
      "options": [
        {
          "name": "Merge Multiple PDF files into Single PDF",
          "value": "Merge Multiple PDFs",
          "action": "Merge multiple PDF files into single PDF",
          "description": "Combine multiple PDF files into a single PDF document"
        },
        {
          "name": "Merge two PDF files one over another as Overlay",
          "value": "Overlay PDFs",
          "action": "Merge two PDF files one over another as overlay",
          "description": "Merge two PDF files one over another as overlay"
        },
        {
          "name": "Split PDF",
          "value": "Split PDF Regular",
          "action": "Split PDF",
          "description": "Split PDF documents by regular expression and output as ZIP"
        },
        {
          "name": "Split PDF by Barcode",
          "value": "Split PDF By Barcode",
          "action": "Split PDF by barcode",
          "description": "Split PDF documents by barcode and output as ZIP"
        },
        {
          "name": "Split PDF by Swiss QR",
          "value": "Split PDF By SwissQR",
          "action": "Split PDF by Swiss QR",
          "description": "Split PDF documents by Swiss QR code and output as ZIP"
        },
        {
          "name": "Split PDF by Text",
          "value": "Split PDF By Text",
          "action": "Split PDF by text",
          "description": "Split PDF documents by text and output as ZIP"
        }
      ],
      "displayName": "Merge & Split Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "mergeSplit"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Compress PDF",
      "options": [
        {
          "name": "Compress PDF",
          "value": "Compress PDF",
          "action": "Compress PDF",
          "description": "Compress and optimize PDF files"
        }
      ],
      "displayName": "Optimize Compress Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "optimizeCompress"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Delete Blank Pages From PDF",
      "options": [
        {
          "name": "Delete Blank Pages from PDF",
          "value": "Delete Blank Pages From PDF",
          "action": "Delete blank pages from PDF",
          "description": "Remove blank pages from PDF documents based on specified criteria"
        },
        {
          "name": "Delete unwanted Pages from PDF",
          "value": "Delete Unwanted Pages From PDF",
          "action": "Delete unwanted pages from PDF",
          "description": "Remove specific pages from PDF documents by page numbers"
        },
        {
          "name": "Extract Pages",
          "value": "Extract Pages From PDF",
          "action": "Extract pages",
          "description": "Extract specific pages from PDF documents"
        },
        {
          "name": "Rotate Page",
          "value": "Rotate PDF Page",
          "action": "Rotate page",
          "description": "Rotate specific pages in PDF documents by 90, 180, or 270 degrees"
        },
        {
          "name": "Rotate Document",
          "value": "Rotate Document",
          "action": "Rotate document",
          "description": "Rotate entire PDF documents by 90, 180, or 270 degrees"
        }
      ],
      "displayName": "Organize Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "organize"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get Document From Pdf4me",
      "options": [
        {
          "name": "Get Document from PDF4me",
          "value": "Get Document From Pdf4me",
          "action": "Get document from PDF4me",
          "description": "Retrieve a document from PDF4me storage"
        },
        {
          "name": "Update Hyperlinks Annotation",
          "value": "Update Hyperlinks Annotation",
          "action": "Update hyperlinks annotation",
          "description": "Update hyperlinks in PDF documents"
        }
      ],
      "displayName": "PDF4me Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf4me"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get PDF Metadata",
      "options": [
        {
          "name": "Get PDF Information",
          "value": "Get PDF Metadata",
          "action": "Get PDF information",
          "description": "Extract metadata and information from PDF files"
        },
        {
          "name": "Get PDF Metadata",
          "value": "Get PDF Metadata",
          "action": "Get PDF metadata",
          "description": "Extract metadata from PDF files"
        },
        {
          "name": "Repair PDF Document",
          "value": "Repair PDF Document",
          "action": "Repair PDF document",
          "description": "Repair corrupted or damaged PDF files"
        }
      ],
      "displayName": "PDF Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Protect PDF",
      "options": [
        {
          "name": "Protect Document",
          "value": "Protect PDF",
          "action": "Protect document",
          "description": "Protect PDF documents with encryption, passwords, and permissions"
        },
        {
          "name": "Unlock PDF",
          "value": "Unlock PDF",
          "action": "Unlock PDF",
          "description": "Unlock PDF documents by removing encryption"
        }
      ],
      "displayName": "Security Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "security"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Disable Tracking Changes in Word",
      "options": [
        {
          "name": "Disable Tracking changes In Word",
          "value": "Disable Tracking Changes in Word",
          "action": "Disable tracking changes in word",
          "description": "Disable tracking changes in Word documents"
        }
      ],
      "displayName": "Word Operations",
      "displayOptions": {
        "show": {
          "resource": [
            "word"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "AI-Invoice Parser",
      "value": "AI-Invoice Parser",
      "action": "AI-Invoice Parser",
      "description": "Extract structured data from invoices using AI/ML technology for automated data entry"
    },
    {
      "name": "AI-Process Contract",
      "value": "AI-Process Contract",
      "action": "AI-Process Contract",
      "description": "Extract structured data from contracts using AI/ML technology for legal document analysis"
    },
    {
      "name": "AI-Process HealthCard",
      "value": "AI-Process HealthCard",
      "action": "AI-Process HealthCard",
      "description": "Extract structured data from health cards using AI/ML technology for member management"
    },
    {
      "name": "Add Barcode to PDF",
      "value": "Add Barcode To PDF",
      "action": "Add barcode to PDF",
      "description": "Add barcodes to existing PDF documents with positioning and styling options"
    },
    {
      "name": "Create Barcode",
      "value": "Generate Barcode",
      "action": "Create barcode",
      "description": "Generate various types of barcodes including QR codes, Code 128, Code 39, and more"
    },
    {
      "name": "Read SwissQR Code",
      "value": "Read SwissQR Code",
      "action": "Read SwissQR code",
      "description": "Read Swiss QR code data from PDF documents"
    },
    {
      "name": "Create SwissQR Bill",
      "value": "Create Swiss QR Bill",
      "action": "Create SwissQR bill",
      "description": "Create Swiss QR Bills using all compliance standards for digital payment transactions"
    },
    {
      "name": "Read Barcode from PDF",
      "value": "Read Barcode From PDF",
      "action": "Read barcode from PDF",
      "description": "Read single or multiple Barcodes or QR Codes from your PDF file"
    },
    {
      "name": "Convert JSON To Excel",
      "value": "Convert JSON To Excel",
      "action": "Convert JSON to Excel",
      "description": "Convert JSON data to Excel format"
    },
    {
      "name": "Convert to PDF",
      "value": "Convert To PDF",
      "action": "Convert to PDF",
      "description": "Convert various document formats to PDF"
    },
    {
      "name": "Convert VISIO",
      "value": "Convert VISIO",
      "action": "Convert VISIO",
      "description": "Convert VISIO files (.vsdx, .vsd) to PDF format with advanced conversion options"
    },
    {
      "name": "Convert Word to PDF Form",
      "value": "Convert Word To PDF Form",
      "action": "Convert Word to PDF Form",
      "description": "Convert Word documents to PDF forms"
    },
    {
      "name": "Create PDF/A",
      "value": "Create PDF/A",
      "action": "Create PDF/A",
      "description": "Convert PDF to PDF/A for long-term archiving and compliance"
    },
    {
      "name": "Flatten PDF",
      "value": "Flatten PDF",
      "action": "Flatten PDF",
      "description": "Convert interactive PDF elements into static, non-editable content"
    },
    {
      "name": "Convert Html to PDF",
      "value": "Convert HTML To PDF",
      "action": "Convert Html to PDF",
      "description": "Convert HTML files to PDF documents"
    },
    {
      "name": "Linearize PDF",
      "value": "Linearize PDF",
      "action": "Linearize PDF",
      "description": "Optimize PDFs for web viewing with faster loading and progressive display"
    },
    {
      "name": "Convert Markdown To PDF",
      "value": "Convert Markdown To PDF",
      "action": "Convert Markdown To PDF",
      "description": "Convert Markdown files to PDF documents"
    },
    {
      "name": "Convert PDF to Excel",
      "value": "Convert PDF To Excel",
      "action": "Convert PDF to Excel",
      "description": "Convert PDF documents to Excel spreadsheets"
    },
    {
      "name": "Convert PDF to PowerPoint",
      "value": "Convert PDF To PowerPoint",
      "action": "Convert PDF to PowerPoint",
      "description": "Convert PDF documents to PowerPoint format with OCR support"
    },
    {
      "name": "Convert PDF to Word",
      "value": "Convert PDF To Word",
      "action": "Convert PDF to Word",
      "description": "Convert PDF documents to Word format with OCR support"
    },
    {
      "name": "Convert Url to PDF",
      "value": "Convert URL to PDF",
      "action": "Convert Url to PDF",
      "description": "Convert web pages to PDF while preserving layout, styling, and content"
    },
    {
      "name": "Add Attachment To PDF",
      "value": "Add Attachment To PDF",
      "action": "Add attachment to PDF",
      "description": "Add file attachments to PDF documents"
    },
    {
      "name": "Add HTML Header Footer to PDF",
      "value": "Add HTML Header Footer",
      "action": "Add HTML header footer to PDF",
      "description": "Add HTML-based headers and footers to PDF documents"
    },
    {
      "name": "Add Margin to PDF",
      "value": "Add Margin To PDF",
      "action": "Add margin to PDF",
      "description": "Add margins to PDF documents"
    },
    {
      "name": "Add Page Number to PDF",
      "value": "Add Page Number To PDF",
      "action": "Add page number to PDF",
      "description": "Add page numbers to PDF documents"
    },
    {
      "name": "Add Image Stamp To PDF",
      "value": "Add Image Stamp To PDF",
      "action": "Add image stamp to PDF",
      "description": "Add image stamps or watermarks to PDF documents"
    },
    {
      "name": "Sign PDF",
      "value": "Sign PDF",
      "action": "Sign PDF",
      "description": "Digitally sign PDF documents"
    },
    {
      "name": "Add Text Stamp To PDF",
      "value": "Add Text Stamp To PDF",
      "action": "Add text stamp to PDF",
      "description": "Add text stamps or watermarks to PDF documents"
    },
    {
      "name": "Classify Document",
      "value": "Classify Document",
      "action": "Classify document",
      "description": "Classify documents using AI to determine document type and extract relevant information"
    },
    {
      "name": "Extract Attachment From PDF",
      "value": "Extract Attachment From PDF",
      "action": "Extract attachment from PDF",
      "description": "Extract file attachments from PDF documents"
    },
    {
      "name": "Extract Form Data From PDF",
      "value": "Extract Form Data From PDF",
      "action": "Extract form data from PDF",
      "description": "Extract form field data from PDF documents"
    },
    {
      "name": "Extract Resources",
      "value": "Extract Resources",
      "action": "Extract resources",
      "description": "Extract text and images from PDF documents"
    },
    {
      "name": "Extract Table From PDF",
      "value": "Extract Table From PDF",
      "action": "Extract table from PDF",
      "description": "Extract tables from PDF documents"
    },
    {
      "name": "Extract Text by Expression",
      "value": "Extract Text By Expression",
      "action": "Extract text by expression",
      "description": "Extract text from PDF using regular expressions"
    },
    {
      "name": "Extract Text from word",
      "value": "Extract Text From Word",
      "action": "Extract text from word",
      "description": "Extract text content from Word documents"
    },
    {
      "name": "Parse Document",
      "value": "Parse Document",
      "action": "Parse document",
      "description": "Parse documents to extract structured data using template-based parsing"
    },
    {
      "name": "Find and Replace Text",
      "value": "Find And Replace Text",
      "action": "Find and replace text",
      "description": "Find and replace text in PDF documents"
    },
    {
      "name": "Convert PDF to editable PDF using OCR",
      "value": "Convert PDF To Editable PDF Using OCR",
      "action": "Convert PDF to editable PDF using OCR",
      "description": "Convert PDF to editable PDF using OCR for scanned documents"
    },
    {
      "name": "Add Form Fields To PDF",
      "value": "Add Form Fields To PDF",
      "action": "Add form fields to PDF",
      "description": "Add interactive form fields to PDF documents"
    },
    {
      "name": "Fill a PDF Form",
      "value": "Fill PDF Form",
      "action": "Fill a PDF form",
      "description": "Fill PDF forms with data or generate multiple documents from templates"
    },
    {
      "name": "Enable Tracking changes in word",
      "value": "Enable Tracking Changes in Word",
      "action": "Enable tracking changes in word",
      "description": "Enable tracking changes in Word documents"
    },
    {
      "name": "Generate Document (Single)",
      "value": "Generate Document Single",
      "action": "Generate document (single)",
      "description": "Generate a single document from template with data"
    },
    {
      "name": "Generate Documents (Multiple)",
      "value": "Generate Documents Multiple",
      "action": "Generate documents (multiple)",
      "description": "Generate multiple documents from template with different data sets"
    },
    {
      "name": "Get Tracking Changes In Word",
      "value": "Get Tracking Changes in Word",
      "action": "Get tracking changes in word",
      "description": "Get tracking changes information from Word documents"
    },
    {
      "name": "Replace Text With Image In Word",
      "value": "Replace Text With Image In Word",
      "action": "Replace text with image in word",
      "description": "Replace specific text in Word documents with images"
    },
    {
      "name": "Add Image watermark To Image",
      "value": "Add Image Watermark To Image",
      "action": "Add image watermark to image",
      "description": "Add image watermark to image documents"
    },
    {
      "name": "Add Text watermark To Image",
      "value": "Add Text Watermark To Image",
      "action": "Add text watermark to image",
      "description": "Add text watermarks to images with positioning and styling options"
    },
    {
      "name": "Compress Image",
      "value": "Compress Image",
      "action": "Compress image",
      "description": "Compress image documents"
    },
    {
      "name": "Convert Image Format",
      "value": "Convert Image Format",
      "action": "Convert image format",
      "description": "Convert image format (BMP, GIF, JPG, PNG, TIFF)"
    },
    {
      "name": "Create Image from PDF",
      "value": "Create Images From PDF",
      "action": "Create image from PDF",
      "description": "Create images from PDF pages"
    },
    {
      "name": "Crop Image",
      "value": "Crop Image",
      "action": "Crop image",
      "description": "Crop images with border or rectangle cropping options"
    },
    {
      "name": "Flip Image",
      "value": "Flip Image",
      "action": "Flip image",
      "description": "Flip image documents horizontally, vertically, or both"
    },
    {
      "name": "Get Image Metadata",
      "value": "Get Image Metadata",
      "action": "Get image metadata",
      "description": "Extract metadata information from images including EXIF data and properties"
    },
    {
      "name": "Image Extract Text",
      "value": "Image Extract Text",
      "action": "Image extract text",
      "description": "Extract text content from images using OCR (Optical Character Recognition)"
    },
    {
      "name": "Replace Text with Image",
      "value": "Replace Text With Image",
      "action": "Replace text with image",
      "description": "Replace specific text in PDF documents with images"
    },
    {
      "name": "Resize Image",
      "value": "Resize Image",
      "action": "Resize image",
      "description": "Resize images by percentage or specific dimensions with aspect ratio control"
    },
    {
      "name": "Rotate Image By Exif Data",
      "value": "Rotate Image By Exif Data",
      "action": "Rotate image by exif data",
      "description": "Rotate image automatically based on EXIF orientation metadata"
    },
    {
      "name": "Rotate Image",
      "value": "Rotate Image",
      "action": "Rotate image",
      "description": "Rotate images with custom angle, background color, and proportionate resize options"
    },
    {
      "name": "Read Barcode From Image",
      "value": "Read Barcode From Image",
      "action": "Read barcode from image",
      "description": "Read barcodes from images using OCR"
    },
    {
      "name": "Remove EXIF Tags From Image",
      "value": "Remove Exif Tags From Image",
      "action": "Remove EXIF tags from image",
      "description": "Remove metadata/EXIF tags from images for privacy and file size reduction"
    },
    {
      "name": "Merge Multiple PDF files into Single PDF",
      "value": "Merge Multiple PDFs",
      "action": "Merge multiple PDF files into single PDF",
      "description": "Combine multiple PDF files into a single PDF document"
    },
    {
      "name": "Merge two PDF files one over another as Overlay",
      "value": "Overlay PDFs",
      "action": "Merge two PDF files one over another as overlay",
      "description": "Merge two PDF files one over another as overlay"
    },
    {
      "name": "Split PDF",
      "value": "Split PDF Regular",
      "action": "Split PDF",
      "description": "Split PDF documents by regular expression and output as ZIP"
    },
    {
      "name": "Split PDF by Barcode",
      "value": "Split PDF By Barcode",
      "action": "Split PDF by barcode",
      "description": "Split PDF documents by barcode and output as ZIP"
    },
    {
      "name": "Split PDF by Swiss QR",
      "value": "Split PDF By SwissQR",
      "action": "Split PDF by Swiss QR",
      "description": "Split PDF documents by Swiss QR code and output as ZIP"
    },
    {
      "name": "Split PDF by Text",
      "value": "Split PDF By Text",
      "action": "Split PDF by text",
      "description": "Split PDF documents by text and output as ZIP"
    },
    {
      "name": "Compress PDF",
      "value": "Compress PDF",
      "action": "Compress PDF",
      "description": "Compress and optimize PDF files"
    },
    {
      "name": "Delete Blank Pages from PDF",
      "value": "Delete Blank Pages From PDF",
      "action": "Delete blank pages from PDF",
      "description": "Remove blank pages from PDF documents based on specified criteria"
    },
    {
      "name": "Delete unwanted Pages from PDF",
      "value": "Delete Unwanted Pages From PDF",
      "action": "Delete unwanted pages from PDF",
      "description": "Remove specific pages from PDF documents by page numbers"
    },
    {
      "name": "Extract Pages",
      "value": "Extract Pages From PDF",
      "action": "Extract pages",
      "description": "Extract specific pages from PDF documents"
    },
    {
      "name": "Rotate Page",
      "value": "Rotate PDF Page",
      "action": "Rotate page",
      "description": "Rotate specific pages in PDF documents by 90, 180, or 270 degrees"
    },
    {
      "name": "Rotate Document",
      "value": "Rotate Document",
      "action": "Rotate document",
      "description": "Rotate entire PDF documents by 90, 180, or 270 degrees"
    },
    {
      "name": "Get Document from PDF4me",
      "value": "Get Document From Pdf4me",
      "action": "Get document from PDF4me",
      "description": "Retrieve a document from PDF4me storage"
    },
    {
      "name": "Update Hyperlinks Annotation",
      "value": "Update Hyperlinks Annotation",
      "action": "Update hyperlinks annotation",
      "description": "Update hyperlinks in PDF documents"
    },
    {
      "name": "Get PDF Information",
      "value": "Get PDF Metadata",
      "action": "Get PDF information",
      "description": "Extract metadata and information from PDF files"
    },
    {
      "name": "Get PDF Metadata",
      "value": "Get PDF Metadata",
      "action": "Get PDF metadata",
      "description": "Extract metadata from PDF files"
    },
    {
      "name": "Repair PDF Document",
      "value": "Repair PDF Document",
      "action": "Repair PDF document",
      "description": "Repair corrupted or damaged PDF files"
    },
    {
      "name": "Protect Document",
      "value": "Protect PDF",
      "action": "Protect document",
      "description": "Protect PDF documents with encryption, passwords, and permissions"
    },
    {
      "name": "Unlock PDF",
      "value": "Unlock PDF",
      "action": "Unlock PDF",
      "description": "Unlock PDF documents by removing encryption"
    },
    {
      "name": "Disable Tracking changes In Word",
      "value": "Disable Tracking Changes in Word",
      "action": "Disable tracking changes in word",
      "description": "Disable tracking changes in Word documents"
    }
  ]

npm_readme:
  # n8n-nodes-pdf4me

  This is an n8n community node that enables you to integrate PDF4ME's powerful PDF processing capabilities into your n8n workflows. PDF4ME is a comprehensive PDF processing API that allows you to convert, generate barcodes, process images, and manipulate documents programmatically.

  n8n is a fair-code licensed workflow automation platform.

  ## Table of Contents

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

  ## Installation

  ### Community Nodes (Recommended)

  For users on n8n v0.187+, you can install this node directly from the n8n Community Nodes panel in the n8n editor:

  1. Open your n8n editor
  2. Go to **Settings > Community Nodes**
  3. Search for "n8n-nodes-pdf4me"
  4. Click **Install**
  5. Reload the editor

  ### Global Installation (Recommended)

  For global installation that makes the node available across all n8n projects:

  ```bash
  # Install globally
  npm install -g n8n-nodes-pdf4me

  # Restart n8n to load the new node
  n8n start
  ```

  ### Manual Installation

  You can also install this node manually in a specific n8n project:

  1. Navigate to your n8n installation directory
  2. Run the following command:
     ```bash
     npm install n8n-nodes-pdf4me
     ```
  3. Restart your n8n server

  For Docker-based deployments, add the package to your package.json and rebuild the image:

  ```json
  {
    "name": "n8n-custom",
    "version": "0.9.0",
    "description": "",
    "main": "index.js",
    "scripts": {
      "start": "n8n"
    },
    "dependencies": {
      "n8n": "^1.0.0",
      "n8n-nodes-pdf4me": "^2.0.0"
    }
  }
  ```

  ## What's New in Version 2.0.0

  Version 2.0.0 continues to enhance the PDF4ME n8n node with improved functionality and reliability:

  - **🔧 Code Refactoring**: Improved variable declarations and code structure
  - **🖼️ Image Processing**: Enhanced MIME type handling for image operations
  - **📝 Markdown Conversion**: Optimized Markdown to PDF conversion process
  - **🔍 Resource Extraction**: Improved resource extraction functionality
  - **✅ Stability**: Enhanced overall stability and performance
  - **🔄 Backward Compatible**: All existing workflows continue to work seamlessly

  ## Operations

  This node provides comprehensive document processing capabilities through PDF4ME's API. Here are the available features:

  ### 1. AI-Powered Document Processing
  - **AI-Invoice Parser**: Extract structured data from invoices using AI/ML technology for automated data entry
  - **AI-Process HealthCard**: Extract structured data from health cards using AI/ML technology for member management
  - **AI-Process Contract**: Extract structured data from contracts using AI/ML technology for legal document analysis
  - **Classify Document**: Classify documents using AI to determine document type and extract relevant information
  - **Parse Document**: Parse documents to extract structured data using template-based parsing

  ### 2. PDF Processing & Manipulation
  - **Add Attachment to PDF**: Attach files to PDF documents
  - **Add Barcode to PDF**: Add barcodes to PDF documents for identification and tracking
  - **Add Form Fields to PDF**: Add interactive form fields to PDF documents
  - **Add HTML Header Footer**: Add custom HTML headers and footers to PDFs
  - **Add Image Stamp to PDF**: Add image stamps with positioning and opacity controls
  - **Add Margin to PDF**: Add margins to PDF documents
  - **Add Page Number to PDF**: Add page numbers to PDF documents
  - **Add Text Stamp to PDF**: Add text stamps with customizable formatting
  - **Compress PDF**: Optimize PDF files for web, print, or screen viewing
  - **Convert PDF to Editable OCR**: Convert PDFs to editable text using OCR
  - **Convert PDF to Excel**: Convert PDF tables to Excel spreadsheets
  - **Convert PDF to PowerPoint**: Convert PDF content to PowerPoint presentations
  - **Convert PDF to Word**: Convert PDFs to editable Word documents
  - **Create Images from PDF**: Extract images from PDF documents
  - **Delete Blank Pages from PDF**: Remove blank pages from PDF documents
  - **Delete Unwanted Pages from PDF**: Remove specific pages from PDF documents
  - **Extract Pages**: Extract specific pages from PDF documents
  - **Extract Pages from PDF**: Extract pages with advanced options
  - **Fill PDF Form**: Fill interactive PDF forms with data
  - **Find and Replace Text**: Find and replace text in PDF documents
  - **Flatten PDF**: Convert interactive PDF elements into static, non-editable content
  - **Linearize PDF**: Optimize PDFs for web viewing with faster loading and progressive display
  - **Merge Multiple PDFs**: Combine multiple PDF files into one
  - **Overlay PDFs**: Overlay one PDF on top of another
  - **Protect Document**: Add password protection and encryption to PDFs
  - **Repair PDF Document**: Fix corrupted or damaged PDF files
  - **Rotate Document**: Rotate entire PDF documents
  - **Rotate Page**: Rotate specific pages within a PDF
  - **Sign PDF**: Add digital signatures to PDF documents
  - **Split PDF by Barcode**: Split PDFs based on barcode detection
  - **Split PDF by Swiss QR**: Split PDFs based on Swiss QR code detection
  - **Split PDF by Text**: Split PDFs based on text content
  - **Split PDF Regular**: Split PDFs into equal parts or by page ranges
  - **Unlock PDF**: Remove password protection from PDFs
  - **Update Hyperlinks Annotation**: Modify hyperlinks and annotations in PDFs

  ### 3. Image Processing
  - **Add Image Watermark to Image**: Add watermarks to images
  - **Add Text Watermark to Image**: Add text watermarks to images
  - **Compress Image**: Reduce image file sizes while maintaining quality
  - **Convert Image Format**: Convert images between different formats (JPEG, PNG, etc.)
  - **Crop Image**: Crop images with border or rectangle options
  - **Flip Image**: Flip images horizontally, vertically, or both
  - **Get Image Metadata**: Extract metadata from image files
  - **Image Extract Text**: Extract text from images using OCR
  - **Read Barcode from Image**: Read barcodes from images
  - **Remove EXIF Tags from Image**: Remove metadata from images
  - **Replace Text with Image**: Replace text in documents with images
  - **Replace Text with Image in Word**: Replace text in Word documents with images
  - **Resize Image**: Resize images to specific dimensions
  - **Rotate Image**: Rotate images by specific angles
  - **Rotate Image by EXIF Data**: Auto-rotate images based on EXIF orientation

  ### 4. Document Conversion
  - **Convert to PDF**: Convert various document formats to PDF
  - **Convert HTML to PDF**: Convert HTML content to PDF with multiple input options (Binary Data, Base64, HTML Code, URL)
  - **Convert Image Format**: Convert images between different formats
  - **Convert Markdown to PDF**: Convert Markdown files to PDF
  - **Convert Visio**: Convert Visio diagrams to PDF
  - **Convert Word to PDF Form**: Convert Word documents to PDF forms
  - **JSON to Excel**: Convert JSON data to Excel spreadsheets
  - **URL to PDF**: Convert web pages to PDF

  ### 5. Barcode Operations
  - **Barcode Generator**: Generate various types of barcodes (QR, Code 128, EAN, UPC, etc.)
  - **Add Barcode to PDF**: Add barcodes directly to PDF documents for identification and tracking
  - **Read Barcode from Image**: Extract barcode data from images
  - **Read Barcode from PDF**: Extract barcode data from PDF documents
  - **Read Swiss QR Code**: Read Swiss QR codes from documents

  ### 6. Document Analysis & Extraction
  - **Extract Attachment from PDF**: Extract attached files from PDFs
  - **Extract Form Data from PDF**: Extract form field data from PDFs
  - **Extract Pages from PDF**: Extract specific pages from PDFs
  - **Extract Resources**: Extract resources from documents
  - **Extract Table from PDF**: Extract tables from PDF documents
  - **Extract Text by Expression**: Extract text using custom expressions
  - **Extract Text from Word**: Extract text from Word documents
  - **Get Document from PDF4ME**: Retrieve documents from PDF4ME storage
  - **Get PDF Metadata**: Extract metadata from PDF files

  ### 7. Document Management & Generation
  - **Create PDF/A**: Create PDF/A compliant documents
  - **Create Swiss QR Bill**: Create Swiss QR Bills using all compliance standards for digital payment transactions
  - **Disable Tracking Changes in Word**: Remove tracking changes from Word documents
  - **Enable Tracking Changes in Word**: Enable tracking changes in Word documents
  - **Generate Document Single**: Generate single documents from templates
  - **Generate Documents Multiple**: Generate multiple documents from templates
  - **Get Tracking Changes in Word**: Get tracking changes status from Word documents
  - **Upload File to PDF4ME**: Upload files to PDF4ME for further processing
  - **Zugferd Invoice**: Create compliant Zugferd invoices for standardized electronic invoicing

  ### 8. Advanced Features
  - **Create Images from PDF**: Extract and process images from PDF documents
  - **Document Processing**: Advanced document manipulation and processing

  ## Credentials

  To use this node, you need a PDF4ME API key. Here's how to get started:

  1. Sign up for a PDF4ME account at [PDF4ME Developer Portal](https://dev.pdf4me.com/)
  2. Navigate to your dashboard and obtain your API key
  3. In n8n, add your PDF4ME credentials by providing your API key

  ## Usage

  This node allows you to automate document processing tasks in your n8n workflows. With version 2.0.0, the interface has been optimized for better performance and stability. Here are some common use cases:

  ### AI-Powered Document Processing
  - Automatically extract invoice data for accounting systems
  - Process health cards for member management systems
  - Analyze contracts for legal document review
  - Classify documents for automated routing and processing
  - Parse structured data from various document types using templates

  ### Document Processing
  - Convert PDF documents to editable Word format with OCR support
  - Process complex PDFs with enhanced timeout handling (up to 25 minutes)
  - Extract text from PDF documents for data processing
  - Convert various document formats to PDF
  - Extract specific pages from PDF documents for creating shorter versions or digital booklets
  - Add watermarks, stamps, and annotations to documents
  - Compress and optimize PDF files for different use cases
  - Fill interactive PDF forms with data from your workflows
  - Split PDFs based on content, barcodes, or page ranges

  ### Barcode Operations
  - Generate QR codes for product tracking
  - Create product barcodes (EAN-13, UPC-A) for inventory management
  - Generate barcodes for document identification
  - Embed barcodes in documents and reports
  - Read barcodes from images and PDFs for automated processing
  - Process Swiss QR codes for payment transactions

  ### Web Content Processing
  - Convert web pages to PDF for archiving
  - Automatically convert HTML reports to PDF
  - **Write HTML code directly and convert to PDF** - No need to save HTML files first
  - Capture web-based dashboards and reports
  - Convert protected web content with authentication

  ### HTML to PDF Conversion Options
  The Convert HTML to PDF operation supports multiple input methods for maximum flexibility:
  - **Binary Data**: Use HTML files from previous workflow nodes
  - **Base64 String**: Provide HTML content as base64 encoded strings
  - **HTML Code**: Write HTML code directly in the interface (automatically converted to base64)
  - **URL**: Convert HTML content from web URLs

  **Example Use Cases for HTML Code Input:**
  - **Dynamic Reports**: Generate PDFs from HTML templates with real-time data
  - **Email Templates**: Convert HTML email content to PDF for archiving
  - **Custom Dashboards**: Create PDF versions of HTML dashboards
  - **Document Generation**: Build PDFs from HTML snippets without file management
  - **Rapid Prototyping**: Quickly test HTML layouts by converting to PDF

  ### Data Export and Reporting
  - Convert JSON data to Excel spreadsheets
  - Transform API responses to formatted reports
  - Export analytics data to Excel for stakeholder reports
  - Create automated data processing pipelines
  - Generate documents from templates with dynamic data

  ### Image Processing
  - Crop images for specific dimensions
  - Remove borders from scanned documents
  - Process product images for e-commerce
  - Create thumbnails and optimized images
  - Add watermarks to images for branding
  - Extract text from images using OCR
  - Convert images between different formats

  ### Swiss QR Bill Generation
  - Create compliant Swiss QR Bills for digital payment transactions
  - Generate QR codes with all required payment information
  - Support for multiple languages (English, German, French, Italian)
  - Include creditor and debtor information with structured addresses
  - Add billing information and unstructured messages
  - Generate bills with different separator line styles
  - Support for various reference types (QR Reference, Creditor Reference, No Reference)

  ### Zugferd Invoice Generation
  - Create compliant Zugferd invoices for standardized electronic invoicing
  - Generate invoices following the Zugferd standard (ZUGFeRD/Factur-X)
  - Support for structured invoice data exchange
  - Compatible with European e-invoicing requirements
  - Generate PDF/A compliant invoices with embedded XML data

  ### Document Generation & Management
  - Generate documents from templates with dynamic data
  - Create PDF/A compliant documents for long-term archiving
  - Manage Word document tracking changes
  - Process multiple documents in batch operations
  - Extract and manage document metadata

  ### Automated Workflows
  - Chain multiple PDF4ME operations together with simplified configuration
  - Integrate with email nodes for automated document distribution
  - Connect with storage services for file management
  - Build complete document processing pipelines with enhanced reliability
  - Automate document classification and routing
  - Create end-to-end document workflows with improved error handling
  - **Version 2.0.0**: Enhanced stability and performance for reliable workflow execution

  For detailed examples and workflow templates, visit our documentation.

  ## Resources

  - [PDF4me n8n Integration Documentation](https://docs.pdf4me.com/n8n/getting-started/)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [PDF4ME API Documentation](https://dev.pdf4me.com/apiv2/documentation/)
  - [PDF4ME Developer Portal](https://dev.pdf4me.com/)
  - [PDF4ME Support](mailto:support@pdf4me.com)
  - [Troubleshooting Guide](TROUBLESHOOTING.md)
  - [Publishing Guide](PUBLISHING_GUIDE.md)

  ## Version History

  ### 2.0.0
  - **Latest Version**: Major version update with enhanced features and improvements
  - **Version Upgrade**: Major version bump to 2.0.0
  - **Enhanced Functionality**: Continued improvements to document processing capabilities
  - **Stability**: Enhanced overall stability and performance
  - **Maintained Compatibility**: All existing workflows continue to work seamlessly

  ### 1.6.0
  - **Previous Version**: Stability improvements and code optimizations
  - **Code Refactoring**: Improved variable declarations and code structure across actions
  - **Image Processing**: Enhanced MIME type handling for image operations in extractResources
  - **Markdown Conversion**: Optimized convertMarkdownToPdf functionality
  - **Resource Extraction**: Improved resource extraction with better error handling
  - **Performance**: Enhanced overall stability and processing speed
  - **Maintained Compatibility**: All existing workflows continue to work seamlessly

  ### 1.5.1
  - **Previous Version**: Stability improvements and code optimizations
  - **Code Refactoring**: Improved variable declarations and code structure across actions
  - **Image Processing**: Enhanced MIME type handling for image operations in extractResources
  - **Markdown Conversion**: Optimized convertMarkdownToPdf functionality
  - **Resource Extraction**: Improved resource extraction with better error handling
  - **Performance**: Enhanced overall stability and processing speed
  - **Maintained Compatibility**: All existing workflows continue to work seamlessly

  ### 1.5.0
  - **Previous Version**: Major refactoring and enhanced user experience
  - **Simplified Output Handling**: Removed complex binaryDataName parameters across all actions
  - **Enhanced Response Processing**: Improved response handling to return raw data and metadata consistently
  - **Streamlined Interface**: Simplified action configurations for better usability
  - **Improved Descriptions**: Enhanced action descriptions for clarity and consistency
  - **Better Error Handling**: Refined error handling and response processing
  - **Code Optimization**: Significant code cleanup and optimization across all actions
  - **Maintained Compatibility**: All existing workflows continue to work seamlessly
  - **Enhanced Performance**: Improved processing speed and reliability

  ### 1.3.5
  - **Previous Version**: Enhanced HTML to PDF conversion with direct HTML code input
  - Added **HTML Code** input option for Convert HTML to PDF operation
  - Users can now write HTML code directly in the interface without saving files first
  - HTML code is automatically converted to base64 for API processing
  - Enhanced input flexibility with 4 input methods: Binary Data, Base64, HTML Code, and URL
  - Improved user experience for developers and content creators
  - Maintains backward compatibility with existing workflows

  ### 1.3.0
  - **Previous Version**: AI-powered document processing and enhanced features
  - Added AI-Invoice Parser for automated invoice data extraction
  - Added AI-Process HealthCard for health card data processing
  - Added AI-Process Contract for contract analysis
  - Added Classify Document for AI-powered document classification
  - Added Parse Document for template-based document parsing
  - Added Linearize PDF for web-optimized PDFs
  - Added Flatten PDF for converting interactive elements to static content
  - Enhanced error handling and response processing
  - Improved support for JSON responses in AI processing operations
  - Updated Node.js engine requirement to >=20.15
  - Enhanced build and validation scripts

  ### 1.1.1
  - **Previous Version**: Maintenance and dependency updates
  - Updated dependencies for improved compatibility and security
  - Minor bug fixes and codebase improvements
  - Improved build and validation scripts for publishing
  - **Note:** This version failed the n8n community package security scan due to an ESLint violation: use of restricted global 'setTimeout' is not allowed (see scan results for details).

  ### 1.1.0
  - **Previous Version**: Security and compliance updates
  - Updated to address n8n community package security scan results
  - Added guidance for ESLint compliance and restricted imports
  - Updated dependencies in package.json
  - Improved documentation and publishing guides
  - Minor bug fixes and codebase cleanup

  ### 1.0.0
  - Production-ready release with comprehensive document processing capabilities
  - 60+ document processing operations covering all major use cases
  - Full integration with PDF4ME API services
  - Complete PDF processing suite including conversion, manipulation, and analysis
  - Advanced image processing capabilities with watermarking, cropping, and format conversion
  - Comprehensive barcode generation and reading functionality
  - Document conversion between multiple formats (PDF, Word, Excel, PowerPoint, HTML, etc.)
  - Enhanced timeout handling for complex operations (up to 25 minutes)
  - Improved async processing with exponential backoff and better error handling
  - Support for multiple input types (Binary Data, Base64, URL, File Path)
  - Advanced OCR capabilities with multi-language support
  - Document protection, signing, and security features
  - Metadata extraction and document analysis tools
  - Swiss QR Bill generation with full compliance standards
  - Document template generation and batch processing
  - All critical lint errors resolved for production readiness
  - Optimized package structure and build validation
  - Enhanced error handling and debugging capabilities

  ### 0.9.0
  - Comprehensive document processing capabilities with 50+ actions
  - Full integration with PDF4ME API services
  - Complete PDF processing suite including conversion, manipulation, and analysis
  - Advanced image processing capabilities with watermarking, cropping, and format conversion
  - Comprehensive barcode generation and reading functionality
  - Document conversion between multiple formats (PDF, Word, Excel, HTML, etc.)
  - Enhanced timeout handling for complex operations (up to 25 minutes)
  - Improved async processing with exponential backoff and better error handling
  - Support for multiple input types (Binary Data, Base64, URL, File Path)
  - Advanced OCR capabilities with multi-language support
  - Document protection, signing, and security features
  - Metadata extraction and document analysis tools
  - All critical lint errors resolved for production readiness
  - Optimized package structure and build validation

  ### 0.8.0
  - Comprehensive document processing capabilities
  - Full integration with PDF4ME API services
  - Support for barcode generation, URL to PDF conversion, PDF to Word conversion, JSON to Excel conversion, image cropping, and PDF page extraction
  - Enhanced timeout handling for complex PDF to Word conversions (up to 25 minutes)
  - Improved async processing with exponential backoff and better error handling
  - Support for multiple input types (Binary Data, Base64, URL, File Path)
  - Advanced OCR capabilities with multi-language support
  - Comprehensive barcode generation with 100+ supported formats
  - PDF page extraction for creating shorter versions and digital booklets
  - Standardized API documentation URLs across all files
  - Global installation support for cross-project availability

  ### 0.1.9
  - Fixed package structure and build validation
  - Improved error handling and debugging capabilities

  ### 0.1.3
  - Added global installation support
  - Enhanced package configuration for npm publishing

  ### 0.1.2
  - Initial release with core functionality

ai_documentation_summary:
  {"purpose":"The PDF4me node enables comprehensive PDF and document processing within n8n workflows by leveraging the PDF4ME API, supporting operations like AI-powered data extraction, barcode generation, PDF conversion, manipulation, and automation.","capabilities":["AI-Invoice Parser","AI-Process HealthCard","AI-Process Contract","Classify Document","Parse Document","Add Barcode to PDF","Add Form Fields to PDF","Add HTML Header Footer","Add Image Stamp to PDF","Add Margin to PDF"],"authentication":"API key required (credentials must be configured in the node settings)","commonUseCases":["Automated invoice data extraction using AI","Converting PDFs to editable formats like Word or Excel","Adding barcodes or digital signatures to PDFs","Splitting documents based on content or barcodes","Processing health cards or contracts with structured data extraction"],"limitations":[],"relatedNodes":["PDF Processing","Document Automation","AI Data Extraction","OCR Conversion"]}


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-01-07 20:08:16
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-01-07T20:08:16.121Z
ai_summary_generated_at: 2026-01-08 10:45:32
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":"The Permit node enables n8n workflows to interact with Permit.io's authorization service, allowing verification of user permissions, retrieval of user-specific permissions, and identification of authorized users for actions on resources using RBAC, ABAC, or ReBAC policies.","capabilities":["Check if a user has permission to perform an 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","Supports ABAC, RBAC, and ReBAC policies with automatic attribute extraction","Provides detailed debug information on permission decisions"],"authentication":"API key required; the API key must be obtained from the Permit.io dashboard under Settings → API Keys. The PDP URL is typically set to https://cloudpdp.api.permit.io, or a public URL (e.g., via ngrok) if using a self-hosted PDP.","commonUseCases":["Expense approval workflows where users are authorized based on spending limits and categories","Dynamic access control in internal applications based on user attributes","Automated delegation of actions to authorized approvers","Policy-based access checks in multi-tenant environments"],"limitations":[],"relatedNodes":["Webhook","IF","Email","Function"]}


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

updated_at: 2026-01-07 20:08:16
author_name: patrickpenn
author_github_url: https://github.com/docunite/neo-n8n-node.git
npm_package_name: n8n-nodes-neo
npm_version: 0.1.9
community_fetched_at: 2026-01-07T20:08:16.122Z
ai_summary_generated_at: 2026-01-08 10:45:32
description:
  Manage documents and use AI features with the docunite® NEO API. Supports upload, OCR extraction, classification, enrichment, chat and more. Perfect for automated document processing and intelligent data extraction.

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

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

npm_readme:
  # n8n-nodes-neo

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

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

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

  ## 🚀 Installation

  ### For n8n Cloud Users

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

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

  ### For Self-hosted n8n Instances

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

  #### Option 1: Using Community Nodes Feature

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

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

  #### Option 2: Manual Installation

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

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

  Restart n8n for the changes to take effect.

  ## 🔑 Credentials

  To use the docunite® NEO node, you need:

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

  ### Setting up Credentials

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

  ## 📚 Nodes

  This package provides two nodes:

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

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

  ## 📚 Operations

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

  ### 📊 Account Management

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

  ### 📄 Document Management

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

  ### 🏢 Entity Management

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

  ### 🔔 Webhook Management

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

  ## 💻 Usage Examples

  ### Example 1: Upload and Classify a Document

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

  ### Example 2: Chat with a Document

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

  ### Example 3: Classify Multiple Documents

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

  ### Example 4: Manage Entities

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

  ### Example 5: Extract OCR from Documents

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

  ## 🔔 docunite® NEO Trigger Node

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

  ### Features

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

  ### Configuration

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

  ### Test Mode

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

  ### Production Mode

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

  ## 📖 API Documentation

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

  ## 🛠️ Compatibility

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

  ## 📝 License

  [MIT](LICENSE.md)

  ## 🤝 Support

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

  ## 🔗 Resources

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

  ## 🌟 Features

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

  ## 📦 Version History

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

  ## 👨‍💻 Development

  If you want to contribute to development:

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

  # Install dependencies
  npm install

  # Build
  npm run build

  # Link to local n8n instance
  npm link
  ```

  Start n8n in development mode:

  ```bash
  n8n start
  ```

  ## ⚠️ Important Notes

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

  ---

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

ai_documentation_summary:
  {"purpose":"The docunite® NEO node enables automated document management and AI-powered processing within n8n workflows, supporting operations like document upload, OCR extraction, classification, enrichment, and AI chat using the docunite® NEO API.","capabilities":["Upload documents with automatic classification and intelligent splitting","Extract OCR content and convert to markdown or PDF","Classify documents with custom prompts and batch processing","Enrich documents and split them into multiple parts","Chat with documents using AI with custom prompts and chat history","Retrieve and manage document metadata and blobs","Manage entities and webhooks","Monitor account balance and usage statistics"],"authentication":"API key required; base URL defaults to https://api.docunite.ai","commonUseCases":["Automated intake and classification of invoices and contracts","Intelligent data extraction from scanned PDFs and images","AI-powered Q&A with legal or financial documents","Batch processing of documents for compliance or reporting","Document routing based on AI classification"],"limitations":[],"relatedNodes":["n8n trigger nodes","document processing nodes","AI/ML integration nodes"]}


node_type: n8n-nodes-fullenrich.fullEnrich
package_name: n8n-nodes-fullenrich
display_name: FullEnrich
description: Start a FullEnrich bulk enrichment request
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: fullenrich
author_github_url: https://github.com/fullenrich/
npm_package_name: n8n-nodes-fullenrich
npm_version: 0.1.3
community_fetched_at: 2026-01-07T20:08:16.122Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "enrichment",
      "options": [
        {
          "name": "Enrichment",
          "value": "enrichment"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "startEnrichment",
      "options": [
        {
          "name": "Start Enrichment",
          "value": "startEnrichment",
          "action": "Start enrichment",
          "description": "Start an enrichment task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "enrichment"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Start Enrichment",
      "value": "startEnrichment",
      "action": "Start enrichment",
      "description": "Start an enrichment task"
    }
  ]

npm_readme:
  # n8n-nodes-fullenrich

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

  **FullEnrich** is a contact enrichment service that takes minimal input (such as first name, last name, company domain, or LinkedIn URL) and returns enriched contact data like emails, phone numbers, and company information.  
  This node enables you to **start asynchronous enrichment requests** and **receive enriched results via webhook**, all within n8n.


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

  Example:

  ```bash
  npm install n8n-nodes-fullenrich
  ```

  Then restart your n8n instance.

  ---

  ## Operations

  This package provides two nodes:

  ### FullEnrich Node: Start Enrichment
  - Accepts one or multiple contacts from previous nodes (e.g., Sheets, forms, or manual input).
  - Supports additional custom fields per contact (e.g. `row_id`, `user_id`).
  - Sends each contact to FullEnrich's API enrichment endpoint.

  ### FullEnrich Node: Get Enrichment Result (Webhook Trigger)
  - Acts as a webhook endpoint.
  - Listens for enrichment results returned via `webhook_url` from FullEnrich.
  - Outputs enriched contact data in a format usable by other nodes like Google Sheets, Airtable, or CRMs.

  ---

  ## Credentials

  The node requires API authentication:

  - Go to **n8n > Credentials**.
  - Create a new **HTTP Basic Auth** credential or custom one labeled `fullEnrichApi`.
  - Provide your API key as required by your FullEnrich backend.

  _You must assign this credential in the "Start Enrichment" node configuration._

  ---

  ## Compatibility

  - Minimum **n8n version**: `1.22.0`
  - Tested on: `1.22.0`, `1.25.1`, `1.28.0`
  - Node requires a FullEnrich-compatible API (self-hosted or cloud-based).

  ---

  ## Usage

  - The **Start Enrichment** node supports contacts from:
  - Previous nodes (e.g., Google Sheets, Airtable, Manual trigger).
  - Manual input from UI form (via structured fields).
  - You can also pass a **custom field name** (e.g. `user_id`) to track each contact in your workflow — this value will be passed under the `custom` object.
  - The **Get Result** node acts as a webhook and must be connected to the URL you provide to FullEnrich (auto-generated in most cases).

  **Example Use Case:**
  1. Load leads from a Google Sheet.
  2. Send to **Start Enrichment**.
  3. Receive enriched data via **FullEnrich Trigger**.
  4. Update the same Google Sheet.

  ---

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [FullEnrich API documentation](https://docs.fullenrich.com/introduction)

  ---

  ## Version history

  ### 0.1.0
  - Initial release.

ai_documentation_summary:
  {"purpose":"The FullEnrich node enables asynchronous contact enrichment by sending minimal contact data (like name, domain, or LinkedIn URL) to FullEnrich's API and receiving enriched results (such as emails, phone numbers, and company info) via a webhook trigger.","capabilities":["Start bulk enrichment requests from multiple sources (e.g., Google Sheets, Airtable, manual input)","Support custom fields (e.g., row_id, user_id) to track contacts in workflows","Receive enriched contact data via webhook trigger for downstream processing","Pass enriched data to other nodes like Google Sheets, Airtable, or CRMs"],"authentication":"API key required via HTTP Basic Auth credential labeled 'fullEnrichApi'","commonUseCases":["Enriching lead data from spreadsheets or forms with emails, phone numbers, and company details","Automatically updating CRM or database records with enriched contact information","Integrating with self-hosted or cloud-based FullEnrich APIs"],"limitations":[],"relatedNodes":["Google Sheets","Airtable","Manual Trigger","Webhook Trigger"]}


node_type: n8n-nodes-sourcegeek.sourcegeek
package_name: n8n-nodes-sourcegeek
display_name: SourceGeek for LinkedIn
description: Automate LinkedIn tasks and AI workflows with SourceGeek.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: daraseliya
author_github_url: https://github.com/sourcegeekinc/
npm_package_name: n8n-nodes-sourcegeek
npm_version: 0.2.1
community_fetched_at: 2026-01-07T20:08:16.123Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "linkedin",
      "options": [
        {
          "name": "",
          "value": "linkedin"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getProfileData",
      "options": [
        {
          "name": "Get Data From A Linkedin Profile",
          "value": "getProfileData",
          "action": "Get data from a linkedin profile"
        },
        {
          "name": "Import Contacts - Basic Search",
          "value": "importContactsBasicSearch",
          "action": "Import contacts from basic search"
        },
        {
          "name": "Import Contacts - Recruiter Search",
          "value": "importContactsRecruiterSearch",
          "action": "Import contacts from recruiter search"
        },
        {
          "name": "Import Contacts - Sales Navigator Search",
          "value": "importContactsSalesNavSearch",
          "action": "Import contacts from sales navigator search"
        },
        {
          "name": "Send Connection Request",
          "value": "sendConnectionRequest",
          "action": "Send connection request"
        },
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send message"
        },
        {
          "name": "Send Recruiter InMail Message",
          "value": "sendRecruiterInMailMessage",
          "action": "Send recruiter inmail message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "linkedin"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Data From A Linkedin Profile",
      "value": "getProfileData",
      "action": "Get data from a linkedin profile"
    },
    {
      "name": "Import Contacts - Basic Search",
      "value": "importContactsBasicSearch",
      "action": "Import contacts from basic search"
    },
    {
      "name": "Import Contacts - Recruiter Search",
      "value": "importContactsRecruiterSearch",
      "action": "Import contacts from recruiter search"
    },
    {
      "name": "Import Contacts - Sales Navigator Search",
      "value": "importContactsSalesNavSearch",
      "action": "Import contacts from sales navigator search"
    },
    {
      "name": "Send Connection Request",
      "value": "sendConnectionRequest",
      "action": "Send connection request"
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send message"
    },
    {
      "name": "Send Recruiter InMail Message",
      "value": "sendRecruiterInMailMessage",
      "action": "Send recruiter inmail message"
    }
  ]

npm_readme:
  ![Banner image](https://pub-9f6d72605bf54a19ab5a9a098f99e37c.r2.dev/sourcegeek-hero-github.png)

  # SourceGeek n8n node for LinkedIn

  This is an n8n community node. It lets you use SourceGeek and LinkedIn in your n8n workflows.

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

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

  ## Installation

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

  ## Operations

  * Get Data From A Linkedin Profile
  * Import Contacts - Basic Search
  * Import Contacts - Recruiter Search
  * Import Contacts - Sales Navigator Search
  * Send Connection Request
  * Send Message
  * Send Recruiter InMail Message

  ## Credentials

  To be able to use this SourceGeek n8n integration, you need to follow these steps:
  1. Sign up for a free SourceGeek account at [app.sourcegeek.com/login](https://app.sourcegeek.com/signup)
  2. Create n8n integration in SourceGeek Integrations settings [page](https://app.sourcegeek.com/settings/integrations) by pressing the "Add Integration" button and selecting "n8n"
  3. Click on "Copy API Key" button and paste it in the API Key field in the n8n credentials

  For more information, please refer to the [SourceGeek documentation](https://support.sourcegeek.com/en/articles/12441230-n8n-integration).

  ## Compatibility

  * Tested against: 1.112.6
  * Minimum n8n version: works with all recent n8n versions

  ## Usage

  For more information, please refer to the [SourceGeek documentation](https://support.sourcegeek.com/en/articles/12441230-n8n-integration).

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [SourceGeek documentation](https://support.sourcegeek.com/en/articles/12441230-n8n-integration)

ai_documentation_summary:
  {"purpose":"The SourceGeek for LinkedIn n8n node enables automation of LinkedIn tasks such as retrieving profile data, searching contacts, sending connection requests, and messaging, using SourceGeek's API within n8n workflows.","capabilities":["Get Data From a LinkedIn Profile","Import Contacts - Basic Search","Import Contacts - Recruiter Search","Import Contacts - Sales Navigator Search","Send Connection Request","Send Message","Send Recruiter InMail Message"],"authentication":"API key required. Users must sign up for a SourceGeek account, create an n8n integration in the SourceGeek settings, and copy the API key to use in n8n.","commonUseCases":["Automatically gather LinkedIn profile data for lead enrichment","Search and import contacts using different LinkedIn search filters","Initiate connection requests to expand a sales or recruitment network","Send personalized messages or InMail messages to prospects"],"limitations":[],"relatedNodes":["n8n-nodes-base","n8n-nodes-webhook","n8n-nodes-database"]}


node_type: n8n-nodes-medullar.medullar
package_name: n8n-nodes-medullar
display_name: Medullar
description: AI-powered discovery & insight platform that acts as your extended digital mind.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: medullar_solutions
author_github_url: https://github.com/medullar/n8n-node.git
npm_package_name: n8n-nodes-medullar
npm_version: 0.2.3
community_fetched_at: 2026-01-07T20:08:16.123Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "space",
      "options": [
        {
          "name": "Space",
          "value": "space"
        }
      ],
      "required": true,
      "description": "Interact with a Medullar Space",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list-space",
      "options": [
        {
          "name": "Add Space Record",
          "value": "add-record",
          "action": "Add record to space",
          "description": "Adds a Record into a Space"
        },
        {
          "name": "Ask Space",
          "value": "ask-space",
          "action": "Ask a question to a space",
          "description": "Ask anything to a Space"
        },
        {
          "name": "Create Space",
          "value": "create-new-space",
          "action": "Create new space",
          "description": "Create a new Space"
        },
        {
          "name": "Delete Space",
          "value": "delete-space",
          "action": "Delete a space",
          "description": "Delete a Space"
        },
        {
          "name": "List Spaces",
          "value": "list-space",
          "action": "List all spaces",
          "description": "List all user Spaces"
        },
        {
          "name": "Rename Space",
          "value": "rename-space",
          "action": "Rename a space",
          "description": "Rename a Space"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "space"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Space Record",
      "value": "add-record",
      "action": "Add record to space",
      "description": "Adds a Record into a Space"
    },
    {
      "name": "Ask Space",
      "value": "ask-space",
      "action": "Ask a question to a space",
      "description": "Ask anything to a Space"
    },
    {
      "name": "Create Space",
      "value": "create-new-space",
      "action": "Create new space",
      "description": "Create a new Space"
    },
    {
      "name": "Delete Space",
      "value": "delete-space",
      "action": "Delete a space",
      "description": "Delete a Space"
    },
    {
      "name": "List Spaces",
      "value": "list-space",
      "action": "List all spaces",
      "description": "List all user Spaces"
    },
    {
      "name": "Rename Space",
      "value": "rename-space",
      "action": "Rename a space",
      "description": "Rename a Space"
    }
  ]

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

  # n8n-nodes-medullar

  ![Icon image](https://cdn.medullar.com/images/web/logo/medullar_favicon_128x128.png)

  This is an [n8n](https://n8n.io) community node that lets you integrate seamlessly with Medullar’s collaborative knowledge platform in your n8n workflows [Medullar](https://medullar.com).

  **Medullar** is an AI-powered workspace for actionable team intelligence—capturing insights, connecting conversations, and automating knowledge sharing across your daily tools. With this node, you can connect to your Medullar Spaces, fetch key insights, trigger knowledge actions, and weave Medullar’s contextual smarts directly into your workflow automation.

  Use this node to unify scattered information, automate knowledge handoffs, and bridge project data—so your workflows become not just automated, but genuinely intelligent.

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

  ## Features
  - **List Spaces**: Retrieve all your Medullar Spaces to keep track of your collaborative environments.
  - **Create Space**: Easily create new Spaces to organize your projects and knowledge.
  - **Add Space Record**: Add various types of content to your Spaces including text, URLs, images, and files to build your knowledge base.
  - **Ask Space**: Interact with your Medullar Spaces using multiple AI modes:
    - MedullaryAI Agent (OpenAI and xAI Grok variants)
    - MedullaryAI Fact Check for verification
    - MedullaryAI Researcher for in-depth analysis
    - MedullaryAI Sales Researcher for sales intelligence
    - MedullaryAI Search Agent for targeted searches
    - Optional Deep Analysis for more accurate but slower responses
  - **Rename Space**: Update the name of existing Spaces to better reflect their purpose.
  - **Delete Space**: Remove Spaces that are no longer needed to keep your workspace organized.

  ## Credentials

  To use this node, you need to set up credentials for Medullar. You can find your API key in your Medullar account settings.

  ## Compatibility

  - Requires n8n version 1.0.0 or later
  - Requires Medullar paid plan

  ## Resources
  - [n8n Documentation](https://docs.n8n.io)
  - [Medullar](https://www.medullar.com)

  ## License

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

ai_documentation_summary:
  {"purpose":"The Medullar node enables integration with Medullar's AI-powered knowledge platform, allowing users to manage Spaces, add content, and interact with AI agents to retrieve insights, verify facts, and perform research directly within n8n workflows.","capabilities":["List Spaces","Create Space","Add Space Record (text, URLs, images, files)","Ask Space using multiple AI modes including MedullaryAI Agent, Fact Check, Researcher, Sales Researcher, Search Agent, and optional Deep Analysis","Rename Space","Delete Space"],"authentication":"API key required (found in Medullar account settings)","commonUseCases":["Automating knowledge base updates across projects","Fetching and acting on AI-generated insights from team conversations","Verifying facts or conducting research within workflows","Organizing and managing collaborative knowledge spaces","Integrating Medullar's contextual intelligence into automation processes"],"limitations":["Requires Medullar paid plan","No support for real-time updates or streaming data","Deep Analysis mode is slower and optional"],"relatedNodes":["n8n-nodes-base","n8n-nodes-webhook","n8n-nodes-database"]}


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

updated_at: 2026-01-07 20:08:16
author_name: getlatedev
author_github_url: https://github.com/getlatedev/
npm_package_name: n8n-nodes-late
npm_version: 0.0.12
community_fetched_at: 2026-01-07T20:08:16.124Z
ai_summary_generated_at: 2026-01-08 10:45:32
description:
  Schedule and manage social media posts across multiple platforms with LATE - the professional social media management platform supporting Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, and Threads

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "profiles",
      "options": [
        {
          "name": "Profiles",
          "value": "profiles",
          "description": "Organize your social media accounts into profiles for managing multiple brands, clients, or personal accounts separately"
        },
        {
          "name": "Posts",
          "value": "posts",
          "description": "Create, schedule, and manage social media posts across multiple platforms with advanced features like threads, stories, and platform-specific settings"
        },
        {
          "name": "Media",
          "value": "media",
          "description": "Upload images and videos up to 5GB for use in your social media posts with automatic optimization"
        },
        {
          "name": "Social Accounts",
          "value": "accounts",
          "description": "Manage connected social media accounts, view their status, and disconnect accounts when needed"
        },
        {
          "name": "Connect Platform",
          "value": "connect",
          "description": "Initiate OAuth flows to connect new social media platforms (Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Threads)"
        },
        {
          "name": "Usage Statistics",
          "value": "usage",
          "description": "Monitor your current usage against plan limits including uploads, profiles, and billing information"
        },
        {
          "name": "Facebook Management",
          "value": "facebook",
          "description": "Manage Facebook pages, select which page to post to, and handle Facebook-specific settings"
        },
        {
          "name": "LinkedIn Management",
          "value": "linkedin",
          "description": "Switch between personal and company posting, manage LinkedIn organization settings"
        },
        {
          "name": "Clone Connection",
          "value": "clone",
          "description": "Reuse OAuth connections across multiple profiles while targeting different pages or organizations"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List profiles",
          "routing": {
            "request": {
              "url": "/profiles",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create profile",
          "routing": {
            "request": {
              "url": "/profiles",
              "body": {
                "name": "={{ $parameter.name }}",
                "color": "={{ $parameter.color || '' }}",
                "description": "={{ $parameter.description || '' }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}",
              "body": {
                "name": "={{ $parameter.name || undefined }}",
                "color": "={{ $parameter.color || undefined }}",
                "description": "={{ $parameter.description || undefined }}"
              },
              "method": "PUT"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "profiles"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List posts",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.page || 1 }}",
                "limit": "={{ $parameter.limit || 10 }}",
                "status": "={{ $parameter.status || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}"
              },
              "url": "/posts",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get post",
          "routing": {
            "request": {
              "url": "=/posts/{{ $parameter.postId }}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create post",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/posts",
              "method": "POST"
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update post",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/posts/{{ $parameter.postId }}",
              "method": "PUT"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete post",
          "routing": {
            "request": {
              "url": "=/posts/{{ $parameter.postId }}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Retry",
          "value": "retry",
          "action": "Retry failed post",
          "routing": {
            "request": {
              "url": "=/posts/{{ $parameter.postId }}/retry",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "posts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload media",
          "routing": {
            "request": {
              "url": "/media",
              "body": "={{ $parameter.files?.items?.reduce((acc, item) => { acc[`file_${Date.now()}_${Math.random()}`] = { value: item.data, options: { filename: item.filename || 'upload', contentType: item.mimeType || 'application/octet-stream' } }; return acc; }, {}) || {} }}",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              }
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List social accounts",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/accounts",
              "method": "GET"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Disconnect account",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accounts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "connect",
      "options": [
        {
          "name": "Connect Platform",
          "value": "connect",
          "action": "Connect social platform",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}",
                "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
              },
              "url": "=/connect/{{ $parameter.platform }}",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "connect"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStats",
      "options": [
        {
          "name": "Get Stats",
          "value": "getStats",
          "action": "Get usage statistics",
          "routing": {
            "request": {
              "url": "/usage-stats",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "usage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listPages",
      "options": [
        {
          "name": "List Pages",
          "value": "listPages",
          "action": "List Facebook pages",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/facebook/select-page",
              "method": "GET"
            }
          }
        },
        {
          "name": "Select Page",
          "value": "selectPage",
          "action": "Select Facebook page",
          "routing": {
            "request": {
              "url": "/connect/facebook/select-page",
              "body": {
                "pageId": "={{ $parameter.pageId }}",
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}",
                "userProfile": "={{ { id: $parameter.userProfileId || '', name: $parameter.userProfileName || '', email: $parameter.userProfileEmail || '', picture: $parameter.userProfilePicture || '', accessToken: $parameter.userProfileAccessToken || '' } }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update Page",
          "value": "updatePage",
          "action": "Update Facebook page",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/facebook-page",
              "body": {
                "selectedPageId": "={{ $parameter.selectedPageId }}"
              },
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "facebook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "updateOrganization",
      "options": [
        {
          "name": "Update Organization",
          "value": "updateOrganization",
          "action": "Update LinkedIn organization",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/linkedin-organization",
              "body": {
                "accountType": "={{ $parameter.accountType }}",
                "selectedOrganization": "={{ { id: $parameter.organizationId || '', urn: $parameter.organizationUrn || '', name: $parameter.organizationName || '', logoUrl: $parameter.organizationLogoUrl || '', description: $parameter.organizationDescription || '' } }}"
              },
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "linkedin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "cloneConnection",
      "options": [
        {
          "name": "Clone Connection",
          "value": "cloneConnection",
          "action": "Clone connection to profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}/clone-connection",
              "body": {
                "targetPageId": "={{ $parameter.targetPageId || undefined }}",
                "targetPageName": "={{ $parameter.targetPageName || undefined }}",
                "sourceAccountId": "={{ $parameter.sourceAccountId }}",
                "targetAccountType": "={{ $parameter.targetAccountType || undefined }}",
                "targetOrganizationId": "={{ $parameter.targetOrganizationId || undefined }}",
                "targetOrganizationUrn": "={{ $parameter.targetOrganizationUrn || undefined }}",
                "targetPageAccessToken": "={{ $parameter.targetPageAccessToken || undefined }}",
                "targetOrganizationName": "={{ $parameter.targetOrganizationName || undefined }}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clone"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List profiles",
      "routing": {
        "request": {
          "url": "/profiles",
          "method": "GET"
        }
      }
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create profile",
      "routing": {
        "request": {
          "url": "/profiles",
          "body": {
            "name": "={{ $parameter.name }}",
            "color": "={{ $parameter.color || '' }}",
            "description": "={{ $parameter.description || '' }}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}",
          "body": {
            "name": "={{ $parameter.name || undefined }}",
            "color": "={{ $parameter.color || undefined }}",
            "description": "={{ $parameter.description || undefined }}"
          },
          "method": "PUT"
        }
      }
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "List",
      "value": "list",
      "action": "List posts",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.page || 1 }}",
            "limit": "={{ $parameter.limit || 10 }}",
            "status": "={{ $parameter.status || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}"
          },
          "url": "/posts",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get post",
      "routing": {
        "request": {
          "url": "=/posts/{{ $parameter.postId }}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create post",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/posts",
          "method": "POST"
        }
      }
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update post",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/posts/{{ $parameter.postId }}",
          "method": "PUT"
        }
      }
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete post",
      "routing": {
        "request": {
          "url": "=/posts/{{ $parameter.postId }}",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Retry",
      "value": "retry",
      "action": "Retry failed post",
      "routing": {
        "request": {
          "url": "=/posts/{{ $parameter.postId }}/retry",
          "method": "POST"
        }
      }
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload media",
      "routing": {
        "request": {
          "url": "/media",
          "body": "={{ $parameter.files?.items?.reduce((acc, item) => { acc[`file_${Date.now()}_${Math.random()}`] = { value: item.data, options: { filename: item.filename || 'upload', contentType: item.mimeType || 'application/octet-stream' } }; return acc; }, {}) || {} }}",
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          }
        }
      }
    },
    {
      "name": "List",
      "value": "list",
      "action": "List social accounts",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/accounts",
          "method": "GET"
        }
      }
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Disconnect account",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Connect Platform",
      "value": "connect",
      "action": "Connect social platform",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}",
            "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
          },
          "url": "=/connect/{{ $parameter.platform }}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Stats",
      "value": "getStats",
      "action": "Get usage statistics",
      "routing": {
        "request": {
          "url": "/usage-stats",
          "method": "GET"
        }
      }
    },
    {
      "name": "List Pages",
      "value": "listPages",
      "action": "List Facebook pages",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/facebook/select-page",
          "method": "GET"
        }
      }
    },
    {
      "name": "Select Page",
      "value": "selectPage",
      "action": "Select Facebook page",
      "routing": {
        "request": {
          "url": "/connect/facebook/select-page",
          "body": {
            "pageId": "={{ $parameter.pageId }}",
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}",
            "userProfile": "={{ { id: $parameter.userProfileId || '', name: $parameter.userProfileName || '', email: $parameter.userProfileEmail || '', picture: $parameter.userProfilePicture || '', accessToken: $parameter.userProfileAccessToken || '' } }}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Update Page",
      "value": "updatePage",
      "action": "Update Facebook page",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/facebook-page",
          "body": {
            "selectedPageId": "={{ $parameter.selectedPageId }}"
          },
          "method": "PUT"
        }
      }
    },
    {
      "name": "Update Organization",
      "value": "updateOrganization",
      "action": "Update LinkedIn organization",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/linkedin-organization",
          "body": {
            "accountType": "={{ $parameter.accountType }}",
            "selectedOrganization": "={{ { id: $parameter.organizationId || '', urn: $parameter.organizationUrn || '', name: $parameter.organizationName || '', logoUrl: $parameter.organizationLogoUrl || '', description: $parameter.organizationDescription || '' } }}"
          },
          "method": "PUT"
        }
      }
    },
    {
      "name": "Clone Connection",
      "value": "cloneConnection",
      "action": "Clone connection to profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}/clone-connection",
          "body": {
            "targetPageId": "={{ $parameter.targetPageId || undefined }}",
            "targetPageName": "={{ $parameter.targetPageName || undefined }}",
            "sourceAccountId": "={{ $parameter.sourceAccountId }}",
            "targetAccountType": "={{ $parameter.targetAccountType || undefined }}",
            "targetOrganizationId": "={{ $parameter.targetOrganizationId || undefined }}",
            "targetOrganizationUrn": "={{ $parameter.targetOrganizationUrn || undefined }}",
            "targetPageAccessToken": "={{ $parameter.targetPageAccessToken || undefined }}",
            "targetOrganizationName": "={{ $parameter.targetOrganizationName || undefined }}"
          },
          "method": "POST"
        }
      }
    }
  ]

npm_readme:
  # n8n-nodes-late

  <img src="https://raw.githubusercontent.com/getlatedev/n8n-nodes-late/master/late/late-logo.png" alt="LATE Logo" width="200"/>

  An n8n community node for the [LATE API](https://getlate.dev) - the professional social media management platform.

  **Schedule and manage social media posts across multiple platforms:**
  - 🐦 **Twitter/X** - Posts, threads, and automation
  - 📸 **Instagram** - Posts, Stories, Reels with Business account support
  - 👤 **Facebook** - Page management and posting
  - 💼 **LinkedIn** - Personal and company page posting
  - 🎵 **TikTok** - Direct video posting with privacy controls
  - 📹 **YouTube** - Videos and Shorts with custom thumbnails
  - 🧵 **Threads** - Meta's social platform

  ## Version History

  - **1.0.0** - Initial release with comprehensive LATE API integration

  ## Installation

  ### From n8n Community Nodes Panel (Recommended)

  1. Go to **Settings** → **Community Nodes** in your n8n instance
  2. Select **Install** and enter `n8n-nodes-late`
  3. Click **Install** and restart n8n
  4. The LATE node will appear in your node palette

  ### From npm

  ```bash
  npm install n8n-nodes-late
  ```

  ### From Source

  ```bash
  git clone https://github.com/getlatedev/n8n-nodes-late.git
  cd n8n-nodes-late
  npm install
  npm run build
  ```

  ## Prerequisites

  1. **LATE Account**: Sign up at [getlate.dev](https://getlate.dev)
  2. **API Key**: Generate an API key from your LATE dashboard
  3. **Social Accounts**: Connect your social media accounts to LATE profiles

  ## Credentials Setup

  1. Add a new credential in n8n
  2. Search for "LATE API"
  3. Enter your API key from the LATE dashboard

  ## Quick Start

  ### 1. Create a Profile

  Profiles organize your social media accounts by brand, client, or purpose.

  ```json
  {
    "resource": "profiles",
    "operation": "create",
    "name": "Personal Brand",
    "description": "My personal social media accounts",
    "color": "#4ade80"
  }
  ```

  ### 2. Connect Social Accounts

  Connect your social media platforms to the profile:

  ```json
  {
    "resource": "connect",
    "operation": "connect",
    "platform": "twitter",
    "profileId": "profile_123_abc"
  }
  ```

  ### 3. Schedule a Post

  Create posts across multiple platforms:

  ```json
  {
    "resource": "posts",
    "operation": "create",
    "content": "Hello, world! 🌍 #automation",
    "platforms": [
      {"platform": "twitter", "accountId": "twitter_account_123"},
      {"platform": "linkedin", "accountId": "linkedin_account_456"}
    ],
    "scheduledFor": "2024-01-15T16:00:00",
    "timezone": "America/New_York"
  }
  ```

  ## Supported Operations

  ### Profiles
  - **List** - Get all profiles
  - **Create** - Create new profile (subject to plan limits)
  - **Update** - Update profile details
  - **Delete** - Delete profile (must be empty)

  ### Posts
  - **List** - Get posts with pagination and filters
  - **Get** - Get specific post details
  - **Create** - Schedule or publish posts
  - **Update** - Edit draft/scheduled posts
  - **Delete** - Delete posts (published posts cannot be deleted)
  - **Retry** - Retry failed posts

  ### Media
  - **Upload** - Upload images/videos up to 5GB

  ### Social Accounts
  - **List** - View connected accounts
  - **Delete** - Disconnect accounts

  ### Connect Platform
  - **Connect** - Initiate OAuth for new platforms

  ### Usage Statistics
  - **Get Stats** - Monitor usage against plan limits

  ### Facebook Management
  - **List Pages** - Get available Facebook pages
  - **Select Page** - Connect specific page
  - **Update Page** - Change active page

  ### LinkedIn Management
  - **Update Organization** - Switch between personal/company posting

  ### Clone Connection
  - **Clone Connection** - Reuse OAuth across profiles

  ## Advanced Features

  ### Platform-Specific Settings

  #### Twitter/X Threads
  Create multi-tweet threads:

  ```json
  {
    "platforms": [
      {
        "platform": "twitter",
        "accountId": "twitter_account_123",
        "platformSpecificData": {
          "threadItems": [
            {"content": "Tweet 1 - Introduction 🧵"},
            {"content": "Tweet 2 - Details"},
            {"content": "Tweet 3 - Conclusion"}
          ]
        }
      }
    ]
  }
  ```

  #### Instagram Stories
  Post to Instagram Stories:

  ```json
  {
    "platforms": [
      {
        "platform": "instagram", 
        "accountId": "instagram_account_123",
        "platformSpecificData": {
          "contentType": "story"
        }
      }
    ],
    "mediaItems": [
      {"type": "image", "url": "https://your-story-image.jpg"}
    ]
  }
  ```

  #### TikTok Privacy Settings
  Control TikTok post privacy:

  ```json
  {
    "platforms": [
      {
        "platform": "tiktok",
        "accountId": "tiktok_account_123", 
        "platformSpecificData": {
          "tiktokSettings": {
            "privacy_level": "PUBLIC_TO_EVERYONE",
            "allow_comment": true,
            "allow_duet": true,
            "allow_stitch": true
          }
        }
      }
    ]
  }
  ```

  #### YouTube Settings
  Add custom thumbnails and first comments:

  ```json
  {
    "platforms": [
      {
        "platform": "youtube",
        "accountId": "youtube_account_123",
        "platformSpecificData": {
          "firstComment": "Thanks for watching! Don't forget to like and subscribe! 🎥"
        }
      }
    ],
    "mediaItems": [
      {
        "type": "video", 
        "url": "https://your-video.mp4",
        "thumbnail": "https://your-custom-thumbnail.jpg"
      }
    ],
    "tags": ["tutorial", "automation", "n8n"]
  }
  ```

  ### Media Upload

  Upload files before using in posts:

  ```json
  {
    "resource": "media",
    "operation": "upload",
    "files": [
      {
        "filename": "image.jpg",
        "data": "base64_encoded_data"
      }
    ]
  }
  ```

  For large files (>4MB), use the `@vercel/blob` client-upload method as described in the [LATE API documentation](https://getlate.dev/docs).

  ## Platform Requirements

  - **Instagram**: Business account required (Personal/Creator accounts not supported)
  - **Facebook**: Must be admin of Facebook pages
  - **LinkedIn**: Company pages require admin access
  - **TikTok**: Creator account recommended
  - **YouTube**: Channel access required
  - **Twitter/X**: Standard account
  - **Threads**: Standard account

  ## Plan Limits

  LATE enforces usage limits based on your plan:

  - **Free**: 10 uploads/month, 2 profiles
  - **Basic**: 120 uploads/month, 10 profiles  
  - **Professional**: Unlimited uploads, 50 profiles
  - **Advanced**: Unlimited uploads, 150 profiles
  - **Enterprise**: Unlimited uploads, 250 profiles

  Monitor usage with the Usage Statistics operation.

  ## Error Handling

  The node handles various error scenarios:

  - **403**: Plan limits exceeded
  - **401**: Invalid API key
  - **400**: Invalid request data
  - **404**: Resource not found

  Check the node output for detailed error messages and upgrade suggestions.

  ## Development

  ### Prerequisites
  - Node.js 18+
  - TypeScript
  - n8n development environment

  ### Setup
  ```bash
  git clone https://github.com/getlatedev/n8n-nodes-late.git
  cd n8n-nodes-late
  npm install
  npm run build
  ```

  ### Linting
  ```bash
  npm run lint        # Check for issues
  npm run lintfix     # Fix automatically
  ```

  ## Support

  - **Documentation**: [LATE API Docs](https://getlate.dev/docs)
  - **Dashboard**: [getlate.dev/dashboard](https://getlate.dev/dashboard)
  - **Email**: [miki@getlate.dev](mailto:miki@getlate.dev)
  - **Issues**: [GitHub Issues](https://github.com/getlatedev/n8n-nodes-late/issues)

  ## License

  MIT

  ## Contributing

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

  ---

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

  [Website](https://getlate.dev) • [Documentation](https://getlate.dev/docs) • [Dashboard](https://getlate.dev/dashboard)

ai_documentation_summary:
  {"purpose":"The LATE node enables users to schedule and manage social media posts across multiple platforms including Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, and Threads through integration with the LATE API.","capabilities":["Create, list, update, and delete profiles for organizing social media accounts","Schedule and publish posts across multiple platforms with platform-specific settings","Upload media files (up to 5GB) for use in posts","Manage social accounts by connecting, disconnecting, or updating platform-specific configurations","Support for advanced features like Twitter threads, Instagram Stories, TikTok privacy controls, and YouTube custom thumbnails","Monitor usage statistics and manage Facebook pages and LinkedIn organization settings"],"authentication":"API key required","commonUseCases":["Automating social media posting across multiple platforms","Creating multi-tweet threads on Twitter/X","Scheduling Instagram Stories and Reels","Publishing TikTok videos with privacy and engagement settings","Uploading videos to YouTube with custom thumbnails and first comments"],"limitations":["Published posts cannot be deleted","Profile creation is subject to plan limits","Large file uploads (>4MB) require external client-upload methods like @vercel/blob","Platform-specific features may depend on account type or platform availability"],"relatedNodes":["Social Media Management","Content Scheduling","Media Upload","Automation"]}


node_type: n8n-nodes-chat-data.chatData
package_name: n8n-nodes-chat-data
display_name: Chat Data
description: Basic Chat Data Node
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: chatdata
author_github_url: https://github.com/chat-data-llc/
npm_package_name: n8n-nodes-chat-data
npm_version: 1.2.1
community_fetched_at: 2026-01-07T20:08:16.125Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "action",
      "options": [
        {
          "name": "Action",
          "value": "action"
        },
        {
          "name": "Chatbot",
          "value": "chatbot"
        }
      ],
      "description": "Choose a resource",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Send a Message",
          "value": "sendMessage",
          "action": "Send a message to a chat",
          "description": "Send a message to a chat"
        },
        {
          "name": "Get Leads",
          "value": "getLeads",
          "action": "Get leads",
          "description": "Retrieve leads/customers from a chatbot"
        },
        {
          "name": "Get Conversations",
          "value": "getConversations",
          "action": "Get conversations",
          "description": "Retrieve conversation history from a chatbot"
        },
        {
          "name": "Append a Message",
          "value": "appendMessage",
          "action": "Append a message to an existing conversation",
          "description": "Append a message to an existing conversation as a human agent or assistant"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "action"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createChatbot",
      "options": [
        {
          "name": "Create Chatbot",
          "value": "createChatbot",
          "action": "Create a chatbot",
          "description": "Create a new chatbot"
        },
        {
          "name": "Retrain Chatbot",
          "value": "retrainChatbot",
          "action": "Retrain a chatbot",
          "description": "Retrain a chatbot with new data"
        },
        {
          "name": "Update Base Prompt",
          "value": "updateBasePrompt",
          "action": "Update a base prompt",
          "description": "Update a chatbot's base prompt"
        },
        {
          "name": "Get Chatbot Training Status",
          "value": "getChatbotStatus",
          "action": "Get chatbot training status",
          "description": "Retrieve the training status of a chatbot"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chatbot"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send a Message",
      "value": "sendMessage",
      "action": "Send a message to a chat",
      "description": "Send a message to a chat"
    },
    {
      "name": "Get Leads",
      "value": "getLeads",
      "action": "Get leads",
      "description": "Retrieve leads/customers from a chatbot"
    },
    {
      "name": "Get Conversations",
      "value": "getConversations",
      "action": "Get conversations",
      "description": "Retrieve conversation history from a chatbot"
    },
    {
      "name": "Append a Message",
      "value": "appendMessage",
      "action": "Append a message to an existing conversation",
      "description": "Append a message to an existing conversation as a human agent or assistant"
    },
    {
      "name": "Create Chatbot",
      "value": "createChatbot",
      "action": "Create a chatbot",
      "description": "Create a new chatbot"
    },
    {
      "name": "Retrain Chatbot",
      "value": "retrainChatbot",
      "action": "Retrain a chatbot",
      "description": "Retrain a chatbot with new data"
    },
    {
      "name": "Update Base Prompt",
      "value": "updateBasePrompt",
      "action": "Update a base prompt",
      "description": "Update a chatbot's base prompt"
    },
    {
      "name": "Get Chatbot Training Status",
      "value": "getChatbotStatus",
      "action": "Get chatbot training status",
      "description": "Retrieve the training status of a chatbot"
    }
  ]

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

  # n8n-nodes-chat-data

  This is the official n8n integration for [Chat Data](https://chat-data.com). It provides nodes to interact with the ChatData platform, allowing you to manage chatbots, send messages, retrieve leads, and more.

  ## Prerequisites

  To use the ChatData integration, you must have:

  - A paid ChatData account. You can create an account at [chat-data.com](https://chat-data.com).
  - Your ChatData API key, which you can obtain from your account settings.

  ## Installation

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

  ```bash
  npm install n8n-nodes-chat-data
  ```

  For n8n desktop app/local installation:

  ```bash
  n8n-node-dev --install n8n-nodes-chat-data
  ```

  ## Node Reference

  ### Chat Data

  This node can be found in the 'Action' category in n8n.

  #### Operations

  The operations in this node are organized into the following categories:

  ##### Action

  - **Send a Message**: Send a chat message to a chatbot
  - **Get Leads**: Retrieve customer leads from a chatbot
  - **Get Conversations**: Retrieve conversation history from a chatbot
  - **Append a Message**: Send a message to an existing conversation as a human agent or bot

  ##### Chatbot

  - **Create Chatbot**: Set up a new AI-powered chatbot
  - **Retrain Chatbot**: Update a chatbot with new data
  - **Update Base Prompt**: Modify a chatbot's base prompt
  - **Get Chatbot Training Status**: Check the status of a chatbot's training

  ##### Other

  - **Make API Call**: Make a custom request to any Chat Data API endpoint

  ---

  ### Chat Data Trigger

  This node is used to receive real-time events from Chat Data via webhooks. You can find it in the 'Trigger' category in n8n.

  #### Available Triggers

  - **On New Message**: Triggered when a new chat message is received
  - **On Lead Submission**: Triggered when a customer submits lead information
  - **On Live Chat Escalation**: Triggered when a chat is escalated to a human agent

  1. After setting up the trigger, you'll see webhook registration details in the execution output
  2. When a webhook event is received, the node logs detailed information about:
     - Raw webhook payload
     - Parsed event data
     - Event type matching
     - Chatbot ID verification

  > **Note:** If your webhook isn't triggering as expected, check the n8n logs for messages starting with "Webhook triggered" to see detailed information about incoming data.

  > **Important:** For webhook testing, ensure the `chatbot_id` in your trigger configuration matches the `chatbot_id` field in the incoming webhook payload.

  ---

  ## Authentication

  This node requires an API Key for authentication. To set this up:

  1. Create an API key in your ChatData account:
     - Log in to your ChatData account
     - In the top right corner, click your Username > Account Settings
     - In the API Keys section, click Create a new secret key
     - Copy the API key value

  2. In n8n, create a new credential:
     - Choose "ChatDataApi" as the credential type
     - Enter your API key in the API Key field
     - Enter your Chat Data instance URL (usually https://app.chat-data.com)
     - Save the credential

  ## Further Information

  - [ChatData Website](https://chat-data.com)
  - [ChatData API Documentation](https://docs.chat-data.com/api)
  - [ChatData Pricing](https://chat-data.com/pricing)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"The Chat Data node enables integration with the ChatData platform to manage chatbots, send and retrieve messages, handle leads, and receive real-time events via webhooks, supporting both action and trigger workflows.","capabilities":["Send a message to a chatbot","Retrieve customer leads","Retrieve conversation history","Append a message to an existing conversation","Create a new chatbot","Retrain a chatbot","Update a chatbot's base prompt","Check chatbot training status","Make custom API calls to ChatData endpoints","Trigger on new messages, lead submissions, or chat escalations via webhooks"],"authentication":"API key required. The API key must be obtained from the ChatData account settings and configured in n8n using the 'ChatDataApi' credential type with the instance URL (e.g., https://app.chat-data.com).","commonUseCases":["Automating customer support by sending responses to chatbot messages","Capturing lead information from live chat and routing to CRM systems","Monitoring chat escalations to human agents for real-time alerts","Retraining chatbots with new data to improve performance","Building real-time dashboards using webhook-triggered events"],"limitations":[],"relatedNodes":["n8n-nodes-base.trigger","n8n-nodes-base.action","n8n-nodes-webhook.webhook"]}


node_type: n8n-nodes-zohoteaminbox.zohoTeamInbox
package_name: n8n-nodes-zohoteaminbox
display_name: Zoho TeamInbox
description: Consume Zoho TeamInbox API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: zohomail
author_github_url: https://github.com/zohomail/zoho_teaminbox_n8n.git
npm_package_name: n8n-nodes-zohoteaminbox
npm_version: 1.0.4
community_fetched_at: 2026-01-07T20:08:16.125Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Contact",
          "value": "contact"
        }
      ],
      "required": true,
      "displayName": "Resource"
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendemail",
      "options": [
        {
          "name": "Send Email",
          "value": "sendemail",
          "action": "Send Email",
          "description": "Create and send a new email."
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createcontact",
      "options": [
        {
          "name": "Create Contact",
          "value": "createcontact",
          "action": "Create Contact",
          "description": "Creates a new contact"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Email",
      "value": "sendemail",
      "action": "Send Email",
      "description": "Create and send a new email."
    },
    {
      "name": "Create Contact",
      "value": "createcontact",
      "action": "Create Contact",
      "description": "Creates a new contact"
    }
  ]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)
  # Zoho TeamInbox integration with n8n
  Zoho TeamInbox is a multichannel shared inbox platform that enables teams to manage conversations from business WhatsApp, Telegram, Facebook, Instagram DMs, and emails—all in one shared space that enhance collaboration and transparency.
  With n8n’s integration, you can align Zoho TeamInbox with your business processes by custom-designing workflows using triggers and actions to automate your operations.
  To learn more about n8n
  [n8n homepage](https://n8n.io/).
  To learn more about Zoho TeamInbox
  [Zoho Calendar homepage]( https://www.zoho.com/teaminbox/ )
  In case of any technical queries 
  [Contact sales]( https://www.zoho.com/teaminbox/contact.html )
  ## Pre-requisites
  - n8n admin login account (https://app.n8n.cloud/login)
  - TeamInbox account
  - Verified domain added to TeamInbox
  ## Installation 
  You can install the nodes for n8n via [npm]( https://www.npmjs.com/ ) with the package name as "n8n-nodes-zohoteaminbox".
  - To install :
    - Log in to your n8n account.
    - Navigate to more options->Settings->Community nodes->Install.
    - Enter the package name (n8n-nodes-zohoteaminbox)
    - The node will be installed successfully.

  ## Configuration 
  Follow the steps below to integrate Zoho TeamInbox from n8n.
  - Log in to your n8n account.
  - Select Create Credential -> Add Credential dialog box -> Enter Zoho TeamInbox OAuth2 API -> Click Continue.
  - Copy the Authorized Redirection URL from the connection page.
  - Access the [Zoho Developer Console](https://api-console.zoho.com/) to create a new Client ID and Client Secret to establish the connection between n8n and Zoho TeamInbox.
  - Click on Get Started if you have no existing Client. If you have an existing client, click on Add Client in the top-right corner. Select Server-based Applications in the Client Type window.
  - Provide the appropriate Client Name and your domain in the Homepage URL along with the Authorized Redirect URL copied from the Connection page.
  - Click Create to generate the Client ID and Client Secret.
  - Enter the Client ID and Client secret in the Connection Page and click Connect my account.
  - Now, the connection between n8n and Zoho TeamInbox is established, and the next step is to create your workflow.
  - Click Create Workflow -> Add first step -> search and select Zoho TeamInbox on the right pane.
  - Build your desired workflow with the list of actions (Send an email or Create contact).
  - Once the workflow is created, you can test it by selecting the Test Workflow option.
  ## Troubleshooting 
  Write to us in case of any queries
  [Contact support]( support@zohoteaminbox.com )

  ### Description
  This page explains the integration of Zoho TeamInbox with n8n. n8n is a powerful, open-source workflow automation software that allows you to connect with different apps and automate tasks with ease.

  For more information on Zoho TeamInbox: https://www.zoho.com/teaminbox/
    
  ### Required :
  - Zoho TeamInbox account and n8n admin account.
  - Module installation and configuration
  - Information on how the integration between Zoho TeamInbox and n8n can be made is found in this Readme file.
  - For further queries, visit :  https://www.zoho.com/teaminbox/contact.html  

ai_documentation_summary:
  {"purpose":"The Zoho TeamInbox node enables users to connect n8n with Zoho TeamInbox to automate workflows by triggering actions such as sending emails or creating contacts based on incoming messages from WhatsApp, Telegram, Facebook, Instagram DMs, and emails.","capabilities":["Trigger workflows based on new messages in Zoho TeamInbox","Send emails via Zoho TeamInbox","Create contacts in Zoho TeamInbox"],"authentication":"OAuth2 with Client ID and Client Secret obtained from Zoho Developer Console","commonUseCases":["Automating customer response workflows from WhatsApp or email conversations","Creating customer records in CRM when a new message is received","Routing incoming messages to specific team members or departments"],"limitations":[],"relatedNodes":["n8n-nodes-base.actions","n8n-nodes-base.triggers"]}


node_type: n8n-nodes-docsautomator.docsAutomator
package_name: n8n-nodes-docsautomator
display_name: DocsAutomator
description: Create and manage documents with DocsAutomator
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: rupertxyz
author_github_url: https://github.com/DocsAutomator/
npm_package_name: n8n-nodes-docsautomator
npm_version: 1.4.0
community_fetched_at: 2026-01-07T20:08:16.126Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Automation",
          "value": "automation"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Placeholder",
          "value": "placeholder"
        },
        {
          "name": "Template",
          "value": "template"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an automation",
          "description": "Create a new automation"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an automation",
          "description": "Delete an automation"
        },
        {
          "name": "Duplicate",
          "value": "duplicate",
          "action": "Duplicate an automation",
          "description": "Duplicate an existing automation"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an automation",
          "description": "Get a single automation by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many automations",
          "description": "Get many automations"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an automation",
          "description": "Update an existing automation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "automation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document",
          "description": "Create a new document from an automation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List placeholders",
          "description": "List placeholders for an automation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "placeholder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "duplicateGoogleDoc",
      "options": [
        {
          "name": "Duplicate Google Doc",
          "value": "duplicateGoogleDoc",
          "action": "Duplicate a google doc template",
          "description": "Duplicate a Google Doc template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "template"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an automation",
      "description": "Create a new automation"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an automation",
      "description": "Delete an automation"
    },
    {
      "name": "Duplicate",
      "value": "duplicate",
      "action": "Duplicate an automation",
      "description": "Duplicate an existing automation"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an automation",
      "description": "Get a single automation by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many automations",
      "description": "Get many automations"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an automation",
      "description": "Update an existing automation"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a document",
      "description": "Create a new document from an automation"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List placeholders",
      "description": "List placeholders for an automation"
    },
    {
      "name": "Duplicate Google Doc",
      "value": "duplicateGoogleDoc",
      "action": "Duplicate a google doc template",
      "description": "Duplicate a Google Doc template"
    }
  ]

npm_readme:
  # n8n-nodes-docsautomator

  This is an n8n community node for DocsAutomator, a powerful document automation tool. It allows you to create documents, manage automations, and access various DocsAutomator features directly from your n8n workflows.

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

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

  ## Installation

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

  ## Operations

  The DocsAutomator node supports the following resources and operations:

  ### Automation

  Manage your DocsAutomator automations:

  | Operation | Description |
  |-----------|-------------|
  | **Get Many** | List all automations in your workspace |
  | **Get** | Get a single automation by ID |
  | **Create** | Create a new automation |
  | **Update** | Update an existing automation |
  | **Delete** | Delete an automation |
  | **Duplicate** | Create a copy of an automation |

  ### Document

  Create documents using your automations:

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Generate a document from an automation with placeholder data |

  ### Placeholder

  Discover placeholders in your templates:

  | Operation | Description |
  |-----------|-------------|
  | **List** | List placeholders for an automation (structured format with line item grouping) |

  ### Template

  Manage Google Doc templates:

  | Operation | Description |
  |-----------|-------------|
  | **Duplicate Google Doc** | Create a copy of a Google Doc template |

  ## Credentials

  This node requires DocsAutomator API credentials:

  1. Log in to your DocsAutomator account.
  2. Navigate to your workspace settings > API Key.
  3. Copy the API key.
  4. In n8n, create new "DocsAutomator API" credentials and paste your API key into the provided field.

  ## Usage

  ### Creating Documents

  1. **Add the DocsAutomator node** to your n8n workflow.
  2. **Set up Credentials**: Select your configured DocsAutomator API credentials.
  3. **Select Resource**: Choose "Document" and operation "Create".
  4. **Select an Automation**: Choose from the dropdown (only API/n8n automations are shown).
  5. **Map Placeholder Values**: Fill in values for each placeholder in your template.
  6. **Configure Line Items (Optional)**: Add line item data as JSON arrays.
  7. **Set Processing Options**:
     - **Preview Mode**: Generate a preview instead of the final document.
     - **Async Processing**: Return immediately with a jobId for tracking.

  ### Managing Automations

  Use the Automation resource to programmatically manage your automations:

  ```
  Automation > Get Many    → List all automations
  Automation > Create      → Create new automation with title and data source
  Automation > Update      → Modify settings like locale, PDF expiration, template link, etc.
  Automation > Duplicate   → Clone an existing automation
  Automation > Delete      → Remove an automation
  ```

  ### Discovering Placeholders

  Before creating documents, you can discover what placeholders are available:

  ```
  Placeholder > List → Returns structured placeholder data:
  {
    "placeholders": {
      "main": ["customer_name", "invoice_number"],
      "line_items_1": ["item_name", "quantity", "price"]
    }
  }
  ```

  ### Example: Invoice Generation with Line Items

  1. **Select**: Document > Create
  2. **Automation**: Choose "Invoice Generation"
  3. **Placeholder Values**:
     - `customer_name`: `{{ $json.customer.fullName }}`
     - `invoice_number`: `{{ $json.invoiceDetails.id }}`
     - `invoice_date`: `{{ $now.toFormat('yyyy-MM-dd') }}`
  4. **Line Items**:
     - Type: "Line Items 1"
     - JSON:
       ```json
       [
         {
           "item_description": "Widget A",
           "item_quantity": 2,
           "item_unit_price": 10.00
         },
         {
           "item_description": "Widget B",
           "item_quantity": 1,
           "item_unit_price": 25.50
         }
       ]
       ```

  ### Tips for Success

  - **JSON Structure for Line Items**: Ensure valid JSON array of objects matching your template placeholders.
  - **Use n8n Expressions**: Dynamically map data from previous nodes.
  - **Error Handling**: Use "Continue On Fail" or error workflows.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [DocsAutomator API documentation](https://docs.docsautomator.co/)
  - [DocsAutomator website](https://docsautomator.co/)

ai_documentation_summary:
  {"purpose":"The DocsAutomator node enables users to create and manage documents using automation templates within DocsAutomator, allowing for dynamic document generation with placeholders and line items directly in n8n workflows.","capabilities":["Create documents from automations with placeholder data","Manage automations (create, update, delete, duplicate)","Discover available placeholders in templates","Duplicate Google Doc templates","Support for line items in document generation","Preview mode and async processing options"],"authentication":"API key required","commonUseCases":["Generating invoices, contracts, or other standardized documents dynamically","Automating document workflows with data from previous n8n nodes","Managing and updating document automation rules programmatically","Discovering and mapping placeholders before document creation"],"limitations":[],"relatedNodes":["n8n-nodes-base","n8n-nodes-expression","n8n-nodes-json"]}


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

updated_at: 2026-01-07 20:08:16
author_name: abhijeet_narvekar
author_github_url: https://github.com/markupai/n8n-app.git
npm_package_name: @markupai/n8n-nodes-markupai
npm_version: 0.2.5
community_fetched_at: 2026-01-07T20:08:16.126Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "content",
      "options": [
        {
          "name": "Content",
          "value": "content"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "styleCheck",
      "options": [
        {
          "name": "Style Check",
          "value": "styleCheck",
          "action": "Content style check",
          "description": "Check the content against your style and branding guidelines"
        },
        {
          "name": "Style Rewrite",
          "value": "styleRewrite",
          "action": "Content style rewrite",
          "description": "Rewrite the content against your style and branding guidelines"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "content"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

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

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

  # n8n-nodes-markupai

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

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

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

  ## Installation

  ### Community Nodes (Recommended)

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

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

  ### Manual Installation

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

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

  ## Operations

  The Markup AI node supports the following operations:

  ### Style Check

  Analyze content for quality issues without making changes.

  **Returns:**

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

  ### Style Rewrite

  Automatically rewrite and improve content using AI.

  **Returns:**

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

  ## Credentials

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

  ### Setting up credentials:

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

  ## Usage

  ### Configuration Options

  All operations support the following options:

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

  ### Example Workflows

  #### Content Quality Gate

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

  #### Automated Content Improvement

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

  ### Common Use Cases

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

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

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

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

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

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

  ## Resources

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

  ## Development

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

  ### Prerequisites

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

  ### Quick Setup (Recommended)

  After cloning this repository, run the automated setup script:

  ```bash
  npm run setup
  ```

  This will:

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

  Then start n8n:

  ```bash
  npm start
  ```

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

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

  ### Environment Configuration

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

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

  1. Copy the example environment file:

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

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

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

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

  **Option 2: Export environment variable directly**

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

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

  ### Manual Setup

  If you prefer to set things up manually:

  1. Install dependencies after cloning this repository

  ```bash
  npm install
  ```

  2. Build the code

  ```bash
  npm run build
  ```

  3. Link the build from the dist folder

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

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

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

  5. Link the custom folder to the build

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

  6. Fix n8n config file permissions (if needed)

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

  7. Start n8n

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

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

  ### Making Changes

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

  ### Testing

  Run the test suite:

  ```bash
  npm test
  ```

  Run tests with coverage:

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

  Run tests in watch mode during development:

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

  ### Troubleshooting

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

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

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

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

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

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

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

  This will show:

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

  ## License

  [MIT](LICENSE)

  ## Support

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

  ---

  Made with ❤️ by the Markup AI team

ai_documentation_summary:
  {"purpose":"The Markup AI node integrates with Markup AI's content analysis and improvement tools to check and enhance content for brand compliance, quality, and tone, enabling automated content validation and rewriting within n8n workflows.","capabilities":["Style Check: Analyzes content for quality, clarity, grammar, tone, readability, and style guide compliance without modifying the content","Style Rewrite: Automatically improves content using AI, returning a revised version with before/after scores and comparison metrics","Customizable settings: Supports style guides, dialects, tone preferences, and polling configurations"],"authentication":"API key required — obtain from Markup AI account settings","commonUseCases":["Content compliance and consistency across blogs, documentation, and marketing materials","Automated quality gates to prevent non-compliant content from going live","Early detection of content issues in workflows","Streamlined content review processes with actionable alerts","Quality at the source by improving content during creation"],"limitations":[],"relatedNodes":["Google Drive","Webhook","CMS (Content Management System)","Condition Node","Notification Node"]}


node_type: n8n-nodes-bookstack.bookstack
package_name: n8n-nodes-bookstack
display_name: BookStack
description: Manage BookStack resources
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: lucaguindani
author_github_url: https://github.com/lucaguindani/
npm_package_name: n8n-nodes-bookstack
npm_version: 1.1.0
community_fetched_at: 2026-01-07T20:08:16.127Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "global",
      "options": [
        {
          "name": "Book",
          "value": "book"
        },
        {
          "name": "Chapter",
          "value": "chapter"
        },
        {
          "name": "Global",
          "value": "global"
        },
        {
          "name": "Page",
          "value": "page"
        },
        {
          "name": "Shelf",
          "value": "shelf"
        }
      ],
      "description": "The BookStack resource to work with",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "book"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "page"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "shelf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chapter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Global search"
        },
        {
          "name": "Audit Log",
          "value": "auditLogList",
          "action": "Audit log"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "global"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Global search"
    },
    {
      "name": "Audit Log",
      "value": "auditLogList",
      "action": "Audit log"
    }
  ]

npm_readme:
  # n8n-nodes-bookstack

  [![CI](https://github.com/lucaguindani/n8n-nodes-bookstack/actions/workflows/ci.yml/badge.svg)](https://github.com/lucaguindani/n8n-nodes-bookstack/actions/workflows/ci.yml)

  This is an n8n community node that lets you use BookStack in your n8n workflows. The [n8n](https://n8n.io/) project is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  BookStack is an open source, self‑hosted documentation / knowledge base platform for organizing and sharing content via books, chapters, pages, and shelves.

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Resources](#resources)
  - [License](#license)
  - [Contributing](#contributing)
  - [Security](#security)
  - [Disclaimer](#disclaimer)

  ---
  ## Installation

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

  ### Manual (custom code folder)
  If you are running a self‑hosted n8n and want to build from source:
  ```bash
  # Go to your n8n custom folder
  mkdir -p ~/.n8n/custom && cd ~/.n8n/custom

  # Clone the repository
  git clone https://github.com/lucaguindani/n8n-nodes-bookstack.git
  cd n8n-nodes-bookstack

  # Install dependencies & build
  pnpm install
  pnpm run build

  # Restart n8n so the node is loaded
  ```
  After restart, search for "BookStack" in the node picker.

  ---
  ## Operations
  The node exposes CRUD + search and audit capabilities for core BookStack entities.

  Resource: Book
  - Get Many / Get / Create / Update / Delete

  Resource: Page
  - Get Many / Get / Create / Update / Delete

  Resource: Chapter
  - Get Many / Get / Create / Update / Delete

  Resource: Shelf
  - Get Many / Get / Create / Update / Delete

  Resource: Global
  - Search / Audit Log

  ---
  ## Credentials
  You need a BookStack API Token.
  1. In BookStack, open: My Account → Access & Security (`/my-account/auth`)
  2. Create a token; copy Token ID and Token Secret
  3. In n8n, create new credentials of type "Bookstack API":
     - Base URL: e.g. `https://your-bookstack.example.com/api`
     - Token ID
     - Token Secret
  4. Save and use in the node

  Required permission: The token inherits the permissions of the user who created it. Ensure that user can read/create/update intended entities. Audit Log requires permission to manage both users and system settings.

  ---
  ## Compatibility
  Tested with:
  - n8n 1.109+
  - Bookstack 24.5+
  - Node 20+

  ---
  ## Usage
  ### Listing (Get Many)
  - Return All: When enabled, the node will automatically paginate through all results.
  - Limit: When "Return All" is disabled, sets the maximum number of items to return.
  - Sort By / Sort Direction
  - Filters (field, operation, value)

  Internally, the node handles pagination (count/offset) for you when needed.

  ### Global Search
  - Provide a search query and optionally pick a content type (book, page, chapter, shelf)
  - "Return All" / "Limit" to control the amount of results
  - "Deep Dive" to automatically fetch full content for all search results. This provides complete context but increases execution time and API calls.

  ### Tags
  When creating/updating entities, `tags` can be provided as a comma‑separated list: `tagA, tagB`.

  ### Error Handling
  Common errors are formatted for clarity:
  - 401: credentials invalid
  - 403: insufficient permissions
  - 404: resource not found
  - 422: validation issue
  - 429: rate limit

  ---
  ## Resources
  * n8n Community Nodes Docs: https://docs.n8n.io/integrations/#community-nodes
  * BookStack Documentation: https://www.bookstackapp.com/docs/
  * BookStack API Reference: https://demo.bookstackapp.com/api/docs
  * BookStack GitHub: https://github.com/BookStackApp/BookStack

  ---
  ## License
  This project is licensed under the MIT License – see [LICENSE.md](./LICENSE.md).

  ---
  ## Contributing
  To lunch a local instance, make sure Node 18+ is installed, then run the following from the root directory of the project.

  ```bash
  pnpm install
  pnpm run dev
  ```

  You should be able to connect to `http://localhost:5678`.

  Pull requests are welcome. For significant changes, open an issue first to discuss scope.

  Before committing, ensure build passes and no lint or formatting errors are found.

  ```bash
  pnpm run lint
  pnpm run format
  pnpm run build
  ```

  Please provide a clear PR description.

  ---
  ## Security
  Do not commit BookStack credentials. Tokens inherit user permissions—consider creating a dedicated low‑privilege API user.

  ---
  ## Disclaimer
  This community node is not an official BookStack product. Use at your own risk; validate results in critical workflows.

ai_documentation_summary:
  {"purpose":"The BookStack n8n node enables automation of BookStack documentation platform operations by providing CRUD (Create, Read, Update, Delete) and search capabilities for books, pages, chapters, shelves, and global audit logs.","capabilities":["Create, read, update, and delete books","Create, read, update, and delete pages","Create, read, update, and delete chapters","Create, read, update, and delete shelves","Search across books, pages, chapters, and shelves","Access audit logs","Filter results by field, operation, and value","Sort results by field and direction","Support for pagination (auto-paginated when 'Return All' is enabled)","Deep dive search to fetch full content for results"],"authentication":"API token required. Generate a token in BookStack via 'My Account → Access & Security'. Provide Token ID and Token Secret in n8n under 'Bookstack API' credentials. The token inherits user permissions.","commonUseCases":["Automate creation and updates of documentation pages and chapters","Search and retrieve content across books, chapters, and pages","Maintain versioned documentation with audit logs","Tag documents for categorization and filtering","Integrate documentation workflows with other n8n tools (e.g., email, databases)"],"limitations":["Audit logs require permission to manage users and system settings","Deep dive search increases execution time and API calls","No support for advanced BookStack features outside core entities","Rate limiting (429) may occur during high-volume operations","Token permissions are inherited from the user; insufficient access leads to 403 errors"],"relatedNodes":["n8n-nodes-base","n8n-nodes-webhooks","n8n-nodes-database"]}


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

updated_at: 2026-01-07 20:08:16
author_name: jacksimplified
author_github_url: https://github.com/celeryhq/
npm_package_name: n8n-nodes-simplified
npm_version: 1.0.5
community_fetched_at: 2026-01-07T20:08:16.130Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "social-media",
      "options": [
        {
          "name": "Social Media",
          "value": "social-media"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createPost",
      "options": [
        {
          "name": "Get Connected Accounts",
          "value": "getAccounts",
          "action": "Get connected accounts",
          "description": "Retrieve all connected social media accounts"
        },
        {
          "name": "Create Post",
          "value": "createPost",
          "action": "Create a new post",
          "description": "Create a new social media post"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "social-media"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Connected Accounts",
      "value": "getAccounts",
      "action": "Get connected accounts",
      "description": "Retrieve all connected social media accounts"
    },
    {
      "name": "Create Post",
      "value": "createPost",
      "action": "Create a new post",
      "description": "Create a new social media post"
    }
  ]

npm_readme:
  # n8n-nodes-simplified

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

  **Simplified** is a content creation and marketing platform that helps teams generate, schedule, and manage social media content using AI.

  [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

  Option 1: Install via n8n UI
  1. Go to Settings > Community Nodes
  2. Click on Install
  3. Enter n8n-nodes-simplified in the npm Package Name field
  4. Click on Install

  Option 2: Install the node from npm:

  ```bash
  npm install n8n-nodes-simplified
  ```

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

  ---

  ## Operations

  ### 1. Get Social Accounts

  Retrieve all social media accounts connected to your Simplified workspace.

  **Use case**: Useful for previewing accounts or selecting the correct ID for post publishing.

  **Output**:  
  Returns a list of connected account objects, including platform, ID, name, and more.

  ---

  ### 2. Create Post

  Create a new social media post for one of your connected accounts.

  **Input Parameters**:

  | Field              | Type                                | Required | Description |
  |--------------------|-------------------------------------|----------|-------------|
  | Action             | Options: Add as Draft, Schedule, Add to Queue | ✅ Yes | Defines how the post should be handled:<br>• Add as Draft – Save the post without publishing.<br>• Schedule – Publish at a specified date/time.<br>• Add to Queue – Add to your platform's posting queue. |
  | Network Type       | Options (Facebook, LinkedIn, etc.)  | ✅ Yes   | Target social media platform. |
  | Account ID         | Dropdown (auto-loaded)              | ✅ Yes   | Connected account to publish the post to. |
  | Message            | String (text area)                  | ❌ No    | The text content of the post. Optional if the post is media-only. |
  | Schedule Date      | DateTime                            | ❌ No    | Required only if Action is Schedule. Defines when the post will be published. |
  | Media              | List of URLs or Asset IDs           | ❌ No    | Attach media to the post (URLs or Simplified asset IDs). |
  | Platform Settings  | Object                              | ❌ No    | Optional advanced configuration for the selected platform. |

  **Output**:  
  Returns an array containing the post or draft IDs that were created.

  ```json
  [
    {
      "ids": [
        "685d4e9f5cdd5047220f6a43"
      ]
    }
  ]
  ```

  **Usage in expressions**:
  ```scss
  {{$json["ids"][0]}}
  ```

  ---

  ## Credentials

  This node requires authentication with Simplified. You will need an API key to connect your account.

  🔗 [Simplified Authentication Documentation](https://simplified.readme.io/reference/authentication)

  ---

  ## Compatibility

  - Requires **n8n v1.40.0 or higher**
  - Developed and tested with Node.js 20+
  - No known incompatibilities at this time.

  ---

  ## Usage

  Use this node to prepare and publish AI-generated content to all your connected social media accounts directly from n8n.

  Examples:
  - Prepare content with ChatGPT or OpenAI node.
  - Use this node to **schedule or queue** posts for Simplified-connected platforms.
  - Retrieve and display connected accounts before publishing.

  ---

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Simplified API documentation](https://simplified.readme.io/reference/authentication)
  - [Simplified App](https://simplified.com)

  ---

  ## Version history

  ### 1.0.0
  - Initial release
  - Supports:
    - Get Social Accounts
    - Create Post with scheduling, media upload, and advanced platform settings

ai_documentation_summary:
  {"purpose":"The Simplified node enables users to retrieve connected social media accounts and create, schedule, or queue posts on platforms like Facebook, LinkedIn, and others using AI-powered content management from the Simplified platform.","capabilities":["Retrieve a list of connected social media accounts","Create a new post as a draft, schedule it for a future date, or add it to a posting queue","Support for multiple network types (e.g., Facebook, LinkedIn)","Attachment of media via URLs or asset IDs","Customizable platform-specific settings"],"authentication":"API key required via Simplified authentication","commonUseCases":["Scheduling AI-generated social media content across platforms","Prepping content in n8n using AI nodes (e.g., ChatGPT) before publishing","Previewing connected accounts before publishing posts","Automating content queues for consistent posting"],"limitations":[],"relatedNodes":["AI content generation nodes (e.g., OpenAI, ChatGPT)","Scheduling nodes","Media management nodes"]}


node_type: @picsart/n8n-nodes-picsart-creative-apis.picsartImage
package_name: @picsart/n8n-nodes-picsart-creative-apis
display_name: Picsart
description: Process images with Picsart API: remove backgrounds and enhance images
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: romiksar
author_github_url: https://github.com/PicsArt/n8n-plugin.git
npm_package_name: @picsart/n8n-nodes-picsart-creative-apis
npm_version: 3.0.2
community_fetched_at: 2026-01-07T20:08:16.130Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Image",
          "value": "image"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "removeBackground",
      "options": [
        {
          "name": "Remove Background",
          "value": "removeBackground",
          "action": "Remove background from an image",
          "description": "Remove background from an image"
        },
        {
          "name": "Enhance",
          "value": "enhance",
          "action": "Enhance an image",
          "description": "Enhance and upscale an image"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Remove Background",
      "value": "removeBackground",
      "action": "Remove background from an image",
      "description": "Remove background from an image"
    },
    {
      "name": "Enhance",
      "value": "enhance",
      "action": "Enhance an image",
      "description": "Enhance and upscale an image"
    }
  ]

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 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 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":"The Picsart node enables image processing tasks such as removing backgrounds and enhancing images using Picsart's AI-powered APIs.","capabilities":["Remove background from images with options for cutout or mask output","Apply background effects like blur, stroke, or shadow","Set background to color, image, or transparent","Enhance and upscale images using AI (2x, 4x, 6x, 8x, 16x)","Support for multiple image formats: JPG, PNG, WEBP"],"authentication":"API key required; obtain from Picsart Console (https://console.picsart.io/dashboard)","commonUseCases":["Creating product images with transparent backgrounds for e-commerce","Upscaling low-resolution images for better quality","Automating image editing workflows in marketing or design pipelines"],"limitations":[],"relatedNodes":["Image processing nodes","AI-powered image enhancement nodes","Background removal nodes"]}


node_type: n8n-nodes-zohozeptomail.zohoZeptomail
package_name: n8n-nodes-zohozeptomail
display_name: Zoho Zeptomail
description: Consume Zoho ZeptoMail API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: zohomail
author_github_url: https://github.com/zohomail/zoho_zeptomail_n8n.git
npm_package_name: n8n-nodes-zohozeptomail
npm_version: 1.0.3
community_fetched_at: 2026-01-07T20:08:16.131Z
ai_summary_generated_at: 2026-01-08 10:45:31
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "required": true,
      "displayName": "Resource"
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendmail",
      "options": [
        {
          "name": "Send Mail",
          "value": "sendmail",
          "action": "Send Mail",
          "description": "This action will send an email."
        },
        {
          "name": "Send Template Mail",
          "value": "sendtemplatemail",
          "action": "Send Template Mail",
          "description": "Send custom Template Mail."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Mail",
      "value": "sendmail",
      "action": "Send Mail",
      "description": "This action will send an email."
    },
    {
      "name": "Send Template Mail",
      "value": "sendtemplatemail",
      "action": "Send Template Mail",
      "description": "Send custom Template Mail."
    }
  ]

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

  # ZeptoMail integration with N8N

  ## About ZeptoMail
  [ZeptoMail](https://www.zoho.com/zeptomail/) is a dedicated email service built specifically for user-triggered transactional emails. Businesses can integrated with ZeptoMail to deliver time sensitive emails like OTPs, password reset emails, welcome emails and more. The [N8N](https://n8n.io/) integration with ZeptoMail allows applications to create workflows to automatically send transactional emails for set triggers. 

  ## Pre-requisites

  - N8n admin account (https://app.n8n.cloud/login)
  - ZeptoMail account
  - Verified domain added to ZeptoMail

  ## Installation
  You can install the n8n ZeptoMail node through the npm package "n8n-nodes-zohozeptomail"
  - Follow the steps below to install:
     - Login to your npm account.
     - Navigate to the settings section.
     - In the community nodes section -> Install community node.
     - Enter the npm package name: n8n-nodes-zohozeptomail.
     - The node will be installed successfully.

  ## Configuration
  Once you install the package, you should integrate with n8n to start sending emails:
  - Login to your n8n account.
  - Click the down-arrow next to the <b>Create workflow</b> button and click Create credentials.
  - In the Add credentials dialogue box, choose the appropriate authorization and access token URL.
  - Go to the [Zoho developer console](https://api-console.zoho.com/) to generate a new client id and client secret. These parameters will connect ZeptoMail and n8n.
  - Click Get started if you do not have any new client. If you have an existing client, click Add client.
  - Select Server-based applications in the client type window.
  - Provide an appropriate client name, your domain value in the homepage URL field, and the redirect URL copied from the Add credentials dialog box.
  - Click Create to generate the client id and client secret.
  - Copy the generated values and paste them in the Add credentials dialog box.
  - The connection is established. You can now create workflows to send emails.

  ## Create workflows
  - Click the <b>Create workflow</b> button.
  - Select the appropriate trigger for which you wish to send emails.
  - Click the Action in App option and lookup ZeptoMail from the list.
  - Choose the type of action you wish to perform - send email, send template email.
  - You can test your configuration by selecting the Test workflow button.

ai_documentation_summary:
  {"purpose":"The Zoho Zeptomail node enables n8n users to send transactional emails (such as OTPs, password resets, and welcome emails) via the Zoho ZeptoMail API using automated workflows triggered by specific events.","capabilities":["Send emails","Send template emails","Integrate with user-triggered transactional email workflows"],"authentication":"OAuth2 with client ID and client secret obtained from the Zoho Developer Console","commonUseCases":["Sending OTPs on user login or registration","Automated password reset emails","Welcome emails after user onboarding","Time-sensitive transactional communications"],"limitations":[],"relatedNodes":["Email nodes","Trigger nodes","Authentication nodes"]}


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

updated_at: 2026-01-07 20:08:16
author_name: authenticasa
author_github_url: https://github.com/AuthenticaSA/n8n-node-authentica.git
npm_package_name: n8n-nodes-authentica
npm_version: 0.1.3
community_fetched_at: 2026-01-07T20:08:16.131Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "otp",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "OTP",
          "value": "otp"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send an OTP",
          "description": "Send an OTP"
        },
        {
          "name": "Verify",
          "value": "verify",
          "action": "Verify an OTP",
          "description": "Verify an OTP"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "otp"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getBalance",
      "options": [
        {
          "name": "Get Balance",
          "value": "getBalance",
          "action": "Get balance"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

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

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

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

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

  ---

  ## ✨ What’s included in v0.1.0

  This first release focuses on the essentials:

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


  ---

  ## 🧰 Requirements

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

  ---

  ## 🚀 Install

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

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

  ### Update / Uninstall

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

  ### Offline / Self‑hosted without Community Nodes

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

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

  ---

  ## 🔐 Credentials — *Authentica API*

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

  **Fields**

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

  **Test**

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

  ---

  ## 🧩 Node usage

  ### 1) Account → Get Balance

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

  ### 2) OTP → Send

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

  **Output (example)**

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

  ### 3) OTP → Verify

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

  **Output (example)**

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

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

  ---

  ## 🐞 Troubleshooting

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

  ---

  ## 📦 Build locally (contributors)

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


  ---

  ## 🔒 Security & privacy

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

  ---


  ## 🙌 Thanks

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

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

  ---

  ## 📄 License (MIT)

  ```
  MIT License

  Copyright (c) 2025 Authentica

  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to deal
  in the Software without restriction, including without limitation the rights
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included
  in all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  THE SOFTWARE.

  ```

  ---

  ### File layout (what gets published)

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

ai_documentation_summary:
  {"purpose":"The Authentica node enables integration with Saudi Arabia's identity and communications APIs to send OTPs via SMS, WhatsApp, or email and retrieve account balance using an Authentica API key.","capabilities":["Get account balance","Send OTP via SMS, WhatsApp, or email","Verify OTP using phone or email"],"authentication":"API key required (sent in header as X-Authorization)","commonUseCases":["User registration with OTP verification via SMS or email","Account balance checks for Saudi-based services","Secure authentication flows in Saudi markets"],"limitations":["Phone numbers must be in E.164 format (e.g., +9665XXXXXXX)","Email must be a valid format","No support for other regions or services beyond Saudi Arabia","Rate limiting may occur; requires additional nodes for burst handling"],"relatedNodes":["Wait node","Rate Limit node","Credentials node"]}


node_type: n8n-nodes-htmlcsstopdf.htmlcsstopdf
package_name: n8n-nodes-htmlcsstopdf
display_name: HTML to PDF
description: Convert HTML to PDF or Capture Website Screenshots to PDF
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: htmlcsstoimage
author_github_url: https://github.com/PdfMunk/n8n-nodes-htmltopdf.git
npm_package_name: n8n-nodes-htmlcsstopdf
npm_version: 2.2.0
community_fetched_at: 2026-01-07T20:08:16.132Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "htmlToPdf",
      "options": [
        {
          "name": "HTML to PDF",
          "value": "htmlToPdf",
          "action": "Convert HTML to PDF",
          "description": "Generate PDF from HTML/CSS"
        },
        {
          "name": "URL to PDF",
          "value": "urlToPdf",
          "action": "Capture a screenshot of a website in PDF format",
          "description": "Capture Website Screenshot to PDF"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "HTML to PDF",
      "value": "htmlToPdf",
      "action": "Convert HTML to PDF",
      "description": "Generate PDF from HTML/CSS"
    },
    {
      "name": "URL to PDF",
      "value": "urlToPdf",
      "action": "Capture a screenshot of a website in PDF format",
      "description": "Capture Website Screenshot to PDF"
    }
  ]

npm_readme:
  # n8n-nodes-htmlcsstopdf

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

  An n8n community node for converting HTML content to PDF documents and capturing website screenshots as PDFs using the PDFMunk API.

  ## Features

  - **HTML to PDF**: Convert custom HTML/CSS content to PDF documents
  - **Website to PDF**: Capture full-page website screenshots as PDF files
  - **Flexible Output**: Support for URL and File response formats
  - **Customizable Viewport**: Configure viewport dimensions for optimal rendering
  - **Full Page Capture**: Option to capture entire web pages or specific viewport areas
  - **Configurable Timeout**: Adjust timeout settings for large PDF generation

  ## Installation

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

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Click **Install a community node**
  3. Enter `n8n-nodes-htmlcsstopdf`
  4. Click **Install**

  ### Manual Installation

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

  # Install the package
  npm install n8n-nodes-htmlcsstopdf
  ```

  ### Docker

  Add the package to your n8n Docker container:

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

  ## Getting Your PDFMunk API Key

  1. **Sign Up**: Visit [PDFMunk.com](https://pdfmunk.com) and create an account
  2. **Verify Email**: Check your email and verify your account
  3. **Access Dashboard**: Log in to your PDFMunk dashboard
  4. **Generate API Key**: 
     - Navigate to the "API Keys" section
     - Click "Generate New API Key"
     - Copy your API key securely
  5. **Choose Plan**: Select a plan based on your usage needs:
     - **Free Tier**: 100 conversions/month
     - **Starter**: 1,000 conversions/month
     - **Professional**: 10,000 conversions/month
     - **Enterprise**: Custom limits

  ## Configuration

  ### Setting Up Credentials

  1. In n8n, go to **Credentials**
  2. Click **+ Add Credential**
  3. Search for "HtmlCssToPdf API"
  4. Enter your PDFMunk API key
  5. Test the connection
  6. Save the credential

  ## Operations

  ### HTML to PDF
  Convert custom HTML and CSS content into PDF documents.

  **Parameters:**
  - **HTML Content**: The HTML content to convert
  - **CSS Content**: Optional CSS styling for the HTML
  - **Viewport Width**: Viewport width in pixels (default: 1080)
  - **Viewport Height**: Viewport height in pixels (default: 720)
  - **Output Format**: Choose between URL or File output
  - **Timeout**: Request timeout in seconds (default: 300 seconds = 5 minutes). Increase this for large PDFs.

  **Example Use Cases:**
  - Generate invoices from HTML templates
  - Create reports with custom styling
  - Convert rich text content to PDF documents

  ### URL to PDF
  Capture website screenshots and save them as PDF documents.

  **Parameters:**
  - **URL**: The website URL to capture
  - **Full Page**: Capture the entire page (default: true)
  - **Wait Time**: Milliseconds to wait before capturing (default: 10000)
  - **Viewport Width**: Viewport width in pixels (default: 1080)
  - **Viewport Height**: Viewport height in pixels (default: 720)
  - **Output Format**: Choose between URL or File output
  - **Timeout**: Request timeout in seconds (default: 300 seconds = 5 minutes). Increase this for large PDFs.

  **Example Use Cases:**
  - Archive web pages as PDFs
  - Generate website screenshots for documentation
  - Create visual reports of web content

  ## Usage

  ### Basic HTML to PDF Conversion

  ```json
  {
    "operation": "htmlToPdf",
    "html_content": "<h1>Hello World</h1><p>This is a test document.</p>",
    "css_content": "h1 { color: blue; } p { font-size: 14px; }",
    "viewPortWidth": 1080,
    "viewPortHeight": 720,
    "output_format": "file",
    "timeout": 300
  }
  ```

  ### Advanced Usage Examples

  #### 1. Invoice Generation
  ```html
  <!DOCTYPE html>
  <html>
  <head>
      <style>
          .invoice { font-family: Arial, sans-serif; }
          .header { background-color: #f0f0f0; padding: 20px; }
          .total { font-weight: bold; font-size: 18px; }
      </style>
  </head>
  <body>
      <div class="invoice">
          <div class="header">
              <h1>Invoice #12345</h1>
          </div>
          <div class="total">Total: $299.99</div>
      </div>
  </body>
  </html>
  ```

  #### 2. Report Generation
  ```html
  <div class="report">
      <h1>Monthly Report</h1>
      <table border="1">
          <tr><th>Metric</th><th>Value</th></tr>
          <tr><td>Sales</td><td>$50,000</td></tr>
          <tr><td>Growth</td><td>15%</td></tr>
      </table>
  </div>
  ```

  #### 3. Certificate Generation
  ```html
  <div class="certificate">
      <h1>Certificate of Completion</h1>
      <p>This certifies that <strong>John Doe</strong> has completed the course.</p>
      <div class="signature">Authorized Signature</div>
  </div>
  ```

  ## Use Cases

  ### Business Applications
  - **Invoice Generation**: Automatically generate invoices from order data
  - **Report Creation**: Convert analytics data into professional PDF reports
  - **Contract Generation**: Create contracts from templates with dynamic data
  - **Certificate Issuance**: Generate certificates for course completions
  - **Receipt Creation**: Convert transaction data into PDF receipts

  ### Content Management
  - **Document Archival**: Convert web pages to PDF for archival purposes
  - **Newsletter PDFs**: Transform HTML newsletters into PDF format
  - **eBook Creation**: Generate PDF books from HTML content
  - **Documentation**: Convert online docs to downloadable PDFs

  ### Marketing & Sales
  - **Proposal Generation**: Create branded proposals from CRM data
  - **Brochure Creation**: Generate marketing materials dynamically
  - **Price Lists**: Convert product catalogs to PDF format
  - **Quotation PDFs**: Transform quotes into professional PDFs

  ## Workflow Examples

  ### Example 1: E-commerce Invoice
  ```json
  {
    "nodes": [
      {
        "name": "Order Webhook",
        "type": "n8n-nodes-base.webhook"
      },
      {
        "name": "Generate Invoice HTML",
        "type": "n8n-nodes-base.function"
      },
      {
        "name": "Convert to PDF",
        "type": "n8n-nodes-htmlcsstopdf.htmlcsstopdf"
      },
      {
        "name": "Email PDF",
        "type": "n8n-nodes-base.emailSend"
      }
    ]
  }
  ```

  ### Example 2: Scheduled Reports
  ```json
  {
    "nodes": [
      {
        "name": "Schedule Trigger",
        "type": "n8n-nodes-base.cron"
      },
      {
        "name": "Fetch Analytics Data",
        "type": "n8n-nodes-base.httpRequest"
      },
      {
        "name": "Build Report HTML",
        "type": "n8n-nodes-base.function"
      },
      {
        "name": "Generate PDF Report",
        "type": "n8n-nodes-htmlcsstopdf.htmlcsstopdf"
      },
      {
        "name": "Save to Google Drive",
        "type": "n8n-nodes-base.googleDrive"
      }
    ]
  }
  ```

  ## Output

  The node returns:
  - **URL format**: Direct link to the generated PDF
  - **File format**: Binary PDF file data that can be saved or sent via email

  ## Error Handling

  The node provides detailed error messages for common issues:

  - **Invalid API Key**: Check your PDFMunk credentials
  - **HTML Parse Error**: Validate your HTML syntax
  - **CSS Error**: Check your CSS for syntax errors
  - **Rate Limit**: Upgrade your PDFMunk plan or wait for reset
  - **Network Error**: Check your internet connection
  - **Timeout Error**: Increase the timeout setting for large PDFs (default: 300 seconds)

  ## FAQ

  **Q: Is there a free tier?**  
  A: Yes, PDFMunk offers 100 free conversions per month.

  **Q: What HTML features are supported?**  
  A: Most modern HTML5 and CSS3 features are supported, including flexbox, grid, and media queries.

  **Q: Can I use external images?**  
  A: Yes, images accessible via URL will be included in the PDF.

  **Q: What's the maximum file size?**  
  A: PDFs can be up to 10MB on most plans. Check PDFMunk documentation for current limits.

  **Q: How do I generate large PDFs (100+ pages)?**  
  A: Increase the timeout setting in the node configuration. For large PDFs, set timeout to 600-900 seconds (10-15 minutes).

  **Q: What should I do if I get a gateway timeout error?**  
  A: Increase the timeout parameter in the node settings. The default is 300 seconds (5 minutes), but large PDFs may need 600-900 seconds.

  ## Compatibility

  - **n8n version**: 0.187.0+
  - **Node.js**: 18.0.0+
  - **Supported formats**: HTML, CSS, PDF

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [PDFMunk API Documentation](https://pdfmunk.com/api-docs)
  - [n8n workflow examples](https://n8n.io/workflows)

  ## Support

  For questions or support, please contact us at: **support@pdfmunk.com**

  You can also join the [n8n community forum](https://community.n8n.io/) for general n8n-related discussions.

  ## Contributing

  Contributions are welcome! Please read our contributing guidelines and submit pull requests for any improvements.

  ## License

  MIT License - see [LICENSE.md](LICENSE.md) file for details.

  ## Changelog

  ### v2.1.1
  - Added configurable timeout parameter for large PDF generation
  - Improved error handling for gateway timeouts
  - Updated documentation with timeout troubleshooting

  ### v2.0.2
  - Improved error handling
  - Performance optimizations

  ### v2.0.1
  - Bug fixes and stability improvements

  ### v2.0.0
  - Complete rewrite with new PDFMunk API
  - Enhanced CSS support
  - Better error messages

  ---

  Built with ❤️ for the n8n community

ai_documentation_summary:
  {"purpose":"Converts HTML content or captures website screenshots into PDF documents using the PDFMunk API, supporting both custom HTML/CSS and full-page website rendering.","capabilities":["Convert custom HTML and CSS to PDF","Capture full-page website screenshots as PDFs","Customize viewport dimensions for optimal rendering","Choose between URL or file output formats","Set configurable timeout for large PDF generation","Support for full-page or partial viewport captures"],"authentication":"API key required from PDFMunk.com","commonUseCases":["Generate invoices and receipts from templates","Create professional reports and dashboards","Convert web pages for archival or documentation","Issue certificates and contracts dynamically","Transform newsletters or marketing content into PDFs"],"limitations":[],"relatedNodes":["HTML to Text","Webhook","HTTP Request","File","Email"]}


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

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

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

npm_readme:
  # n8n-nodes-belakeai

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

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

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

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

  ## Installation

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

  ## Operations

  ### Agent

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

  ### Chat

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

  ### Datasource

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

  ### Department

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

  ### Language Model

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

  ## Credentials

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

  ### Prerequisites

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

  ### Authentication Method

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

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

  ### Setting Up Credentials

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

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

  ## Compatibility

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

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

  ### Technical Implementation

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

  ## Usage

  ### Basic Workflow Example

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

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

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

  ### Retrieving Information

  To retrieve information about available resources:

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

  ### Best Practices

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

  ## Resources

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

  ## Version history

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

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

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

ai_documentation_summary:
  {"purpose":"The Belake.ai node enables integration with the Belake.ai AI platform within n8n workflows, allowing users to manage AI agents, chat interactions, data sources, departments, and language models through API operations.","capabilities":["Retrieve agent details by ID or list all agents","Retrieve chat conversations by ID or list all chats","Send messages to AI agents with support for multiple agents, language specification, chat continuation, and visibility control","Retrieve datasource details by ID or list all datasources","Retrieve department details by ID or list all departments","Retrieve language model details by ID or list all language models"],"authentication":"API key authentication using a backend URL and API key; the API key is securely stored and exchanged for a bearer token at execution time via n8n's HTTP helpers","commonUseCases":["Sending messages to AI agents for automated responses","Maintaining conversation context using chat continuation (Chat ID)","Retrieving and managing AI resources like agents, language models, or departments","Integrating AI-driven data processing into automation workflows"],"limitations":[],"relatedNodes":["n8n-nodes-base","n8n-nodes-http"]}


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

updated_at: 2026-01-07 20:08:16
author_name: apps_makeitfuture
author_github_url: https://github.com/makeitfutureDev/n8n-kinderpedia.git
npm_package_name: n8n-nodes-kinderpedia
npm_version: 0.1.6
community_fetched_at: 2026-01-07T20:08:16.133Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "student",
      "options": [
        {
          "name": "Student",
          "value": "student"
        },
        {
          "name": "Parent",
          "value": "parent"
        },
        {
          "name": "Family",
          "value": "family"
        },
        {
          "name": "Group",
          "value": "group"
        },
        {
          "name": "Custom Field",
          "value": "customField"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a student",
          "description": "Create a new student"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a student",
          "description": "Get a student"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many students",
          "description": "Get many students"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search students",
          "description": "Search for students with filters"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a student",
          "description": "Update a student"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "student"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a parent",
          "description": "Create a new parent"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a parent",
          "description": "Get a parent"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many parents",
          "description": "Get many parents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "parent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a group",
          "description": "Get a group"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many groups",
          "description": "Get many groups"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add Value",
          "value": "addValue",
          "action": "Add a custom field value",
          "description": "Add a custom field value"
        },
        {
          "name": "Delete Value",
          "value": "deleteValue",
          "action": "Delete a custom field value",
          "description": "Delete a custom field value"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get custom field definitions",
          "description": "Get custom field definitions"
        },
        {
          "name": "Get Values",
          "value": "getValues",
          "action": "Get custom field values",
          "description": "Get custom field values for an entity"
        },
        {
          "name": "Update Value",
          "value": "updateValue",
          "action": "Update a custom field value",
          "description": "Update a custom field value"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customField"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a family",
          "description": "Get a family"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many families",
          "description": "Get many families"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "family"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a student",
      "description": "Create a new student"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a student",
      "description": "Get a student"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many students",
      "description": "Get many students"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search students",
      "description": "Search for students with filters"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a student",
      "description": "Update a student"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a parent",
      "description": "Create a new parent"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a parent",
      "description": "Get a parent"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many parents",
      "description": "Get many parents"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a group",
      "description": "Get a group"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many groups",
      "description": "Get many groups"
    },
    {
      "name": "Add Value",
      "value": "addValue",
      "action": "Add a custom field value",
      "description": "Add a custom field value"
    },
    {
      "name": "Delete Value",
      "value": "deleteValue",
      "action": "Delete a custom field value",
      "description": "Delete a custom field value"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get custom field definitions",
      "description": "Get custom field definitions"
    },
    {
      "name": "Get Values",
      "value": "getValues",
      "action": "Get custom field values",
      "description": "Get custom field values for an entity"
    },
    {
      "name": "Update Value",
      "value": "updateValue",
      "action": "Update a custom field value",
      "description": "Update a custom field value"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a family",
      "description": "Get a family"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many families",
      "description": "Get many families"
    }
  ]

npm_readme:
  # n8n-nodes-kinderpedia

  This is an n8n community node that allows you to use Kinderpedia API in your n8n workflows.

  [Kinderpedia](https://kinderpedia.co/) is a platform for managing educational institutions.

  ## Installation

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

  ## Operations

  ### Student
  - **Get Many**: Retrieve multiple students

  ### Parent
  - **Get Many**: Retrieve multiple parents

  ### Group
  - **Get Many**: Retrieve multiple groups

  ## Credentials

  To use this node, you need:
  - **API Key**: Your Kinderpedia API key
  - **School ID**: Your school identifier
  - **Environment**: Choose between Production or Sandbox

  ## Compatibility

  Tested with n8n version 1.0.0 and above.

  ## Usage

  1. Add your Kinderpedia credentials in n8n
  2. Add the Kinderpedia node to your workflow
  3. Select the resource (Student, Parent, or Group)
  4. Configure the operation parameters
  5. Execute your workflow

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Kinderpedia API documentation](https://openapi-documentation.kinderpedia.co/)

  ## Version history

  - 0.1.0: Initial release with basic GET operations for Students, Parents, and Groups

ai_documentation_summary:
  {"purpose":"The Kinderpedia node enables n8n users to interact with the Kinderpedia API to retrieve data about students, parents, and groups from educational institutions.","capabilities":["Retrieve multiple students","Retrieve multiple parents","Retrieve multiple groups"],"authentication":"API key, School ID, and Environment (Production or Sandbox) required","commonUseCases":["Fetch student records for reporting or enrollment tracking","Retrieve parent information for communication workflows","Get group data for class management or scheduling"],"limitations":[],"relatedNodes":["n8n-nodes-base","n8n-nodes-http"]}


node_type: n8n-nodes-docuwriter-ai.docuWriter
package_name: n8n-nodes-docuwriter-ai
display_name: DocuWriter.ai
description: Generate AI-powered documentation and code analysis
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: magarrent
author_github_url: https://github.com/DocuWriter-ai/
npm_package_name: n8n-nodes-docuwriter-ai
npm_version: 1.1.1
community_fetched_at: 2026-01-07T20:08:16.133Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "codeDocumentation",
      "options": [
        {
          "name": "Code Documentation",
          "value": "codeDocumentation"
        },
        {
          "name": "Code Tests",
          "value": "codeTests"
        },
        {
          "name": "Code Comments",
          "value": "codeComments"
        },
        {
          "name": "UML Diagram",
          "value": "umlDiagram"
        },
        {
          "name": "Code Optimization",
          "value": "codeOptimization"
        },
        {
          "name": "Generations",
          "value": "generations"
        },
        {
          "name": "User Info",
          "value": "userInfo"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate code documentation",
          "description": "Generate documentation from source code"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "codeDocumentation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate code tests",
          "description": "Generate test cases from source code"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "codeTests"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate code comments",
          "description": "Generate comments for source code"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "codeComments"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate UML diagram",
          "description": "Generate UML diagram from source code"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "umlDiagram"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "optimize",
      "options": [
        {
          "name": "Optimize",
          "value": "optimize",
          "action": "Optimize code",
          "description": "Optimize and refactor source code"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "codeOptimization"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all generations",
          "description": "Get all generations"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get generation",
          "description": "Get a specific generation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "generations"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all generations",
          "description": "Get all generations"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get generation",
          "description": "Get a specific generation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "generations"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get user info",
          "description": "Get user account information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "userInfo"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate code documentation",
      "description": "Generate documentation from source code"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate code tests",
      "description": "Generate test cases from source code"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate code comments",
      "description": "Generate comments for source code"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate UML diagram",
      "description": "Generate UML diagram from source code"
    },
    {
      "name": "Optimize",
      "value": "optimize",
      "action": "Optimize code",
      "description": "Optimize and refactor source code"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all generations",
      "description": "Get all generations"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get generation",
      "description": "Get a specific generation"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all generations",
      "description": "Get all generations"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get generation",
      "description": "Get a specific generation"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get user info",
      "description": "Get user account information"
    }
  ]

npm_readme:
  # n8n-nodes-docuwriter-ai

  ![DocuWriter.ai Logo](https://www.docuwriter.ai/assets/logo-horizontal.png)

  An n8n community node that integrates with [DocuWriter.ai](https://www.docuwriter.ai) - the AI-powered platform for automated code documentation, testing, and optimization.

  [![npm version](https://badge.fury.io/js/n8n-nodes-docuwriter-ai.svg)](https://badge.fury.io/js/n8n-nodes-docuwriter-ai)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  ## Features

  ### 🔧 Core Capabilities

  - **Code Documentation Generation**: Transform source code into comprehensive documentation
  - **Automated Test Creation**: Generate test suites for your code
  - **UML Diagram Generation**: Create visual representations of code architecture
  - **Code Optimization**: Get AI-powered suggestions for improving code quality
  - **Generation Management**: Access and retrieve previously generated content
  - **User Info**: Check account status and credit balance
  - **Webhook Support**: Real-time triggers when generations are created or updated

  ### 📚 Use Cases

  - **CI/CD Integration**: Automatically generate documentation on code commits
  - **Quality Assurance**: Create test suites for new features
  - **Code Review Automation**: Generate optimization suggestions and architectural diagrams
  - **Documentation Maintenance**: Keep project documentation up-to-date automatically

  ## Installation

  ### Prerequisites

  - n8n version 0.198.0 or later
  - DocuWriter.ai account and API token

  ### Installation Methods

  #### Community Nodes (Recommended)

  1. In your n8n instance, go to **Settings** > **Community Nodes**
  2. Click **Install a community node**
  3. Enter: `n8n-nodes-docuwriter-ai`
  4. Click **Install**

  #### Manual Installation

  ```bash
  # Install via npm
  npm install n8n-nodes-docuwriter-ai
  ```

  ## Configuration

  ### 1. Get Your API Token

  1. Visit [DocuWriter.ai](https://app.docuwriter.ai)
  2. Sign up or log in to your account
  3. Navigate to **Settings** > **API Keys**
  4. Generate a new API token
  5. Copy the token for use in n8n

  ### 2. Configure Credentials in n8n

  1. In n8n, go to **Credentials**
  2. Click **Create New Credential**
  3. Search for and select **DocuWriter.ai API**
  4. Fill in your credentials:
     - **API Token**: Your DocuWriter.ai API token
     - **Base URL**: `https://app.docuwriter.ai` (default)
  5. Click **Save**

  ## How It Works

  The DocuWriter.ai n8n integration provides seamless automation for code documentation, testing, and optimization:

  ### Integration Architecture

  ```mermaid
  graph TB
      subgraph "n8n Workflow"
          TN[Trigger Nodes]
          AN[Action Nodes]
          ON[Other n8n Nodes]
      end
      
      subgraph "DocuWriter.ai Platform"
          API[DocuWriter API]
          AI[AI Processing Engine]
          DB[(User Data & Generations)]
      end
      
      subgraph "External Systems"
          GH[GitHub/GitLab]
          GD[Google Drive]
          SL[Slack/Discord]
          EM[Email Services]
      end
      
      TN -->|Webhook Events| AN
      AN -->|API Requests| API
      API --> AI
      AI --> DB
      API -->|Generated Content| AN
      AN --> ON
      ON --> GH
      ON --> GD
      ON --> SL
      ON --> EM
  ```

  ### Action Node Workflow

  ```mermaid
  sequenceDiagram
      participant W as n8n Workflow
      participant DN as DocuWriter Node
      participant API as DocuWriter API
      participant AI as AI Engine
      
      W->>DN: Source Code + Parameters
      DN->>API: POST /n8n/code-documentation
      Note over API: Authenticate with Bearer Token
      API->>AI: Process Code
      AI->>AI: Generate Documentation/Tests/UML
      AI-->>API: Generated Content
      API-->>DN: Response with Generated Data
      DN-->>W: Formatted Output for Next Node
  ```

  ### Trigger Node Workflow

  ```mermaid
  sequenceDiagram
      participant DW as DocuWriter.ai
      participant WH as Webhook System
      participant TN as Trigger Node
      participant W as n8n Workflow
      
      Note over DW: User generates documentation
      DW->>WH: generation.created event
      WH->>TN: POST webhook with payload
      TN->>TN: Filter by event type
      TN->>TN: Process generation data
      TN-->>W: Trigger workflow execution
      W->>W: Process generation content
  ```

  ## Usage

  The DocuWriter.ai integration provides two main node types:

  ## Action Node

  The DocuWriter.ai action node provides multiple resources and operations for generating content:

  ### Resources

  #### Code Documentation
  Generate comprehensive documentation from source code.

  **Parameters:**
  - `sourceCode` (required): The source code to analyze
  - `filename` (required): Filename for context
    (Mode is always Accurate)
  - `outputLanguage`: Language for documentation (default: English)
  - `documentationType`: Type of documentation to generate

  #### Code Tests
  Generate automated test suites.

  **Parameters:**
  - `sourceCode` (required): The source code to test
  - `filename` (required): Filename for context
  - `testFramework`: Testing framework to use (auto-detect available)
  - `testType`: Type of tests (unit tests, etc.)

  #### UML Diagram
  Create visual diagrams from code structure.

  **Parameters:**
  - `sourceCode` (required): The source code to analyze
  - `filename` (required): Filename for context
  - `diagramType` (required): Type of UML diagram (class, sequence, use_case, activity, component, state, object)

  #### Code Optimization
  Get AI-powered code improvement suggestions.

  **Parameters:**
  - `sourceCode` (required): The source code to optimize
  - `filename` (required): Filename for context
  - `optimizationFocus`: Focus area (all, performance, readability, maintainability, security)

  #### Generations
  Retrieve previously generated content.

  **Operations:**
  - `Get All`: List all generations with optional filtering by type and limit
  - `Get`: Retrieve a specific generation by ID

  #### User Info
  Get account information and remaining credits.

  ## Trigger Node

  The DocuWriter.ai Trigger node allows you to create workflows that respond to events in DocuWriter.ai.

  ### Supported Events

  - **Generation Created**: Triggers when a new generation is created
  - **Generation Updated**: Triggers when a generation is updated

  ### Event Filtering

  - **Filter by Generation Type**: Optionally filter events by specific generation types
  - **Generation Types**: Choose from available types including Documentation, Tests, Optimizer, Converter, Swagger API Docs, Comment, Diagrams, and Git-based generations

  ### Webhook Payload Structure

  ```json
  {
    "event": "generation.created",
    "timestamp": "2024-01-15T10:30:00Z",
    "data": {
      "uuid": "550e8400-e29b-41d4-a716-446655440000",
      "filename": "example.js",
      "generation_type": "[Basic] => Documentation",
      "generated_by_user": "user@example.com",
      "updated_at": "2024-01-15T10:30:00Z",
      "tag": "project-alpha"
    }
  }
  ```

  ## Examples

  ### Basic Code Documentation

  ```json
  {
    "resource": "codeDocumentation",
    "operation": "generate",
    "sourceCode": "function calculateTotal(items) {\n  return items.reduce((sum, item) => sum + item.price, 0);\n}",
    "filename": "calculator.js",
    
  }
  ```

  ### Generate Tests

  ```json
  {
    "resource": "codeTests",
    "operation": "generate",
    "sourceCode": "class User {\n  constructor(name) {\n    this.name = name;\n  }\n}",
    "filename": "User.js",
    "testFramework": "auto-detect"
  }
  ```

  ### Create UML Class Diagram

  ```json
  {
    "resource": "umlDiagram",
    "operation": "generate",
    "sourceCode": "public class Vehicle {\n  private String brand;\n  public void start() {}\n}",
    "filename": "Vehicle.java",
    "diagramType": "class"
  }
  ```

  ## Workflow Examples

  ### Example: Automated Code Quality Pipeline

  ```mermaid
  graph LR
      FU[File Upload Trigger] --> RF[Read File]
      RF --> DOC[Generate Documentation]
      RF --> TEST[Generate Tests]
      RF --> UML[Generate UML]
      RF --> OPT[Optimize Code]
      
      DOC --> REP[Create Quality Report]
      TEST --> REP
      UML --> REP
      OPT --> REP
      
      REP --> SAVE[Save Report]
      REP --> CHECK{Quality Score > 70?}
      
      CHECK -->|Yes| SLACK[✅ Success Notification]
      CHECK -->|No| EMAIL[⚠️ Quality Alert]
      
      SAVE --> GITHUB[Commit to Repository]
  ```

  ### Example: Real-time Generation Processing

  ```mermaid
  graph LR
      DW[DocuWriter.ai] -->|generation.created| WH[Webhook Trigger]
      WH --> FILTER{Filter Event Type}
      
      FILTER -->|Documentation| DOCS[Fetch Generation]
      FILTER -->|Tests| TESTS[Generate Additional Tests]
      
      DOCS --> GD[Save to Google Drive]
      TESTS --> GH[Commit to GitHub]
      
      GD --> NOTIFY[Slack Notification]
      GH --> NOTIFY
  ```

  We provide complete example workflows in the `/examples/workflows/` directory:

  - **[Automated Testing Workflow](./examples/workflows/automated-testing-workflow.json)**: Generate tests, optimize code, and create UML diagrams
  - **[Generation Created Webhook](./examples/workflows/generation-created-webhook.json)**: Process new generations in real-time

  ## API Reference

  ### Response Format

  All DocuWriter.ai API responses follow this format:

  ```json
  {
    "success": true,
    "data": {
      // Generated content and metadata
    }
  }
  ```

  ### Error Handling

  When an error occurs, the response will include error information. The node supports n8n's built-in error handling and will return execution data even on failures when "Continue on Fail" is enabled.

  ## Troubleshooting

  ### Common Issues

  #### Authentication Failed
  **Solution**: Verify your API token in the credentials configuration and ensure it's valid.

  #### Code Too Large
  **Solution**: Break down large files into smaller components or use the "Faster" mode.

  #### No Credits Remaining
  **Solution**: Check your account status and upgrade your DocuWriter.ai subscription if needed.

  ### Debug Mode

  Enable debug logging in n8n to troubleshoot issues:

  1. Check n8n execution logs for detailed error information
  2. Verify request/response data in the execution history
  3. Test credentials using the built-in test functionality

  ## Support

  ### Documentation
  - [n8n Community Forum](https://community.n8n.io)

  ### Contact
  - **Email**: support@docuwriter.ai
  - **GitHub Issues**: [Report bugs](https://github.com/DocuWriter-ai/n8n-nodes-docuwriter-ai/issues)

  ## Contributing

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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

  ## License

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

  ## Changelog

  ### v1.1.1
  - **API Migration Complete**: All endpoints now use the unified GenerationsController
  - Added support for Swagger API generation
  - Added support for Repository listing
  - Enhanced error handling and validation
  - Improved documentation and examples

  ### v1.1.0
  - **BREAKING CHANGE**: Migrated to unified GenerationsController API endpoints
  - Updated all endpoints to use the standardized `/api/generate-*` paths
  - Added support for code comments generation
  - Updated UML diagram generation to use new API
  - Updated generations listing and retrieval to use new API
  - Updated user info endpoint to use new API
  - Improved parameter handling and validation
  - Better consistency with DocuWriter.ai platform API standards

  ### v1.0.8
  - Fixed "Invalid URL" error by properly constructing full API URLs
  - Improved error handling and URL validation
  - Removed unnecessary requestDefaults configuration

  ### v1.0.7
  - Fixed icons not displaying in n8n interface
  - Updated build process to correctly copy SVG icon files to dist directory
  - Added cross-platform copyfiles dependency for better build compatibility

  ### v1.0.2
  - Updated documentation to reflect actual implemented features
  - Removed unimplemented workflow examples
  - Cleaned up README to accurately describe available functionality

  ### v1.0.1
  - Fixed repository URL to point to correct GitHub organization

  ### v1.0.0
  - Initial release
  - Core documentation generation
  - Test suite creation
  - UML diagram generation
  - Code optimization features
  - Generation management
  - User info retrieval
  - Webhook trigger support
  - Complete n8n integration

  ---

  Built with ❤️ by the [DocuWriter.ai](https://www.docuwriter.ai) team

ai_documentation_summary:
  {"purpose":"The DocuWriter.ai n8n node generates AI-powered documentation, test suites, UML diagrams, and code optimization suggestions from source code, and supports real-time triggers based on generation events.","capabilities":["Generate code documentation","Create automated test suites","Generate UML diagrams (class, sequence, use_case, activity, component, state, object)","Provide AI-powered code optimization suggestions","Retrieve previously generated content","Access user account info and credit balance","Support webhook triggers for real-time events"],"authentication":"API key required (Bearer token from DocuWriter.ai account)","commonUseCases":["Automate documentation generation on code commits in CI/CD pipelines","Generate test suites for new features during development","Create UML diagrams for code architecture reviews","Improve code quality with AI-driven optimization suggestions","Maintain up-to-date project documentation automatically"],"limitations":[],"relatedNodes":["Trigger nodes","Action nodes","CI/CD integration nodes","Code analysis nodes","Test generation nodes"]}


node_type: @decisionrules/n8n-nodes-decisionrules.decisionRules
package_name: @decisionrules/n8n-nodes-decisionrules
display_name: DecisionRules
description: DecisionRules Actions
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: decisionrules
author_github_url: https://github.com/decisionrules/n8n-nodes-decisionrules.git
npm_package_name: @decisionrules/n8n-nodes-decisionrules
npm_version: 1.0.5
community_fetched_at: 2026-01-07T20:08:16.134Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "solveRes",
      "options": [
        {
          "name": "Job",
          "value": "jobRes"
        },
        {
          "name": "Management Folder",
          "value": "managementFolderRes"
        },
        {
          "name": "Management Rule",
          "value": "managementRuleRes"
        },
        {
          "name": "Management Tag",
          "value": "managementTagRes"
        },
        {
          "name": "Management Tool",
          "value": "managementToolsRes"
        },
        {
          "name": "Solve",
          "value": "solveRes"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "solve",
      "options": [
        {
          "name": "Solve Rule",
          "value": "solve",
          "action": "Solve rule",
          "description": "Takes the node input, sends it as data to the defined host, and solves a rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "solveRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "startJob",
      "options": [
        {
          "name": "Start Job",
          "value": "startJob",
          "action": "Start a job",
          "description": "Takes the node input, sends it as data to the defined host, and starts a job for an integration flow rule"
        },
        {
          "name": "Cancel Job",
          "value": "cancelJob",
          "action": "Cancel a job",
          "description": "Cancels a running job"
        },
        {
          "name": "Get Job Info",
          "value": "jobInfo",
          "action": "Get job info",
          "description": "Retrieves information about a job's status (e.g., success, failure, or in process) based on its ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "jobRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getRule",
      "options": [
        {
          "name": "Create New Rule Version",
          "value": "createNewRuleVersion",
          "action": "Create a new rule version",
          "description": "Creates a new version of an existing rule"
        },
        {
          "name": "Create Rule",
          "value": "createRule",
          "action": "Create a rule",
          "description": "Creates a new rule"
        },
        {
          "name": "Delete Rule",
          "value": "deleteRule",
          "action": "Delete a rule",
          "description": "Deletes a specific rule or a version of a rule"
        },
        {
          "name": "Get Rule",
          "value": "getRule",
          "action": "Get a rule",
          "description": "Retrieves a specific rule by its ID or alias"
        },
        {
          "name": "Get Rules for Space",
          "value": "getRulesForSpace",
          "action": "Get all rules for a space",
          "description": "Retrieves all rules within the configured space"
        },
        {
          "name": "Lock Rule",
          "value": "lockRule",
          "action": "Lock or unlock a rule",
          "description": "Locks or unlocks a rule to prevent edits"
        },
        {
          "name": "Update Rule",
          "value": "updateRule",
          "action": "Update a rule",
          "description": "Updates the content or properties of a rule"
        },
        {
          "name": "Update Rule Status",
          "value": "updateRuleStatus",
          "action": "Update a rule s status",
          "description": "Changes a rule's status (e.g., to published or pending)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "managementRuleRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTags",
      "options": [
        {
          "name": "Delete Tags",
          "value": "deleteTags",
          "action": "Delete tags from a rule",
          "description": "Removes one or more tags from a rule"
        },
        {
          "name": "Get Rules by Tags",
          "value": "getTags",
          "action": "Get tags for a rule",
          "description": "Retrieves all tags associated with a rule"
        },
        {
          "name": "Update Tags",
          "value": "updateTags",
          "action": "Update tags for a rule",
          "description": "Adds or overwrites tags for a rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "managementTagRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getFolderStructure",
      "options": [
        {
          "name": "Create Folder",
          "value": "createFolder",
          "action": "Create a folder",
          "description": "Creates a new folder at a specified location"
        },
        {
          "name": "Delete Folder",
          "value": "deleteFolder",
          "action": "Delete a folder",
          "description": "Deletes a folder and optionally all its contents"
        },
        {
          "name": "Export Folder",
          "value": "exportFolder",
          "action": "Export a folder",
          "description": "Exports the contents of a folder as a JSON object"
        },
        {
          "name": "Find Folder or Rule",
          "value": "findFolderOrRule",
          "action": "Find a folder or rule",
          "description": "Finds a folder or rule by various attributes"
        },
        {
          "name": "Get Folder Structure",
          "value": "getFolderStructure",
          "action": "Get the folder structure",
          "description": "Retrieves the folder and rule hierarchy"
        },
        {
          "name": "Import Folder",
          "value": "importFolder",
          "action": "Import a folder",
          "description": "Imports a folder structure from a JSON object"
        },
        {
          "name": "Move Folder",
          "value": "moveFolder",
          "action": "Move a folder or rule",
          "description": "Moves a folder or rule to a different location"
        },
        {
          "name": "Rename Folder",
          "value": "renameFolder",
          "action": "Rename a folder",
          "description": "Renames an existing folder"
        },
        {
          "name": "Update Node Folder Structure",
          "value": "updateNodeFolderStructure",
          "action": "Update a node folder structure",
          "description": "Updates the structure of a folder or node"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "managementFolderRes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "findDependencies",
      "options": [
        {
          "name": "Find Dependencies",
          "value": "findDependencies",
          "action": "Find rule dependencies",
          "description": "Finds all dependencies for a given rule"
        },
        {
          "name": "Find Duplicates",
          "value": "findDuplicates",
          "action": "Find duplicates in a rule",
          "description": "Finds duplicate conditions within a rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "managementToolsRes"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Solve Rule",
      "value": "solve",
      "action": "Solve rule",
      "description": "Takes the node input, sends it as data to the defined host, and solves a rule"
    },
    {
      "name": "Start Job",
      "value": "startJob",
      "action": "Start a job",
      "description": "Takes the node input, sends it as data to the defined host, and starts a job for an integration flow rule"
    },
    {
      "name": "Cancel Job",
      "value": "cancelJob",
      "action": "Cancel a job",
      "description": "Cancels a running job"
    },
    {
      "name": "Get Job Info",
      "value": "jobInfo",
      "action": "Get job info",
      "description": "Retrieves information about a job's status (e.g., success, failure, or in process) based on its ID"
    },
    {
      "name": "Create New Rule Version",
      "value": "createNewRuleVersion",
      "action": "Create a new rule version",
      "description": "Creates a new version of an existing rule"
    },
    {
      "name": "Create Rule",
      "value": "createRule",
      "action": "Create a rule",
      "description": "Creates a new rule"
    },
    {
      "name": "Delete Rule",
      "value": "deleteRule",
      "action": "Delete a rule",
      "description": "Deletes a specific rule or a version of a rule"
    },
    {
      "name": "Get Rule",
      "value": "getRule",
      "action": "Get a rule",
      "description": "Retrieves a specific rule by its ID or alias"
    },
    {
      "name": "Get Rules for Space",
      "value": "getRulesForSpace",
      "action": "Get all rules for a space",
      "description": "Retrieves all rules within the configured space"
    },
    {
      "name": "Lock Rule",
      "value": "lockRule",
      "action": "Lock or unlock a rule",
      "description": "Locks or unlocks a rule to prevent edits"
    },
    {
      "name": "Update Rule",
      "value": "updateRule",
      "action": "Update a rule",
      "description": "Updates the content or properties of a rule"
    },
    {
      "name": "Update Rule Status",
      "value": "updateRuleStatus",
      "action": "Update a rule s status",
      "description": "Changes a rule's status (e.g., to published or pending)"
    },
    {
      "name": "Delete Tags",
      "value": "deleteTags",
      "action": "Delete tags from a rule",
      "description": "Removes one or more tags from a rule"
    },
    {
      "name": "Get Rules by Tags",
      "value": "getTags",
      "action": "Get tags for a rule",
      "description": "Retrieves all tags associated with a rule"
    },
    {
      "name": "Update Tags",
      "value": "updateTags",
      "action": "Update tags for a rule",
      "description": "Adds or overwrites tags for a rule"
    },
    {
      "name": "Create Folder",
      "value": "createFolder",
      "action": "Create a folder",
      "description": "Creates a new folder at a specified location"
    },
    {
      "name": "Delete Folder",
      "value": "deleteFolder",
      "action": "Delete a folder",
      "description": "Deletes a folder and optionally all its contents"
    },
    {
      "name": "Export Folder",
      "value": "exportFolder",
      "action": "Export a folder",
      "description": "Exports the contents of a folder as a JSON object"
    },
    {
      "name": "Find Folder or Rule",
      "value": "findFolderOrRule",
      "action": "Find a folder or rule",
      "description": "Finds a folder or rule by various attributes"
    },
    {
      "name": "Get Folder Structure",
      "value": "getFolderStructure",
      "action": "Get the folder structure",
      "description": "Retrieves the folder and rule hierarchy"
    },
    {
      "name": "Import Folder",
      "value": "importFolder",
      "action": "Import a folder",
      "description": "Imports a folder structure from a JSON object"
    },
    {
      "name": "Move Folder",
      "value": "moveFolder",
      "action": "Move a folder or rule",
      "description": "Moves a folder or rule to a different location"
    },
    {
      "name": "Rename Folder",
      "value": "renameFolder",
      "action": "Rename a folder",
      "description": "Renames an existing folder"
    },
    {
      "name": "Update Node Folder Structure",
      "value": "updateNodeFolderStructure",
      "action": "Update a node folder structure",
      "description": "Updates the structure of a folder or node"
    },
    {
      "name": "Find Dependencies",
      "value": "findDependencies",
      "action": "Find rule dependencies",
      "description": "Finds all dependencies for a given rule"
    },
    {
      "name": "Find Duplicates",
      "value": "findDuplicates",
      "action": "Find duplicates in a rule",
      "description": "Finds duplicate conditions within a rule"
    }
  ]

npm_readme:
  # n8n-nodes-decisionrules

  This is an n8n community node that integrates DecisionRules with your n8n workflows, so you can execute business rules, run integration flows, and automate complex logic-based tasks.

  [DecisionRules](https://www.decisionrules.io) is a no-code business rules engine that allows you to manage and execute complex logic without programming. n8n is a fair-code licensed tool for workflow automation that allows you to connect various services.

  [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 (self-hosted)

  To install the DecisionRules 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: `@decisionrules/n8n-nodes-decisionrules` to install the latest version. To install a specific version (e.g 0.4.4) enter `@decisionrules/n8n-nodes-decisionrules@0.4.4`. All versions are available [here](https://www.npmjs.com/package/@decisionrules/n8n-nodes-decisionrules?activeTab=versions)
  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 **DecisionRules** in the community node registry.
  3. Click **Install node** to add the decisionrules 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 DecisionRules node, make sure the installation of verified community nodes is enabled. 


  ## Installation (development and contributing) 
  To contribute to our DecisionRules node, you can install the node and link it to your n8n instance. Follow the steps below:

  ### ⚙️ Prerequisites

  - Node.js (recommended: v18.10+)
  - pnpm installed globally

  ---

  ### 1. Initialize n8n locally

  Begin by installing and running n8n to create the necessary configuration directory (`~/.n8n`):

  ```bash
  npm install -g n8n # Skip this step if you already have n8n installed globally
  n8n start # This will generate the ~/.n8n directory
  ```

  ### 2. Clone and build the Node Package

  Install dependencies and build the node:

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

  ### 3. Link the custom node to n8n

  Create the `custom` directory inside `~/.n8n` (if it doesn't exist), then symlink your local node package:

  ```bash
  mkdir -p ~/.n8n/custom
  ln -s /full/path/to/n8n-nodes-decisionrules ~/.n8n/custom/n8n-nodes-decisionrules # replace full/path/to with the path to your n8n-nodes-decisionrules directory
  ```

  > **Note:** Use the absolute path in the symlink for compatibility.

  ### 4. Restart n8n

  Now that your custom node is linked, start n8n again:

  ```bash
  n8n start
  ```

  ---

  ### 🔁 Making changes

  If you make any changes to your custom node locally, remember to rebuild and restart:

  ```bash
  pnpm run build
  n8n start
  ```

  ---

  ## Operations

  This node supports the following operations:
  ### Rules
  - Solve Rule
  Takes the input data from a previous node and sends it to the DecisionRules API to solve a rule (e.g., decision table, decision tree). The node then outputs the result from the API.
  ### Integration Flows
  - Start Job:
  Takes the input data from a previous node to start a new asynchronous job for a specific Integration Flow rule. The node outputs the job initiation details.
  - Get Job Info:
  Retrieves the status and information (e.g., success, failure, in-process) for a specific job using its Job ID.
  - Cancel Job:
  Cancels a running or waiting job using its Job ID.

  ### Management
  The Management operations allow you to programmatically manage your DecisionRules rules, folders, and tags.

  #### Rule Management
  - **Get Rule**: Retrieves all information about a rule, including its content, version, input/output schemas. Can fetch by rule ID, alias, or path.
  - **Create Rule**: Creates a new rule based on the request body.
  - **Create New Rule Version**: Creates a new version of an existing rule with modifications.
  - **Update Rule**: Modifies an existing rule (cannot change rule ID, version, alias, or last update date).
  - **Update Rule Status**: Changes rule status between 'pending' and 'published'.
  - **Delete Rule**: Deletes a rule by ID, alias, or path.
  - **Lock Rule**: Locks or unlocks a rule to prevent/allow modifications.
  - **Get Rules For Space**: Retrieves all rules and rule flows in the current space.

  #### Rule Analysis
  - **Find Dependencies**: Identifies all dependencies for a specific rule.
  - **Find Duplicates**: Finds duplicate rules in decision tables.

  #### Tag Management
  - **Get Tags**: Retrieves all rules/rule flows with specific tags.
  - **Update Tags**: Adds tags to a rule (all versions or specific version).
  - **Delete Tags**: Removes tags from a rule (all versions or specific version).

  #### Folder Management
  - **Get Folder Structure**: Retrieves the folder hierarchy and contents by node ID or path.
  - **Create Folder**: Creates a new folder structure under a target location.
  - **Update Node Folder Structure**: Modifies existing folder structure and moves rules.
  - **Delete Folder**: Deletes a folder and optionally all its contents.
  - **Rename Folder**: Changes the name of a folder.
  - **Move Folder**: Moves folders and/or rules to a different parent location.
  - **Export Folder**: Exports a folder with all its rules.
  - **Import Folder**: Imports a folder structure with rules into a target location.
  - **Find Folder or Rule**: Searches for folders and rules by various attributes (name, ID, tags, type, etc.).

  ---

  ## Credentials

  To use this node, you will need to authenticate with the DecisionRules Solve API and specify host URL.

  To configure your credentials:
  1.  Log in to your DecisionRules account.
  2.  To specify the host correctly you can use the URL that you logged in by and you change app to api.
  (app.decisionrules.io -> api.decisionrules.io)
  2.  Navigate to **Space > API Keys > Solver** to find your API Token.
  3.  In n8n, go to the Credentials section and add new credentials for the 'DecisionRules API'.
  4.  Enter your API Token and host in the respective field.

  ### For Management API (Management Operations)

  To configure your Management API credentials:
  1. Log in to your DecisionRules account.
  2. Use the same host format as above (e.g., `api.decisionrules.io`).
  3. Navigate to **Space > API Keys > Management** to find your Management API Token.
  4. In n8n, add the Management API credentials.
  5. Enter your Management API Token and host in the respective fields.


  ---

  ## Compatibility

  This node has been tested with n8n version 1.16.3.

  ---

  ## Usage

  This node is designed to integrate your n8n workflows with the DecisionRules engine. Here's how to understand its behavior:

  ### Operations Using Input Data (`Solve Rule`, `Start Job`, `Create Rule`, `Create New Rule Version`, `Update Rule`, `Create Folder`, `Update Node Folder Structure`, `Import Folder`)

  These operations process data from previous nodes in your workflow. The JSON output of a preceding node will be used as the input payload for the DecisionRules API call.

  **Example:** You can have an 'HTTP Request' node that fetches user data. When you connect it to the DecisionRules node and select the `Solve Rule` operation, the fetched user data is sent to your rule for evaluation. The result of that rule is then available as the output of the DecisionRules node for the next steps in your workflow.

  **Management Example:** You can prepare a rule definition in JSON format in a previous node, then use `Create Rule` to add it to your DecisionRules space.

  ### Operations Using Node Parameters (All other operations)

  Operations like `Get Job Info`, `Cancel Job`, `Get Rule`, `Delete Rule`, etc. do **not** use the data from previous nodes. Instead, they rely on parameters you configure directly in the node's properties panel in the n8n UI, such as `Job ID`, `Rule ID`, `Node ID`, or `Path`.

  **Example:** After using a `Start Job` operation, you can use a 'Wait' node and then a `Get Job Info` node to check the status of that job. You would pass the `jobId` from the `Start Job` output into the 'Job ID' field of the `Get Job Info` node.

  ---

  ## Troubleshooting

  ### Common issues

  ---

  ### Authentication errors
  - Verify your **Host** is correct (e.g., `https://api.decisionrules.io`).
  - Verify your **Solver API Key** is correct.
  - Verify your **Management API Key** is correct for Management operations.

  ---

  ### Resource Not Found
  - Verify the **Rule ID**, **rule alias**, or **Job ID** is correct.
  - Check if the resource exists in the **DecisionRules space** associated with your API key.
  - Ensure you have access to the resource with the provided key.

  ---

  ### Operation failures
  - Check that the **input parameters** from the previous node are a valid JSON object.
  - For **Solve Rule** and **Start Job**, ensure the incoming data structure matches the expected input model for your rule in DecisionRules.
  - For **Create Rule**, **Update Rule**, and **Create New Rule Version**, ensure the rule definition follows the correct format.
  - For **Folder operations**, verify the folder structure and node IDs are valid.
  - Review the **error message** in the n8n output panel for detailed error messages from the DecisionRules API.

  ---

  ## Resources

  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [DecisionRules Documentation](https://docs.decisionrules.io/doc)

  ---

ai_documentation_summary:
  {"purpose":"The DecisionRules node enables n8n users to integrate with the DecisionRules business rules engine, allowing them to execute logic-based decisions, manage rules and flows, and automate complex workflows without coding.","capabilities":["Solve a rule (e.g., decision table or decision tree) using input data","Start, retrieve status of, and cancel asynchronous integration flow jobs","Manage rules including create, update, delete, lock, and version control","Analyze rule dependencies and duplicates","Manage tags for rules (add, update, delete)","Manage folder structure (create, update, delete, rename, move, export, import)"],"authentication":"API key required (via credentials configuration)","commonUseCases":["Automating decision-making processes based on business rules","Triggering downstream workflows based on rule outcomes","Managing and versioning business rules in a no-code environment","Monitoring and controlling the status of rule execution jobs","Organizing and maintaining rule sets with folders and tags"],"limitations":[],"relatedNodes":["n8n core workflow nodes","API nodes","Trigger nodes","Action nodes"]}


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

updated_at: 2026-01-07 20:08:16
author_name: dumitrucucu
author_github_url: https://github.com/agency-ai-solutions/
npm_package_name: n8n-nodes-agencii
npm_version: 0.1.5
community_fetched_at: 2026-01-07T20:08:16.135Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "chat",
      "options": [
        {
          "name": "Chat",
          "value": "chat"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send message to agency",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/",
              "method": "POST"
            }
          },
          "description": "Send a message to your agency on the Agencii.ai platform and receive a response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "hidden",
      "default": "getResponse",
      "routing": {
        "send": {
          "type": "body",
          "property": "operation"
        }
      },
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ],
          "operation": [
            "sendMessage"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send message to agency",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/",
          "method": "POST"
        }
      },
      "description": "Send a message to your agency on the Agencii.ai platform and receive a response"
    }
  ]

npm_readme:
  # n8n-nodes-agencii

  This is an n8n community node for the **Agencii.ai Platform**. It connects your n8n workflows to your agency-swarm powered agencies on the Agencii.ai platform.

  [Agencii.ai](https://agencii.ai) is an AI automation platform that uses [agency-swarm](https://github.com/VRSEN/agency-swarm) to provide infrastructure for building and deploying AI agent agencies. The platform enables you to create multi-agent systems where specialized agents work together to accomplish complex tasks.

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

  ## How It Works

  This integration connects your n8n workflows directly to your agencies on the Agencii.ai platform:

  1. **Platform Configuration**: In your Agencii.ai dashboard, you configure n8n integration settings for your agency
  2. **Integration ID**: Each agency gets a unique n8n integration ID that identifies which agency to route requests to
  3. **Default Agent Routing**: When you send a message through this node, the platform routes it to your agency's default agent
  4. **Agency-Swarm Processing**: Your agency (powered by agency-swarm) processes the request using its configured agents and tools
  5. **Response**: The agency's response is returned to your n8n workflow for further processing

  ## Table of Contents

  - [How It Works](#how-it-works)
  - [Installation](#installation)
  - [Operations](#operations)
  - [Design Principles](#design-principles)
  - [Credentials](#credentials)
  - [Usage](#usage)
  - [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.

  ### Quick Install

  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Select **Install**
  3. Enter `n8n-nodes-agencii`
  4. Agree to the risks and select **Install**

  After installation, the **Agencii** node will be available in your node palette.

  ## Operations

  The Agencii node supports the following operation:

  ### Send Message

  Send a message to your agency on the Agencii.ai platform and receive a response from your agency's default agent.

  **Parameters:**

  - **Message** (required): The message or task to send to your agency
  - **Session ID** (optional): Identifier to continue an existing conversation. If not provided, a new session is created automatically.
  - **Integration ID** (required): The specific Integration ID for the agency you want to connect to

  Note: Model selection, temperature, max tokens, tools, and agent behavior are configured on the Agencii.ai platform (see [Agency Swarm Overview](https://agency-swarm.ai/welcome/overview)).

  **Returns:**

  - `text`: The agency's response to your message
  - `response`: Alias for `text` (for backwards compatibility)
  - `sessionId`: The session identifier (for continuing the conversation in follow-up calls)
  - `n8nIntegrationId`: The integration ID used
  - Additional metadata fields as provided by the backend

  ## Design Principles

  - Connectivity, not configuration:
    - This node connects n8n to your agencies on the Agencii.ai platform. It does not configure agent behavior.
  - Platform-managed tuning:
    - Model, temperature, max tokens, system prompts, tools, and multi-agent logic are defined on the platform.
  - Fixed endpoint:
    - The endpoint is fixed and not user-editable in this node. Routing to the correct agency is handled via your Integration ID.
  - Default agent routing:
    - Messages are routed to your agency’s default agent unless otherwise configured on the platform.
  - Session-focused:
    - Provide `Session ID` to continue context; omit it to start a new session automatically.

  ## Credentials

  To use this node, you need to configure your Agencii.ai Platform credentials:

  ### Prerequisites

  1. Sign up for an Agencii.ai account at [agencii.ai](https://agencii.ai)
  2. Get your API key from your Agencii dashboard
  3. For each workflow, you'll need the specific Integration ID for the agency you want to connect to

  ### Setting Up Credentials in n8n

  1. In n8n, go to **Credentials** and click **Add Credential**
  2. Search for **Agencii API** and select it
  3. Fill in the following field:
     - **API Key**: Your Agencii.ai API key for authentication
  4. Click **Save**

  ### Configuring Each Node

  Each Agencii node instance requires an **Integration ID** parameter that specifies which agency to connect to. This allows you to:

  - Connect different nodes to different agencies in the same workflow
  - Reuse the same API credentials across multiple agencies
  - Easily switch between agencies by changing the Integration ID parameter

  ### Authentication Method

  The node uses Bearer token authentication (API Key in header) and sends your Integration ID as a URL query parameter to route requests to the correct agency on the Agencii.ai platform.

  ## Usage

  ### Single Request

  Use the **Send Message** operation to send a single message to your agency and receive a response.

  **Example Use Case:** Task execution via agency

  ```
  1. Add an Agencii node to your workflow
  2. Select Resource: Chat
  3. Select Operation: Send Message
  4. Set Integration ID: Your agency's Integration ID from Agencii dashboard
  5. Set Message: "Analyze the customer feedback data and provide a summary: {{$json.feedbackData}}"
  6. Leave Session ID empty (a new session will be created automatically)
  ```

  **Result:** Your agency processes the request using its configured agents and tools, returning the result.

  ### Multi-Turn Conversation

  For conversational workflows where context matters, reuse the `sessionId` from previous calls in subsequent **Send Message** calls to maintain session continuity.

  **Example Use Case:** Interactive data analysis with context

  ```
  Step 1: Initial request
  - Add an Agencii node
  - Select Resource: Chat
  - Select Operation: Send Message
  - Set Integration ID: Your agency's Integration ID
  - Set Message: "Analyze this sales data and identify trends: {{$json.salesData}}"
  - Leave Session ID empty (stores the sessionId in output)

  Step 2: Follow-up questions
  - Add another Agencii node
  - Select Resource: Chat
  - Select Operation: Send Message
  - Set Integration ID: Same Integration ID as Step 1
  - Set Message: "Based on those trends, what should our Q4 strategy be?"
  - Set Session ID: {{$node["Previous Node"].json.sessionId}}
  - Your agency will remember the previous analysis and provide contextual recommendations
  ```

  **Benefits:**

  - Your agency maintains conversation context across multiple interactions
  - More natural and contextual task execution
  - Efficient processing as the agency remembers prior exchanges

  ### Advanced Patterns

  #### Conditional Session Management

  Use an IF node to check if a `sessionId` exists. If yes, reuse it for conversation continuity; if no, a new session will be created automatically.

  #### Session Persistence

  Store `sessionId` values in n8n's built-in data storage or an external database to maintain long-running conversations with your agency across multiple workflow executions.

  ### Understanding Agency Routing

  When you send a message through this node:

  1. Your **Integration ID** identifies which agency to route to
  2. The message is sent to your agency's **default agent** (configured in Agencii.ai platform)
  3. Your agency, powered by **agency-swarm**, coordinates between its agents to process the request
  4. Each agent has specific tools and capabilities configured in your agency setup
  5. The agency returns the final response to your n8n workflow

  **Note:** Agent behavior, system prompts, tools, and capabilities are all configured within the Agencii.ai platform, not in this n8n node. The node simply connects n8n to your pre-configured agency.

  ## Compatibility

  - **Minimum n8n version:** 1.0.0
  - **Tested on:** n8n v1.0.0+
  - **Node API Version:** 1

  This node uses n8n's declarative routing feature for simplified API integration.

  ## Resources

  - [n8n Documentation](https://docs.n8n.io/)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/#community-nodes)
  - [Agencii.ai Platform](https://agencii.ai)
  - [Agency Swarm Overview](https://agency-swarm.ai/welcome/overview)
  - [Agency-Swarm Framework](https://github.com/VRSEN/agency-swarm)
  - [Agencii.ai Documentation](https://docs.agencii.ai)

  ## Support

  For issues, questions, or feature requests:

  - Open an issue on [GitHub](https://github.com/agency-ai-solutions/n8n-nodes-agencii/issues)
  - Join the [n8n community](https://community.n8n.io/)

  ## Version History

  ### 0.1.0 (Initial Release)

  - ✨ Initial implementation of Agencii.ai Platform integration for n8n
  - 🚀 Support for **Send Message** operation: Send messages to your agency-swarm powered agencies
  - 🔐 Secure API authentication via Integration ID (routes to specific agency)
  - 🤖 Direct integration with agency-swarm infrastructure on Agencii.ai
  - 📊 Response includes `text`, `response` (alias), and `sessionId` fields
  - 💬 Session management for multi-turn conversations with agencies
  - 📝 Comprehensive documentation and workflow examples

  ## License

  [MIT](LICENSE)

  ## Contributing

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

ai_documentation_summary:
  {"purpose":"The Agencii node enables n8n workflows to send messages to AI agency systems on the Agencii.ai platform, where multi-agent systems process the request and return a response, supporting both single-task execution and multi-turn conversations.","capabilities":["Send a message to an agency on Agencii.ai","Maintain conversation context using Session ID","Route requests to specific agencies via Integration ID","Support for multi-agent task processing powered by agency-swarm"],"authentication":"Bearer token authentication using an API key provided in the Agencii credentials, with the Integration ID passed as a URL query parameter for routing","commonUseCases":["Executing complex tasks via AI agent agencies","Interactive conversations with context persistence","Automated data analysis or customer feedback summarization","Connecting workflow steps to specialized AI agents within an agency"],"limitations":["Model parameters (e.g., temperature, max tokens) are configured on the Agencii platform, not in the node","No user-editable endpoint or custom routing options","Default agent routing is used unless configured otherwise on the platform","Session continuity requires manual management of Session ID"],"relatedNodes":["n8n-nodes-base.chat","n8n-nodes-base.function","n8n-nodes-base.httpRequest"]}


node_type: @zohomail/n8n-nodes-zohocalendar.zohoCalendar
package_name: @zohomail/n8n-nodes-zohocalendar
display_name: Zoho Calendar
description: Consume Zoho Calendar API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: zohomail
author_github_url: https://github.com/zohomail/zoho_calendar_n8n.git
npm_package_name: @zohomail/n8n-nodes-zohocalendar
npm_version: 1.0.3
community_fetched_at: 2026-01-07T20:08:16.135Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "event",
      "options": [
        {
          "name": "Event",
          "value": "event"
        }
      ],
      "required": true,
      "displayName": "Resource"
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create an Event",
          "value": "create",
          "action": "Create New Event",
          "description": "Creates an event in the specified calendar."
        },
        {
          "name": "Update an Event",
          "value": "update",
          "action": "Update Event",
          "description": "Updates an event in the specified calendar."
        },
        {
          "name": "Delete an Event",
          "value": "delete",
          "action": "Delete Event",
          "description": "Deletes an event from the specified calendar."
        },
        {
          "name": "Quick Add an Event",
          "value": "quick_event",
          "action": "Quick Add Event",
          "description": "Creates an event from a piece of text."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "event"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create an Event",
      "value": "create",
      "action": "Create New Event",
      "description": "Creates an event in the specified calendar."
    },
    {
      "name": "Update an Event",
      "value": "update",
      "action": "Update Event",
      "description": "Updates an event in the specified calendar."
    },
    {
      "name": "Delete an Event",
      "value": "delete",
      "action": "Delete Event",
      "description": "Deletes an event from the specified calendar."
    },
    {
      "name": "Quick Add an Event",
      "value": "quick_event",
      "action": "Quick Add Event",
      "description": "Creates an event from a piece of text."
    }
  ]

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

  # Zoho Calendar integration with n8n
  Zoho Calendar is an efficient workplace tool that helps you stay on track with your schedules, meetings, and events. n8n's integration with Zoho Calendar helps you to align with your business processes. You can custom-design your workflow by applying triggers and actions to automate your business needs.
  To learn more about n8n
  [n8n homepage](https://n8n.io/).
  To learn more about Zoho Calendar
  [Zoho Calendar homepage](https://calendar.zoho.com/).
  In case of any technical queries 
  [Contact sales](https://www.zoho.com/calendar/contact.html)
  ## Pre-requisites
  - n8n admin login account (https://app.n8n.cloud/login)
  - Zoho Mail account
  - A Verified domain added to the Zoho Mail account
  ## Installation 
  You can install the nodes for n8n via [npm](https://www.npmjs.com/) with the package name as n8n-nodes-zohocalendar.
  - To install :
     - Log in to your n8n account.
     - Navigate to more options->Settings->Community nodes->Install.
     - Enter the package name (n8n-nodes-zohocalendar)

  ## Configuration 
  Follow the steps below to integrate Zoho Calendar from n8n.
  - Log in to your n8n account.
  - Select Create Credential -> Add Credential dialog box -> Enter Zoho CalendarOAuth2 API -> Click Continue.
  - Copy the Authorized Redirection URL from the connection page.
  - Access the [Zoho Developer Console](https://api-console.zoho.com/) to create a new Client ID and Client Secret to establish the connection between n8n and Zoho Calendar.
  - Click on Get Started if you have no existing Client. If you have an existing client, click on Add Client in the top-right corner. 
  Select Server-based Applications in the Client Type window.
  - Provide the appropriate Client Name and your domain in the Homepage URL along with the Authorized Redirect URL copied from the Connection page.
  - Click Create to generate the Client ID and Client Secret.
  - Enter the Client ID and Client secret in the Connection Page and click Connect my account.
  - Now, the connection between n8n and Zoho Calendar is established, and the next step is to create your workflow.
  - Click Create Workflow -> Add first step -> search and select Zoho calendar on the right pane.
  - Build your desired workflow with the list of actions (Create, Delete, Quick add, or Update an event) and triggers (Event Created, Event Deleted, or Event Updated).
  - Once the workflow is created, you can test it by selecting the Test Workflow option.
  ## Troubleshooting 
  Write to us in case of any queries
  [Contact support](support@zohocalendar.com)
  ### Description
  This page explains the integration of Zoho Calendar with n8n. n8n is a powerful, open-source workflow automation software that allows you to connect with different apps and automate tasks with ease.

  For more information on Zoho Calendar : https://www.zoho.com/calendar/
  ### Required
  - Zoho Calendar account and n8n admin account.
  - Module installation and configuration:
  - Information on how the integration between Zoho Calendar and n8n can be made is found in this Readme file.
  - For further queries, visit : https://www.zoho.com/calendar/contact.html

ai_documentation_summary:
  {"purpose":"The Zoho Calendar node enables automation of calendar-related tasks in n8n by integrating with the Zoho Calendar API, allowing users to create, update, delete, or trigger workflows based on events such as creation, deletion, or updates.","capabilities":["Create events","Delete events","Update events","Quick add events","Trigger on event created","Trigger on event deleted","Trigger on event updated"],"authentication":"OAuth2 with Client ID and Client Secret obtained from Zoho Developer Console","commonUseCases":["Automating meeting scheduling based on user input","Notifying team members when events are created or updated","Syncing calendar events with other tools in the workflow","Cleaning up outdated or deleted events"],"limitations":[],"relatedNodes":["Zoho Mail","Trigger nodes","Action nodes"]}


node_type: @neosapience/n8n-nodes-typecast.typecast
package_name: @neosapience/n8n-nodes-typecast
display_name: Typecast
description: Interact with Typecast TTS API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: neosapience-owner
author_github_url: https://github.com/neosapience/n8n-nodes-typecast.git
npm_package_name: @neosapience/n8n-nodes-typecast
npm_version: 1.0.2
community_fetched_at: 2026-01-07T20:08:16.136Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "speech",
      "options": [
        {
          "name": "Speech",
          "value": "speech"
        },
        {
          "name": "Voice",
          "value": "voice"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a voice",
          "description": "Get details of a specific voice model"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get all voices",
          "description": "Get all available voice models"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "textToSpeech",
      "options": [
        {
          "name": "Text to Speech",
          "value": "textToSpeech",
          "action": "Convert text to speech",
          "description": "Convert text to speech using a specified voice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "speech"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a voice",
      "description": "Get details of a specific voice model"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get all voices",
      "description": "Get all available voice models"
    },
    {
      "name": "Text to Speech",
      "value": "textToSpeech",
      "action": "Convert text to speech",
      "description": "Convert text to speech using a specified voice"
    }
  ]

npm_readme:
  # n8n-nodes-typecast

  [![npm version](https://img.shields.io/npm/v/@neosapience/n8n-nodes-typecast.svg)](https://www.npmjs.com/package/@neosapience/n8n-nodes-typecast)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

  Integrate [Typecast](https://typecast.ai/) AI TTS into your [n8n](https://n8n.io/) workflows with this community node.

  ## Features

  - **Voice Resource**
  	- Get Many: List all available voice models
  	- Get: Retrieve details of a specific voice model
  - **Speech Resource**
  	- Text to Speech: Convert text to speech using a selected voice

  ## Node Structure

  - Node: `Typecast`
  	- Resources: `voice`, `speech`
  	- Operations:
  		- `voice`: `getMany`, `get`
  		- `speech`: `textToSpeech`

  ## Credentials Setup

  1. Get your API key from [Typecast Dashboard](https://typecast.ai/developers)
  2. In n8n, add new credentials of type **Typecast API**
  3. Enter your API key

  ## Usage Example

  1. Add the **Typecast** node to your workflow
  2. Select a resource and operation (e.g., Speech > Text to Speech)
  3. Provide required parameters (e.g., Voice ID, Text)
  4. Connect and run your workflow

  ## Installation

  ### Via npm

  ```bash
  npm install @neosapience/n8n-nodes-typecast
  ```

  ### Via n8n Community Nodes

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

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

  ```
  @neosapience/n8n-nodes-typecast
  ```

  ## Compatibility

  - n8n v1.0+

  ## Development

  ```bash
  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Lint & format
  npm run lint
  npm run format

  # Run development mode
  npm run dev
  ```

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Typecast API Docs](https://typecast.ai/docs/api-reference/endpoint/text-to-speech/text-to-speech)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"The Typecast node integrates Typecast's AI Text-to-Speech (TTS) API into n8n workflows, enabling users to convert text into speech using various voice models.","capabilities":["List all available voice models","Retrieve details of a specific voice model","Convert text to speech using a selected voice model"],"authentication":"API key required (obtained from the Typecast Dashboard)","commonUseCases":["Generating audio files from text for customer support messages","Creating voiceovers for videos or presentations","Automating speech generation in marketing or educational content"],"limitations":[],"relatedNodes":["Text to Speech nodes","Voice selection nodes","Audio processing nodes"]}


node_type: n8n-nodes-airparser.airparser
package_name: n8n-nodes-airparser
display_name: Airparser
description: Extract structured data from emails, PDFs, images, and other documents
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-01-07 20:08:16
author_name: andrew_io
author_github_url: https://github.com/Airparser/
npm_package_name: n8n-nodes-airparser
npm_version: 0.2.1
community_fetched_at: 2026-01-07T20:08:16.136Z
ai_summary_generated_at: 2026-01-08 10:45:32
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Document",
          "value": "document"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "importFile",
      "options": [
        {
          "name": "Import Document From File",
          "value": "importFile",
          "action": "Import a binary file into an inbox and extract structured data",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            }
          },
          "description": "Import a binary file into an inbox and extract structured data"
        },
        {
          "name": "Import Text/HTML Document",
          "value": "importTextHtml",
          "action": "Import a text html document into an inbox and extract structured data",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            }
          },
          "description": "Import a text/html document into an inbox and extract structured data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Import Document From File",
      "value": "importFile",
      "action": "Import a binary file into an inbox and extract structured data",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        }
      },
      "description": "Import a binary file into an inbox and extract structured data"
    },
    {
      "name": "Import Text/HTML Document",
      "value": "importTextHtml",
      "action": "Import a text html document into an inbox and extract structured data",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        }
      },
      "description": "Import a text/html document into an inbox and extract structured data"
    }
  ]

npm_readme:
  # Airparser n8n Node

  > 🧩 Official n8n Node to interact with [Airparser](https://airparser.com): import documents and extract structured data from emails, PDFs, images, and other documents.

  [About](#about)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Usage](#usage)  
  [Resources](#resources)

  ## About

  **Airparser** is a powerful document parsing service that extracts structured data from emails, PDFs, images, and other documents using AI and machine learning.

  This official **n8n Node** allows you to:

  ✅ Import documents into Airparser for parsing  
  ✅ Automatically trigger workflows when documents are parsed  
  ✅ Extract structured data and use it in your automation workflows

  ## Operations

  ### Airparser Actions

  - **Import Document From File**
    - Use when you have a binary file (PDF, image, email attachment, etc.)
    - Example: Send files uploaded to a Google Drive folder to Airparser for data extraction
    - Automatically extracts structured data from the document

  - **Import Text/HTML Document**
    - Use when you have HTML pages, email content, or plain text
    - Example: Parse HTML from a website or email body content
    - Perfect for extracting data from web pages or text-based content

  ### Airparser Trigger

  - **Document Parsed**
    - Automatically starts your workflow when a document is parsed in Airparser
    - Receives the extracted data and passes it to the next node
    - Built-in security to protect your webhook

  ## Credentials

  ### Airparser API Key

  1. Sign in to your [Airparser account](https://app.airparser.com/account)
  2. Go to your account settings
  3. Copy your **API Key**

  In n8n:

  - Click **"Add Credential"** and search for **"Airparser API"**
  - Paste your API Key

  For more information, visit the [Airparser documentation](https://help.airparser.com/).

  ## Usage

  ### Airparser Trigger

  **Quick Start:**

  1. Add the **Airparser Trigger** node to your workflow
  2. Select **"Document processed"** as the event
  3. Choose the **Inbox** where you want to receive events
  4. Activate your workflow

  That's it! Your workflow will now automatically run whenever a document is parsed in the selected inbox.

  **What happens:**

  - When a document is parsed in your Airparser inbox, the trigger receives the extracted data
  - The data is automatically passed to the next node in your workflow
  - You can use this data in any n8n node (send emails, update databases, create records, etc.)

  **Example Use Cases:**

  - **Email Notifications**: Send an email notification when an invoice is parsed
  - **Data Logging**: Save parsed data to Google Sheets or Airtable
  - **CRM Updates**: Create or update records in your CRM when documents are processed
  - **Approval Workflows**: Route documents for approval based on parsed data

  ### Import Document From File

  1. Select the **Import Document From File** operation
  2. Choose an **Inbox** from the dropdown
  3. Enter the **Document File (Binary)** property name (usually "data")
  4. Optionally add a custom **Filename** or **Additional Metadata**

  **Example workflow:**

  - Read a PDF file → Airparser node → Extract data → Use in next steps

  ### Import Text/HTML Document

  1. Select the **Import Text/HTML Document** operation
  2. Choose an **Inbox** from the dropdown
  3. Enter the **HTML/Text Content** (paste directly or use an expression)
  4. Optionally add a custom **Filename** or **Additional Metadata**

  **Example workflow:**

  - Fetch HTML from a website → Airparser node → Extract data → Process results

  ## Resources

  - [Airparser](https://airparser.com) — Document parsing & data extraction
  - [Airparser Documentation](https://help.airparser.com/) — Help and guides
  - [n8n](https://n8n.io) — Workflow automation platform
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

ai_documentation_summary:
  {"purpose":"The Airparser n8n node enables automation workflows to import and extract structured data from documents such as emails, PDFs, images, and HTML content using Airparser's AI-powered parsing capabilities.","capabilities":["Import binary documents (PDFs, images, email attachments) into Airparser for structured data extraction","Import text or HTML content (e.g., email bodies, web pages) for parsing","Trigger workflows automatically when a document is parsed in Airparser","Pass extracted structured data to downstream nodes for further processing"],"authentication":"API key required","commonUseCases":["Send email notifications when invoices are parsed","Log parsed data into Google Sheets or Airtable","Update CRM records based on extracted document data","Route documents for approval using parsed content"],"limitations":[],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-base.googleSheets","n8n-nodes-base.airtable"]}


