# nodes

node_type: @nskha/n8n-nodes-scrappey.scrappey
package_name: @nskha/n8n-nodes-scrappey
display_name: Scrappey
description: Make advanced web requests with anti-bot protection bypass using Scrappey API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: automations-project
author_github_url: https://github.com/Automations-Project/n8n-nodes-scrappey.git
npm_package_name: @nskha/n8n-nodes-scrappey
npm_version: 0.3.13
community_fetched_at: 2026-07-14T14:40:33.193Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  ![Banner](.github/assets/banner.webp)

  # Scrappey n8n Node

  [![CI](https://github.com/Automations-Project/n8n-nodes-scrappey/actions/workflows/ci.yml/badge.svg)](https://github.com/Automations-Project/n8n-nodes-scrappey/actions/workflows/ci.yml)
  [![Release](https://github.com/Automations-Project/n8n-nodes-scrappey/actions/workflows/release.yml/badge.svg)](https://github.com/Automations-Project/n8n-nodes-scrappey/actions/workflows/release.yml)
  [![Security Scan](https://github.com/Automations-Project/n8n-nodes-scrappey/actions/workflows/security.yml/badge.svg)](https://github.com/Automations-Project/n8n-nodes-scrappey/actions/workflows/security.yml)
  [![npm version](https://img.shields.io/npm/v/@nskha/n8n-nodes-scrappey?logo=npm)](https://www.npmjs.com/package/@nskha/n8n-nodes-scrappey)
  [![npm downloads](https://img.shields.io/npm/dm/@nskha/n8n-nodes-scrappey?logo=npm)](https://www.npmjs.com/package/@nskha/n8n-nodes-scrappey)
  [![n8n Node version](https://img.shields.io/github/package-json/v/Automations-Project/n8n-nodes-scrappey?logo=n8n&label=n8n%20node)](https://github.com/Automations-Project/n8n-nodes-scrappey)
  [![n8n compatibility](https://img.shields.io/github/v/release/n8n-io/n8n?logo=n8n&label=)](https://n8n.io)
  [![Node.js compatibility](https://img.shields.io/node/v/@nskha/n8n-nodes-scrappey?logo=node.js)](https://nodejs.org)
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.5%2B-blue?logo=typescript)](https://www.typescriptlang.org)
  [![Dependencies](https://img.shields.io/librariesio/release/npm/@nskha/n8n-nodes-scrappey?logo=dependabot)](https://libraries.io/npm/@nskha%2Fn8n-nodes-scrappey)
  [![License](https://img.shields.io/github/license/Automations-Project/n8n-nodes-scrappey)](LICENSE.md)

  [![GitHub stars](https://img.shields.io/github/stars/Automations-Project/n8n-nodes-scrappey?style=social)](https://github.com/Automations-Project/n8n-nodes-scrappey/stargazers)
  [![GitHub forks](https://img.shields.io/github/forks/Automations-Project/n8n-nodes-scrappey?style=social)](https://github.com/Automations-Project/n8n-nodes-scrappey/network)
  [![GitHub issues](https://img.shields.io/github/issues/Automations-Project/n8n-nodes-scrappey)](https://github.com/Automations-Project/n8n-nodes-scrappey/issues)
  [![Last commit](https://img.shields.io/github/last-commit/Automations-Project/n8n-nodes-scrappey)](https://github.com/Automations-Project/n8n-nodes-scrappey/commits)

  > 🚀 **Advanced web scraping and anti-bot bypass node for n8n workflows**

  A powerful n8n community node that integrates with the [Scrappey.com API](https://scrappey.com) to provide advanced web scraping capabilities with built-in anti-bot protection bypass. Perfect for automating data extraction from protected websites, handling CAPTCHAs, and managing complex browser interactions.

  ## ✨ Key Features

  ### 🛠️ **Three Operation Modes**

  1. **Request Builder** - Create fully customized HTTP/browser requests with granular control
  2. **HTTP Auto-Retry** - Automatically retry failed HTTP requests through Scrappey's anti-bot network
  3. **Browser Auto-Retry** - Advanced browser-based retry with full anti-bot protection

  ### 🔒 **Anti-Bot Protection Bypass**

  - **Cloudflare** challenge solving
  - **Datadome** bypass capabilities
  - **hCaptcha & reCAPTCHA** automatic solving
  - **JavaScript-heavy websites** full browser simulation
  - **Mouse movement simulation** for enhanced stealth

  ### 🌍 **Advanced Proxy Management**

  - **Residential proxies** with country targeting
  - **Datacenter proxies** for fast requests
  - **Mobile proxies** for mobile-specific content
  - **Custom proxy** support (SOCKS4/5, HTTP/HTTPS)
  - **150+ countries** available for geo-targeting

  ### ⚙️ **Flexible Configuration**

  - **Multiple request types**: Standard HTTP, Browser, Patched Chrome
  - **Custom headers & cookies** with field-based or JSON input
  - **Session management** for maintaining state across requests
  - **POST/PUT/PATCH support** with body or form parameters
  - **CSS selector waiting** for dynamic content
  - **XHR/Fetch interception** for API data extraction

  ## 🚀 Installation

  ### Method 1: n8n Community Nodes (Recommended)

  1. Open your n8n instance
  2. Go to **Settings** → **Community Nodes**
  3. Enter: `@automations-project/n8n-nodes-scrappey`
  4. Click **Install**

  ### Method 2: Manual Installation

  ```bash
  # Using npm
  npm install @automations-project/n8n-nodes-scrappey

  # Using pnpm
  pnpm add @automations-project/n8n-nodes-scrappey

  # Using yarn
  yarn add @automations-project/n8n-nodes-scrappey
  ```

  ### Method 3: Development Installation

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

  # Install dependencies
  pnpm install

  # Build the node
  pnpm run build

  # Link for development
  pnpm run start:dev
  ```

  ## 🔧 Configuration

  ### 1. Set Up Scrappey API Credentials

  1. Sign up at [Scrappey.com](/#) to get your API key.
  2. In n8n, create new **Scrappey API** credentials
  3. Enter your API key and optional proxy settings
     > 🎯 **Get Started Free!** Try Scrappey with **750 Direct requests** and **150 Browser requests** at no cost.  
     > [Start your free trial →](https://nodes.n8n.community/scrappey/signup)
     >
     > **Affordable scaling**: For just €100, you can get 600,000 request credits including proxies, captcha etc...

  ### 2. Credential Options

  - **API Key** (required): Your Scrappey.com API key
  - **Custom Proxy** (optional): Your own proxy URL (SOCKS4/5, HTTP/HTTPS)
  - **Whitelisted Domains** (optional): JSON array of allowed domains for enhanced security

  ## 📋 Operation Modes
  ![Operations Types](.github/assets/operations.jpg)
  ### 🛠️ Request Builder (Manual)

  **Primary mode for creating custom requests with full control**

  ```typescript
  // Example configuration options:
  {
    "url": "https://example.com/api/data",
    "httpMethod": "GET",
    "request_type": "Browser", // or "Request", "PatchedChrome"
    "whichProxyToUse": "proxyFromScrappey",
    "proxyType": "residential", // residential, datacenter, mobile
    "customProxyCountry": "UnitedStates",
    "antibot": true,
    "mouseMovements": true,
    "datadome": true
  }
  ```

  **Use Cases:**

  - Complex form submissions with CAPTCHA solving
  - JavaScript-heavy SPA scraping
  - API data extraction with anti-bot protection
  - Multi-step workflows with session management

  ### 🔁 HTTP Auto-Retry

  **Fallback solution for failed n8n HTTP Request nodes**
  ![Banner](.github/assets/example.svg)
  Connect the **error output** (red connector) of a standard HTTP Request node to this operation. It automatically retries the same request through Scrappey's network when blocked by:

  - Cloudflare challenges
  - Rate limiting
  - IP blocks
  - Basic anti-bot measures


  ### 🌐 Browser Auto-Retry

  **Advanced browser-based retry with full anti-bot protection**

  Similar to HTTP Auto-Retry but uses a full browser environment with:

  - Automatic CAPTCHA solving (hCaptcha, reCAPTCHA)
  - Mouse movement simulation
  - Datadome bypass enabled
  - JavaScript execution
  - 3 automatic retries

  ## 💡 Usage Examples

  ### Basic Web Scraping

  ```javascript
  // Request Builder - Simple GET request
  {
    "operation": "requestBuilder",
    "url": "https://httpbin.org/get",
    "httpMethod": "request.get",
    "request_type": "Request"
  }
  ```

  ### Advanced Browser Automation

  ```javascript
  // Browser request with anti-bot protection
  {
    "operation": "requestBuilder",
    "url": "https://protected-site.com",
    "request_type": "Browser",
    "antibot": true,
    "mouseMovements": true,
    "datadome": true,
    "cssSelector": ".content-loaded",
    "proxyType": "residential",
    "customProxyCountry": "UnitedStates"
  }
  ```

  ### Form Submission with CAPTCHA

  ```javascript
  // POST request with CAPTCHA solving
  {
    "operation": "requestBuilder",
    "url": "https://example.com/submit",
    "httpMethod": "request.post",
    "request_type": "Browser",
    "bodyOrParams": "body_used",
    "body_for_request": "{\"name\":\"John\",\"email\":\"john@example.com\"}",
    "antibot": true
  }
  ```

  ### Auto-Retry Fallback

  ```javascript
  // Connect HTTP Request node error output to Scrappey node input
  // Set operation to "httpRequestAutoRetry" or "httpRequestAutoRetryBrowser"
  {
    "operation": "httpRequestAutoRetry",
    "whichProxyToUse": "proxyFromScrappey",
    "proxyType": "residential"
  }
  ```

  ## 🔒 Error Handling

  The node provides detailed error messages for common Scrappey API error codes:

  | Code      | Description        | Solution                            |
  | --------- | ------------------ | ----------------------------------- |
  | CODE-0001 | Server overloaded  | Retry after a few minutes           |
  | CODE-0002 | Cloudflare blocked | Try different proxy or browser mode |
  | CODE-0003 | Too many attempts  | Wait before retrying                |
  | CODE-0004 | Invalid command    | Check request configuration         |
  | CODE-0005 | Tunnel failed      | Retry with different proxy          |

  ## 🏗️ Development

  ### Building from Source

  ```bash
  # Install dependencies
  pnpm install

  # Development build with watch
  pnpm run build:watch

  # Production build
  pnpm run build

  # Linting & formatting
  pnpm run lint
  pnpm run format

  # Type checking
  pnpm run type-check

  # Full validation
  pnpm run validate
  ```

  ### Project Structure

  ```
  n8n-nodes-scrappey/
  ├── nodes/Scrappey/          # Main node implementation
  │   ├── Scrappey.node.ts     # Node definition and execution
  │   ├── execute.ts           # Operation dispatcher
  │   ├── RequestMethods.ts    # HTTP/Browser request handlers
  │   ├── requestBodyBuilder.ts # Request body construction
  │   ├── fields.ts            # Node field definitions
  │   ├── GenericFunctions.ts  # API integration utilities
  │   └── utils.ts             # Helper functions
  ├── credentials/             # Credential definitions
  │   └── ScrappeyApi.credentials.ts
  ├── scripts/                 # Build and deployment scripts
  ├── .github/workflows/       # CI/CD pipelines
  └── dist/                    # Built output
  ```

  ### CI/CD Pipeline

  This project includes a comprehensive CI/CD setup:

  - **Continuous Integration**: Automated testing, linting, and building on every PR
  - **Auto-versioning**: Automatic version bumps based on commit messages
  - **Automated Releases**: Publishes to GitHub Packages and optionally npm
  - **Security Scanning**: CodeQL analysis and dependency auditing
  - **Dependabot**: Automated dependency updates

  #### Commit Message Conventions

  - `feat: description` → Minor version bump
  - `fix: description` → Patch version bump
  - `BREAKING CHANGE` or `[major]` → Major version bump
  - `[skip ci]` or `[skip version]` → Skip automation

  ## 🤝 Contributing

  1. Fork the repository
  2. Create a feature branch: `git checkout -b feature/amazing-feature`
  3. Commit changes: `git commit -m 'feat: add amazing feature'`
  4. Push to branch: `git push origin feature/amazing-feature`
  5. Open a Pull Request

  ## 📄 License

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

  ## 🔗 Links

  - **Scrappey Website**: [https://scrappey.com](https://scrappey.com)
  - **Scrappey Documentation**: [https://wiki.scrappey.com](https://wiki.scrappey.com)
  - **n8n Community**: [https://community.n8n.io](https://community.n8n.io)
  - **GitHub Issues**: [Report bugs or request features](https://github.com/Automations-Project/n8n-nodes-scrappey/issues)
  - **Nskha Discord**: [⚠️Incative community](https://nskha.com/discord)

  ---

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

ai_documentation_summary:
  {"purpose":"The Scrappey n8n node automates advanced web scraping by integrating with the Scrappey API to perform HTTP requests and browser automation with built-in anti-bot protection bypass capabilities.","capabilities":["Custom HTTP request building with granular control","Automatic retry for failed HTTP requests","Browser-based retry with full anti-bot bypass","Cloudflare challenge solving","hCaptcha and reCAPTCHA automatic solving","Datadome bypass","JavaScript-heavy website simulation","Mouse movement simulation","Residential, datacenter, and mobile proxy support","Geo-targeting across 150+ countries"],"authentication":"API key required","commonUseCases":["Automated data extraction from protected websites","CAPTCHA handling and bypass","Web scraping with anti-bot evasion","API data extraction via XHR/Fetch interception","Geolocation-based content retrieval"],"limitations":["Requires Scrappey API key from Scrappey.com","Free tier limited to 750 direct requests and 150 browser requests","Relies on third-party Scrappey API for actual request execution"],"relatedNodes":["HTTP Request","Webhook","Code","Credentials"]}


node_type: n8n-nodes-whatsable.whatsAble
package_name: n8n-nodes-whatsable
display_name: WhatsAble for WhatsApp
description: Send & Schedule WhatsApp messages using the official WhatsApp API and have human/AI collaboration
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: whatsabledev
author_github_url: https://github.com/Whatsable/
npm_package_name: n8n-nodes-whatsable
npm_version: 2.4.9
community_fetched_at: 2026-07-14T14:40:33.194Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Send Message",
          "value": "sendMessage"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendWhatsAppMessage",
      "options": [
        {
          "name": "Send WhatsApp Message",
          "value": "sendWhatsAppMessage",
          "action": "Send whatsapp message",
          "description": "Send WhatsApp messages immediately"
        },
        {
          "name": "Schedule WhatsApp Message",
          "value": "scheduleWhatsAppMessage",
          "action": "Schedule whatsapp message",
          "description": "Schedule WhatsApp messages for later delivery"
        },
        {
          "name": "Send WhatsApp Message to a Group",
          "value": "sendWhatsAppMessageToGroup",
          "action": "Send whatsapp message to a group",
          "description": "Send WhatsApp messages to a group"
        },
        {
          "name": "Manage Contact",
          "value": "manageContact",
          "action": "Manage contact",
          "description": "Update contact details such as notes and labels"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sendMessage"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send WhatsApp Message",
      "value": "sendWhatsAppMessage",
      "action": "Send whatsapp message",
      "description": "Send WhatsApp messages immediately",
      "resource": "sendMessage"
    },
    {
      "name": "Schedule WhatsApp Message",
      "value": "scheduleWhatsAppMessage",
      "action": "Schedule whatsapp message",
      "description": "Schedule WhatsApp messages for later delivery",
      "resource": "sendMessage"
    },
    {
      "name": "Send WhatsApp Message to a Group",
      "value": "sendWhatsAppMessageToGroup",
      "action": "Send whatsapp message to a group",
      "description": "Send WhatsApp messages to a group",
      "resource": "sendMessage"
    },
    {
      "name": "Manage Contact",
      "value": "manageContact",
      "action": "Manage contact",
      "description": "Update contact details such as notes and labels",
      "resource": "sendMessage"
    }
  ]

npm_readme:
  <p align="center">
    <img src="https://d1pnnwteuly8z3.cloudfront.net/images/acc1c175-2e05-4bab-805e-64536550fa04/393f0ca5-e904-41f3-8eee-b2dab6bd4e0d.png" alt="WhatsAble Logo" width="160"/>
  </p>

  [![MIT License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE.md)

  ## Table of Contents

  - [Overview](#overview)
  - [Installation](#installation)
  - [Authentication](#authentication)
  - [Features](#features)
  - [How to Use WhatsAble Action Node](#how-to-use-whatsable-action-node)
  - [How to Use WhatsAble Trigger Node](#how-to-use-whatsable-trigger-node)
  - [How to Use Notifier Action Node](#how-to-use-notifier-action-node)
  - [How to Use Notifier Trigger Node](#how-to-use-notifier-trigger-node)
  - [How to Use Notifyer System Action Node](#how-to-use-notifyer-system-action-node)
  - [How to Use Notifyer System Trigger Node](#how-to-use-notifyer-system-trigger-node)
  - [Common Use Cases](#common-use-cases)
  - [Best Practices](#best-practices)
  - [Support](#support)
  - [License](#license)
  - [Resources](#resources)

  ---

  # n8n-nodes-whatsable

  This is an [n8n](https://n8n.io/) community node for integrating with the WhatsAble Suite, providing powerful WhatsApp messaging automation capabilities.

  ---

  ## Overview

  The WhatsAble Suite offers a comprehensive set of messaging tools that integrate seamlessly with n8n, enabling powerful automation workflows for businesses of all sizes. The suite comprises three powerful messaging platforms:

  ### WhatsAble
  - Ideal for small businesses and startups
  - Simple integration with n8n
  - Basic media support
  - Subscription-based pricing
  - 7-day free trial
  - [Documentation](https://docs.whatsable.app/guides/whatsable/n8n)

  ### Notifier by WhatsAble
  - Perfect for medium-sized businesses
  - Enhanced template support
  - Standard media capabilities
  - Flexible pricing options
  - Available free trial
  - [Documentation](https://docs.whatsable.app/guides/notifier/n8n)

  ### Notifyer System
  - Enterprise-grade solution
  - Advanced template capabilities
  - Full media support
  - Enterprise pricing
  - Try for free with 2 numbers
  - [Documentation](https://docs.whatsable.app/guides/notifier-system/n8n-overview)

  ---

  ## Installation

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

  ---

  ## Authentication

  To use this node, you need to have an API key from your chosen WhatsAble Suite platform:

  1. Sign up at [WhatsAble](https://whatsable.app)
  2. Choose your platform (WhatsAble, Notifier, or Notifyer System)
  3. Complete the verification process
  4. Generate an API key from your platform's dashboard

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

  ---

  ## Features

  ### WhatsAble Node
  - Send messages
  - Send template messages (Via Notifyer System)
  - Send non-template messages
  - Schedule messages
  - Support for various media types
  - [Documentation](https://docs.whatsable.app/guides/whatsable/n8n)

  ### WhatsAble Trigger Node
  - Receive incoming messages
  - Handle webhooks
  - Process notifications
  - Real-time message triggers
  - [Documentation](https://docs.whatsable.app/guides/whatsable/n8n)

  ---

  ## How to Use WhatsAble Action Node

  ### Prerequisites
  - An active WhatsAble subscription
  - Access to n8n workflow automation platform
  - A verified WhatsApp number in your WhatsAble dashboard

  ### Setup Process

  1. **Subscribe to WhatsAble**
     - Log in to your WhatsAble dashboard
     - Click the Subscribe button
     - Start your 7-day free trial
     - Note: After trial, pricing is $8.99 per month per phone number
  2. **Add and Verify Phone Number**
     - Navigate to Verified Numbers in your dashboard
     - Click Add New Number
     - Enter your phone number (with country code)
     - Complete the WhatsApp verification process
     - Note: Only first number needs verification
  3. **Get Your API Key**
     - Go to API Keys in your WhatsAble dashboard
     - Copy your unique API key
     - Store it securely for the integration

  ### Integration Steps

  1. Create a new workflow in n8n
  2. Add your preferred trigger node and configure its settings
  3. Add the WhatsAble node
  4. In the WhatsAble node settings:
     - Select "Create new credential"
     - Enter your WhatsAble API key
     - Name your credential (e.g., "WhatsAble Production")
     - Click Save
  5. Configure message settings:
     - Select "Send Message (WhatsAble)" operation
     - Fill in required and optional fields
  6. Click "Test Step" to verify
  7. Save your workflow and activate it

  For detailed documentation, visit [WhatsAble n8n Integration Guide](https://docs.whatsable.app/guides/whatsable/n8n)

  ---

  ## How to Use WhatsAble Trigger Node

  ### Prerequisites
  - An active WhatsAble subscription
  - Access to n8n workflow automation platform
  - A verified WhatsApp number in your WhatsAble dashboard

  ### Setup Process

  1. **Get Your Webhook URL**
     - Open the WhatsAble Trigger Node in n8n
     - At the top of the node, locate "Webhook URLs"
     - Click the "Production URL" to copy it to your clipboard
     - This URL will be used to receive incoming messages
  2. **Configure Credentials**
     - In the WhatsAble Trigger Node settings:
       - Paste the Production Webhook URL in the "Production URL" input box
       - Enter your WhatsAble API key in the "API Key" input box
       - Click Save
       - A green success message will appear if the configuration is successful
  3. **Activate the Trigger**
     - Click "Test Step" to verify the connection
     - Save your workflow
     - Toggle "Active" to start receiving messages
     - Connect the trigger to any action node to process incoming messages

  For detailed documentation, visit [WhatsAble n8n Integration Guide](https://docs.whatsable.app/guides/whatsable/n8n)

  ---

  ## How to Use Notifier Action Node

  ### Prerequisites
  - An active Notifier account (Monthly or Pay-as-you-go plan)
  - Access to n8n workflow automation platform
  - Business information ready for configuration

  ### Setup Process

  1. **Configure Business Information**
     - Log in to your Notifier dashboard
     - Navigate to Business Information
     - Complete required fields
     - Verify your WhatsApp number with the code sent
  2. **Get Your API Key**
     - Go to API Keys in your Notifier dashboard
     - Copy your unique API key
     - Store it securely for the integration

  ### Integration Steps

  1. Create a new workflow in n8n
  2. Add your preferred trigger node and configure its settings
  3. Add the WhatsAble node
  4. In the WhatsAble node settings:
     - Select "Create new credential"
     - Enter your Notifier API key
     - Name your credential (e.g., "Notifier Production")
     - Click Save
  5. Configure message settings:
     - Select "Send Message (Notifier)" operation
     - Fill in required and optional fields
  6. Click "Test Step" to verify
  7. Save your workflow and activate it

  ### Example Workflows with Notifier
  - Lead Nurturing: Trigger on form submission, send personalized welcome, schedule follow-ups
  - Order Confirmations: Trigger on order status change, send update with details
  - Event Reminders: Trigger on calendar event, send reminder with RSVP link
  - Customer Feedback: Trigger on purchase, send feedback request
  - Support Ticket Updates: Trigger on ticket status change, send update

  For detailed documentation, visit [Notifier n8n Integration Guide](https://docs.whatsable.app/guides/notifier/n8n)

  ---

  ## How to Use Notifier Trigger Node

  ### Prerequisites
  - An active Notifier account
  - Access to n8n workflow automation platform
  - Business information configured in Notifier

  ### Setup Process

  1. **Get Your Webhook URL**
     - Open the Notifier Trigger Node in n8n
     - At the top of the node, locate "Webhook URLs"
     - Click the "Production URL" to copy it to your clipboard
     - This URL will be used to receive incoming messages
  2. **Configure Credentials**
     - In the Notifier Trigger Node settings:
       - Paste the Production Webhook URL in the "Production URL" input box
       - Enter your Notifier API key in the "API Key" input box
       - Click Save
       - A green success message will appear if the configuration is successful
  3. **Activate the Trigger**
     - Click "Test Step" to verify the connection
     - Save your workflow
     - Toggle "Active" to start receiving messages
     - Connect the trigger to any action node to process incoming messages

  For detailed documentation, visit [Notifier n8n Integration Guide](https://docs.whatsable.app/guides/notifier/n8n)

  ---

  ## How to Use Notifyer System Action Node

  ### Prerequisites
  - An active Notifyer System account
  - Access to n8n workflow automation platform
  - Completed WhatsApp Business Platform embedding process

  ### Setup Process

  1. **Complete Platform Embedding**
     - Connect your WhatsApp Business account
     - Complete Meta's business verification
     - Ensure compliance with WhatsApp Business Platform policies
  2. **Set Up Message Templates**
     - Navigate to Templates in your dashboard
     - Create new templates and submit for review
  3. **Get Your API Key**
     - Go to API Keys in your Notifyer dashboard
     - Copy your unique API key
     - Store it securely for the integration

  ### Integration Steps

  1. Create a new workflow in n8n
  2. Add your preferred trigger node and configure its settings
  3. Add the WhatsAble node
  4. In the WhatsAble node settings:
     - Select "Create new credential"
     - Enter your Notifyer System API key
     - Name your credential (e.g., "Notifyer System Production")
     - Click Save
  5. Configure message settings:
     - Choose between template and non-template message operations
     - Fill in required and optional fields
  6. Click "Test Step" to verify
  7. Save your workflow and activate it

  ### Example Workflows with Notifyer System
  - Order Confirmations: Trigger on new order, send template message with details
  - Appointment Reminders: Trigger on calendar event, send template message
  - Lead Notifications: Trigger on new CRM lead, send non-template message
  - Customer Support: Trigger on new support ticket, send template message
  - Delivery Updates: Trigger on shipping status change, send template message

  For detailed documentation, visit [Notifyer System n8n Integration Guide](https://docs.whatsable.app/guides/notifier-system/n8n-overview)

  ---

  ## How to Use Notifyer System Trigger Node

  ### Prerequisites
  - An active Notifyer System account
  - Access to n8n workflow automation platform
  - Completed WhatsApp Business Platform embedding process

  ### Setup Process

  1. **Get Your Webhook URL**
     - Open the Notifyer System Trigger Node in n8n
     - At the top of the node, locate "Webhook URLs"
     - Click the "Production URL" to copy it to your clipboard
     - This URL will be used to receive incoming messages
  2. **Configure Credentials**
     - In the Notifyer System Trigger Node settings:
       - Paste the Production Webhook URL in the "Production URL" input box
       - Enter your Notifyer System API key in the "API Key" input box
       - Click Save
       - A green success message will appear if the configuration is successful
  3. **Activate the Trigger**
     - Click "Test Step" to verify the connection
     - Save your workflow
     - Toggle "Active" to start receiving messages
     - Connect the trigger to any action node to process incoming messages

  For detailed documentation, visit [Notifyer System n8n Integration Guide](https://docs.whatsable.app/guides/notifier-system/n8n-overview)

  ---

  ## Common Use Cases

  - Lead Qualification: Automated follow-up, lead scoring, response tracking
  - Order Notifications: Confirmations, shipping updates, delivery notifications
  - Appointment Reminders: Automated reminders, confirmations, calendar integration
  - Customer Support: Ticket routing, automated responses, support updates
  - Payment Reminders: Invoice notifications, payment confirmations, subscription reminders

  ---

  ## Support

  For technical support and assistance:

  - **Email Support**: Contact our dedicated support team
  - **Video Tutorials**: Watch step-by-step integration guides
  - **Implementation Help**: Get expert assistance with workflows

  For enterprise-level support or custom solutions, contact our solution engineers at team@whatsable.app

  ---

  ## License

  [MIT](LICENSE.md)

  ---

  ## Resources

  - [WhatsAble Website](https://whatsable.app)
  - [n8n Documentation](https://docs.n8n.io)
  - [WhatsAble Suite n8n Overview](https://docs.whatsable.app/n8n-overview)

  ---

  ## Running Locally

  To run and test this node on your local machine:

  1. **Clone the repository**
     ```bash
     git clone https://github.com/Whatsable/n8n-nodes-whatsable.git
     cd n8n-nodes-whatsable
     ```
  2. **Install dependencies**
     ```bash
     pnpm install
     ```
  3. **Build the project**
     ```bash
     pnpm build
     ```
  4. **Run tests**
     ```bash
     pnpm test
     ```
     > **Note:** Unit tests are included to ensure code quality. Please run tests before submitting a pull request.
  5. **Link the node to your local n8n instance**
     - If you are developing a custom node, you can use [n8n's community node development guide](https://docs.n8n.io/integrations/community-nodes/create/) to link your node for local testing.
     - Typically, you can run:
       ```bash
       pnpm link --global
       cd ~/.n8n/custom
       pnpm link --global n8n-nodes-whatsable
       ```
     - Restart your n8n instance to load the custom node.
  6. **Test your node**
     - Open n8n in your browser (usually at `http://localhost:5678`)
     - Create a workflow and add your custom node to test its functionality

  > **Note:** Make sure you have [Node.js](https://nodejs.org/) and [pnpm](https://pnpm.io/) installed on your machine.

  ---

  ## Contributing

  We welcome contributions from the community! To contribute:

  1. **Fork the repository**: [https://github.com/Whatsable/n8n-nodes-whatsable](https://github.com/Whatsable/n8n-nodes-whatsable)
  2. **Create a new branch** for your feature or bugfix:
     ```bash
     git checkout -b feature/your-feature-name
     ```
  3. **Make your changes** and ensure code quality:
     - Follow the existing code style
     - Add or update documentation as needed
     - Run linter and tests before submitting
  4. **Commit your changes**
     ```bash
     git commit -m "Add your message here"
     ```
  5. **Push to your fork**
     ```bash
     git push origin feature/your-feature-name
     ```
  6. **Open a Pull Request**
     - Go to the GitHub page for your fork
     - Click "Compare & pull request"
     - Describe your changes and submit the PR

  ### Reporting Issues
  - If you find a bug or have a feature request, please [open an issue](https://github.com/Whatsable/n8n-nodes-whatsable/issues) with details and steps to reproduce.

  ### Code of Conduct
  - Please be respectful and follow our [Code of Conduct](CODE_OF_CONDUCT.md) when participating in this project.

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of WhatsApp messaging by integrating with the WhatsAble Suite, supporting sending, scheduling, and receiving messages across three tiers: WhatsAble, Notifier, and Notifyer System.","capabilities":["Send text messages","Send scheduled messages","Send media messages","Send template messages (Notifyer System only)","Receive incoming messages via webhooks","Process notifications","Create credentials for API authentication"],"authentication":"API key required","commonUseCases":["Automated customer support responses","Scheduled promotional campaigns","Order confirmations and notifications","Lead follow-up sequences","Two-factor authentication verification"],"limitations":["WhatsAble tier has basic media support only","Notifier requires business information configuration","Notifyer System requires enterprise pricing for full features","WhatsAble free trial is limited to 7 days","Webhook URLs must be configured manually for trigger nodes"],"relatedNodes":["HTTP Request","Webhook","Schedule Trigger","If","Wait"]}


node_type: n8n-nodes-straico-official.straicoOfficial
package_name: n8n-nodes-straico-official
display_name: Straico Official
description: Get data from Straico API
category: Community
development_style: declarative
version: 2
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: straico
author_github_url: https://github.com/SaroM0/
npm_package_name: n8n-nodes-straico-official
npm_version: 5.0.4
community_fetched_at: 2026-07-14T14:40:33.195Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "prompt",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Chat",
          "value": "chat"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "Model",
          "value": "models"
        },
        {
          "name": "Prompt",
          "value": "prompt"
        },
        {
          "name": "RAG",
          "value": "rag"
        },
        {
          "name": "TTS",
          "value": "tts"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Video",
          "value": "video"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Info",
          "value": "get",
          "action": "Get user information",
          "routing": {
            "request": {
              "url": "/v0/user",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get all models information v1",
          "routing": {
            "request": {
              "url": "/v1/models",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get All Models v2",
          "value": "getAllModelsInfo",
          "action": "Get all models information v2"
        },
        {
          "name": "Get Specific Model v2",
          "value": "getSpecificModel",
          "action": "Get specific model information v2"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "models"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "completion",
      "options": [
        {
          "name": "Completion",
          "value": "completion",
          "action": "Create a completion",
          "routing": {
            "request": {
              "url": "/v1/prompt/completion",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "prompt"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "completionV2",
      "options": [
        {
          "name": "Completion V2",
          "value": "completionV2",
          "action": "Create a chat completion",
          "routing": {
            "request": {
              "url": "/v2/chat/completions",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate Image",
          "value": "generate",
          "action": "Generate an image v0",
          "routing": {
            "request": {
              "url": "/v0/image/generation",
              "method": "POST"
            }
          }
        },
        {
          "name": "Generate Image V1",
          "value": "generateV1",
          "action": "Generate an image v1",
          "routing": {
            "request": {
              "url": "/v1/image/generation",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate Video",
          "value": "generate",
          "action": "Generate a video from image",
          "routing": {
            "request": {
              "url": "/v1/image/tovideo",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Convert text to speech",
          "routing": {
            "request": {
              "url": "/v1/tts/create",
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Add RAG",
          "value": "addRag",
          "action": "Add RAG to agent"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new agent"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete agent"
        },
        {
          "name": "Get Details",
          "value": "get",
          "action": "Get agent details"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all agents"
        },
        {
          "name": "Prompt Completion",
          "value": "promptCompletion",
          "action": "Send a prompt to agent"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update agent details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "routing": {
            "request": {
              "url": "/v0/file/upload",
              "body": {
                "file": "={{ $parameter[\"file\"] }}"
              },
              "json": false,
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new RAG"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a RAG"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get RAG by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all ra gs"
        },
        {
          "name": "Prompt Completion",
          "value": "promptCompletion",
          "action": "Send a prompt to a RAG"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a RAG with files"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rag"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Info",
      "value": "get",
      "action": "Get user information",
      "routing": {
        "request": {
          "url": "/v0/user",
          "method": "GET"
        }
      },
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get all models information v1",
      "routing": {
        "request": {
          "url": "/v1/models",
          "method": "GET"
        }
      },
      "resource": "models"
    },
    {
      "name": "Get All Models v2",
      "value": "getAllModelsInfo",
      "action": "Get all models information v2",
      "resource": "models"
    },
    {
      "name": "Get Specific Model v2",
      "value": "getSpecificModel",
      "action": "Get specific model information v2",
      "resource": "models"
    },
    {
      "name": "Completion",
      "value": "completion",
      "action": "Create a completion",
      "routing": {
        "request": {
          "url": "/v1/prompt/completion",
          "method": "POST"
        }
      },
      "resource": "prompt"
    },
    {
      "name": "Completion V2",
      "value": "completionV2",
      "action": "Create a chat completion",
      "routing": {
        "request": {
          "url": "/v2/chat/completions",
          "method": "POST"
        }
      },
      "resource": "chat"
    },
    {
      "name": "Generate Image",
      "value": "generate",
      "action": "Generate an image v0",
      "routing": {
        "request": {
          "url": "/v0/image/generation",
          "method": "POST"
        }
      },
      "resource": "image"
    },
    {
      "name": "Generate Image V1",
      "value": "generateV1",
      "action": "Generate an image v1",
      "routing": {
        "request": {
          "url": "/v1/image/generation",
          "method": "POST"
        }
      },
      "resource": "image"
    },
    {
      "name": "Generate Video",
      "value": "generate",
      "action": "Generate a video from image",
      "routing": {
        "request": {
          "url": "/v1/image/tovideo",
          "method": "POST"
        }
      },
      "resource": "video"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Convert text to speech",
      "routing": {
        "request": {
          "url": "/v1/tts/create",
          "method": "POST"
        }
      },
      "resource": "tts"
    },
    {
      "name": "Add RAG",
      "value": "addRag",
      "action": "Add RAG to agent",
      "resource": "agent"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new agent",
      "resource": "agent"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete agent",
      "resource": "agent"
    },
    {
      "name": "Get Details",
      "value": "get",
      "action": "Get agent details",
      "resource": "agent"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all agents",
      "resource": "agent"
    },
    {
      "name": "Prompt Completion",
      "value": "promptCompletion",
      "action": "Send a prompt to agent",
      "resource": "agent"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update agent details",
      "resource": "agent"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file",
      "routing": {
        "request": {
          "url": "/v0/file/upload",
          "body": {
            "file": "={{ $parameter[\"file\"] }}"
          },
          "json": false,
          "method": "POST"
        }
      },
      "resource": "file"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new RAG",
      "resource": "rag"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a RAG",
      "resource": "rag"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get RAG by ID",
      "resource": "rag"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all ra gs",
      "resource": "rag"
    },
    {
      "name": "Prompt Completion",
      "value": "promptCompletion",
      "action": "Send a prompt to a RAG",
      "resource": "rag"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a RAG with files",
      "resource": "rag"
    }
  ]

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

  # n8n-nodes-straico-official

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

  **Straico** is an AI-powered platform that provides advanced prompt completion, image generation, agent management, and Retrieval-Augmented Generation (RAG) capabilities via a RESTful API.

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

  - [Installation](#installation)  
    - [Self-Hosted Installation](#self-hosted-installation)
    - [Cloud Installation](#cloud-installation)
  - [Operations](#operations)  
  - [Credentials](#credentials)  
  - [Compatibility](#compatibility)  
  - [Usage](#usage)  
    - [Example Workflow](#example-workflow)  
  - [Resources](#resources)  
  - [Version History](#version-history)

  ---

  ## Installation

  ### Cloud Installation

  > **Note**: Limited to n8n instance owners

  Only the n8n instance owner can install and manage verified community nodes. The instance owner is the person who sets up and manages user management. All members of an n8n instance can use already installed community nodes in their workflows.

  Admin accounts can also uninstall any community node, verified or unverified. This helps them remove problematic nodes that may affect the instance's health and functionality.

  #### Install a Community Node

  To install this verified community node:

  1. Go to the Canvas and open the nodes panel (either by selecting '+' or pressing Tab)
  2. Search for "Straico". You will see it in the "More from the community" section at the bottom of the nodes panel
  3. Select the node to view detailed information about supported actions
  4. Click "Install". This will install the node for your instance and enable all members to use it

  #### Enable Installation of Verified Community Nodes

  Some users may not want to show verified community nodes in the nodes panel of their instances. On n8n cloud, instance owners can toggle this in the Cloud Admin Panel.

  #### Uninstall a Community Node

  To uninstall the community node:

  1. Go to Settings > Community nodes
  2. On the node you want to uninstall, select Options (three dots menu)
  3. Select "Uninstall package"
  4. Confirm uninstallation in the modal

  ### Self-Hosted Installation

  For self-hosted n8n instances:

  1. Install the community node package:

     ```bash
     npm install n8n-nodes-straico-official
     ```

  2. Restart your n8n instance to load the new node

  3. In n8n, go to **Settings/Community Nodes** and enable **n8n-nodes-straico-official** if it isn't already

  ---

  ## Operations

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

  - **User**
    - **Get Info**: Retrieve account details for the authenticated user.
  - **Models**
    - **Get All**: List all available chat and image models.
  - **Prompt**
    - **Completion**: Generate text completions using either specified models or the smart LLM selector.
  - **Image**
    - **Generate Image**: Create images with customizable parameters (model, size, variations, etc.).
  - **Agent**
    - **Create**, **Get Details**, **List**, **Add RAG**, **Update**, **Delete**, **Prompt Completion**.
  - **File**
    - **Upload**: Upload binary files for RAG or prompt operations.
  - **RAG**
    - **Create**, **List**, **Get**, **Update**, **Delete**, **Prompt Completion**.

  ---

  ## Credentials

  To authenticate requests, you need a **Straico API Key**:

  1. Sign up or log in at [Straico](https://straico.com/) and copy your API key from the dashboard.
  2. In n8n, go to **Credentials/New Credential/Straico API**.
  3. Paste your API key and save.

  All node operations will automatically use this credential.

  ---

  ## Compatibility

  - **Minimum n8n version**: `1.0.0`  
  - **Tested with**: n8n `1.x` and Straico API `v1`  
  - **Known issues**: None at this time. If you encounter any, please open an issue in the [GitHub repo](https://github.com/your-org/n8n-nodes-straico-official).

  ---

  ## Usage

  1. **Add Straico Official** node to your workflow.
  2. **Select Resource** and **Operation**.
  3. **Configure Parameters** according to the selected operation.
  4. **Connect** to other nodes as needed.

  ### Example Workflow

  Below is a simple example to generate a text completion and then an image:

  ```json
  [
    {
      "nodes": [
        {
          "parameters": {
            "resource": "prompt",
            "operation": "completion",
            "models": ["gpt-4"],
            "message": "Write a short poem about autumn.",
            "additionalFields": {
              "temperature": 0.8,
              "max_tokens": 100
            }
          },
          "name": "Straico Prompt",
          "type": "n8n-nodes-straico-official.StraicoOfficial",
          "typeVersion": 1,
          "position": [250, 300]
        },
        {
          "parameters": {
            "resource": "image",
            "operation": "generate",
            "model": "openai/dall-e-3",
            "description": "A serene autumn forest with falling leaves",
            "size": "landscape",
            "variations": 1,
            "enhance": true,
            "customEnhancer": "Make it more vibrant and warm"
          },
          "name": "Straico Image",
          "type": "n8n-nodes-straico-official.StraicoOfficial",
          "typeVersion": 1,
          "position": [450, 300]
        }
      ],
      "connections": {
        "Straico Prompt": {
          "main": [
            [
              {
                "node": "Straico Image",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    }
  ]
  ```

  ---

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)  
  - [Straico API Documentation](https://documenter.getpostman.com/view/5900072/2s9YyzddrR)  
  - [n8n Forum](https://community.n8n.io/) – for community support  

  ---

  ## Version History

  - **2.0.0** (2025-06-25)  
    - Initial public release  
    - Supports User, Models, Prompt, Image, Agent, File, and RAG operations  
  - **2.1.0** (pending)  
    - Planned: Add webhook support and batch RAG uploads

  ---

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows by integrating with the Straico API, which provides AI-powered text completion, image generation, agent management, and Retrieval-Augmented Generation (RAG) capabilities.","capabilities":["Retrieve user account information","List available chat and image models","Generate text completions with custom models or smart LLM selector","Generate images with customizable parameters (model, size, variations, enhancers)","Manage AI agents (create, list, get details, update, delete)","Add RAG data to agents","Upload binary files for RAG or prompt operations","Create, list, get, update, and delete RAG collections","Perform prompt completion on agents and RAG collections"],"authentication":"API key required (Straico API Key)","commonUseCases":["Automated content generation using AI text models","Workflow automation with AI-powered image creation","Building RAG-based knowledge retrieval systems","Managing and configuring AI agents for specific tasks"],"limitations":["Limited to n8n instance owners for cloud installation","Self-hosted installation requires manual npm package installation","Requires valid Straico API key for all operations"],"relatedNodes":["HTTP Request","Code","Wait Until"]}


node_type: n8n-nodes-softr.softr
package_name: n8n-nodes-softr
display_name: Softr
description: Softr.io Integration Node
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: dariusz-softr
author_github_url: https://github.com/softr-io/n8n-softr.git
npm_package_name: n8n-nodes-softr
npm_version: 1.0.8
community_fetched_at: 2026-07-14T14:40:33.196Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "database",
      "options": [
        {
          "name": "Database Record",
          "value": "database",
          "action": "Manage database records",
          "description": "Manage database records"
        },
        {
          "name": "Application User",
          "value": "appUser",
          "action": "Manage application users",
          "description": "Manage application users"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create record",
          "description": "Create database record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete record",
          "description": "Delete database record"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many records",
          "description": "Get many database records"
        },
        {
          "name": "Get One",
          "value": "getOne",
          "action": "Get one record",
          "description": "Get one database record"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update record",
          "description": "Update database record"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "database"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createAppUser",
      "options": [
        {
          "name": "Create Application User",
          "value": "createAppUser",
          "action": "Create application user",
          "description": "Create an application user"
        },
        {
          "name": "Delete Application User",
          "value": "deleteAppUser",
          "action": "Delete application user",
          "description": "Delete an application user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "appUser"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create record",
      "description": "Create database record",
      "resource": "database"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete record",
      "description": "Delete database record",
      "resource": "database"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many records",
      "description": "Get many database records",
      "resource": "database"
    },
    {
      "name": "Get One",
      "value": "getOne",
      "action": "Get one record",
      "description": "Get one database record",
      "resource": "database"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update record",
      "description": "Update database record",
      "resource": "database"
    },
    {
      "name": "Create Application User",
      "value": "createAppUser",
      "action": "Create application user",
      "description": "Create an application user",
      "resource": "appUser"
    },
    {
      "name": "Delete Application User",
      "value": "deleteAppUser",
      "action": "Delete application user",
      "description": "Delete an application user",
      "resource": "appUser"
    }
  ]

npm_readme:
  # n8n-nodes-softr

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

  Softr is a no-code platform that allows you to build web applications and websites. It provides a user-friendly interface for creating and managing applications without needing to write code.

  [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

  ### Softr Databases

  Triggers

  * `On New Record`: Triggered when a new record is created in a Softr database.
  * `On Updated Record`: Triggered when an existing record in a Softr database is updated.

  Actions:

  * `Create Record`: Creates a new record in a specified Softr database.
  * `Update Record`: Updates an existing record in a specified Softr database.
  * `Delete Record`: Deletes a record from a specified Softr database.
  * `Get Record`: Retrieves a specific record from a specified Softr database.
  * `Get All Records`: Retrieves all records from a specified Softr database.
  * `Search Records`: Searches for records in a specified Softr database based on a search query.

  ### Softr Application Users

  * `Create Application User`: Creates a new user in a specified Softr application.
  * `Delete Application User`: Deletes a user from a specified Softr application.

  ## Credentials

  To use Softr, you must authenticate with your API Key. You can find your API Key in your [Softr account settings](https://studio.softr.io/user/apisettings).

  More details on how to find your API Key can be found in the [Softr documentation](https://docs.softr.io/softr-api/tTFQ5vSAUozj5MsKixMH8C/api-setup-and-endpoints/j1PrTZxt7pv3iZCnZ5Fp19).

  ## Compatibility

  Implemented and tested against n8n version 1.103.2.

  ## Usage

  Softr node uses Softr Public API under the hood. You can find more information about the API in the [Softr API documentation](https://docs.softr.io/softr-api/tTFQ5vSAUozj5MsKixMH8C/softr-database-api/5aZs45abxPkQ4dURKFwRGF).

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Softr API documentation](https://docs.softr.io/softr-api/tTFQ5vSAUozj5MsKixMH8C/softr-database-api/5aZs45abxPkQ4dURKFwRGF)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation with Softr, a no-code platform for building web applications and websites, by interacting with Softr databases and application users.","capabilities":["Trigger on new database record creation","Trigger on database record updates","Create new database records","Update existing database records","Delete database records","Retrieve specific database records","Retrieve all database records","Search database records by query","Create application users","Delete application users"],"authentication":"API Key required (found in Softr account settings)","commonUseCases":["Automating data synchronization between Softr and other tools","Creating or managing users in Softr applications via workflow","Triggering workflows when database records change in Softr"],"limitations":["Community node (not official n8n node)","Requires manual API key configuration"],"relatedNodes":["Softr Database","Softr Application User"]}


node_type: n8n-nodes-pdfvector.pdfVector
package_name: n8n-nodes-pdfvector
display_name: PDF Vector
category: Community
development_style: declarative
version: 2
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: phuctm97
author_github_url: https://github.com/phuctm97/
npm_package_name: n8n-nodes-pdfvector
npm_version: 2.1.5
community_fetched_at: 2026-07-14T14:40:33.197Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  Convert PDFs, Word, Excel documents, and images to clean markdown, extract structured data with AI, process invoices with specialized parsing, and search millions of academic papers across PubMed, ArXiv, Google Scholar, and more.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Academic",
          "value": "academic"
        },
        {
          "name": "Bank Statement",
          "value": "bankStatement"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Identity Document",
          "value": "identity"
        },
        {
          "name": "Invoice",
          "value": "invoice"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "parse",
      "options": [
        {
          "name": "Parse",
          "value": "parse",
          "action": "Parse a document",
          "description": "Extract text and page count from a document"
        },
        {
          "name": "Ask",
          "value": "ask",
          "action": "Ask about a document",
          "description": "Ask a question about a document and get an AI answer"
        },
        {
          "name": "Extract",
          "value": "extract",
          "action": "Extract from a document",
          "description": "Extract structured data from a document using JSON Schema"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "parse",
      "options": [
        {
          "name": "Parse",
          "value": "parse",
          "action": "Parse a identity document",
          "description": "Extract text and page count from a identity document"
        },
        {
          "name": "Ask",
          "value": "ask",
          "action": "Ask about a identity document",
          "description": "Ask a question about a identity document and get an AI answer"
        },
        {
          "name": "Extract",
          "value": "extract",
          "action": "Extract from a identity document",
          "description": "Extract structured data from a identity document using JSON Schema"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "identity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "parse",
      "options": [
        {
          "name": "Parse",
          "value": "parse",
          "action": "Parse a invoice",
          "description": "Extract text and page count from a invoice"
        },
        {
          "name": "Ask",
          "value": "ask",
          "action": "Ask about a invoice",
          "description": "Ask a question about a invoice and get an AI answer"
        },
        {
          "name": "Extract",
          "value": "extract",
          "action": "Extract from a invoice",
          "description": "Extract structured data from a invoice using JSON Schema"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "parse",
      "options": [
        {
          "name": "Parse",
          "value": "parse",
          "action": "Parse a bank statement",
          "description": "Extract text and page count from a bank statement"
        },
        {
          "name": "Ask",
          "value": "ask",
          "action": "Ask about a bank statement",
          "description": "Ask a question about a bank statement and get an AI answer"
        },
        {
          "name": "Extract",
          "value": "extract",
          "action": "Extract from a bank statement",
          "description": "Extract structured data from a bank statement using JSON Schema"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bankStatement"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Fetch",
          "value": "fetch",
          "action": "Fetch papers by ID",
          "description": "Fetch specific papers by DOI, PubMed ID, ArXiv ID, etc"
        },
        {
          "name": "Find Citations",
          "value": "findCitations",
          "action": "Find citations for text",
          "description": "Find relevant academic citations for a paragraph of text"
        },
        {
          "name": "Paper Graph",
          "value": "paperGraph",
          "action": "Get paper citation graph",
          "description": "Get citations and references for a paper"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search academic papers",
          "description": "Search for academic papers across multiple databases"
        },
        {
          "name": "Search Grants",
          "value": "searchGrants",
          "action": "Search research grants",
          "description": "Search for research grants across multiple funding databases"
        },
        {
          "name": "Similar Papers",
          "value": "similarPapers",
          "action": "Find similar papers",
          "description": "Find papers similar to a given paper using citation network analysis"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "academic"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Parse",
      "value": "parse",
      "action": "Parse a document",
      "description": "Extract text and page count from a document",
      "resource": "document"
    },
    {
      "name": "Ask",
      "value": "ask",
      "action": "Ask about a document",
      "description": "Ask a question about a document and get an AI answer",
      "resource": "document"
    },
    {
      "name": "Extract",
      "value": "extract",
      "action": "Extract from a document",
      "description": "Extract structured data from a document using JSON Schema",
      "resource": "document"
    },
    {
      "name": "Parse",
      "value": "parse",
      "action": "Parse a identity document",
      "description": "Extract text and page count from a identity document",
      "resource": "identity"
    },
    {
      "name": "Ask",
      "value": "ask",
      "action": "Ask about a identity document",
      "description": "Ask a question about a identity document and get an AI answer",
      "resource": "identity"
    },
    {
      "name": "Extract",
      "value": "extract",
      "action": "Extract from a identity document",
      "description": "Extract structured data from a identity document using JSON Schema",
      "resource": "identity"
    },
    {
      "name": "Parse",
      "value": "parse",
      "action": "Parse a invoice",
      "description": "Extract text and page count from a invoice",
      "resource": "invoice"
    },
    {
      "name": "Ask",
      "value": "ask",
      "action": "Ask about a invoice",
      "description": "Ask a question about a invoice and get an AI answer",
      "resource": "invoice"
    },
    {
      "name": "Extract",
      "value": "extract",
      "action": "Extract from a invoice",
      "description": "Extract structured data from a invoice using JSON Schema",
      "resource": "invoice"
    },
    {
      "name": "Parse",
      "value": "parse",
      "action": "Parse a bank statement",
      "description": "Extract text and page count from a bank statement",
      "resource": "bankStatement"
    },
    {
      "name": "Ask",
      "value": "ask",
      "action": "Ask about a bank statement",
      "description": "Ask a question about a bank statement and get an AI answer",
      "resource": "bankStatement"
    },
    {
      "name": "Extract",
      "value": "extract",
      "action": "Extract from a bank statement",
      "description": "Extract structured data from a bank statement using JSON Schema",
      "resource": "bankStatement"
    },
    {
      "name": "Fetch",
      "value": "fetch",
      "action": "Fetch papers by ID",
      "description": "Fetch specific papers by DOI, PubMed ID, ArXiv ID, etc",
      "resource": "academic"
    },
    {
      "name": "Find Citations",
      "value": "findCitations",
      "action": "Find citations for text",
      "description": "Find relevant academic citations for a paragraph of text",
      "resource": "academic"
    },
    {
      "name": "Paper Graph",
      "value": "paperGraph",
      "action": "Get paper citation graph",
      "description": "Get citations and references for a paper",
      "resource": "academic"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search academic papers",
      "description": "Search for academic papers across multiple databases",
      "resource": "academic"
    },
    {
      "name": "Search Grants",
      "value": "searchGrants",
      "action": "Search research grants",
      "description": "Search for research grants across multiple funding databases",
      "resource": "academic"
    },
    {
      "name": "Similar Papers",
      "value": "similarPapers",
      "action": "Find similar papers",
      "description": "Find papers similar to a given paper using citation network analysis",
      "resource": "academic"
    }
  ]

npm_readme:
  # n8n-nodes-pdfvector

  [n8n](https://n8n.io/) community node for [PDF Vector](https://www.pdfvector.com) — parse PDF, Word, Excel, and image documents to structured markdown, ask AI questions about documents, extract structured data with JSON Schema, and search academic papers across multiple databases.

  ## Installation

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

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

  ```
  n8n-nodes-pdfvector
  ```

  ## Credentials

  1. Sign up at [app.pdfvector.com](https://app.pdfvector.com)
  2. Go to your PDF Vector instance settings to create a current API key
  3. In n8n, create a new **PDF Vector API** credential and paste your API key

  **Migrating an older credential:** Old PDFVector API keys no longer work with the current API. Create a new API key from the PDF Vector dashboard, then replace the key in your n8n credential.

  **Custom instance:** If you have a custom PDF Vector instance, enter your instance domain or base URL in the credential's Domain or Base URL field. Otherwise, leave it as `global.pdfvector.com`. Pasted URLs such as `https://global.pdfvector.com/api` are normalized automatically.

  ## Operations

  ### Document

  Parse, ask, and extract from generic documents (PDF, Word, Excel, CSV, Image).

  | Operation | Description |
  |-----------|-------------|
  | **Parse** | Extract text content and page count |
  | **Ask** | Ask a question about the document and get an AI answer |
  | **Extract** | Extract structured data using a JSON Schema |

  Document Parse includes an optional **Include Pages** toggle. Enable it to return page-separated markdown in the `pages` array while still receiving the full document markdown.

  ### Identity Document

  Parse, ask, and extract from identity documents (passports, driver's licenses, ID cards).

  | Operation | Description |
  |-----------|-------------|
  | **Parse** | Extract text from identity documents (Pro/Max models only) |
  | **Ask** | Ask a question about the identity document |
  | **Extract** | Extract structured fields (name, DOB, document number, etc.) |

  ### Invoice

  Parse, ask, and extract from invoices.

  | Operation | Description |
  |-----------|-------------|
  | **Parse** | Extract text from invoices (Pro/Max models only) |
  | **Ask** | Ask a question about the invoice |
  | **Extract** | Extract structured invoice data (number, date, items, totals) |

  ### Bank Statement

  Parse, ask, and extract from bank statements.

  | Operation | Description |
  |-----------|-------------|
  | **Parse** | Extract text from bank statements (Pro/Max models only) |
  | **Ask** | Ask a question about the bank statement |
  | **Extract** | Extract structured bank statement data |

  ### Academic

  Search, fetch, and find citations across academic databases.

  | Operation | Description |
  |-----------|-------------|
  | **Search** | Search for papers across 7 academic databases |
  | **Fetch** | Fetch specific papers by DOI, PubMed ID, ArXiv ID, etc. |
  | **Find Citations** | Find relevant citations for a paragraph of text |

  **Supported providers:** Semantic Scholar, PubMed, ArXiv, Google Scholar, OpenAlex, ERIC, Europe PMC.

  ## Model Tiers

  All document operations support model selection:

  | Tier | Best for | Max pages | Max size |
  |------|----------|-----------|----------|
  | **Auto** | Automatic selection (default) | 1000 | 500MB |
  | **Nano** | Simple text documents | 30 | 10MB |
  | **Mini** | Tables, structured content | 30 | 10MB |
  | **Pro** | Complex docs, images, handwriting | 30 | 40MB |
  | **Max** | Large docs, full capabilities + HTML | 1000 | 500MB |

  Identity, Invoice, and Bank Statement **parse** operations only support Auto, Pro, and Max.

  ## Document ID Tracking

  All document operations (except Academic) support an optional **Document ID** field for usage tracking. The ID is returned in the response and saved in your usage records.

  ## Compatibility

  - **n8n version:** 1.0+
  - **Node.js version for local development and CI:** 22+

  ## Resources

  - [PDF Vector API Reference](https://global.pdfvector.com/api/reference)
  - [PDF Vector Dashboard](https://app.pdfvector.com)
  - [PDF Vector Website](https://www.pdfvector.com)
  - [Report Issues](https://github.com/phuctm97/n8n-nodes-pdfvector/issues)

  ## Version History

  - **2.x:** Unified PDF Vector node with document, identity, invoice, bank statement, and academic operations
  - **1.x:** Earlier PDF Vector integration releases

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Converts PDF and Word documents to clean Markdown, extracts structured data via AI, and searches academic publications across multiple databases like PubMed and ArXiv.","capabilities":["Parse PDF and Word documents into Markdown","Ask AI-powered questions about document content","Search academic publications across PubMed, Semantic Scholar, Google Scholar, ArXiv, and ERIC","Fetch specific publications by DOI, PubMed ID, ArXiv ID, Semantic Scholar ID, or ERIC ID","Support configurable LLM usage (auto, never, always) for document parsing","Filter academic search results by year range"],"authentication":"API key required (PDF Vector API key)","commonUseCases":["Convert research papers to Markdown for further processing","Extract structured data from invoices or reports","Search academic literature across multiple databases","Analyze document content with AI to answer specific questions"],"limitations":["Requires external API key from PDF Vector service","Credit-based pricing model (1-2 credits per page for parsing, 3 credits per ask, 2 credits per search)","Minimum n8n version 0.202.0 and Node.js 20.15 or later required","Document URL must be publicly accessible for parsing operations"],"relatedNodes":["n8n-nodes-webhook.webhook","n8n-nodes-function.function","n8n-nodes-http.request"]}


node_type: n8n-nodes-scrapingbee.ScrapingBee
package_name: n8n-nodes-scrapingbee
display_name: ScrapingBee
description: Scrape websites using ScrapingBee
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: scrapingbee
author_github_url: https://github.com/ScrapingBee/scrapingbee-n8n.git
npm_package_name: n8n-nodes-scrapingbee
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:33.198Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "htmlAPI",
      "options": [
        {
          "name": "Amazon Product API",
          "value": "amazonProductAPI"
        },
        {
          "name": "Amazon Search API",
          "value": "amazonSearchAPI"
        },
        {
          "name": "ChatGPT API",
          "value": "chatgptAPI"
        },
        {
          "name": "Google Search API",
          "value": "googleSearchAPI"
        },
        {
          "name": "HTML API",
          "value": "htmlAPI"
        },
        {
          "name": "Usage",
          "value": "usage"
        },
        {
          "name": "Walmart Product API",
          "value": "walmartProductAPI"
        },
        {
          "name": "Walmart Search API",
          "value": "walmartSearchAPI"
        },
        {
          "name": "YouTube Metadata API",
          "value": "youtubeMetadataAPI"
        },
        {
          "name": "YouTube Search API",
          "value": "youtubeSearchAPI"
        },
        {
          "name": "YouTube Trainability API",
          "value": "youtubeTrainabilityAPI"
        },
        {
          "name": "YouTube Transcript API",
          "value": "youtubeTranscriptAPI"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Scrape using HTML API",
          "description": "Scrape the webpage using our HTML API"
        },
        {
          "name": "POST",
          "value": "post",
          "action": "Send POST request using HTML API",
          "description": "Send a post request using our HTML API"
        },
        {
          "name": "PUT",
          "value": "put",
          "action": "Send PUT request using HTML API",
          "description": "Send a put request using our HTML API"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "htmlAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get SERP data using GOOGLE SEARCH API",
          "description": "Get SERP data using our Google Search API"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "googleSearchAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get products related to search query using WALMART SEARCH API",
          "description": "Search for products in Walmart"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "walmartSearchAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get product information using WALMART PRODUCT API",
          "description": "Get product information from Walmart"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "walmartProductAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get products related to search query using AMAZON SEARCH API",
          "description": "Search for products in Amazon"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "amazonSearchAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get product information using AMAZON PRODUCT API",
          "description": "Get product information from Amazon"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "amazonProductAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get AI response from CHATGPT for your prompt using our CHATGPT API",
          "description": "Get AI Response from ChatGPT based on your prompt"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chatgptAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get usage data",
          "description": "Get your API usage data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "usage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get detailed video metadata from YOUTUBE using our YOUTUBE METADATA API",
          "description": "Get detailed video metadata"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "youtubeMetadataAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get search results from YOUTUBE using our YOUTUBE SEARCH API",
          "description": "Get YouTube search results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "youtubeSearchAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get video transcript availability status from YOUTUBE using our YOUTUBE TRAINABILITY API",
          "description": "Check if a video has transcripts available for training purposes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "youtubeTrainabilityAPI"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "GET",
          "value": "get",
          "action": "Get video transcripts from YOUTUBE using our YOUTUBE TRANSCRIPT API",
          "description": "Get video transcripts (captions/subtitles)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "youtubeTranscriptAPI"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "GET",
      "value": "get",
      "action": "Scrape using HTML API",
      "description": "Scrape the webpage using our HTML API",
      "resource": "htmlAPI"
    },
    {
      "name": "POST",
      "value": "post",
      "action": "Send POST request using HTML API",
      "description": "Send a post request using our HTML API",
      "resource": "htmlAPI"
    },
    {
      "name": "PUT",
      "value": "put",
      "action": "Send PUT request using HTML API",
      "description": "Send a put request using our HTML API",
      "resource": "htmlAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get SERP data using GOOGLE SEARCH API",
      "description": "Get SERP data using our Google Search API",
      "resource": "googleSearchAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get products related to search query using WALMART SEARCH API",
      "description": "Search for products in Walmart",
      "resource": "walmartSearchAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get product information using WALMART PRODUCT API",
      "description": "Get product information from Walmart",
      "resource": "walmartProductAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get products related to search query using AMAZON SEARCH API",
      "description": "Search for products in Amazon",
      "resource": "amazonSearchAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get product information using AMAZON PRODUCT API",
      "description": "Get product information from Amazon",
      "resource": "amazonProductAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get AI response from CHATGPT for your prompt using our CHATGPT API",
      "description": "Get AI Response from ChatGPT based on your prompt",
      "resource": "chatgptAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get usage data",
      "description": "Get your API usage data",
      "resource": "usage"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get detailed video metadata from YOUTUBE using our YOUTUBE METADATA API",
      "description": "Get detailed video metadata",
      "resource": "youtubeMetadataAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get search results from YOUTUBE using our YOUTUBE SEARCH API",
      "description": "Get YouTube search results",
      "resource": "youtubeSearchAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get video transcript availability status from YOUTUBE using our YOUTUBE TRAINABILITY API",
      "description": "Check if a video has transcripts available for training purposes",
      "resource": "youtubeTrainabilityAPI"
    },
    {
      "name": "GET",
      "value": "get",
      "action": "Get video transcripts from YOUTUBE using our YOUTUBE TRANSCRIPT API",
      "description": "Get video transcripts (captions/subtitles)",
      "resource": "youtubeTranscriptAPI"
    }
  ]

npm_readme:
  # n8n-nodes-scrapingbee

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

  The ScrapingBee web scraping API handles headless browsers, rotates proxies for you, and offers AI-powered data extraction.

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

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

  ## Installation

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

  ## Operations

  - HTML API: GET, POST, PUT
  - Google Search API: GET
  - Usage: GET

  ## Credentials

  You can obtain your API KEY for free by signing up and visting this page: https://app.scrapingbee.com/account/manage/api_key

  When you signup, you will also get 1000 credits for free.

  ## Compatibility

  n8n 1.101.2 and above

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [HTML API](https://www.scrapingbee.com/documentation/)
  * [Google Search API](https://www.scrapingbee.com/documentation/google/)
  * [Amazon Search API](https://www.scrapingbee.com/documentation/amazon/#amazon-search-api)
  * [Amazon Product API](https://www.scrapingbee.com/documentation/amazon/#amazon-product-api)
  * [Walmart Search API](https://www.scrapingbee.com/documentation/walmart/#walmart-search-api)
  * [Walmart Product API](https://www.scrapingbee.com/documentation/walmart/#walmart-product-api)
  * [ChatGPT API](https://www.scrapingbee.com/documentation/chatgpt/)
  * [Usage](https://www.scrapingbee.com/documentation/#usage-endpoint)
  * [Data Extraction](https://www.scrapingbee.com/documentation/data-extraction/)
  * [JavaScript Scenario](https://www.scrapingbee.com/documentation/js-scenario/)

  ## Version history

  - 0.1.6: Added support for YouTube APIs
  - 0.1.5: Added support for Amazon, Walmart, and ChatGPT APIs, and configured it to be used as a tool for AI Agent
  - 0.1.4: Added option to send body in POST and PUT requests, replaced deprecated interface and method, set n8n as user-agent and other minor changes
  - 0.1.3: Added a credentials test
  - 0.1.2: Fixed credentials file link
  - 0.1.1: Minor bug fix
  - 0.1.0: Initial Release

ai_documentation_summary:
  {"purpose":"A community node that enables n8n workflows to scrape websites using the ScrapingBee API, handling headless browsers, proxy rotation, and AI-powered data extraction.","capabilities":["HTML API (GET, POST, PUT)","Google Search API (GET)","Amazon Search API","Amazon Product API","Walmart Search API","Walmart Product API","YouTube API","ChatGPT API","AI-powered data extraction","Proxy rotation"],"authentication":"API key required (obtained from ScrapingBee account)","commonUseCases":["Web scraping for e-commerce price monitoring","Data extraction from websites using AI","Google search result retrieval","YouTube content scraping","Automated data collection for AI agents"],"limitations":["Community node (not official n8n node)","Requires free account signup for API key","Includes 1000 free credits on signup"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-httpRequest","n8n-nodes-aiAgent"]}


node_type: n8n-nodes-referral-factory.referralFactory
package_name: n8n-nodes-referral-factory
display_name: Referral Factory
description: Get data from Referral Factory API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: referral-factory
author_github_url: https://github.com/referralfactory/
npm_package_name: n8n-nodes-referral-factory
npm_version: 0.2.14
community_fetched_at: 2026-07-14T14:40:33.198Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "create_user",
      "options": [
        {
          "name": "Add New User",
          "value": "create_user",
          "action": "Add new user",
          "routing": {
            "request": {
              "url": "/users",
              "body": {
                "email": "={{$parameter[\"email\"]}}",
                "first_name": "={{$parameter[\"first_name\"]}}",
                "campaign_id": "={{$parameter[\"campaign_id\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Add new user in Referral Factory"
        },
        {
          "name": "Qualify a User",
          "value": "qualify_user",
          "action": "Qualify a user",
          "description": "Qualify a user in Referral Factory"
        }
      ],
      "displayName": "Action",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add New User",
      "value": "create_user",
      "action": "Add new user",
      "routing": {
        "request": {
          "url": "/users",
          "body": {
            "email": "={{$parameter[\"email\"]}}",
            "first_name": "={{$parameter[\"first_name\"]}}",
            "campaign_id": "={{$parameter[\"campaign_id\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Add new user in Referral Factory"
    },
    {
      "name": "Qualify a User",
      "value": "qualify_user",
      "action": "Qualify a user",
      "description": "Qualify a user in Referral Factory"
    }
  ]

npm_readme:
  # n8n-nodes-referral-factory

  🔗 A community-built [n8n](https://n8n.io) integration for [Referral Factory](https://referral-factory.com), enabling automation of your referral marketing campaigns.

  This package provides both **trigger** and **action** nodes to interact with the Referral Factory API—ideal for managing users, issuing rewards, and reacting to referral events like user joins or conversions.

  ---

  ## ✨ Features

  - 🧠 Trigger workflows from Referral Factory events (e.g., user joined, reward issued)
  - 🧾 Create new users or qualify referred users
  - 📡 Webhook-based event handling
  - 🔐 API Key authentication

  ---

  ## 📦 Installation

  ### In self-hosted n8n

  ```bash
  npm install n8n-nodes-referral-factory

ai_documentation_summary:
  {"purpose":"A community-built n8n node that enables automation of referral marketing campaigns by interacting with the Referral Factory API to manage users, issue rewards, and handle referral events.","capabilities":["Trigger workflows from Referral Factory events (e.g., user joined, reward issued)","Create new users","Qualify referred users","Handle webhook-based events","Interact with Referral Factory API"],"authentication":"API Key authentication","commonUseCases":["Automating referral marketing campaigns","Managing user referrals and rewards","Reacting to referral events like user joins or conversions"],"limitations":[],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-webhook.webhook"]}


node_type: @scrapeops/n8n-nodes-scrapeops.ScrapeOps
package_name: @scrapeops/n8n-nodes-scrapeops
display_name: ScrapeOps
description: Interact with ScrapeOps Proxy, Parser and Data APIs
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: lucashellison
author_github_url: https://github.com/scrapeops/n8n-community-node.git
npm_package_name: @scrapeops/n8n-nodes-scrapeops
npm_version: 0.2.7
community_fetched_at: 2026-07-14T14:40:33.199Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # ScrapeOps n8n Community Node

  [![npm version](https://badge.fury.io/js/%40scrapeops%2Fn8n-nodes-scrapeops.svg)](https://badge.fury.io/js/%40scrapeops%2Fn8n-nodes-scrapeops)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  The **[ScrapeOps n8n node](https://n8n.io/integrations/scrapeops/)** is a powerful integration that brings ScrapeOps' web scraping capabilities directly into your n8n workflows. This node allows you to leverage ScrapeOps' proxy aggregation, HTML parsing, and structured data extraction services without writing complex code.

  ![ScrapeOps N8N Node](https://scrapeops-assets-2.nyc3.cdn.digitaloceanspaces.com/Docs/n8n/n8n-scrapeops-node-integration.png)

  ## What is ScrapeOps?

  [ScrapeOps](https://scrapeops.io) provides a suite of tools to simplify web scraping operations:

  - **🔀 Proxy API**: Access high-quality proxies through a single endpoint for reliable web scraping
  - **📊 Parser API**: Extract structured data from HTML content of popular websites
  - **💾 Data API**: Retrieve and query data from ScrapeOps datasets

  ## ✨ Key Features

  ### 🔀 Proxy API
  - Smart proxy rotation across multiple providers
  - [JavaScript rendering support](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/headless-browser/) for dynamic sites
  - [Anti-bot bypass capabilities](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/anti-bot-bypass/) (Cloudflare, DataDome, etc.)
  - [Geo-targeting options](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/country-geotargeting/)
  - [Mobile and residential proxy support](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/residential-proxies/)
  - [Session management](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/sticky-sessions/) for multi-step scraping

  ### 📊 Parser API
  - Extract structured data from popular websites without maintaining your own parsers
  - **Supported Sites**: [Amazon](https://scrapeops.io/docs/parser-api/parsers/amazon-product-parser/), [eBay](https://scrapeops.io/docs/parser-api/parsers/ebay-product-parser/), [Walmart](https://scrapeops.io/docs/parser-api/parsers/walmart-product-parser/), [Indeed](https://scrapeops.io/docs/parser-api/parsers/indeed-product-parser/), [Redfin](https://scrapeops.io/docs/parser-api/parsers/redfin-product-parser/)
  - **Page Types**: Product pages, search results, reviews, categories
  - Returns clean, structured JSON data

  ### 💾 Data API
  - Direct access to structured data endpoints
  - **[Amazon Product API](https://scrapeops.io/docs/data-api/amazon-product-api/)**: Get product details by ASIN or URL
  - **[Amazon Search API](https://scrapeops.io/docs/data-api/amazon-product-search-api/)**: Search products and get structured results
  - No HTML scraping required - get data in a single request

  ---

  ## 📦 Installation

  ### Method 1: Install via n8n Cloud UI (Recommended)

  If you're using n8n Cloud, you can easily install the ScrapeOps node directly from the UI:

  1. **Sign in to n8n**, open the editor, and click **+** in the top right to open the Nodes panel

  ![Plus Sign in n8n](https://scrapeops-assets-2.nyc3.cdn.digitaloceanspaces.com/Docs/n8n/click_plus_n8n_scrapeops.png)

  2. **Search for "ScrapeOps"** node using the search bar. Look for the version marked by a badge ☑. Then, select **install**.

  ![Type ScrapeOps](https://scrapeops-assets-2.nyc3.cdn.digitaloceanspaces.com/Docs/n8n/type_scrapeops-n8n.png)

  3. The ScrapeOps node will be installed and appear in your node palette automatically.

  ### Method 2: Install via n8n Settings (Self-Hosted)

  For self-hosted n8n instances:

  1. Open your n8n instance
  2. Navigate to **Settings** → **Community Nodes**
  3. Click **Install a community node**
  4. Enter the package name: `@scrapeops/n8n-nodes-scrapeops`
  5. Click **Install**
  6. Restart your n8n instance when prompted

  ### Method 3: Manual Installation (Self-Hosted)

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

  # Install the ScrapeOps node
  npm install @scrapeops/n8n-nodes-scrapeops

  # Restart n8n
  n8n start
  ```

  ### Method 4: Docker Installation

  For Docker users, add the node to your `docker-compose.yml`:

  ```yaml
  version: '3.8'
  services:
    n8n:
      image: n8nio/n8n
      environment:
        - N8N_COMMUNITY_NODES_ENABLED=true
        - NODE_FUNCTION_ALLOW_EXTERNAL=n8n-nodes-scrapeops
      volumes:
        - ~/.n8n:/home/node/.n8n
  ```

  Then install the node:

  ```bash
  docker exec -it <container_name> npm install @scrapeops/n8n-nodes-scrapeops
  docker restart <container_name>
  ```

  ---

  ## 🔑 Authentication

  ### Getting Your ScrapeOps API Key

  To use the ScrapeOps node, you'll need a **ScrapeOps API key** which you can get by signing up for a [free account here](https://scrapeops.io/app/register/proxy).

  **Steps to get your API key:**

  1. **Sign up for a free account** at [ScrapeOps](https://scrapeops.io/app/register/proxy)
  2. **Verify your email address** (required to activate your API key)
  3. **Visit your dashboard** at [ScrapeOps Dashboard](https://scrapeops.io/app/dashboard)
  4. **Copy your API key** from the dashboard

  ![Get The API Key](./images/scrapeops-dashboard.png)

  > ⚠️ **Important:** You must confirm your email address to activate your API key. Check your inbox for a verification email from ScrapeOps.

  ### Configure Credentials in n8n

  1. In n8n, go to **Credentials** → **Add Credential**.

  ![Create Credentials](https://scrapeops-assets-2.nyc3.cdn.digitaloceanspaces.com/Docs/n8n/create_credential_n8n.png)

  2. Search for **"ScrapeOps API"** and enter your API key.

  ![Enter API Key](https://scrapeops-assets-2.nyc3.cdn.digitaloceanspaces.com/Docs/n8n/add_key_save.png)

  3. Save and test the credentials.

  ---

  ## 🎯 Quick Start

  ### Adding the Node to a Workflow

  1. Create a new workflow in n8n.
  2. Click Add to Workflow **"ScrapeOps"** node from the palette.

  ![Add to Workflow](https://scrapeops-assets-2.nyc3.cdn.digitaloceanspaces.com/Docs/n8n/add%20to%20workflow%20n8n%20scrapeops.png)

  3. Select an API (Proxy, Parser, or Data) and configure parameters.

  ![Choose API Type](https://scrapeops-assets-2.nyc3.cdn.digitaloceanspaces.com/Docs/n8n/3%20types%20of%20API.png)


  You can monitor your usage in the [ScrapeOps Dashboard](https://scrapeops.io/app/dashboard).

  ---

  ## 📚 API Documentation

  ### 🔀 Proxy API

  Route GET/POST requests through proxies to scrape blocked sites.

  **Basic Parameters:**
  - **URL:** Target URL to scrape (required)
  - **Method:** GET or POST (default: GET)  
  - **Return Type:** Default (raw response) or JSON

  **Advanced Options:**

  | Option | Type | Description | Default | Example Values |
  |--------|------|-------------|---------|----------------|
  | **[Follow Redirects](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/follow-redirects/)** | Boolean | Follow HTTP redirects | true | `true`, `false` |
  | **[Keep Headers](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/custom-headers/)** | Boolean | Use your custom headers | false | `true`, `false` |
  | **[Initial Status Code](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/transparent-status-codes/)** | Boolean | Return initial status code | false | `true`, `false` |
  | **[Final Status Code](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/transparent-status-codes/)** | Boolean | Return final status code | false | `true`, `false` |
  | **[Optimize Request](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/optimize-request/)** | Boolean | Auto-optimize settings | false | `true`, `false` |
  | **[Max Request Cost](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/optimize-request/)** | Number | Max credits to use (with optimize) | 0 | `10`, `50`, `100` |
  | **[Render JavaScript](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/headless-browser/)** | Boolean | Enable headless browser | false | `true`, `false` |
  | **[Wait Time](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/wait-time/)** | Number | Wait before capture (ms) | 0 | `3000`, `5000` |
  | **[Wait For](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/wait-for/)** | String | CSS selector to wait for | - | `.product-title`, `#content` |
  | **[Scroll](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/scroll-page/)** | Number | Scroll pixels before capture | 0 | `1000`, `2000` |
  | **[Screenshot](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/screenshot/)** | Boolean | Return base64 screenshot | false | `true`, `false` |
  | **[Device Type](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/device-type/)** | String | Device emulation | desktop | `desktop`, `mobile` |
  | **[Premium Proxies](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/premium-proxies/)** | String | Premium level | level_1 | `level_1`, `level_2` |
  | **[Residential Proxies](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/residential-proxies/)** | Boolean | Use residential IPs | false | `true`, `false` |
  | **[Mobile Proxies](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/mobile-proxies/)** | Boolean | Use mobile IPs | false | `true`, `false` |
  | **[Session Number](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/sticky-sessions/)** | Number | Sticky session ID | 0 | `12345`, `67890` |
  | **[Country](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/country-geotargeting/)** | String | Geo-targeting country | - | `us`, `gb`, `de`, `fr`, `ca`, `au`, `jp`, `in` |
  | **[Bypass](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/anti-bot-bypass/)** | String | Anti-bot bypass level | - | `cloudflare_level_1`, `cloudflare_level_2`, `cloudflare_level_3`, `datadome`, `perimeterx`, `incapsula`, `generic_level_1` to `generic_level_4` |

  **Example Configuration:**
  ```
  API Type: Proxy API
  URL: https://example.com
  Method: GET
  Render JavaScript: true
  Wait Time: 3000
  Country: us
  ```

  ### 📊 Parser API

  Parse HTML into structured JSON for supported domains.

  **Parameters:**
  - **Domain:** [Amazon](https://scrapeops.io/docs/parser-api/parsers/amazon-product-parser/), [eBay](https://scrapeops.io/docs/parser-api/parsers/ebay-product-parser/), [Walmart](https://scrapeops.io/docs/parser-api/parsers/walmart-product-parser/), [Indeed](https://scrapeops.io/docs/parser-api/parsers/indeed-product-parser/), [Redfin](https://scrapeops.io/docs/parser-api/parsers/redfin-product-parser/)
  - **URL:** Page URL (required)
  - **HTML Content:** Raw HTML to parse (required)

  **Example Configuration:**
  ```
  API Type: Parser API
  Domain: Amazon
  URL: https://www.amazon.com/dp/B08N5WRWNW
  HTML Content: {{ $node["Proxy_API"].json.body }}
  ```

  ### 💾 Data API

  Tap into pre-scraped datasets for commerce, jobs, and real estate without maintaining your own crawlers or parsers.

  **Workflow basics**

  - **Domain**: Choose `Amazon`, `eBay`, `Walmart`, `Indeed`, or `Redfin`.
  - **API Type**: Select the dataset endpoint that matches the data you need (product, search, reviews, etc.).
  - **Input Type**: Decide whether you want to identify the record via ID, query, or URL.
  - **Advanced Options**: Provide localization parameters (`country`, `tld`) when available to scope the dataset to a specific market.

  **1. Amazon Product Data (Using URL)**
  ```text
  Domain: Amazon
  API Type: Product API
  Input Type: URL
  Product URL: https://www.amazon.com/dp/B08N5WRWNW
  ```

  **2. Walmart Search Results (Using Query)**
  ```text
  Domain: Walmart
  API Type: Search API
  Input Type: Query
  Search Query: laptop
  Advanced Options: Country = us
  ```

  **Supported Domains:**
  - **Amazon**: Product, Search
  - **eBay**: Product, Search, Feedback, Category, Store
  - **Walmart**: Product, Search, Review, Shop, Browse, Category
  - **Indeed**: Job Search, Job Detail, Company Search/Reviews/Jobs
  - **Redfin**: Sale/Rent Search, Detail, Building, Agent, State



  ---

  ## 🎯 Common Use Cases

  ### 1. **Price Monitoring**
  - Track product prices across multiple e-commerce sites
  - Set up alerts for price drops
  - Generate competitive pricing reports

  ### 2. **Market Research**
  - Collect product reviews and ratings
  - Monitor competitor inventory
  - Track market trends

  ### 3. **Lead Generation**
  - Extract business information from directories
  - Collect job postings from career sites
  - Find real estate listings

  ### 4. **Content Aggregation**
  - Collect news articles
  - Monitor social media mentions
  - Aggregate product descriptions

  ---

  ## 🛠️ Best Practices

  ### 1. Start Simple
  Begin with basic requests and add complexity:
  ```
  1. Basic GET request
  2. Add JavaScript rendering if needed
  3. Add wait conditions
  4. Enable anti-bot bypass if blocked
  ```

  ### 2. Optimize for Cost
  - Use [`optimize_request: true`](https://scrapeops.io/docs/web-scraping-proxy-api-aggregator/advanced-functionality/optimize-request/) for automatic optimization
  - Set `max_request_cost` to control spending
  - Only enable features you need

  ### 3. Handle Dynamic Content
  For JavaScript-heavy sites:
  ```
  Render JavaScript: true
  Wait Time: 3000
  Wait For: .main-content
  Scroll: 1000
  ```

  ### 4. Session Management
  For multi-step scraping:
  ```
  Session Number: 12345
  // Use same number across requests
  ```

  ---

  ## 🐛 Troubleshooting

  ### Node Not Appearing
  **Problem:** ScrapeOps node doesn't show up after installation

  **Solution:**
  1. Ensure n8n was restarted after installation
  2. Check that community nodes are enabled
  3. Verify the installation with: `npm list @scrapeops/n8n-nodes-scrapeops`

  ### Authentication Failures
  **Problem:** "Invalid API Key" error

  **Solution:**
  1. Verify API key is copied correctly (no extra spaces)
  2. Check if API key is active in ScrapeOps dashboard
  3. Ensure you're using the correct credential in the node

  ### Connection Timeouts
  **Problem:** Requests timing out

  **Solution:**
  1. Check your firewall settings
  2. Verify n8n can make external HTTP requests
  3. Test with a simple URL first (like httpbin.org)

  ---

  ## 📖 Resources

  - **[ScrapeOps Documentation](https://scrapeops.io/docs/intro/)** - Complete API documentation
  - **[ScrapeOps n8n Node Documentation](https://scrapeops.io/docs/n8n/overview)** - Complete ScrapeOps n8n Node documentation
  - **[n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)** - n8n integration guide
  - **[ScrapeOps Dashboard](https://scrapeops.io/app/dashboard)** - Monitor usage and performance
  - **[n8n Community Forum](https://community.n8n.io/)** - Get help from the community

  ---

  ## 🤝 Support

  - **ScrapeOps Support:** support@scrapeops.io
  - **n8n Community Forum:** [community.n8n.io](https://community.n8n.io)
  - **GitHub Issues:** [Report bugs or request features](https://github.com/ScrapeOps/n8n-community-node/issues)

  ---

  ## 📄 License

  [MIT](LICENSE.md)

  ---

  **Ready to automate your web scraping?** Get started with the [ScrapeOps n8n integration](https://n8n.io/integrations/scrapeops/) today!

ai_documentation_summary:
  {"purpose":"The ScrapeOps n8n node integrates web scraping capabilities including proxy aggregation, HTML parsing, and structured data extraction directly into n8n workflows.","capabilities":["Proxy API with smart rotation and anti-bot bypass","Headless browser support for dynamic sites","Geo-targeting and mobile/residential proxy support","Session management for multi-step scraping","Parser API for Amazon, eBay, Walmart, Indeed, and Redfin","Data API for direct product and search data retrieval","Structured JSON data extraction"],"authentication":"API Key required (ScrapeOps API key)","commonUseCases":["E-commerce price monitoring","Product data extraction from Amazon/eBay","Web scraping with proxy rotation","Structured data queries without HTML parsing"],"limitations":["Email verification required to activate API key","Free account limits apply (specifics not detailed in README)"],"relatedNodes":["HTTP Request","JSON Data","Code"]}


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

updated_at: 2026-07-14 14:40:33
author_name: bilalararou
author_github_url: https://github.com/Nuelink/n8n-nodes-nuelink.git
npm_package_name: @nuelink/n8n-nodes-nuelink
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:33.201Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Post",
          "value": "post"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createPost",
      "options": [
        {
          "name": "Create",
          "value": "createPost",
          "action": "Create post",
          "routing": {
            "request": {
              "url": "/pabbly",
              "method": "POST"
            }
          },
          "description": "Create a new post on Nuelink"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "post"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "createPost",
      "action": "Create post",
      "routing": {
        "request": {
          "url": "/pabbly",
          "method": "POST"
        }
      },
      "description": "Create a new post on Nuelink",
      "resource": "post"
    }
  ]

npm_readme:
  # n8n-nodes-nuelink

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

  Nuelink is a social media automation and scheduling platform that helps creators, brands, and businesses streamline their content distribution across multiple social media platforms.

  [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

  - **Create Post**: Allows you to create a new post on Nuelink, specifying the content and the settings.

  ## Credentials

  Users need to authenticate with Nuelink to use this node. To set up authentication:
  1. Sign up for a Nuelink account at [Nuelink](https://nuelink.com).
  2. Create a new automation in the Nuelink dashboard.
  3. Obtain your API key from the automation settings.
  4. In n8n, add a new credential for Nuelink and enter your API key.

  ## Compatibility

  This node is compatible with n8n version 1.36.0 and above. It has been tested against the latest stable version of n8n.

  ## Usage

  1. Add a **Trigger** node (e.g., Webhook or Cron).
  2. Add the **Nuelink** node and choose an operation (e.g., Create Post).
  3. Select or create your API credentials.
  4. Configure your input data (e.g., post content, categories, image URLs).
  5. Connect additional nodes (e.g., filters, conditions, notifications) as needed.

  > **Note**  
  > This node is intended for users who are already familiar with n8n.  
  > If you're new to n8n, check out the [Try it out guide](https://docs.n8n.io/try-it-out/) to get started quickly.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Nuelink](https://nuelink.com)
  * [Nuelink help center](https://help.nuelink.com)

ai_documentation_summary:
  {"purpose":"This n8n community node enables users to interact with the Nuelink API for social media automation and content scheduling.","capabilities":["Create posts on Nuelink","Specify post content and settings","Schedule content distribution across multiple platforms"],"authentication":"API key required","commonUseCases":["Automating social media content distribution","Scheduling posts for creators and brands","Streamlining multi-platform content management"],"limitations":["Intended for users already familiar with n8n workflow automation","Limited to basic post creation operations as per current documentation"],"relatedNodes":["Webhook","Cron","Filter","Condition","Notification"]}


node_type: @decodo/n8n-nodes-decodo.decodo
package_name: @decodo/n8n-nodes-decodo
display_name: Decodo
description: Decodo's Web Scraping API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: decodo
author_github_url: https://github.com/Decodo/n8n-nodes-decodo.git
npm_package_name: @decodo/n8n-nodes-decodo
npm_version: 1.9.1
community_fetched_at: 2026-07-14T14:40:33.201Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "universal",
      "options": [
        {
          "name": "Universal",
          "value": "universal",
          "action": "Scrape using Universal target"
        },
        {
          "name": "Google Search",
          "value": "google_search",
          "action": "Scrape using Google Search target"
        },
        {
          "name": "Amazon",
          "value": "amazon",
          "action": "Scrape using Amazon target"
        },
        {
          "name": "YouTube Transcript",
          "value": "youtube_transcript",
          "action": "Scrape using YouTube Transcript target"
        },
        {
          "name": "Reddit Subreddit",
          "value": "reddit_subreddit",
          "action": "Scrape using Reddit Subreddit target"
        }
      ],
      "required": true,
      "description": "Decodo Scraper API supported target",
      "displayName": "Target",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Universal",
      "value": "universal",
      "action": "Scrape using Universal target"
    },
    {
      "name": "Google Search",
      "value": "google_search",
      "action": "Scrape using Google Search target"
    },
    {
      "name": "Amazon",
      "value": "amazon",
      "action": "Scrape using Amazon target"
    },
    {
      "name": "YouTube Transcript",
      "value": "youtube_transcript",
      "action": "Scrape using YouTube Transcript target"
    },
    {
      "name": "Reddit Subreddit",
      "value": "reddit_subreddit",
      "action": "Scrape using Reddit Subreddit target"
    }
  ]

npm_readme:
  # Decodo n8n Node

  This repository provides an n8n integration for **Decodo's Web Scraping API**, a powerful web scraping tool that automatically bypasses blocks and bot protection to extract data from any target URL. It's designed for developers and startups looking to automate data collection workflows from platforms like Google, eCommerce sites, and job boards.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform that lets you connect apps, APIs, and services to build automated workflows with minimal effort.

  ## Features

  - **Easy integration**. Plug the Decodo's n8n node into existing workflows to start scraping with minimal setup.
  - **Bypassing CAPTCHAs, rate-limits, and IP bans**. Automatic handling of common anti-bot defenses.
  - **Geo-targeting**. Request region-specific results from websites that restrict content based on location.
  - **Rotating proxy support to avoid IP bans**. Built-in proxy rotation to keep requests distributed and persistent.
  - **Structured data output**. Get results in JSON or Markdown formats for easy readability and further analysis.

  ## Installation

  Decodo is an official node integrated into n8n. To use it, simply:

  1. Open the nodes panel.

  <img src="docs/n8n-node-tab.png" width="500px">

  2. Search for "Decodo" to find the node.

  <img src="docs/n8n-decodo-search.png" width="500px">

  3. Click **+ Add to workflow**.

  <img src="docs/n8n-decodo-add-to-workflow.png" width="500px">

  ### Obtaining a Decodo account

  The node requires a [Decodo Web Scraping API](https://decodo.com/scraping) Advanced plan. You can get started with a free trial on the [dashboard](https://dashboard.decodo.com/).

  Once you have a plan activated, take a note of your generated authentication token from the [Web Scraping API page](https://dashboard.decodo.com/web-scraping-api/scraper):

  <img src="docs/decodo_dashboard_auth.png" width="500px">

  ### Setting up credentials on n8n

  1. Open the credentials window on n8n.

  <img src="docs/creds_01.png" width="500px">

  2. Create a new credential.

  <img src="docs/creds_02.png" width="500px">

  3. Find the _Decodo Credentials API_.

  <img src="docs/creds_03.png" width="500px">

  4. Enter your authentication token.

  <img src="docs/n8n_auth.png" width="500px">

  ## Using the node

  The node can be used in 2 ways - as an individual HTTP request node, or a tool for an AI agent.

  ### Individual node

  To use the Decodo node by itself, connect it to an existing workflow. Once you add it, you can set the target **URL** and **Geolocation**.

  <img src="docs/n8n-decodo-node-config.png" width="500px">

  The node requests the target URL through a proxy in the chosen location, scrapes the page, and returns the response for use by downstream nodes such as the **HTML** node to extract content. Below is an example setup:

  <img src="docs/n8n-decodo-workflow.png" width="500px">

  ### AI agent tool

  You can connect the Decodo node to the AI Agent node as a tool. You don't need to modify anything inside the node. Here's what a simple setup would look like:

  <img src="docs/n8n_setup.png" width="500px">

  With this setup, you can prompt the agent to scrape a website in order to extract information. The prompt must be detailed and specific to return the best results.

  **Bad prompt example**

  If your AI model does not have access to the most recent web information, the following question may fail:

  ```
  Who won the NBA in 2025?
  ```

  **Good prompt example**

  The question is more likely to be answered by updating the prompt with an instruction to scrape a reliable source:

  ```
  Scrape Wikipedia and tell me who won the NBA in 2025.
  ```

  ## Parameters

  When used as an AI tool, most parameters can be inferred automatically from messages, for example:

  | Parameter  | Description                                    | Example message                                                         |
  | ---------- | ---------------------------------------------- | ----------------------------------------------------------------------- |
  | `url`      | The target URL to scrape                       | Scrape Wikipedia and tell me the article of the day.                    |
  | `headless` | Render JS when scraping                        | Scrape https://ip.decodo.com/json with JS rendering.                    |
  | `geo`      | The country name from which to scrape          | Scrape https://ip.decodo.com/json with United States geolocation.       |
  | `markdown` | Receive Markdown type responce instead of HTML | Scrape https://ip.decodo.com/json and return result in markdown format. |

  If used as an individual node, all parameters can be manually configured by double-clicking on the node.

  ## Development & releases

  ### Contribution

  To contribute to this node:

  1. Install n8n globally in your development machine.

  ```
  npm install n8n -g
  ```

  2. Pull this repository.

  ```
  git clone https://github.com/Decodo/n8n-nodes-decodo.git

  ```

  3. Navigate to the downloaded folder and build it.

  ```
  cd n8n-nodes-decodo
  npm install
  npm run build
  ```

  4. Inside the project folder, run `npm link` after building to make your local build of `@decodo/n8n-nodes-decodo` available in the local npm registry.
  5. Inside `~/.n8n/custom`, run `npm link @decodo/n8n-nodes-decodo`.

  See this [documentation page](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally) for more information.

  ### Automated releases

  This project uses automated releases via GitHub Actions and semantic-release. When code is merged into the `main` branch, the following happens automatically:

  1. **Semantic analysis**. Commit messages are analyzed to determine the type of release (patch, minor, major).
  2. **Version bump**. The version in `package.json` is automatically updated.
  3. **NPM publish**. The package is built and published to npm as `@decodo/n8n-nodes-decodo`.
  4. **GitHub release**. A GitHub release is created with automatically generated release notes.
  5. **Git tag**. A git tag is created for the new version.

  ### Required secrets

  For automated releases to work, the following GitHub repository secrets must be configured:

  - `NPM_TOKEN`. An npm access token with publish permissions for the `@decodo` organization.
  - `GITHUB_TOKEN`. Automatically provided by GitHub Actions (no setup required).

  ### Commit message format

  To trigger releases, use conventional commit messages:

  - `feat: new feature` → Minor version bump
  - `fix: bug fix` → Patch version bump
  - `feat!: breaking change` or `BREAKING CHANGE:` in footer → Major version bump
  - `docs:`, `style:`, `refactor:`, `test:`, `chore:` → No release

  ## Compatibility

  The Decodo node has been developed and tested with:

  - Node.js v22.17.0
  - n8n nodes API version 1
  - [n8n-workflow](https://www.npmjs.com/package/n8n-workflow) v1.82.0

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Decodo's Web Scraping API documentation](https://help.decodo.com/docs/web-scraping-api-introduction)

  ## Further reading

  - [Complete guide for building n8n web scraping automations](https://decodo.com/blog/n8n-web-scraping-automation)

ai_documentation_summary:
  {"purpose":"This n8n node integrates Decodo's Web Scraping API to automatically bypass CAPTCHAs, rate limits, and IP bans while extracting data from any target URL with optional geo-targeting.","capabilities":["Web scraping from any URL","Automatic bypass of CAPTCHAs and bot protection","Bypassing rate limits and IP bans","Geo-targeting for region-specific results","Rotating proxy support to avoid IP bans","Structured data output in JSON or Markdown formats","JavaScript rendering (headless mode) support","Integration with AI Agent tools for automated scraping"],"authentication":"API key required (Decodo Web Scraping API token)","commonUseCases":["Automated data collection from eCommerce sites","Job board monitoring and scraping","Real-time information extraction from platforms like Google","AI agent-powered web research and data gathering","Monitoring specific content based on geographic location"],"limitations":["Requires Decodo Advanced plan (free trial available)","AI agent prompts must be detailed and specific for best results","May fail if AI model lacks access to recent web information without explicit scraping instructions"],"relatedNodes":["HTTP Request","HTML","AI Agent","Webhook"]}


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

updated_at: 2026-07-14 14:40:33
author_name: netgsm
author_github_url: https://github.com/netgsm/n8n-nodes-netgsm.git
npm_package_name: @netgsm/n8n-nodes-netgsm
npm_version: 0.1.41
community_fetched_at: 2026-07-14T14:40:33.202Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "sms",
      "options": [
        {
          "name": "SMS",
          "value": "sms"
        },
        {
          "name": "ILETI YONETIM SISTEMI",
          "value": "iys"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "smsSend",
      "options": [
        {
          "name": "SMS Send",
          "value": "smsSend",
          "action": "Send a text message",
          "routing": {
            "send": {
              "type": "body",
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/sms/rest/v2/send",
              "json": true,
              "encoding": "json",
              "returnFullResponse": true
            }
          },
          "description": "Send a text message to a phone number"
        },
        {
          "name": "SMS Status Query",
          "value": "smsStatusQuery",
          "action": "Check SMS status",
          "routing": {
            "send": {
              "type": "body",
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/sms/rest/v2/report",
              "json": true,
              "encoding": "json",
              "returnFullResponse": true
            }
          },
          "description": "Check delivery status of a sent SMS using Job ID"
        },
        {
          "name": "SMS Inbox Query",
          "value": "smsInboxQuery",
          "action": "Get inbox messages",
          "routing": {
            "request": {
              "url": "/sms/rest/v2/inbox",
              "method": "GET",
              "returnFullResponse": true
            }
          },
          "description": "Retrieve received SMS messages from inbox"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "iysAdd",
      "options": [
        {
          "name": "Add IYS Address",
          "value": "iysAdd",
          "action": "Add phone number or email",
          "routing": {
            "send": {
              "type": "body",
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/iys/add",
              "json": true,
              "encoding": "json",
              "returnFullResponse": true
            }
          },
          "description": "This service is used to add a phone number or email address to IYS"
        },
        {
          "name": "Query IYS Address",
          "value": "iysQuery",
          "action": "Query phone number or email",
          "routing": {
            "send": {
              "type": "body",
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/iys/search",
              "json": true,
              "encoding": "json",
              "returnFullResponse": true
            }
          },
          "description": "This service is used to add a phone number or email address to IYS"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "iys"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "SMS Send",
      "value": "smsSend",
      "action": "Send a text message",
      "routing": {
        "send": {
          "type": "body",
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/sms/rest/v2/send",
          "json": true,
          "encoding": "json",
          "returnFullResponse": true
        }
      },
      "description": "Send a text message to a phone number",
      "resource": "sms"
    },
    {
      "name": "SMS Status Query",
      "value": "smsStatusQuery",
      "action": "Check SMS status",
      "routing": {
        "send": {
          "type": "body",
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/sms/rest/v2/report",
          "json": true,
          "encoding": "json",
          "returnFullResponse": true
        }
      },
      "description": "Check delivery status of a sent SMS using Job ID",
      "resource": "sms"
    },
    {
      "name": "SMS Inbox Query",
      "value": "smsInboxQuery",
      "action": "Get inbox messages",
      "routing": {
        "request": {
          "url": "/sms/rest/v2/inbox",
          "method": "GET",
          "returnFullResponse": true
        }
      },
      "description": "Retrieve received SMS messages from inbox",
      "resource": "sms"
    },
    {
      "name": "Add IYS Address",
      "value": "iysAdd",
      "action": "Add phone number or email",
      "routing": {
        "send": {
          "type": "body",
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/iys/add",
          "json": true,
          "encoding": "json",
          "returnFullResponse": true
        }
      },
      "description": "This service is used to add a phone number or email address to IYS",
      "resource": "iys"
    },
    {
      "name": "Query IYS Address",
      "value": "iysQuery",
      "action": "Query phone number or email",
      "routing": {
        "send": {
          "type": "body",
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/iys/search",
          "json": true,
          "encoding": "json",
          "returnFullResponse": true
        }
      },
      "description": "This service is used to add a phone number or email address to IYS",
      "resource": "iys"
    }
  ]

npm_readme:
  # n8n-nodes-netgsm

  This is the official Netgsm n8n community node. This node integrates with the SMS Gateway to send messages directly from 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)  <!-- delete if no auth needed -->  
  [Compatibility](#compatibility)  
  [Usage](#usage)  <!-- delete if not using this section -->  
  [Resources](#resources)  
  [Version history](#version-history)  <!-- delete if not using this section -->  

  ## Installation

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

  ## Operations

  ### SMS
  - SMS Send
  - SMS Status Query
  - List SMS Inbox

  ## Credentials

  This node requires an API Username and Password from Netgsm, You can generate one by going to your [Dashboard](https://portal.netgsm.com.tr/webportal/abonelikislemleri/yetkilendirme/set).

  ## Compatibility

  This node has been tested with n8n 1.94.0

  ## Usage

  [To be completed]

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Netgsm Documentation](https://www.netgsm.com.tr/dokuman)

  ## Version history

  ### 0.1.0
  - Initial version of the project

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Netgsm SMS Gateway API to send SMS messages, query message status, and list messages from the inbox directly within n8n workflows.","capabilities":["Send SMS messages","Query SMS message status","List SMS inbox messages"],"authentication":"API Username and Password","commonUseCases":["Automated SMS notifications for user actions","Two-factor authentication (2FA) message delivery","Order confirmation and shipping updates"],"limitations":["Requires manual setup of API credentials in the Netgsm dashboard","Usage section in documentation is incomplete"],"relatedNodes":["HTTP Request","Code"]}


node_type: @apaleo/n8n-nodes-apaleo-official.apaleo
package_name: @apaleo/n8n-nodes-apaleo-official
display_name: Apaleo Official
description: Interact with Apaleo API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: pgrm
author_github_url: https://github.com/apaleo/n8n-nodes-apaleo.git
npm_package_name: @apaleo/n8n-nodes-apaleo-official
npm_version: 1.0.37
community_fetched_at: 2026-07-14T14:40:33.203Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Availability",
      "options": [
        {
          "name": "Availability",
          "value": "Availability"
        },
        {
          "name": "ReservationAvailability",
          "value": "ReservationAvailability"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "availability-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "Block",
      "options": [
        {
          "name": "Block",
          "value": "Block"
        },
        {
          "name": "BlockAction",
          "value": "BlockActions"
        },
        {
          "name": "Booking",
          "value": "Booking"
        },
        {
          "name": "Group",
          "value": "Group"
        },
        {
          "name": "Offer",
          "value": "Offer"
        },
        {
          "name": "Reservation",
          "value": "Reservation"
        },
        {
          "name": "ReservationAction",
          "value": "ReservationActions"
        },
        {
          "name": "Type",
          "value": "Types"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "booking-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "Folio",
      "options": [
        {
          "name": "Folio",
          "value": "Folio"
        },
        {
          "name": "FolioAction",
          "value": "FolioActions"
        },
        {
          "name": "FolioPayment",
          "value": "FolioPayments"
        },
        {
          "name": "Invoice",
          "value": "Invoice"
        },
        {
          "name": "InvoiceAction",
          "value": "InvoiceAction"
        },
        {
          "name": "SubLedger",
          "value": "SubLedger"
        },
        {
          "name": "Type",
          "value": "Types"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "finance-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "Property",
      "options": [
        {
          "name": "Property",
          "value": "Property"
        },
        {
          "name": "Unit",
          "value": "Unit"
        },
        {
          "name": "UnitAttribute",
          "value": "UnitAttribute"
        },
        {
          "name": "UnitGroup",
          "value": "UnitGroup"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "inventory-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "BookingLogs",
      "options": [
        {
          "name": "BookingLog",
          "value": "BookingLogs"
        },
        {
          "name": "FinanceLog",
          "value": "FinanceLogs"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "logs-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "Maintenance",
      "options": [
        {
          "name": "Maintenance",
          "value": "Maintenance"
        },
        {
          "name": "Operation",
          "value": "Operations"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "operations-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "AgeCategory",
      "options": [
        {
          "name": "AgeCategory",
          "value": "AgeCategory"
        },
        {
          "name": "CancellationPolicy",
          "value": "CancellationPolicy"
        },
        {
          "name": "Company",
          "value": "Company"
        },
        {
          "name": "CorporateCode",
          "value": "CorporateCodes"
        },
        {
          "name": "NoShowPolicy",
          "value": "NoShowPolicy"
        },
        {
          "name": "PromoCode",
          "value": "PromoCodes"
        },
        {
          "name": "Rate",
          "value": "Rate"
        },
        {
          "name": "RatePlan",
          "value": "RatePlan"
        },
        {
          "name": "Service",
          "value": "Service"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "Reports",
      "options": [
        {
          "name": "Report",
          "value": "Reports"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "reports-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "CapturePolicies",
      "options": [
        {
          "name": "CapturePolicy",
          "value": "CapturePolicies"
        },
        {
          "name": "CityTax",
          "value": "CityTax"
        },
        {
          "name": "CustomSubAccount",
          "value": "CustomSubAccounts"
        },
        {
          "name": "FeatureSetting",
          "value": "FeatureSettings"
        },
        {
          "name": "InvoiceAddress",
          "value": "InvoiceAddress"
        },
        {
          "name": "Language",
          "value": "Languages"
        },
        {
          "name": "MarketSegment",
          "value": "MarketSegment"
        },
        {
          "name": "PropertySetting",
          "value": "PropertySettings"
        },
        {
          "name": "TimeSliceDefinition",
          "value": "TimeSliceDefinitions"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "HealthCheck",
      "options": [
        {
          "name": "HealthCheck",
          "value": "HealthCheck"
        },
        {
          "name": "Subscription",
          "value": "Subscriptions"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "group": [
            "webhook-v1"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "AvailabilityServicesGet",
      "options": [
        {
          "name": "Get Available Services",
          "value": "AvailabilityServicesGet",
          "action": "Get available services",
          "description": "Get a list of all available services in a property"
        },
        {
          "name": "Get Available Unit Groups",
          "value": "AvailabilityUnit-groupsGet",
          "action": "Get available unit groups",
          "description": "Get a list of all available unit groups in a property"
        },
        {
          "name": "Get Available Units",
          "value": "AvailabilityUnitsGet",
          "action": "Get available units",
          "description": "Get a list of all available units in a property"
        },
        {
          "name": "Update Unit Group Availability",
          "value": "AvailabilityUnit-groupsByIdPatch",
          "action": "Update unit group availability",
          "description": "Allows to modify the unit group availability"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "availability-v1"
          ],
          "resource": [
            "Availability"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "AvailabilityReservationsByIdUnitsGet",
      "options": [
        {
          "name": "Get Available Units For Reservation",
          "value": "AvailabilityReservationsByIdUnitsGet",
          "action": "Get available units for reservation",
          "description": "Get a list of all available units for a reservation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "availability-v1"
          ],
          "resource": [
            "ReservationAvailability"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "BookingBlocks$countGet",
      "options": [
        {
          "name": "Count Blocks",
          "value": "BookingBlocks$countGet",
          "action": "Count blocks",
          "description": "Returns number of blocks"
        },
        {
          "name": "Create Block",
          "value": "BookingBlocksPost",
          "action": "Create block",
          "description": "Creates a block"
        },
        {
          "name": "Get Block",
          "value": "BookingBlocksByIdGet",
          "action": "Get block",
          "description": "Returns a specific block"
        },
        {
          "name": "List Blocks",
          "value": "BookingBlocksGet",
          "action": "List blocks",
          "description": "Returns a list of blocks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "booking-v1"
          ],
          "resource": [
            "Block"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "BookingBlock-actionsByIdAmendPut",
      "options": [
        {
          "name": "Amend Block",
          "value": "BookingBlock-actionsByIdAmendPut",
          "action": "Amend block",
          "description": "Allow to modify a block"
        },
        {
          "name": "Cancel Block",
          "value": "BookingBlock-actionsByIdCancelPut",
          "action": "Cancel block",
          "description": "Cancel a block"
        },
        {
          "name": "Confirm Block",
          "value": "BookingBlock-actionsByIdConfirmPut",
          "action": "Confirm block",
          "description": "Confirm a block"
        },
        {
          "name": "Release Block",
          "value": "BookingBlock-actionsByIdReleasePut",
          "action": "Release block",
          "description": "Release a block"
        },
        {
          "name": "Wash Block",
          "value": "BookingBlock-actionsByIdWashPut",
          "action": "Wash block",
          "description": "Wash a block"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "booking-v1"
          ],
          "resource": [
            "BlockActions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "BookingBookingsByIdReservationsPost",
      "options": [
        {
          "name": "Add Reservation To Booking",
          "value": "BookingBookingsByIdReservationsPost",
          "action": "Add reservation to booking",
          "description": "Add one or multiple reservations to an existing booking"
        },
        {
          "name": "Add Reservation To Booking Force",
          "value": "BookingBookingsByIdReservations$forcePost",
          "action": "Add reservation to booking force",
          "description": "Add one or multiple reservations to an existing booking regardless of availability or restrictions"
        },
        {
          "name": "Create Booking",
          "value": "BookingBookingsPost",
          "action": "Create booking",
          "description": "Creates a booking for one or more reservations"
        },
        {
          "name": "Create Booking Force",
          "value": "BookingBookings$forcePost",
          "action": "Create booking force",
          "description": "Creates a booking for one or more reservations regardless of availability or restrictions"
        },
        {
          "name": "Get Booking",
          "value": "BookingBookingsByIdGet",
          "action": "Get booking",
          "description": "Returns a specific booking"
        },
        {
          "name": "List Bookings",
          "value": "BookingBookingsGet",
          "action": "List bookings",
          "description": "Returns a list of all bookings, filtered by the specified parameters"
        },
        {
          "name": "Update Booking",
          "value": "BookingBookingsByIdPatch",
          "action": "Update booking",
          "description": "Allows to modify certain booking properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "booking-v1"
          ],
          "resource": [
            "Booking"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "BookingGroupsByIdReservationsPost",
      "options": [
        {
          "name": "Add Reservation To Group",
          "value": "BookingGroupsByIdReservationsPost",
          "action": "Add reservation to group",
          "description": "Add one or multiple reservations to an existing group booking using blocked inventory"
        },
        {
          "name": "Create Group",
          "value": "BookingGroupsPost",
          "action": "Create group",
          "description": "Creates a group booking"
        },
        {
          "name": "Get Group",
          "value": "BookingGroupsByIdGet",
          "action": "Get group",
          "description": "Returns a specific group booking"
        },
        {
          "name": "List Groups",
          "value": "BookingGroupsGet",
          "action": "List groups",
          "description": "Returns a list of all group bookings, filtered by the specified parameters"
        },
        {
          "name": "Update Group",
          "value": "BookingGroupsByIdPatch",
          "action": "Update group",
          "description": "Allows to modify certain group booking properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "booking-v1"
          ],
          "resource": [
            "Group"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "BookingOffer-indexGet",
      "options": [
        {
          "name": "List Offer Index",
          "value": "BookingOffer-indexGet",
          "action": "List offer index",
          "description": "Returns offers with rates and availabilities for the specified range"
        },
        {
          "name": "List Offers",
          "value": "BookingOffersGet",
          "action": "List offers",
          "description": "Returns offers for one specific stay"
        },
        {
          "name": "List Rate Plan Offers",
          "value": "BookingRate-plan-offersGet",
          "action": "List rate plan offers",
          "description": "Returns offers for a specific rate plan"
        },
        {
          "name": "List Service Offers",
          "value": "BookingService-offersGet",
          "action": "List service offers",
          "description": "Returns service offers for one specific stay"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "booking-v1"
          ],
          "resource": [
            "Offer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "BookingReservations$countGet",
      "options": [
        {
          "name": "Count Reservations",
          "value": "BookingReservations$countGet",
          "action": "Count reservations",
          "description": "Returns the number of reservations fulfilling the criteria specified in the parameters"
        },
        {
          "name": "Get Reservation",
          "value": "BookingReservationsByIdGet",
          "action": "Get reservation",
          "description": "Returns a specific reservation"
        },
        {
          "name": "Get Reservation Offers",
          "value": "BookingReservationsByIdOffersGet",
          "action": "Get reservation offers",
          "description": "Returns offers for one specific reservation"
        },
        {
          "name": "Get Reservation Service Offers",
          "value": "BookingReservationsByIdService-offersGet",
          "action": "Get reservation service offers",
          "description": "Returns service offers for one specific reservation"
        },
        {
          "name": "Get Reservation Services",
          "value": "BookingReservationsByIdServicesGet",
          "action": "Get reservation services",
          "description": "Returns the services booked for a specific reservation"
        },
        {
          "name": "List Reservations",
          "value": "BookingReservationsGet",
          "action": "List reservations",
          "description": "Returns a list of all reservations, filtered by the specified parameters"
        },
        {
          "name": "Remove Service From Reservation",
          "value": "BookingReservationsByIdServicesDelete",
          "action": "Remove service from reservation",
          "description": "Removes a service from a reservation"
        },
        {
          "name": "Update Reservation",
          "value": "BookingReservationsByIdPatch",
          "action": "Update reservation",
          "description": "Allows to modify certain reservation properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "booking-v1"
          ],
          "resource": [
            "Reservation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "BookingReservation-actionsByIdAdd-city-taxPut",
      "options": [
        {
          "name": "Add City Tax",
          "value": "BookingReservation-actionsByIdAdd-city-taxPut",
          "action": "Add city tax",
          "description": "Adds the city tax to a reservation"
        },
        {
          "name": "Amend Reservation",
          "value": "BookingReservation-actionsByIdAmendPut",
          "action": "Amend reservation",
          "description": "Allows you to amend the stay details of a reservation"
        },
        {
          "name": "Amend Reservation Force",
          "value": "BookingReservation-actionsByIdAmend$forcePut",
          "action": "Amend reservation force",
          "description": "Allows you to amend the stay details of a reservation regardless of availability or restrictions"
        },
        {
          "name": "Assign Specific Unit",
          "value": "BookingReservation-actionsByIdAssign-unitByUnitIdPut",
          "action": "Assign specific unit",
          "description": "Assign a specific unit to a reservation"
        },
        {
          "name": "Assign Unit",
          "value": "BookingReservation-actionsByIdAssign-unitPut",
          "action": "Assign unit",
          "description": "Assign a unit to a reservation"
        },
        {
          "name": "Book Service",
          "value": "BookingReservation-actionsByIdBook-servicePut",
          "action": "Book service",
          "description": "Book the service for a specific reservation"
        },
        {
          "name": "Book Service Force",
          "value": "BookingReservation-actionsByIdBook-service$forcePut",
          "action": "Book service force",
          "description": "Book the service for a specific reservation regardless of availability"
        },
        {
          "name": "Cancel Reservation",
          "value": "BookingReservation-actionsByIdCancelPut",
          "action": "Cancel reservation",
          "description": "Cancel a reservation"
        },
        {
          "name": "Check In",
          "value": "BookingReservation-actionsByIdCheckinPut",
          "action": "Check in",
          "description": "Check-in of a reservation"
        },
        {
          "name": "Check Out",
          "value": "BookingReservation-actionsByIdCheckoutPut",
          "action": "Check out",
          "description": "Check-out of a reservation"
        },
        {
          "name": "Mark No Show",
          "value": "BookingReservation-actionsByIdNoshowPut",
          "action": "Mark no show",
          "description": "Set a reservation to No-show"
        },
        {
          "name": "Remove City Tax",
          "value": "BookingReservation-actionsByIdRemove-city-taxPut",
          "action": "Remove city tax",
          "description": "Removes the city tax from a reservation"
        },
        {
          "name": "Revert Check In",
          "value": "BookingReservation-actionsByIdRevert-checkinPut",
          "action": "Revert check in",
          "description": "Reverses the check-in of a reservation"
        },
        {
          "name": "Unassign Units",
          "value": "BookingReservation-actionsByIdUnassign-unitsPut",
          "action": "Unassign units",
          "description": "Unassign units from a reservation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "booking-v1"
          ],
          "resource": [
            "ReservationActions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "BookingTypesByTypeAllowed-valuesGet",
      "options": [
        {
          "name": "List Allowed Values",
          "value": "BookingTypesByTypeAllowed-valuesGet",
          "action": "List allowed values",
          "description": "Returns a list of values that a field of the specified type can take in the specified country"
        },
        {
          "name": "List Sources",
          "value": "BookingTypesSourcesGet",
          "action": "List sources",
          "description": "Returns a list of supported sources"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "booking-v1"
          ],
          "resource": [
            "Types"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "FinanceFoliosByIdHead",
      "options": [
        {
          "name": "Check Folio Exists",
          "value": "FinanceFoliosByIdHead",
          "action": "Check folio exists",
          "description": "Check if the folio exists"
        },
        {
          "name": "Count Folios",
          "value": "FinanceFolios$countGet",
          "action": "Count folios",
          "description": "Returns number of folios"
        },
        {
          "name": "Create Folio",
          "value": "FinanceFoliosPost",
          "action": "Create folio",
          "description": "Create additional folios for a reservation, or new external folios"
        },
        {
          "name": "Get Folio",
          "value": "FinanceFoliosByIdGet",
          "action": "Get folio",
          "description": "Returns one folio"
        },
        {
          "name": "List Folios",
          "value": "FinanceFoliosGet",
          "action": "List folios",
          "description": "Returns a list of all folios"
        },
        {
          "name": "Update Folio",
          "value": "FinanceFoliosByIdPatch",
          "action": "Update folio",
          "description": "Allows to modify certain properties of a folio"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "finance-v1"
          ],
          "resource": [
            "Folio"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "FinanceFolio-actionsBulk-movePut",
      "options": [
        {
          "name": "Bulk Move Charges",
          "value": "FinanceFolio-actionsBulk-movePut",
          "action": "Bulk move charges",
          "description": "Move multiple charges from one folio to another. Multiple source folios and multiple target folios can be specified."
        },
        {
          "name": "Close Folio",
          "value": "FinanceFolio-actionsByFolioIdClosePut",
          "action": "Close folio",
          "description": "Closes a folio"
        },
        {
          "name": "Correct Folio",
          "value": "FinanceFolio-actionsByFolioIdCorrectPost",
          "action": "Correct folio",
          "description": "Corrects a folio by moving some charges. This operation creates a new folio with the charges from the request. The payment, equal to the sum of charges, is also split to this new folio so that both folios will have 0 balance."
        },
        {
          "name": "Create Bulk Allowances",
          "value": "FinanceFolio-actionsByFolioIdBulk-allowancesPost",
          "action": "Create bulk allowances",
          "description": "Posts allowances for a folio"
        },
        {
          "name": "Create Charge Allowance",
          "value": "FinanceFolio-actionsByFolioIdChargesByChargeIdAllowancesPost",
          "action": "Create charge allowance",
          "description": "Posts an allowance for a charge"
        },
        {
          "name": "Create Folio Allowance",
          "value": "FinanceFolio-actionsByFolioIdAllowancesPost",
          "action": "Create folio allowance",
          "description": "Posts an allowance for a folio"
        },
        {
          "name": "Create Folio Cancellation Fee",
          "value": "FinanceFolio-actionsByFolioIdCancellation-feePost",
          "action": "Create folio cancellation fee",
          "description": "Adds and directly posts a cancellation fee to the folio. If there are any fees configured for the property, an additional charge for each configured fee will be added. If a routing instruction is defined for the cancellation fee service type, the fee will be moved to the destination folio."
        },
        {
          "name": "Create Folio Charge",
          "value": "FinanceFolio-actionsByFolioIdChargesPost",
          "action": "Create folio charge",
          "description": "Adds and directly posts a charge to the folio. If there are any fees configured for the property, an additional charge for each configured fee will be added."
        },
        {
          "name": "Create Folio No Show Fee",
          "value": "FinanceFolio-actionsByFolioIdNo-show-feePost",
          "action": "Create folio no show fee",
          "description": "Adds and directly posts a no-show fee to the folio. If there are any fees configured for the property, an additional charge for each configured fee will be added. If a routing instruction is defined for the no-show fee service type, the fee will be moved to the destination folio."
        },
        {
          "name": "Create Folio Transitory Charge",
          "value": "FinanceFolio-actionsByFolioIdTransitory-chargesPost",
          "action": "Create folio transitory charge",
          "description": "Adds and directly posts a transitory charge to the folio. If there are any fees configured for the property, an additional charge for each configured fee will be added."
        },
        {
          "name": "Move All Folio Charges",
          "value": "FinanceFolio-actionsByFolioIdMove-all-chargesPut",
          "action": "Move all folio charges",
          "description": "Move all charges and transitory charges from one folio to another"
        },
        {
          "name": "Move Folio Charges",
          "value": "FinanceFolio-actionsByFolioIdMove-chargesPut",
          "action": "Move folio charges",
          "description": "Move multiple charges, allowances and transitory charges from one folio to another"
        },
        {
          "name": "Move Folio Payments",
          "value": "FinanceFolio-actionsByFolioIdMove-paymentsPut",
          "action": "Move folio payments",
          "description": "Move multiple payments from one guest/booking folio to another"
        },
        {
          "name": "Post Folio Charges",
          "value": "FinanceFolio-actionsByFolioIdPost-chargesPut",
          "action": "Post folio charges",
          "description": "Posts all unposted charges for the whole length of stay"
        },
        {
          "name": "Reopen Folio",
          "value": "FinanceFolio-actionsByFolioIdReopenPut",
          "action": "Reopen folio",
          "description": "Reopens a folio"
        },
        {
          "name": "Split Folio Charge",
          "value": "FinanceFolio-actionsByFolioIdChargesByChargeIdSplitPost",
          "action": "Split folio charge",
          "description": "Splits a charge into two using the percent or amount provided Creates an allowance and two new charges"
        },
        {
          "name": "Split Folio Payment",
          "value": "FinanceFolio-actionsByFolioIdPaymentsByPaymentIdSplitPost",
          "action": "Split folio payment",
          "description": "Splits a payment into two using the percent or amount provided Creates a refund and two new payments"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "finance-v1"
          ],
          "resource": [
            "FolioActions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "FinanceFoliosByFolioIdPaymentsByPaymentIdCancelPut",
      "options": [
        {
          "name": "Cancel Payment",
          "value": "FinanceFoliosByFolioIdPaymentsByPaymentIdCancelPut",
          "action": "Cancel payment",
          "description": "Cancels a pending payment link"
        },
        {
          "name": "Create Account Payment",
          "value": "FinanceFoliosByFolioIdPaymentsBy-payment-accountPost",
          "action": "Create account payment",
          "description": "Trigger a payment using the payment account stored on the reservation"
        },
        {
          "name": "Create Auth Payment",
          "value": "FinanceFoliosByFolioIdPaymentsBy-authorizationPost",
          "action": "Create auth payment",
          "description": "Captures a specific amount from a pre-authorization and posts it to the folio"
        },
        {
          "name": "Create Folio Payment",
          "value": "FinanceFoliosByFolioIdPaymentsPost",
          "action": "Create folio payment",
          "description": "Trigger a custom payment for the folio"
        },
        {
          "name": "Create Folio Refund",
          "value": "FinanceFoliosByFolioIdRefundsPost",
          "action": "Create folio refund",
          "description": "Trigger a refund for the folio"
        },
        {
          "name": "Create Payment Link",
          "value": "FinanceFoliosByFolioIdPaymentsBy-linkPost",
          "action": "Create payment link",
          "description": "Creates a link to a payment form where guests can pay"
        },
        {
          "name": "Create Payment Refund",
          "value": "FinanceFoliosByFolioIdPaymentsByPaymentIdRefundsPost",
          "action": "Create payment refund",
          "description": "Trigger a refund for a specific payment"
        },
        {
          "name": "Create Terminal Payment",
          "value": "FinanceFoliosByFolioIdPaymentsBy-terminalPost",
          "action": "Create terminal payment",
          "description": "Trigger a payment on a card terminal for the folio"
        },
        {
          "name": "Get Folio Payment",
          "value": "FinanceFoliosByFolioIdPaymentsByPaymentIdGet",
          "action": "Get folio payment",
          "description": "Get a payment by ID"
        },
        {
          "name": "Get Folio Refund",
          "value": "FinanceFoliosByFolioIdRefundsByRefundIdGet",
          "action": "Get folio refund",
          "description": "Get a refund by ID"
        },
        {
          "name": "List Folio Payments",
          "value": "FinanceFoliosByFolioIdPaymentsGet",
          "action": "List folio payments",
          "description": "Get a list of payments"
        },
        {
          "name": "List Folio Refunds",
          "value": "FinanceFoliosByFolioIdRefundsGet",
          "action": "List folio refunds",
          "description": "Get a list of refunds"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "finance-v1"
          ],
          "resource": [
            "FolioPayments"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "FinanceInvoicesPost",
      "options": [
        {
          "name": "Create Invoice",
          "value": "FinanceInvoicesPost",
          "action": "Create invoice",
          "description": "Creates an invoice for one specific folio"
        },
        {
          "name": "Get Invoice",
          "value": "FinanceInvoicesByIdGet",
          "action": "Get invoice",
          "description": "Gets invoice data"
        },
        {
          "name": "Get Invoice Pdf",
          "value": "FinanceInvoicesByIdPdfGet",
          "action": "Get invoice pdf",
          "description": "Gets an invoice PDF file"
        },
        {
          "name": "List Invoice Preview",
          "value": "FinanceInvoicesPreviewGet",
          "action": "List invoice preview",
          "description": "Gets an invoice preview for one specific folio"
        },
        {
          "name": "List Invoice Preview Pdf",
          "value": "FinanceInvoicesPreview-pdfGet",
          "action": "List invoice preview pdf",
          "description": "Gets a preview invoice PDF for one specific folio"
        },
        {
          "name": "List Invoices",
          "value": "FinanceInvoicesGet",
          "action": "List invoices",
          "description": "Gets the list of all invoices (the metadata only, not the files)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "finance-v1"
          ],
          "resource": [
            "Invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "FinanceInvoice-actionsByIdCancelPut",
      "options": [
        {
          "name": "Cancel Invoice",
          "value": "FinanceInvoice-actionsByIdCancelPut",
          "action": "Cancel invoice",
          "description": "Cancels an invoice"
        },
        {
          "name": "Pay Invoice",
          "value": "FinanceInvoice-actionsByIdPayPut",
          "action": "Pay invoice",
          "description": "Marks an invoice as paid"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "finance-v1"
          ],
          "resource": [
            "InvoiceAction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "FinanceAccountsExportPost",
      "options": [
        {
          "name": "Export Accounts",
          "value": "FinanceAccountsExportPost",
          "action": "Export accounts",
          "description": "Returns transactions filtered by timestamp for a property for a given period"
        },
        {
          "name": "Export Accounts Daily",
          "value": "FinanceAccountsExport-dailyPost",
          "action": "Export accounts daily",
          "description": "Returns transactions filtered by date (business day) for a property for a given period"
        },
        {
          "name": "Export Accounts Gross",
          "value": "FinanceAccountsExport-gross-dailyPost",
          "action": "Export accounts gross",
          "description": "Returns gross transactions filtered by date (business day) for a property for a given period"
        },
        {
          "name": "Get Account Aggregate",
          "value": "FinanceAccountsAggregate-dailyPost",
          "action": "Get account aggregate",
          "description": "Aggregates transactions by date (business day) for all accounts and a given period"
        },
        {
          "name": "Get Account Aggregate Pairs",
          "value": "FinanceAccountsAggregate-pairs-dailyPost",
          "action": "Get account aggregate pairs",
          "description": "Aggregates transactions pairs by date (business day) for all accounts and a given period"
        },
        {
          "name": "Get Account By Number",
          "value": "FinanceAccountsByNumberGet",
          "action": "Get account by number",
          "description": "Returns one account"
        },
        {
          "name": "Get Accounts Aggregate",
          "value": "FinanceAccountsAggregatePost",
          "action": "Get accounts aggregate",
          "description": "Aggregates transactions by timestamp for all accounts and a given period"
        },
        {
          "name": "List Account Schema",
          "value": "FinanceAccountsSchemaGet",
          "action": "List account schema",
          "description": "Returns the chart of accounts of the subledger"
        },
        {
          "name": "List Child Accounts",
          "value": "FinanceAccountsChild-accountsGet",
          "action": "List child accounts",
          "description": "Returns a list of child accounts for a specified parent account"
        },
        {
          "name": "List External Accounts",
          "value": "FinanceExternal-accountsGet",
          "action": "List external accounts",
          "description": "Returns a list of external accounts"
        },
        {
          "name": "List Global Accounts",
          "value": "FinanceGlobal-accountsGet",
          "action": "List global accounts",
          "description": "Returns a list of global accounts"
        },
        {
          "name": "List Guest Accounts",
          "value": "FinanceGuest-accountsGet",
          "action": "List guest accounts",
          "description": "Returns a list of guest accounts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "finance-v1"
          ],
          "resource": [
            "SubLedger"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "FinanceTypesCurrenciesGet",
      "options": [
        {
          "name": "List Currencies",
          "value": "FinanceTypesCurrenciesGet",
          "action": "List currencies",
          "description": "Returns a list of all currencies"
        },
        {
          "name": "List Payment Methods",
          "value": "FinanceTypesPayment-methodsGet",
          "action": "List payment methods",
          "description": "Returns a list of all supported payment methods"
        },
        {
          "name": "List Service Types",
          "value": "FinanceTypesService-typesGet",
          "action": "List service types",
          "description": "Returns a list of all supported service types"
        },
        {
          "name": "List Vat Types",
          "value": "FinanceTypesVatGet",
          "action": "List vat types",
          "description": "Returns a list of all VAT types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "finance-v1"
          ],
          "resource": [
            "Types"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "InventoryPropertiesPost",
      "options": [
        {
          "name": "Create Property",
          "value": "InventoryPropertiesPost",
          "action": "Create property",
          "description": "Creates a property"
        },
        {
          "name": "Get Property",
          "value": "InventoryPropertiesByIdGet",
          "action": "Get property",
          "description": "Get a property"
        },
        {
          "name": "List Properties",
          "value": "InventoryPropertiesGet",
          "action": "List properties",
          "description": "Get a properties list"
        },
        {
          "name": "Update Property",
          "value": "InventoryPropertiesByIdPatch",
          "action": "Update property",
          "description": "Allows to modify property"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "inventory-v1"
          ],
          "resource": [
            "Property"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "InventoryUnitsByIdHead",
      "options": [
        {
          "name": "Check Unit Exists",
          "value": "InventoryUnitsByIdHead",
          "action": "Check unit exists",
          "description": "Check if a unit exists"
        },
        {
          "name": "Count Units",
          "value": "InventoryUnits$countGet",
          "action": "Count units",
          "description": "Returns number of units"
        },
        {
          "name": "Create Multiple Units",
          "value": "InventoryUnitsBulkPost",
          "action": "Create multiple units"
        },
        {
          "name": "Create Unit",
          "value": "InventoryUnitsPost",
          "action": "Create unit",
          "description": "Create a unit"
        },
        {
          "name": "Delete Unit",
          "value": "InventoryUnitsByIdDelete",
          "action": "Delete unit",
          "description": "Delete a unit"
        },
        {
          "name": "Get Unit",
          "value": "InventoryUnitsByIdGet",
          "action": "Get unit",
          "description": "Get a unit"
        },
        {
          "name": "List Units",
          "value": "InventoryUnitsGet",
          "action": "List units",
          "description": "Get a units list"
        },
        {
          "name": "Update Multiple Units",
          "value": "InventoryUnitsPatch",
          "action": "Update multiple units",
          "description": "Allows to patch one or more units"
        },
        {
          "name": "Update Unit",
          "value": "InventoryUnitsByIdPatch",
          "action": "Update unit",
          "description": "Allows to patch unit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "inventory-v1"
          ],
          "resource": [
            "Unit"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "InventoryUnit-attributesByIdHead",
      "options": [
        {
          "name": "Check Unit Attribute Exists",
          "value": "InventoryUnit-attributesByIdHead",
          "action": "Check unit attribute exists",
          "description": "Check if a unit attribute exists"
        },
        {
          "name": "Create Unit Attribute",
          "value": "InventoryUnit-attributesPost",
          "action": "Create unit attribute",
          "description": "Create a unit attribute"
        },
        {
          "name": "Get Unit Attribute",
          "value": "InventoryUnit-attributesByIdGet",
          "action": "Get unit attribute",
          "description": "Get unit attribute by id"
        },
        {
          "name": "List Unit Attributes",
          "value": "InventoryUnit-attributesGet",
          "action": "List unit attributes",
          "description": "Get unit attribute list"
        },
        {
          "name": "Update Unit Attribute",
          "value": "InventoryUnit-attributesByIdPatch",
          "action": "Update unit attribute",
          "description": "Allows to modify unit attribute"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "inventory-v1"
          ],
          "resource": [
            "UnitAttribute"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "InventoryUnit-groupsByIdHead",
      "options": [
        {
          "name": "Check Unit Group Exists",
          "value": "InventoryUnit-groupsByIdHead",
          "action": "Check unit group exists",
          "description": "Check if a unit group exists"
        },
        {
          "name": "Count Unit Groups",
          "value": "InventoryUnit-groups$countGet",
          "action": "Count unit groups",
          "description": "Returns number of unit groups"
        },
        {
          "name": "Create Unit Group",
          "value": "InventoryUnit-groupsPost",
          "action": "Create unit group",
          "description": "Create a unit group"
        },
        {
          "name": "Get Unit Group",
          "value": "InventoryUnit-groupsByIdGet",
          "action": "Get unit group",
          "description": "Get a unit group"
        },
        {
          "name": "List Unit Groups",
          "value": "InventoryUnit-groupsGet",
          "action": "List unit groups",
          "description": "Get all unit groups, or all unit groups for a property"
        },
        {
          "name": "Update Unit Group",
          "value": "InventoryUnit-groupsByIdPut",
          "action": "Update unit group",
          "description": "Replace a unit group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "inventory-v1"
          ],
          "resource": [
            "UnitGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "LogsBookingReservationGet",
      "options": [
        {
          "name": "List Reservation Logs",
          "value": "LogsBookingReservationGet",
          "action": "List reservation logs",
          "description": "Returns reservation change log entries sorted by the timestamp"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "logs-v1"
          ],
          "resource": [
            "BookingLogs"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "LogsFinanceFolioGet",
      "options": [
        {
          "name": "List Folio Logs",
          "value": "LogsFinanceFolioGet",
          "action": "List folio logs",
          "description": "Returns folio change log entries sorted by the timestamp"
        },
        {
          "name": "List Night Audit Logs",
          "value": "LogsFinanceNight-auditGet",
          "action": "List night audit logs",
          "description": "Returns the night audit logs"
        },
        {
          "name": "List Transaction Export Logs",
          "value": "LogsFinanceTransactions-exportGet",
          "action": "List transaction export logs",
          "description": "Returns the audit log for all accounting exports that have been done"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "logs-v1"
          ],
          "resource": [
            "FinanceLogs"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "OperationsMaintenancesByIdHead",
      "options": [
        {
          "name": "Check Maintenance Exists",
          "value": "OperationsMaintenancesByIdHead",
          "action": "Check maintenance exists",
          "description": "Check if a maintenance exists"
        },
        {
          "name": "Count Maintenances",
          "value": "OperationsMaintenances$countGet",
          "action": "Count maintenances",
          "description": "Returns number of maintenances"
        },
        {
          "name": "Create Maintenance",
          "value": "OperationsMaintenancesPost",
          "action": "Create maintenance",
          "description": "Create a new maintenance window"
        },
        {
          "name": "Create Multiple Maintenances",
          "value": "OperationsMaintenancesBulkPost",
          "action": "Create multiple maintenances"
        },
        {
          "name": "Delete Maintenance",
          "value": "OperationsMaintenancesByIdDelete",
          "action": "Delete maintenance",
          "description": "Delete a maintenance"
        },
        {
          "name": "Get Maintenance",
          "value": "OperationsMaintenancesByIdGet",
          "action": "Get maintenance",
          "description": "Get a specific maintenance"
        },
        {
          "name": "List Maintenances",
          "value": "OperationsMaintenancesGet",
          "action": "List maintenances",
          "description": "Get list of maintenances"
        },
        {
          "name": "Update Maintenance",
          "value": "OperationsMaintenancesByIdPatch",
          "action": "Update maintenance",
          "description": "Modify a maintenance"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "operations-v1"
          ],
          "resource": [
            "Maintenance"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "OperationsNight-auditPut",
      "options": [
        {
          "name": "Run Night Audit",
          "value": "OperationsNight-auditPut",
          "action": "Run night audit",
          "description": "Performs the night audit for one property"
        },
        {
          "name": "Update Units Condition",
          "value": "OperationsUnits-conditionPut",
          "action": "Update units condition",
          "description": "Change the condition of a unit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "operations-v1"
          ],
          "resource": [
            "Operations"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsAge-categoriesPost",
      "options": [
        {
          "name": "Create Age Category",
          "value": "SettingsAge-categoriesPost",
          "action": "Create age category",
          "description": "Create an age category"
        },
        {
          "name": "Get Age Category",
          "value": "SettingsAge-categoriesByIdGet",
          "action": "Get age category",
          "description": "Get an age category"
        },
        {
          "name": "List Age Categories",
          "value": "SettingsAge-categoriesGet",
          "action": "List age categories",
          "description": "Get an age category list"
        },
        {
          "name": "Update Age Category",
          "value": "SettingsAge-categoriesByIdPatch",
          "action": "Update age category",
          "description": "Allows to modify properties of an age category"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ],
          "resource": [
            "AgeCategory"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "RateplanCancellation-policiesPost",
      "options": [
        {
          "name": "Create Cancellation Policy",
          "value": "RateplanCancellation-policiesPost",
          "action": "Create cancellation policy",
          "description": "Create a cancellation policy"
        },
        {
          "name": "Get Cancellation Policy",
          "value": "RateplanCancellation-policiesByIdGet",
          "action": "Get cancellation policy",
          "description": "Get a specific cancellation policy"
        },
        {
          "name": "List Cancellation Policies",
          "value": "RateplanCancellation-policiesGet",
          "action": "List cancellation policies",
          "description": "Get all cancellation policies"
        },
        {
          "name": "Update Cancellation Policy",
          "value": "RateplanCancellation-policiesByIdPatch",
          "action": "Update cancellation policy",
          "description": "Allows to modify properties of a cancellation policy"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ],
          "resource": [
            "CancellationPolicy"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "RateplanCompaniesPost",
      "options": [
        {
          "name": "Create Company",
          "value": "RateplanCompaniesPost",
          "action": "Create company",
          "description": "Create a company"
        },
        {
          "name": "Get Company",
          "value": "RateplanCompaniesByIdGet",
          "action": "Get company",
          "description": "Get a company"
        },
        {
          "name": "List Companies",
          "value": "RateplanCompaniesGet",
          "action": "List companies",
          "description": "Get a list of companies"
        },
        {
          "name": "Update Company",
          "value": "RateplanCompaniesByIdPatch",
          "action": "Update company",
          "description": "Modify a company"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ],
          "resource": [
            "Company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "RateplanCorporate-codesCodesGet",
      "options": [
        {
          "name": "List Corporate Codes",
          "value": "RateplanCorporate-codesCodesGet",
          "action": "List corporate codes",
          "description": "Returns a list of corporate codes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ],
          "resource": [
            "CorporateCodes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "RateplanNo-show-policiesPost",
      "options": [
        {
          "name": "Create No Show Policy",
          "value": "RateplanNo-show-policiesPost",
          "action": "Create no show policy",
          "description": "Create a no-show policy"
        },
        {
          "name": "Get No Show Policy",
          "value": "RateplanNo-show-policiesByIdGet",
          "action": "Get no show policy",
          "description": "Get a specific no-show policy"
        },
        {
          "name": "List No Show Policies",
          "value": "RateplanNo-show-policiesGet",
          "action": "List no show policies",
          "description": "Get all no-show policies"
        },
        {
          "name": "Update No Show Policy",
          "value": "RateplanNo-show-policiesByIdPatch",
          "action": "Update no show policy",
          "description": "Allows to modify properties of a no-show policy"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ],
          "resource": [
            "NoShowPolicy"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "RateplanPromo-codesCodesGet",
      "options": [
        {
          "name": "List Promo Codes",
          "value": "RateplanPromo-codesCodesGet",
          "action": "List promo codes",
          "description": "Returns a list of promo codes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ],
          "resource": [
            "PromoCodes"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "RateplanRate-plansByIdRatesGet",
      "options": [
        {
          "name": "Get Rates",
          "value": "RateplanRate-plansByIdRatesGet",
          "action": "Get rates",
          "description": "Returns a list of rates"
        },
        {
          "name": "Update Multiple Rates",
          "value": "RateplanRatesPatch",
          "action": "Update multiple rates",
          "description": "Allows to patch the rates of multiple rate plans"
        },
        {
          "name": "Update Rates",
          "value": "RateplanRate-plansByIdRatesPut",
          "action": "Update rates",
          "description": "Initializes and changes the rates for the rate plan"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ],
          "resource": [
            "Rate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "RateplanRate-plansPost",
      "options": [
        {
          "name": "Create Rate Plan",
          "value": "RateplanRate-plansPost",
          "action": "Create rate plan",
          "description": "Create a rate plan"
        },
        {
          "name": "Get Rate Plan",
          "value": "RateplanRate-plansByIdGet",
          "action": "Get rate plan",
          "description": "Get a rate plan"
        },
        {
          "name": "List Rate Plans",
          "value": "RateplanRate-plansGet",
          "action": "List rate plans",
          "description": "Get a rate plan list"
        },
        {
          "name": "Update Multiple Rate Plans",
          "value": "RateplanRate-plansPatch",
          "action": "Update multiple rate plans",
          "description": "Allows to patch one or more rate plans"
        },
        {
          "name": "Update Rate Plan",
          "value": "RateplanRate-plansByIdPut",
          "action": "Update rate plan",
          "description": "Replace a rate plan"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ],
          "resource": [
            "RatePlan"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "RateplanServicesPost",
      "options": [
        {
          "name": "Create Service",
          "value": "RateplanServicesPost",
          "action": "Create service",
          "description": "Create a service"
        },
        {
          "name": "Get Service",
          "value": "RateplanServicesByIdGet",
          "action": "Get service",
          "description": "Get a specific service"
        },
        {
          "name": "List Services",
          "value": "RateplanServicesGet",
          "action": "List services",
          "description": "Get all services"
        },
        {
          "name": "Update Service",
          "value": "RateplanServicesByIdPatch",
          "action": "Update service",
          "description": "Modify a service"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "rateplan-v1"
          ],
          "resource": [
            "Service"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ReportsReportsArrivalsGet",
      "options": [
        {
          "name": "List Arrivals Report",
          "value": "ReportsReportsArrivalsGet",
          "action": "List arrivals report",
          "description": "Returns the number of arrivals in a month for a property"
        },
        {
          "name": "List Company Invoices Vat Report",
          "value": "ReportsReportsCompany-invoices-vatGet",
          "action": "List company invoices vat report",
          "description": "Returns the list of company invoices with information on the company and the VAT breakdown"
        },
        {
          "name": "List Ordered Services Report",
          "value": "ReportsReportsOrdered-servicesGet",
          "action": "List ordered services report",
          "description": "List of ordered services"
        },
        {
          "name": "List Property Performance Report",
          "value": "ReportsReportsProperty-performanceGet",
          "action": "List property performance report",
          "description": "Returns the property performance report which includes the ADR and the RevPAR for each business day"
        },
        {
          "name": "List Revenues Report",
          "value": "ReportsReportsRevenuesGet",
          "action": "List revenues report",
          "description": "Returns the revenues report for a property"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "reports-v1"
          ],
          "resource": [
            "Reports"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsCapture-policiesByIdGet",
      "options": [
        {
          "name": "Get Capture Policy",
          "value": "SettingsCapture-policiesByIdGet",
          "action": "Get capture policy",
          "description": "Get a specific capture policy"
        },
        {
          "name": "List Capture Policies",
          "value": "SettingsCapture-policiesGet",
          "action": "List capture policies",
          "description": "Get all capture policies"
        },
        {
          "name": "Update Capture Policy",
          "value": "SettingsCapture-policiesByIdPatch",
          "action": "Update capture policy",
          "description": "Allows to modify properties of a capture policy"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ],
          "resource": [
            "CapturePolicies"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsCity-taxPost",
      "options": [
        {
          "name": "Create City Tax",
          "value": "SettingsCity-taxPost",
          "action": "Create city tax",
          "description": "Create a city tax"
        },
        {
          "name": "Get City Tax",
          "value": "SettingsCity-taxByIdGet",
          "action": "Get city tax",
          "description": "Get a specific city tax"
        },
        {
          "name": "List City Taxes",
          "value": "SettingsCity-taxGet",
          "action": "List city taxes",
          "description": "Get all city taxes"
        },
        {
          "name": "Update City Tax",
          "value": "SettingsCity-taxByIdPatch",
          "action": "Update city tax",
          "description": "Allows to modify city tax"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ],
          "resource": [
            "CityTax"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsSub-accountsByIdHead",
      "options": [
        {
          "name": "Check Sub Account Exists",
          "value": "SettingsSub-accountsByIdHead",
          "action": "Check sub account exists",
          "description": "Check if the sub-account exists"
        },
        {
          "name": "Count Sub Accounts",
          "value": "SettingsSub-accounts$countGet",
          "action": "Count sub accounts",
          "description": "Returns number of sub-accounts"
        },
        {
          "name": "Create Sub Account",
          "value": "SettingsSub-accountsPost",
          "action": "Create sub account",
          "description": "Create a sub-account"
        },
        {
          "name": "Get Sub Account",
          "value": "SettingsSub-accountsByIdGet",
          "action": "Get sub account",
          "description": "Returns one sub-account"
        },
        {
          "name": "List Sub Accounts",
          "value": "SettingsSub-accountsGet",
          "action": "List sub accounts",
          "description": "Returns a list of all sub-accounts"
        },
        {
          "name": "Update Sub Account",
          "value": "SettingsSub-accountsByIdPatch",
          "action": "Update sub account",
          "description": "Allows to modify the name of the sub-account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ],
          "resource": [
            "CustomSubAccounts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsFeaturesByPropertyIdGet",
      "options": [
        {
          "name": "Get Feature Settings",
          "value": "SettingsFeaturesByPropertyIdGet",
          "action": "Get feature settings",
          "description": "Get feature settings for a property"
        },
        {
          "name": "Update Feature Settings",
          "value": "SettingsFeaturesByPropertyIdPatch",
          "action": "Update feature settings",
          "description": "Allows to modify feature settings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ],
          "resource": [
            "FeatureSettings"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsInvoice-addressGet",
      "options": [
        {
          "name": "List Invoice Addresses",
          "value": "SettingsInvoice-addressGet",
          "action": "List invoice addresses",
          "description": "Get invoice addresses"
        },
        {
          "name": "Patch Invoice Addresses",
          "value": "SettingsInvoice-addressPatch",
          "action": "Patch invoice addresses",
          "description": "Change fields in the invoice address of one or more properties"
        },
        {
          "name": "Update Invoice Addresses",
          "value": "SettingsInvoice-addressPut",
          "action": "Update invoice addresses",
          "description": "Create or update invoice addresses for one or more properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ],
          "resource": [
            "InvoiceAddress"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsLanguagesGet",
      "options": [
        {
          "name": "List Language Settings",
          "value": "SettingsLanguagesGet",
          "action": "List language settings",
          "description": "Get the language settings for the account"
        },
        {
          "name": "Update Language Settings",
          "value": "SettingsLanguagesPut",
          "action": "Update language settings",
          "description": "Replaces the language settings for the account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ],
          "resource": [
            "Languages"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsMarket-segmentsByIdHead",
      "options": [
        {
          "name": "Check Market Segment Exists",
          "value": "SettingsMarket-segmentsByIdHead",
          "action": "Check market segment exists",
          "description": "Check if a market segment exists"
        },
        {
          "name": "Count Market Segments",
          "value": "SettingsMarket-segments$countGet",
          "action": "Count market segments",
          "description": "Returns number of market segments"
        },
        {
          "name": "Create Market Segment",
          "value": "SettingsMarket-segmentsPost",
          "action": "Create market segment",
          "description": "Create a market segment"
        },
        {
          "name": "Get Market Segment",
          "value": "SettingsMarket-segmentsByIdGet",
          "action": "Get market segment",
          "description": "Get a market segment"
        },
        {
          "name": "List Market Segments",
          "value": "SettingsMarket-segmentsGet",
          "action": "List market segments",
          "description": "Returns a list of all market segments, filtered by the specified parameters"
        },
        {
          "name": "Update Market Segment",
          "value": "SettingsMarket-segmentsByIdPatch",
          "action": "Update market segment",
          "description": "Allows to modify market segment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ],
          "resource": [
            "MarketSegment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsPropertiesByIdGet",
      "options": [
        {
          "name": "Get Property Settings",
          "value": "SettingsPropertiesByIdGet",
          "action": "Get property settings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ],
          "resource": [
            "PropertySettings"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SettingsPropertiesByPropertyIdTime-slice-definitionsPost",
      "options": [
        {
          "name": "Create Time Slice Definition",
          "value": "SettingsPropertiesByPropertyIdTime-slice-definitionsPost",
          "action": "Create time slice definition",
          "description": "Creates a time slice definition"
        },
        {
          "name": "Get Time Slice Definition",
          "value": "SettingsPropertiesByPropertyIdTime-slice-definitionsByIdGet",
          "action": "Get time slice definition",
          "description": "Get a specific time slice definition"
        },
        {
          "name": "List Time Slice Definitions",
          "value": "SettingsPropertiesByPropertyIdTime-slice-definitionsGet",
          "action": "List time slice definitions",
          "description": "Get time slice definitions"
        },
        {
          "name": "Update Time Slice Definition",
          "value": "SettingsPropertiesByPropertyIdTime-slice-definitionsByIdPatch",
          "action": "Update time slice definition",
          "description": "Modifies a specific time slice definition for the property"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "settings-v1"
          ],
          "resource": [
            "TimeSliceDefinitions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "PingerPost",
      "options": [
        {
          "name": "Ping",
          "value": "PingerPost",
          "action": "Ping",
          "description": "Health check endpoint"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "webhook-v1"
          ],
          "resource": [
            "HealthCheck"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "SubscriptionsPost",
      "options": [
        {
          "name": "Create Subscription",
          "value": "SubscriptionsPost",
          "action": "Create subscription",
          "description": "Creates subscription"
        },
        {
          "name": "Delete Subscription",
          "value": "SubscriptionsByIdDelete",
          "action": "Delete subscription",
          "description": "Deletes subscription"
        },
        {
          "name": "Get Subscription",
          "value": "SubscriptionsByIdGet",
          "action": "Get subscription",
          "description": "Get a subscription"
        },
        {
          "name": "List Subscriptions",
          "value": "SubscriptionsGet",
          "action": "List subscriptions",
          "description": "Get all subscriptions created for the current account and client"
        },
        {
          "name": "Update Subscription",
          "value": "SubscriptionsByIdPut",
          "action": "Update subscription",
          "description": "Updates subscription"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "group": [
            "webhook-v1"
          ],
          "resource": [
            "Subscriptions"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Available Services",
      "value": "AvailabilityServicesGet",
      "action": "Get available services",
      "description": "Get a list of all available services in a property",
      "resource": "Availability"
    },
    {
      "name": "Get Available Unit Groups",
      "value": "AvailabilityUnit-groupsGet",
      "action": "Get available unit groups",
      "description": "Get a list of all available unit groups in a property",
      "resource": "Availability"
    },
    {
      "name": "Get Available Units",
      "value": "AvailabilityUnitsGet",
      "action": "Get available units",
      "description": "Get a list of all available units in a property",
      "resource": "Availability"
    },
    {
      "name": "Update Unit Group Availability",
      "value": "AvailabilityUnit-groupsByIdPatch",
      "action": "Update unit group availability",
      "description": "Allows to modify the unit group availability",
      "resource": "Availability"
    },
    {
      "name": "Get Available Units For Reservation",
      "value": "AvailabilityReservationsByIdUnitsGet",
      "action": "Get available units for reservation",
      "description": "Get a list of all available units for a reservation",
      "resource": "ReservationAvailability"
    },
    {
      "name": "Count Blocks",
      "value": "BookingBlocks$countGet",
      "action": "Count blocks",
      "description": "Returns number of blocks",
      "resource": "Block"
    },
    {
      "name": "Create Block",
      "value": "BookingBlocksPost",
      "action": "Create block",
      "description": "Creates a block",
      "resource": "Block"
    },
    {
      "name": "Get Block",
      "value": "BookingBlocksByIdGet",
      "action": "Get block",
      "description": "Returns a specific block",
      "resource": "Block"
    },
    {
      "name": "List Blocks",
      "value": "BookingBlocksGet",
      "action": "List blocks",
      "description": "Returns a list of blocks",
      "resource": "Block"
    },
    {
      "name": "Amend Block",
      "value": "BookingBlock-actionsByIdAmendPut",
      "action": "Amend block",
      "description": "Allow to modify a block",
      "resource": "BlockActions"
    },
    {
      "name": "Cancel Block",
      "value": "BookingBlock-actionsByIdCancelPut",
      "action": "Cancel block",
      "description": "Cancel a block",
      "resource": "BlockActions"
    },
    {
      "name": "Confirm Block",
      "value": "BookingBlock-actionsByIdConfirmPut",
      "action": "Confirm block",
      "description": "Confirm a block",
      "resource": "BlockActions"
    },
    {
      "name": "Release Block",
      "value": "BookingBlock-actionsByIdReleasePut",
      "action": "Release block",
      "description": "Release a block",
      "resource": "BlockActions"
    },
    {
      "name": "Wash Block",
      "value": "BookingBlock-actionsByIdWashPut",
      "action": "Wash block",
      "description": "Wash a block",
      "resource": "BlockActions"
    },
    {
      "name": "Add Reservation To Booking",
      "value": "BookingBookingsByIdReservationsPost",
      "action": "Add reservation to booking",
      "description": "Add one or multiple reservations to an existing booking",
      "resource": "Booking"
    },
    {
      "name": "Add Reservation To Booking Force",
      "value": "BookingBookingsByIdReservations$forcePost",
      "action": "Add reservation to booking force",
      "description": "Add one or multiple reservations to an existing booking regardless of availability or restrictions",
      "resource": "Booking"
    },
    {
      "name": "Create Booking",
      "value": "BookingBookingsPost",
      "action": "Create booking",
      "description": "Creates a booking for one or more reservations",
      "resource": "Booking"
    },
    {
      "name": "Create Booking Force",
      "value": "BookingBookings$forcePost",
      "action": "Create booking force",
      "description": "Creates a booking for one or more reservations regardless of availability or restrictions",
      "resource": "Booking"
    },
    {
      "name": "Get Booking",
      "value": "BookingBookingsByIdGet",
      "action": "Get booking",
      "description": "Returns a specific booking",
      "resource": "Booking"
    },
    {
      "name": "List Bookings",
      "value": "BookingBookingsGet",
      "action": "List bookings",
      "description": "Returns a list of all bookings, filtered by the specified parameters",
      "resource": "Booking"
    },
    {
      "name": "Update Booking",
      "value": "BookingBookingsByIdPatch",
      "action": "Update booking",
      "description": "Allows to modify certain booking properties",
      "resource": "Booking"
    },
    {
      "name": "Add Reservation To Group",
      "value": "BookingGroupsByIdReservationsPost",
      "action": "Add reservation to group",
      "description": "Add one or multiple reservations to an existing group booking using blocked inventory",
      "resource": "Group"
    },
    {
      "name": "Create Group",
      "value": "BookingGroupsPost",
      "action": "Create group",
      "description": "Creates a group booking",
      "resource": "Group"
    },
    {
      "name": "Get Group",
      "value": "BookingGroupsByIdGet",
      "action": "Get group",
      "description": "Returns a specific group booking",
      "resource": "Group"
    },
    {
      "name": "List Groups",
      "value": "BookingGroupsGet",
      "action": "List groups",
      "description": "Returns a list of all group bookings, filtered by the specified parameters",
      "resource": "Group"
    },
    {
      "name": "Update Group",
      "value": "BookingGroupsByIdPatch",
      "action": "Update group",
      "description": "Allows to modify certain group booking properties",
      "resource": "Group"
    },
    {
      "name": "List Offer Index",
      "value": "BookingOffer-indexGet",
      "action": "List offer index",
      "description": "Returns offers with rates and availabilities for the specified range",
      "resource": "Offer"
    },
    {
      "name": "List Offers",
      "value": "BookingOffersGet",
      "action": "List offers",
      "description": "Returns offers for one specific stay",
      "resource": "Offer"
    },
    {
      "name": "List Rate Plan Offers",
      "value": "BookingRate-plan-offersGet",
      "action": "List rate plan offers",
      "description": "Returns offers for a specific rate plan",
      "resource": "Offer"
    },
    {
      "name": "List Service Offers",
      "value": "BookingService-offersGet",
      "action": "List service offers",
      "description": "Returns service offers for one specific stay",
      "resource": "Offer"
    },
    {
      "name": "Count Reservations",
      "value": "BookingReservations$countGet",
      "action": "Count reservations",
      "description": "Returns the number of reservations fulfilling the criteria specified in the parameters",
      "resource": "Reservation"
    },
    {
      "name": "Get Reservation",
      "value": "BookingReservationsByIdGet",
      "action": "Get reservation",
      "description": "Returns a specific reservation",
      "resource": "Reservation"
    },
    {
      "name": "Get Reservation Offers",
      "value": "BookingReservationsByIdOffersGet",
      "action": "Get reservation offers",
      "description": "Returns offers for one specific reservation",
      "resource": "Reservation"
    },
    {
      "name": "Get Reservation Service Offers",
      "value": "BookingReservationsByIdService-offersGet",
      "action": "Get reservation service offers",
      "description": "Returns service offers for one specific reservation",
      "resource": "Reservation"
    },
    {
      "name": "Get Reservation Services",
      "value": "BookingReservationsByIdServicesGet",
      "action": "Get reservation services",
      "description": "Returns the services booked for a specific reservation",
      "resource": "Reservation"
    },
    {
      "name": "List Reservations",
      "value": "BookingReservationsGet",
      "action": "List reservations",
      "description": "Returns a list of all reservations, filtered by the specified parameters",
      "resource": "Reservation"
    },
    {
      "name": "Remove Service From Reservation",
      "value": "BookingReservationsByIdServicesDelete",
      "action": "Remove service from reservation",
      "description": "Removes a service from a reservation",
      "resource": "Reservation"
    },
    {
      "name": "Update Reservation",
      "value": "BookingReservationsByIdPatch",
      "action": "Update reservation",
      "description": "Allows to modify certain reservation properties",
      "resource": "Reservation"
    },
    {
      "name": "Add City Tax",
      "value": "BookingReservation-actionsByIdAdd-city-taxPut",
      "action": "Add city tax",
      "description": "Adds the city tax to a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Amend Reservation",
      "value": "BookingReservation-actionsByIdAmendPut",
      "action": "Amend reservation",
      "description": "Allows you to amend the stay details of a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Amend Reservation Force",
      "value": "BookingReservation-actionsByIdAmend$forcePut",
      "action": "Amend reservation force",
      "description": "Allows you to amend the stay details of a reservation regardless of availability or restrictions",
      "resource": "ReservationActions"
    },
    {
      "name": "Assign Specific Unit",
      "value": "BookingReservation-actionsByIdAssign-unitByUnitIdPut",
      "action": "Assign specific unit",
      "description": "Assign a specific unit to a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Assign Unit",
      "value": "BookingReservation-actionsByIdAssign-unitPut",
      "action": "Assign unit",
      "description": "Assign a unit to a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Book Service",
      "value": "BookingReservation-actionsByIdBook-servicePut",
      "action": "Book service",
      "description": "Book the service for a specific reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Book Service Force",
      "value": "BookingReservation-actionsByIdBook-service$forcePut",
      "action": "Book service force",
      "description": "Book the service for a specific reservation regardless of availability",
      "resource": "ReservationActions"
    },
    {
      "name": "Cancel Reservation",
      "value": "BookingReservation-actionsByIdCancelPut",
      "action": "Cancel reservation",
      "description": "Cancel a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Check In",
      "value": "BookingReservation-actionsByIdCheckinPut",
      "action": "Check in",
      "description": "Check-in of a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Check Out",
      "value": "BookingReservation-actionsByIdCheckoutPut",
      "action": "Check out",
      "description": "Check-out of a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Mark No Show",
      "value": "BookingReservation-actionsByIdNoshowPut",
      "action": "Mark no show",
      "description": "Set a reservation to No-show",
      "resource": "ReservationActions"
    },
    {
      "name": "Remove City Tax",
      "value": "BookingReservation-actionsByIdRemove-city-taxPut",
      "action": "Remove city tax",
      "description": "Removes the city tax from a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Revert Check In",
      "value": "BookingReservation-actionsByIdRevert-checkinPut",
      "action": "Revert check in",
      "description": "Reverses the check-in of a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "Unassign Units",
      "value": "BookingReservation-actionsByIdUnassign-unitsPut",
      "action": "Unassign units",
      "description": "Unassign units from a reservation",
      "resource": "ReservationActions"
    },
    {
      "name": "List Allowed Values",
      "value": "BookingTypesByTypeAllowed-valuesGet",
      "action": "List allowed values",
      "description": "Returns a list of values that a field of the specified type can take in the specified country",
      "resource": "Types"
    },
    {
      "name": "List Sources",
      "value": "BookingTypesSourcesGet",
      "action": "List sources",
      "description": "Returns a list of supported sources",
      "resource": "Types"
    },
    {
      "name": "Check Folio Exists",
      "value": "FinanceFoliosByIdHead",
      "action": "Check folio exists",
      "description": "Check if the folio exists",
      "resource": "Folio"
    },
    {
      "name": "Count Folios",
      "value": "FinanceFolios$countGet",
      "action": "Count folios",
      "description": "Returns number of folios",
      "resource": "Folio"
    },
    {
      "name": "Create Folio",
      "value": "FinanceFoliosPost",
      "action": "Create folio",
      "description": "Create additional folios for a reservation, or new external folios",
      "resource": "Folio"
    },
    {
      "name": "Get Folio",
      "value": "FinanceFoliosByIdGet",
      "action": "Get folio",
      "description": "Returns one folio",
      "resource": "Folio"
    },
    {
      "name": "List Folios",
      "value": "FinanceFoliosGet",
      "action": "List folios",
      "description": "Returns a list of all folios",
      "resource": "Folio"
    },
    {
      "name": "Update Folio",
      "value": "FinanceFoliosByIdPatch",
      "action": "Update folio",
      "description": "Allows to modify certain properties of a folio",
      "resource": "Folio"
    },
    {
      "name": "Bulk Move Charges",
      "value": "FinanceFolio-actionsBulk-movePut",
      "action": "Bulk move charges",
      "description": "Move multiple charges from one folio to another. Multiple source folios and multiple target folios can be specified.",
      "resource": "FolioActions"
    },
    {
      "name": "Close Folio",
      "value": "FinanceFolio-actionsByFolioIdClosePut",
      "action": "Close folio",
      "description": "Closes a folio",
      "resource": "FolioActions"
    },
    {
      "name": "Correct Folio",
      "value": "FinanceFolio-actionsByFolioIdCorrectPost",
      "action": "Correct folio",
      "description": "Corrects a folio by moving some charges. This operation creates a new folio with the charges from the request. The payment, equal to the sum of charges, is also split to this new folio so that both folios will have 0 balance.",
      "resource": "FolioActions"
    },
    {
      "name": "Create Bulk Allowances",
      "value": "FinanceFolio-actionsByFolioIdBulk-allowancesPost",
      "action": "Create bulk allowances",
      "description": "Posts allowances for a folio",
      "resource": "FolioActions"
    },
    {
      "name": "Create Charge Allowance",
      "value": "FinanceFolio-actionsByFolioIdChargesByChargeIdAllowancesPost",
      "action": "Create charge allowance",
      "description": "Posts an allowance for a charge",
      "resource": "FolioActions"
    },
    {
      "name": "Create Folio Allowance",
      "value": "FinanceFolio-actionsByFolioIdAllowancesPost",
      "action": "Create folio allowance",
      "description": "Posts an allowance for a folio",
      "resource": "FolioActions"
    },
    {
      "name": "Create Folio Cancellation Fee",
      "value": "FinanceFolio-actionsByFolioIdCancellation-feePost",
      "action": "Create folio cancellation fee",
      "description": "Adds and directly posts a cancellation fee to the folio. If there are any fees configured for the property, an additional charge for each configured fee will be added. If a routing instruction is defined for the cancellation fee service type, the fee will be moved to the destination folio.",
      "resource": "FolioActions"
    },
    {
      "name": "Create Folio Charge",
      "value": "FinanceFolio-actionsByFolioIdChargesPost",
      "action": "Create folio charge",
      "description": "Adds and directly posts a charge to the folio. If there are any fees configured for the property, an additional charge for each configured fee will be added.",
      "resource": "FolioActions"
    },
    {
      "name": "Create Folio No Show Fee",
      "value": "FinanceFolio-actionsByFolioIdNo-show-feePost",
      "action": "Create folio no show fee",
      "description": "Adds and directly posts a no-show fee to the folio. If there are any fees configured for the property, an additional charge for each configured fee will be added. If a routing instruction is defined for the no-show fee service type, the fee will be moved to the destination folio.",
      "resource": "FolioActions"
    },
    {
      "name": "Create Folio Transitory Charge",
      "value": "FinanceFolio-actionsByFolioIdTransitory-chargesPost",
      "action": "Create folio transitory charge",
      "description": "Adds and directly posts a transitory charge to the folio. If there are any fees configured for the property, an additional charge for each configured fee will be added.",
      "resource": "FolioActions"
    },
    {
      "name": "Move All Folio Charges",
      "value": "FinanceFolio-actionsByFolioIdMove-all-chargesPut",
      "action": "Move all folio charges",
      "description": "Move all charges and transitory charges from one folio to another",
      "resource": "FolioActions"
    },
    {
      "name": "Move Folio Charges",
      "value": "FinanceFolio-actionsByFolioIdMove-chargesPut",
      "action": "Move folio charges",
      "description": "Move multiple charges, allowances and transitory charges from one folio to another",
      "resource": "FolioActions"
    },
    {
      "name": "Move Folio Payments",
      "value": "FinanceFolio-actionsByFolioIdMove-paymentsPut",
      "action": "Move folio payments",
      "description": "Move multiple payments from one guest/booking folio to another",
      "resource": "FolioActions"
    },
    {
      "name": "Post Folio Charges",
      "value": "FinanceFolio-actionsByFolioIdPost-chargesPut",
      "action": "Post folio charges",
      "description": "Posts all unposted charges for the whole length of stay",
      "resource": "FolioActions"
    },
    {
      "name": "Reopen Folio",
      "value": "FinanceFolio-actionsByFolioIdReopenPut",
      "action": "Reopen folio",
      "description": "Reopens a folio",
      "resource": "FolioActions"
    },
    {
      "name": "Split Folio Charge",
      "value": "FinanceFolio-actionsByFolioIdChargesByChargeIdSplitPost",
      "action": "Split folio charge",
      "description": "Splits a charge into two using the percent or amount provided Creates an allowance and two new charges",
      "resource": "FolioActions"
    },
    {
      "name": "Split Folio Payment",
      "value": "FinanceFolio-actionsByFolioIdPaymentsByPaymentIdSplitPost",
      "action": "Split folio payment",
      "description": "Splits a payment into two using the percent or amount provided Creates a refund and two new payments",
      "resource": "FolioActions"
    },
    {
      "name": "Cancel Payment",
      "value": "FinanceFoliosByFolioIdPaymentsByPaymentIdCancelPut",
      "action": "Cancel payment",
      "description": "Cancels a pending payment link",
      "resource": "FolioPayments"
    },
    {
      "name": "Create Account Payment",
      "value": "FinanceFoliosByFolioIdPaymentsBy-payment-accountPost",
      "action": "Create account payment",
      "description": "Trigger a payment using the payment account stored on the reservation",
      "resource": "FolioPayments"
    },
    {
      "name": "Create Auth Payment",
      "value": "FinanceFoliosByFolioIdPaymentsBy-authorizationPost",
      "action": "Create auth payment",
      "description": "Captures a specific amount from a pre-authorization and posts it to the folio",
      "resource": "FolioPayments"
    },
    {
      "name": "Create Folio Payment",
      "value": "FinanceFoliosByFolioIdPaymentsPost",
      "action": "Create folio payment",
      "description": "Trigger a custom payment for the folio",
      "resource": "FolioPayments"
    },
    {
      "name": "Create Folio Refund",
      "value": "FinanceFoliosByFolioIdRefundsPost",
      "action": "Create folio refund",
      "description": "Trigger a refund for the folio",
      "resource": "FolioPayments"
    },
    {
      "name": "Create Payment Link",
      "value": "FinanceFoliosByFolioIdPaymentsBy-linkPost",
      "action": "Create payment link",
      "description": "Creates a link to a payment form where guests can pay",
      "resource": "FolioPayments"
    },
    {
      "name": "Create Payment Refund",
      "value": "FinanceFoliosByFolioIdPaymentsByPaymentIdRefundsPost",
      "action": "Create payment refund",
      "description": "Trigger a refund for a specific payment",
      "resource": "FolioPayments"
    },
    {
      "name": "Create Terminal Payment",
      "value": "FinanceFoliosByFolioIdPaymentsBy-terminalPost",
      "action": "Create terminal payment",
      "description": "Trigger a payment on a card terminal for the folio",
      "resource": "FolioPayments"
    },
    {
      "name": "Get Folio Payment",
      "value": "FinanceFoliosByFolioIdPaymentsByPaymentIdGet",
      "action": "Get folio payment",
      "description": "Get a payment by ID",
      "resource": "FolioPayments"
    },
    {
      "name": "Get Folio Refund",
      "value": "FinanceFoliosByFolioIdRefundsByRefundIdGet",
      "action": "Get folio refund",
      "description": "Get a refund by ID",
      "resource": "FolioPayments"
    },
    {
      "name": "List Folio Payments",
      "value": "FinanceFoliosByFolioIdPaymentsGet",
      "action": "List folio payments",
      "description": "Get a list of payments",
      "resource": "FolioPayments"
    },
    {
      "name": "List Folio Refunds",
      "value": "FinanceFoliosByFolioIdRefundsGet",
      "action": "List folio refunds",
      "description": "Get a list of refunds",
      "resource": "FolioPayments"
    },
    {
      "name": "Create Invoice",
      "value": "FinanceInvoicesPost",
      "action": "Create invoice",
      "description": "Creates an invoice for one specific folio",
      "resource": "Invoice"
    },
    {
      "name": "Get Invoice",
      "value": "FinanceInvoicesByIdGet",
      "action": "Get invoice",
      "description": "Gets invoice data",
      "resource": "Invoice"
    },
    {
      "name": "Get Invoice Pdf",
      "value": "FinanceInvoicesByIdPdfGet",
      "action": "Get invoice pdf",
      "description": "Gets an invoice PDF file",
      "resource": "Invoice"
    },
    {
      "name": "List Invoice Preview",
      "value": "FinanceInvoicesPreviewGet",
      "action": "List invoice preview",
      "description": "Gets an invoice preview for one specific folio",
      "resource": "Invoice"
    },
    {
      "name": "List Invoice Preview Pdf",
      "value": "FinanceInvoicesPreview-pdfGet",
      "action": "List invoice preview pdf",
      "description": "Gets a preview invoice PDF for one specific folio",
      "resource": "Invoice"
    },
    {
      "name": "List Invoices",
      "value": "FinanceInvoicesGet",
      "action": "List invoices",
      "description": "Gets the list of all invoices (the metadata only, not the files)",
      "resource": "Invoice"
    },
    {
      "name": "Cancel Invoice",
      "value": "FinanceInvoice-actionsByIdCancelPut",
      "action": "Cancel invoice",
      "description": "Cancels an invoice",
      "resource": "InvoiceAction"
    },
    {
      "name": "Pay Invoice",
      "value": "FinanceInvoice-actionsByIdPayPut",
      "action": "Pay invoice",
      "description": "Marks an invoice as paid",
      "resource": "InvoiceAction"
    },
    {
      "name": "Export Accounts",
      "value": "FinanceAccountsExportPost",
      "action": "Export accounts",
      "description": "Returns transactions filtered by timestamp for a property for a given period",
      "resource": "SubLedger"
    },
    {
      "name": "Export Accounts Daily",
      "value": "FinanceAccountsExport-dailyPost",
      "action": "Export accounts daily",
      "description": "Returns transactions filtered by date (business day) for a property for a given period",
      "resource": "SubLedger"
    },
    {
      "name": "Export Accounts Gross",
      "value": "FinanceAccountsExport-gross-dailyPost",
      "action": "Export accounts gross",
      "description": "Returns gross transactions filtered by date (business day) for a property for a given period",
      "resource": "SubLedger"
    },
    {
      "name": "Get Account Aggregate",
      "value": "FinanceAccountsAggregate-dailyPost",
      "action": "Get account aggregate",
      "description": "Aggregates transactions by date (business day) for all accounts and a given period",
      "resource": "SubLedger"
    },
    {
      "name": "Get Account Aggregate Pairs",
      "value": "FinanceAccountsAggregate-pairs-dailyPost",
      "action": "Get account aggregate pairs",
      "description": "Aggregates transactions pairs by date (business day) for all accounts and a given period",
      "resource": "SubLedger"
    },
    {
      "name": "Get Account By Number",
      "value": "FinanceAccountsByNumberGet",
      "action": "Get account by number",
      "description": "Returns one account",
      "resource": "SubLedger"
    },
    {
      "name": "Get Accounts Aggregate",
      "value": "FinanceAccountsAggregatePost",
      "action": "Get accounts aggregate",
      "description": "Aggregates transactions by timestamp for all accounts and a given period",
      "resource": "SubLedger"
    },
    {
      "name": "List Account Schema",
      "value": "FinanceAccountsSchemaGet",
      "action": "List account schema",
      "description": "Returns the chart of accounts of the subledger",
      "resource": "SubLedger"
    },
    {
      "name": "List Child Accounts",
      "value": "FinanceAccountsChild-accountsGet",
      "action": "List child accounts",
      "description": "Returns a list of child accounts for a specified parent account",
      "resource": "SubLedger"
    },
    {
      "name": "List External Accounts",
      "value": "FinanceExternal-accountsGet",
      "action": "List external accounts",
      "description": "Returns a list of external accounts",
      "resource": "SubLedger"
    },
    {
      "name": "List Global Accounts",
      "value": "FinanceGlobal-accountsGet",
      "action": "List global accounts",
      "description": "Returns a list of global accounts",
      "resource": "SubLedger"
    },
    {
      "name": "List Guest Accounts",
      "value": "FinanceGuest-accountsGet",
      "action": "List guest accounts",
      "description": "Returns a list of guest accounts",
      "resource": "SubLedger"
    },
    {
      "name": "List Currencies",
      "value": "FinanceTypesCurrenciesGet",
      "action": "List currencies",
      "description": "Returns a list of all currencies",
      "resource": "Types"
    },
    {
      "name": "List Payment Methods",
      "value": "FinanceTypesPayment-methodsGet",
      "action": "List payment methods",
      "description": "Returns a list of all supported payment methods",
      "resource": "Types"
    },
    {
      "name": "List Service Types",
      "value": "FinanceTypesService-typesGet",
      "action": "List service types",
      "description": "Returns a list of all supported service types",
      "resource": "Types"
    },
    {
      "name": "List Vat Types",
      "value": "FinanceTypesVatGet",
      "action": "List vat types",
      "description": "Returns a list of all VAT types",
      "resource": "Types"
    },
    {
      "name": "Create Property",
      "value": "InventoryPropertiesPost",
      "action": "Create property",
      "description": "Creates a property",
      "resource": "Property"
    },
    {
      "name": "Get Property",
      "value": "InventoryPropertiesByIdGet",
      "action": "Get property",
      "description": "Get a property",
      "resource": "Property"
    },
    {
      "name": "List Properties",
      "value": "InventoryPropertiesGet",
      "action": "List properties",
      "description": "Get a properties list",
      "resource": "Property"
    },
    {
      "name": "Update Property",
      "value": "InventoryPropertiesByIdPatch",
      "action": "Update property",
      "description": "Allows to modify property",
      "resource": "Property"
    },
    {
      "name": "Check Unit Exists",
      "value": "InventoryUnitsByIdHead",
      "action": "Check unit exists",
      "description": "Check if a unit exists",
      "resource": "Unit"
    },
    {
      "name": "Count Units",
      "value": "InventoryUnits$countGet",
      "action": "Count units",
      "description": "Returns number of units",
      "resource": "Unit"
    },
    {
      "name": "Create Multiple Units",
      "value": "InventoryUnitsBulkPost",
      "action": "Create multiple units",
      "resource": "Unit"
    },
    {
      "name": "Create Unit",
      "value": "InventoryUnitsPost",
      "action": "Create unit",
      "description": "Create a unit",
      "resource": "Unit"
    },
    {
      "name": "Delete Unit",
      "value": "InventoryUnitsByIdDelete",
      "action": "Delete unit",
      "description": "Delete a unit",
      "resource": "Unit"
    },
    {
      "name": "Get Unit",
      "value": "InventoryUnitsByIdGet",
      "action": "Get unit",
      "description": "Get a unit",
      "resource": "Unit"
    },
    {
      "name": "List Units",
      "value": "InventoryUnitsGet",
      "action": "List units",
      "description": "Get a units list",
      "resource": "Unit"
    },
    {
      "name": "Update Multiple Units",
      "value": "InventoryUnitsPatch",
      "action": "Update multiple units",
      "description": "Allows to patch one or more units",
      "resource": "Unit"
    },
    {
      "name": "Update Unit",
      "value": "InventoryUnitsByIdPatch",
      "action": "Update unit",
      "description": "Allows to patch unit",
      "resource": "Unit"
    },
    {
      "name": "Check Unit Attribute Exists",
      "value": "InventoryUnit-attributesByIdHead",
      "action": "Check unit attribute exists",
      "description": "Check if a unit attribute exists",
      "resource": "UnitAttribute"
    },
    {
      "name": "Create Unit Attribute",
      "value": "InventoryUnit-attributesPost",
      "action": "Create unit attribute",
      "description": "Create a unit attribute",
      "resource": "UnitAttribute"
    },
    {
      "name": "Get Unit Attribute",
      "value": "InventoryUnit-attributesByIdGet",
      "action": "Get unit attribute",
      "description": "Get unit attribute by id",
      "resource": "UnitAttribute"
    },
    {
      "name": "List Unit Attributes",
      "value": "InventoryUnit-attributesGet",
      "action": "List unit attributes",
      "description": "Get unit attribute list",
      "resource": "UnitAttribute"
    },
    {
      "name": "Update Unit Attribute",
      "value": "InventoryUnit-attributesByIdPatch",
      "action": "Update unit attribute",
      "description": "Allows to modify unit attribute",
      "resource": "UnitAttribute"
    },
    {
      "name": "Check Unit Group Exists",
      "value": "InventoryUnit-groupsByIdHead",
      "action": "Check unit group exists",
      "description": "Check if a unit group exists",
      "resource": "UnitGroup"
    },
    {
      "name": "Count Unit Groups",
      "value": "InventoryUnit-groups$countGet",
      "action": "Count unit groups",
      "description": "Returns number of unit groups",
      "resource": "UnitGroup"
    },
    {
      "name": "Create Unit Group",
      "value": "InventoryUnit-groupsPost",
      "action": "Create unit group",
      "description": "Create a unit group",
      "resource": "UnitGroup"
    },
    {
      "name": "Get Unit Group",
      "value": "InventoryUnit-groupsByIdGet",
      "action": "Get unit group",
      "description": "Get a unit group",
      "resource": "UnitGroup"
    },
    {
      "name": "List Unit Groups",
      "value": "InventoryUnit-groupsGet",
      "action": "List unit groups",
      "description": "Get all unit groups, or all unit groups for a property",
      "resource": "UnitGroup"
    },
    {
      "name": "Update Unit Group",
      "value": "InventoryUnit-groupsByIdPut",
      "action": "Update unit group",
      "description": "Replace a unit group",
      "resource": "UnitGroup"
    },
    {
      "name": "List Reservation Logs",
      "value": "LogsBookingReservationGet",
      "action": "List reservation logs",
      "description": "Returns reservation change log entries sorted by the timestamp",
      "resource": "BookingLogs"
    },
    {
      "name": "List Folio Logs",
      "value": "LogsFinanceFolioGet",
      "action": "List folio logs",
      "description": "Returns folio change log entries sorted by the timestamp",
      "resource": "FinanceLogs"
    },
    {
      "name": "List Night Audit Logs",
      "value": "LogsFinanceNight-auditGet",
      "action": "List night audit logs",
      "description": "Returns the night audit logs",
      "resource": "FinanceLogs"
    },
    {
      "name": "List Transaction Export Logs",
      "value": "LogsFinanceTransactions-exportGet",
      "action": "List transaction export logs",
      "description": "Returns the audit log for all accounting exports that have been done",
      "resource": "FinanceLogs"
    },
    {
      "name": "Check Maintenance Exists",
      "value": "OperationsMaintenancesByIdHead",
      "action": "Check maintenance exists",
      "description": "Check if a maintenance exists",
      "resource": "Maintenance"
    },
    {
      "name": "Count Maintenances",
      "value": "OperationsMaintenances$countGet",
      "action": "Count maintenances",
      "description": "Returns number of maintenances",
      "resource": "Maintenance"
    },
    {
      "name": "Create Maintenance",
      "value": "OperationsMaintenancesPost",
      "action": "Create maintenance",
      "description": "Create a new maintenance window",
      "resource": "Maintenance"
    },
    {
      "name": "Create Multiple Maintenances",
      "value": "OperationsMaintenancesBulkPost",
      "action": "Create multiple maintenances",
      "resource": "Maintenance"
    },
    {
      "name": "Delete Maintenance",
      "value": "OperationsMaintenancesByIdDelete",
      "action": "Delete maintenance",
      "description": "Delete a maintenance",
      "resource": "Maintenance"
    },
    {
      "name": "Get Maintenance",
      "value": "OperationsMaintenancesByIdGet",
      "action": "Get maintenance",
      "description": "Get a specific maintenance",
      "resource": "Maintenance"
    },
    {
      "name": "List Maintenances",
      "value": "OperationsMaintenancesGet",
      "action": "List maintenances",
      "description": "Get list of maintenances",
      "resource": "Maintenance"
    },
    {
      "name": "Update Maintenance",
      "value": "OperationsMaintenancesByIdPatch",
      "action": "Update maintenance",
      "description": "Modify a maintenance",
      "resource": "Maintenance"
    },
    {
      "name": "Run Night Audit",
      "value": "OperationsNight-auditPut",
      "action": "Run night audit",
      "description": "Performs the night audit for one property",
      "resource": "Operations"
    },
    {
      "name": "Update Units Condition",
      "value": "OperationsUnits-conditionPut",
      "action": "Update units condition",
      "description": "Change the condition of a unit",
      "resource": "Operations"
    },
    {
      "name": "Create Age Category",
      "value": "SettingsAge-categoriesPost",
      "action": "Create age category",
      "description": "Create an age category",
      "resource": "AgeCategory"
    },
    {
      "name": "Get Age Category",
      "value": "SettingsAge-categoriesByIdGet",
      "action": "Get age category",
      "description": "Get an age category",
      "resource": "AgeCategory"
    },
    {
      "name": "List Age Categories",
      "value": "SettingsAge-categoriesGet",
      "action": "List age categories",
      "description": "Get an age category list",
      "resource": "AgeCategory"
    },
    {
      "name": "Update Age Category",
      "value": "SettingsAge-categoriesByIdPatch",
      "action": "Update age category",
      "description": "Allows to modify properties of an age category",
      "resource": "AgeCategory"
    },
    {
      "name": "Create Cancellation Policy",
      "value": "RateplanCancellation-policiesPost",
      "action": "Create cancellation policy",
      "description": "Create a cancellation policy",
      "resource": "CancellationPolicy"
    },
    {
      "name": "Get Cancellation Policy",
      "value": "RateplanCancellation-policiesByIdGet",
      "action": "Get cancellation policy",
      "description": "Get a specific cancellation policy",
      "resource": "CancellationPolicy"
    },
    {
      "name": "List Cancellation Policies",
      "value": "RateplanCancellation-policiesGet",
      "action": "List cancellation policies",
      "description": "Get all cancellation policies",
      "resource": "CancellationPolicy"
    },
    {
      "name": "Update Cancellation Policy",
      "value": "RateplanCancellation-policiesByIdPatch",
      "action": "Update cancellation policy",
      "description": "Allows to modify properties of a cancellation policy",
      "resource": "CancellationPolicy"
    },
    {
      "name": "Create Company",
      "value": "RateplanCompaniesPost",
      "action": "Create company",
      "description": "Create a company",
      "resource": "Company"
    },
    {
      "name": "Get Company",
      "value": "RateplanCompaniesByIdGet",
      "action": "Get company",
      "description": "Get a company",
      "resource": "Company"
    },
    {
      "name": "List Companies",
      "value": "RateplanCompaniesGet",
      "action": "List companies",
      "description": "Get a list of companies",
      "resource": "Company"
    },
    {
      "name": "Update Company",
      "value": "RateplanCompaniesByIdPatch",
      "action": "Update company",
      "description": "Modify a company",
      "resource": "Company"
    },
    {
      "name": "List Corporate Codes",
      "value": "RateplanCorporate-codesCodesGet",
      "action": "List corporate codes",
      "description": "Returns a list of corporate codes",
      "resource": "CorporateCodes"
    },
    {
      "name": "Create No Show Policy",
      "value": "RateplanNo-show-policiesPost",
      "action": "Create no show policy",
      "description": "Create a no-show policy",
      "resource": "NoShowPolicy"
    },
    {
      "name": "Get No Show Policy",
      "value": "RateplanNo-show-policiesByIdGet",
      "action": "Get no show policy",
      "description": "Get a specific no-show policy",
      "resource": "NoShowPolicy"
    },
    {
      "name": "List No Show Policies",
      "value": "RateplanNo-show-policiesGet",
      "action": "List no show policies",
      "description": "Get all no-show policies",
      "resource": "NoShowPolicy"
    },
    {
      "name": "Update No Show Policy",
      "value": "RateplanNo-show-policiesByIdPatch",
      "action": "Update no show policy",
      "description": "Allows to modify properties of a no-show policy",
      "resource": "NoShowPolicy"
    },
    {
      "name": "List Promo Codes",
      "value": "RateplanPromo-codesCodesGet",
      "action": "List promo codes",
      "description": "Returns a list of promo codes",
      "resource": "PromoCodes"
    },
    {
      "name": "Get Rates",
      "value": "RateplanRate-plansByIdRatesGet",
      "action": "Get rates",
      "description": "Returns a list of rates",
      "resource": "Rate"
    },
    {
      "name": "Update Multiple Rates",
      "value": "RateplanRatesPatch",
      "action": "Update multiple rates",
      "description": "Allows to patch the rates of multiple rate plans",
      "resource": "Rate"
    },
    {
      "name": "Update Rates",
      "value": "RateplanRate-plansByIdRatesPut",
      "action": "Update rates",
      "description": "Initializes and changes the rates for the rate plan",
      "resource": "Rate"
    },
    {
      "name": "Create Rate Plan",
      "value": "RateplanRate-plansPost",
      "action": "Create rate plan",
      "description": "Create a rate plan",
      "resource": "RatePlan"
    },
    {
      "name": "Get Rate Plan",
      "value": "RateplanRate-plansByIdGet",
      "action": "Get rate plan",
      "description": "Get a rate plan",
      "resource": "RatePlan"
    },
    {
      "name": "List Rate Plans",
      "value": "RateplanRate-plansGet",
      "action": "List rate plans",
      "description": "Get a rate plan list",
      "resource": "RatePlan"
    },
    {
      "name": "Update Multiple Rate Plans",
      "value": "RateplanRate-plansPatch",
      "action": "Update multiple rate plans",
      "description": "Allows to patch one or more rate plans",
      "resource": "RatePlan"
    },
    {
      "name": "Update Rate Plan",
      "value": "RateplanRate-plansByIdPut",
      "action": "Update rate plan",
      "description": "Replace a rate plan",
      "resource": "RatePlan"
    },
    {
      "name": "Create Service",
      "value": "RateplanServicesPost",
      "action": "Create service",
      "description": "Create a service",
      "resource": "Service"
    },
    {
      "name": "Get Service",
      "value": "RateplanServicesByIdGet",
      "action": "Get service",
      "description": "Get a specific service",
      "resource": "Service"
    },
    {
      "name": "List Services",
      "value": "RateplanServicesGet",
      "action": "List services",
      "description": "Get all services",
      "resource": "Service"
    },
    {
      "name": "Update Service",
      "value": "RateplanServicesByIdPatch",
      "action": "Update service",
      "description": "Modify a service",
      "resource": "Service"
    },
    {
      "name": "List Arrivals Report",
      "value": "ReportsReportsArrivalsGet",
      "action": "List arrivals report",
      "description": "Returns the number of arrivals in a month for a property",
      "resource": "Reports"
    },
    {
      "name": "List Company Invoices Vat Report",
      "value": "ReportsReportsCompany-invoices-vatGet",
      "action": "List company invoices vat report",
      "description": "Returns the list of company invoices with information on the company and the VAT breakdown",
      "resource": "Reports"
    },
    {
      "name": "List Ordered Services Report",
      "value": "ReportsReportsOrdered-servicesGet",
      "action": "List ordered services report",
      "description": "List of ordered services",
      "resource": "Reports"
    },
    {
      "name": "List Property Performance Report",
      "value": "ReportsReportsProperty-performanceGet",
      "action": "List property performance report",
      "description": "Returns the property performance report which includes the ADR and the RevPAR for each business day",
      "resource": "Reports"
    },
    {
      "name": "List Revenues Report",
      "value": "ReportsReportsRevenuesGet",
      "action": "List revenues report",
      "description": "Returns the revenues report for a property",
      "resource": "Reports"
    },
    {
      "name": "Get Capture Policy",
      "value": "SettingsCapture-policiesByIdGet",
      "action": "Get capture policy",
      "description": "Get a specific capture policy",
      "resource": "CapturePolicies"
    },
    {
      "name": "List Capture Policies",
      "value": "SettingsCapture-policiesGet",
      "action": "List capture policies",
      "description": "Get all capture policies",
      "resource": "CapturePolicies"
    },
    {
      "name": "Update Capture Policy",
      "value": "SettingsCapture-policiesByIdPatch",
      "action": "Update capture policy",
      "description": "Allows to modify properties of a capture policy",
      "resource": "CapturePolicies"
    },
    {
      "name": "Create City Tax",
      "value": "SettingsCity-taxPost",
      "action": "Create city tax",
      "description": "Create a city tax",
      "resource": "CityTax"
    },
    {
      "name": "Get City Tax",
      "value": "SettingsCity-taxByIdGet",
      "action": "Get city tax",
      "description": "Get a specific city tax",
      "resource": "CityTax"
    },
    {
      "name": "List City Taxes",
      "value": "SettingsCity-taxGet",
      "action": "List city taxes",
      "description": "Get all city taxes",
      "resource": "CityTax"
    },
    {
      "name": "Update City Tax",
      "value": "SettingsCity-taxByIdPatch",
      "action": "Update city tax",
      "description": "Allows to modify city tax",
      "resource": "CityTax"
    },
    {
      "name": "Check Sub Account Exists",
      "value": "SettingsSub-accountsByIdHead",
      "action": "Check sub account exists",
      "description": "Check if the sub-account exists",
      "resource": "CustomSubAccounts"
    },
    {
      "name": "Count Sub Accounts",
      "value": "SettingsSub-accounts$countGet",
      "action": "Count sub accounts",
      "description": "Returns number of sub-accounts",
      "resource": "CustomSubAccounts"
    },
    {
      "name": "Create Sub Account",
      "value": "SettingsSub-accountsPost",
      "action": "Create sub account",
      "description": "Create a sub-account",
      "resource": "CustomSubAccounts"
    },
    {
      "name": "Get Sub Account",
      "value": "SettingsSub-accountsByIdGet",
      "action": "Get sub account",
      "description": "Returns one sub-account",
      "resource": "CustomSubAccounts"
    },
    {
      "name": "List Sub Accounts",
      "value": "SettingsSub-accountsGet",
      "action": "List sub accounts",
      "description": "Returns a list of all sub-accounts",
      "resource": "CustomSubAccounts"
    },
    {
      "name": "Update Sub Account",
      "value": "SettingsSub-accountsByIdPatch",
      "action": "Update sub account",
      "description": "Allows to modify the name of the sub-account",
      "resource": "CustomSubAccounts"
    },
    {
      "name": "Get Feature Settings",
      "value": "SettingsFeaturesByPropertyIdGet",
      "action": "Get feature settings",
      "description": "Get feature settings for a property",
      "resource": "FeatureSettings"
    },
    {
      "name": "Update Feature Settings",
      "value": "SettingsFeaturesByPropertyIdPatch",
      "action": "Update feature settings",
      "description": "Allows to modify feature settings",
      "resource": "FeatureSettings"
    },
    {
      "name": "List Invoice Addresses",
      "value": "SettingsInvoice-addressGet",
      "action": "List invoice addresses",
      "description": "Get invoice addresses",
      "resource": "InvoiceAddress"
    },
    {
      "name": "Patch Invoice Addresses",
      "value": "SettingsInvoice-addressPatch",
      "action": "Patch invoice addresses",
      "description": "Change fields in the invoice address of one or more properties",
      "resource": "InvoiceAddress"
    },
    {
      "name": "Update Invoice Addresses",
      "value": "SettingsInvoice-addressPut",
      "action": "Update invoice addresses",
      "description": "Create or update invoice addresses for one or more properties",
      "resource": "InvoiceAddress"
    },
    {
      "name": "List Language Settings",
      "value": "SettingsLanguagesGet",
      "action": "List language settings",
      "description": "Get the language settings for the account",
      "resource": "Languages"
    },
    {
      "name": "Update Language Settings",
      "value": "SettingsLanguagesPut",
      "action": "Update language settings",
      "description": "Replaces the language settings for the account",
      "resource": "Languages"
    },
    {
      "name": "Check Market Segment Exists",
      "value": "SettingsMarket-segmentsByIdHead",
      "action": "Check market segment exists",
      "description": "Check if a market segment exists",
      "resource": "MarketSegment"
    },
    {
      "name": "Count Market Segments",
      "value": "SettingsMarket-segments$countGet",
      "action": "Count market segments",
      "description": "Returns number of market segments",
      "resource": "MarketSegment"
    },
    {
      "name": "Create Market Segment",
      "value": "SettingsMarket-segmentsPost",
      "action": "Create market segment",
      "description": "Create a market segment",
      "resource": "MarketSegment"
    },
    {
      "name": "Get Market Segment",
      "value": "SettingsMarket-segmentsByIdGet",
      "action": "Get market segment",
      "description": "Get a market segment",
      "resource": "MarketSegment"
    },
    {
      "name": "List Market Segments",
      "value": "SettingsMarket-segmentsGet",
      "action": "List market segments",
      "description": "Returns a list of all market segments, filtered by the specified parameters",
      "resource": "MarketSegment"
    },
    {
      "name": "Update Market Segment",
      "value": "SettingsMarket-segmentsByIdPatch",
      "action": "Update market segment",
      "description": "Allows to modify market segment",
      "resource": "MarketSegment"
    },
    {
      "name": "Get Property Settings",
      "value": "SettingsPropertiesByIdGet",
      "action": "Get property settings",
      "resource": "PropertySettings"
    },
    {
      "name": "Create Time Slice Definition",
      "value": "SettingsPropertiesByPropertyIdTime-slice-definitionsPost",
      "action": "Create time slice definition",
      "description": "Creates a time slice definition",
      "resource": "TimeSliceDefinitions"
    },
    {
      "name": "Get Time Slice Definition",
      "value": "SettingsPropertiesByPropertyIdTime-slice-definitionsByIdGet",
      "action": "Get time slice definition",
      "description": "Get a specific time slice definition",
      "resource": "TimeSliceDefinitions"
    },
    {
      "name": "List Time Slice Definitions",
      "value": "SettingsPropertiesByPropertyIdTime-slice-definitionsGet",
      "action": "List time slice definitions",
      "description": "Get time slice definitions",
      "resource": "TimeSliceDefinitions"
    },
    {
      "name": "Update Time Slice Definition",
      "value": "SettingsPropertiesByPropertyIdTime-slice-definitionsByIdPatch",
      "action": "Update time slice definition",
      "description": "Modifies a specific time slice definition for the property",
      "resource": "TimeSliceDefinitions"
    },
    {
      "name": "Ping",
      "value": "PingerPost",
      "action": "Ping",
      "description": "Health check endpoint",
      "resource": "HealthCheck"
    },
    {
      "name": "Create Subscription",
      "value": "SubscriptionsPost",
      "action": "Create subscription",
      "description": "Creates subscription",
      "resource": "Subscriptions"
    },
    {
      "name": "Delete Subscription",
      "value": "SubscriptionsByIdDelete",
      "action": "Delete subscription",
      "description": "Deletes subscription",
      "resource": "Subscriptions"
    },
    {
      "name": "Get Subscription",
      "value": "SubscriptionsByIdGet",
      "action": "Get subscription",
      "description": "Get a subscription",
      "resource": "Subscriptions"
    },
    {
      "name": "List Subscriptions",
      "value": "SubscriptionsGet",
      "action": "List subscriptions",
      "description": "Get all subscriptions created for the current account and client",
      "resource": "Subscriptions"
    },
    {
      "name": "Update Subscription",
      "value": "SubscriptionsByIdPut",
      "action": "Update subscription",
      "description": "Updates subscription",
      "resource": "Subscriptions"
    }
  ]

npm_readme:
  # n8n-nodes-apaleo

  ![Apaleo Logo](nodes/Apaleo/apaleo.svg)

  This package provides n8n nodes to interact with the [Apaleo API](https://docs.apaleo.com/), allowing you to automate workflows with Apaleo's property management system.

  ## Features

  This integration provides two nodes:

  - **Apaleo**: Perform operations on over 40 Apaleo resources including accounts, reservations, properties, and more
  - **Apaleo Trigger**: Receive webhook events from Apaleo to trigger workflows

  ## Prerequisites

  - [n8n](https://n8n.io/) (version 1.0.0 or later)
  - Apaleo account with API credentials (Client ID and Client Secret)
  - Node.js (version 20.15 or later)

  ## Installation

  ### In n8n Desktop / Self-hosted

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

  ### Manual Installation

  1. Clone this repository:
     ```
     git clone https://github.com/apaleo/n8n-nodes-apaleo.git
     ```
  2. Navigate to the project directory:
     ```
     cd n8n-nodes-apaleo
     ```
  3. Install dependencies:
     ```
     npm install
     ```
  4. Build the package:
     ```
     npm run build
     ```
  5. Link to your n8n installation:
     ```
     npm link
     ```
  6. In your n8n installation directory:
     ```
     npm link n8n-nodes-apaleo
     ```

  ## Credentials

  To use the Apaleo nodes, you need to set up credentials:

  1. In n8n, go to **Credentials**
  2. Click on **Create New**
  3. Search for "Apaleo OAuth2 API"
  4. Enter your Apaleo Client ID and Client Secret
  5. Save the credentials

  ## Usage

  ### Apaleo Node

  The Apaleo node allows you to interact with the following resources:

  #### Property Management
  - **Property**: Manage hotel properties, including details, settings, and configurations
  - **Unit**: Handle individual room/unit operations and information
  - **UnitGroup**: Manage groups of units with similar characteristics
  - **UnitAttribute**: Work with attributes that define unit features and amenities
  - **PropertySettings**: Configure property-specific settings and preferences
  - **PropertyActions**: Perform specific actions on properties

  #### Reservation Management
  - **Reservation**: Create, retrieve, and manage guest reservations
  - **ReservationActions**: Execute specific actions on reservations (check-in, check-out, etc.)
  - **ReservationAvailability**: Check availability for specific reservation scenarios
  - **Block**: Manage room blocks for groups and events
  - **BlockActions**: Perform actions on blocks (create, modify, cancel)
  - **Booking**: Handle booking operations across the system
  - **Group**: Manage group reservations and associated data

  #### Financial Operations
  - **Folio**: Access and manage guest folios containing charges and payments
  - **FolioActions**: Perform specific actions on folios
  - **FolioPayments**: Handle payment operations within folios
  - **Invoice**: Create, retrieve, and manage invoices
  - **InvoiceAction**: Execute specific actions on invoices
  - **SubLedger**: Access financial sub-ledger information
  - **CapturePolicies**: Manage payment capture policies
  - **CustomSubAccounts**: Work with custom financial sub-accounts

  #### Rate and Pricing
  - **Rate**: Manage rate information and pricing
  - **RatePlan**: Configure and manage rate plans
  - **Offer**: Handle special offers and promotions
  - **PromoCodes**: Manage promotional codes for special rates
  - **CorporateCodes**: Handle corporate rate codes and agreements
  - **CancellationPolicy**: Configure and manage cancellation policies
  - **NoShowPolicy**: Set up and manage no-show policies

  #### Account Management
  - **Account**: Manage account information and settings
  - **AccountActions**: Perform specific actions on accounts
  - **Company**: Handle company account information and relationships

  #### Reporting and Logs
  - **Reports**: Access various system reports
  - **BookingLogs**: View logs of booking-related activities
  - **FinanceLogs**: Access logs of financial transactions and changes
  - **Operations**: Perform operational tasks and reporting

  #### Additional Resources
  - **Availability**: Check general availability across properties
  - **Types**: Access system type definitions
  - **UiIntegrations**: Manage UI integration settings
  - **Maintenance**: Handle maintenance-related operations
  - **AgeCategory**: Manage age categories for guests
  - **CityTax**: Configure and manage city tax settings
  - **FeatureSettings**: Adjust feature-specific settings
  - **InvoiceAddress**: Manage invoice address information
  - **Languages**: Configure language settings
  - **MarketSegment**: Manage market segment definitions
  - **TimeSliceDefinitions**: Configure time slice settings
  - **HealthCheck**: Verify system health and connectivity
  - **Subscriptions**: Manage API event subscriptions

  For each resource, you can select from available operations like GET, POST, PUT, DELETE, etc. based on the Apaleo API capabilities.

  ### Apaleo Trigger Node

  Use this node to start workflows when specific events occur in Apaleo, such as:

  - Reservation created, modified, or canceled
  - Check-in or check-out completed
  - Payment processed or refunded
  - Folio or invoice created or updated
  - Property settings changed
  - Rate plan or availability updates
  - And many more events from the Apaleo system

  The trigger node works by subscribing to Apaleo's webhook events, allowing your n8n workflows to react in real-time to changes in your Apaleo environment.

  ## Development

  If you want to contribute or modify the nodes:

  1. Clone the repository
  2. Install dependencies:
     ```
     npm install
     ```
  3. Start development mode:
     ```
     npm run dev
     ```
  4. Make your changes
  5. Build the package:
     ```
     npm run build
     ```
  6. Test your changes locally

  ## License

  [MIT](LICENSE.md)

  ## About Apaleo

  [Apaleo](https://apaleo.com/) is a cloud-based property management system (PMS) that provides APIs for the hospitality industry, allowing seamless integration with various hotel systems and services.

ai_documentation_summary:
  {"purpose":"This n8n node package enables automation with Apaleo's property management system by providing nodes to interact with over 40 API resources and trigger workflows on system events.","capabilities":["Access and manage hotel properties, units, and unit groups","Create, retrieve, and manage guest reservations","Handle financial operations including folios, invoices, and payments","Manage rate plans, offers, and promotional codes","Monitor account settings and company information","Access system reports and activity logs","Check availability across properties","Configure UI integrations and maintenance settings","Receive webhook events for real-time workflow triggers"],"authentication":"OAuth2 API (Client ID and Client Secret)","commonUseCases":["Automate hotel reservation workflows","Trigger notifications on payment changes","Sync property data between systems","Generate reports based on booking activity","Automate check-in/check-out processes"],"limitations":["Requires n8n version 1.0.0 or later","Requires Node.js version 20.15 or later for manual installation","Requires valid Apaleo API credentials"],"relatedNodes":["Apaleo Trigger","Apaleo","Webhook","HTTP Request"]}


node_type: @vlm-run/n8n-nodes-vlmrun.vlmRun
package_name: @vlm-run/n8n-nodes-vlmrun
display_name: VLM Run
description: Interact with VLM Run API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: shahrear-vlm
author_github_url: https://github.com/vlm-run/n8n-nodes-vlmrun.git
npm_package_name: @vlm-run/n8n-nodes-vlmrun
npm_version: 2.2.9
community_fetched_at: 2026-07-14T14:40:33.205Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Analyze Audio",
          "value": "audio",
          "action": "Analyze audio",
          "description": "Analyze audio files for transcription, speaker identification, sentiment analysis, and more"
        },
        {
          "name": "Analyze Document",
          "value": "document",
          "action": "Analyze document",
          "description": "Extract structured data from documents such as resumes, invoices, presentations, and more"
        },
        {
          "name": "Analyze Image",
          "value": "image",
          "action": "Analyze image",
          "description": "Extract information or generate captions from images"
        },
        {
          "name": "Analyze Video",
          "value": "video",
          "action": "Analyze video",
          "description": "Extract insights or transcribe content from video files"
        },
        {
          "name": "Execute Agent",
          "value": "executeAgent",
          "action": "Execute agent",
          "description": "Execute an agent"
        },
        {
          "name": "Manage Files",
          "value": "file",
          "action": "Manage files",
          "description": "List uploaded files or upload new files to VLM Run"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Analyze Audio",
      "value": "audio",
      "action": "Analyze audio",
      "description": "Analyze audio files for transcription, speaker identification, sentiment analysis, and more"
    },
    {
      "name": "Analyze Document",
      "value": "document",
      "action": "Analyze document",
      "description": "Extract structured data from documents such as resumes, invoices, presentations, and more"
    },
    {
      "name": "Analyze Image",
      "value": "image",
      "action": "Analyze image",
      "description": "Extract information or generate captions from images"
    },
    {
      "name": "Analyze Video",
      "value": "video",
      "action": "Analyze video",
      "description": "Extract insights or transcribe content from video files"
    },
    {
      "name": "Execute Agent",
      "value": "executeAgent",
      "action": "Execute agent",
      "description": "Execute an agent"
    },
    {
      "name": "Manage Files",
      "value": "file",
      "action": "Manage files",
      "description": "List uploaded files or upload new files to VLM Run"
    }
  ]

npm_readme:
  <div align="center">
  <p align="center" style="width: 100%;">
      <img src="https://raw.githubusercontent.com/vlm-run/.github/refs/heads/main/profile/assets/vlm-black.svg" alt="VLM Run Logo" width="80" style="margin-bottom: -5px; color: #2e3138; vertical-align: middle; padding-right: 5px;"><br>
  </p>
  <h2>n8n-nodes-vlmrun</h2>
  <p align="center">
  <a href="https://vlm.run"><b>Website</b></a> | <a href="https://app.vlm.run/"><b>Platform</b></a> | <a href="https://docs.vlm.run/"><b>Docs</b></a> | <a href="https://docs.vlm.run/blog"><b>Blog</b></a> | <a href="https://discord.gg/4jgyECY4rq"><b>Discord</b></a>
  </p>
  <p align="center">
  <a href="https://www.npmjs.com/package/@vlm-run/n8n-nodes-vlmrun"><img alt="NPM Version" src="https://badge.fury.io/js/%40vlm-run%2Fn8n-nodes-vlmrun.svg"></a>
  <a href="https://github.com/vlm-run/n8n-nodes-vlmrun/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/vlm-run/n8n-nodes-vlmrun.svg"></a>
  <a href="https://discord.gg/4jgyECY4rq"><img alt="Discord" src="https://img.shields.io/badge/discord-chat-purple?color=%235765F2&label=discord&logo=discord"></a>
  <a href="https://twitter.com/vlmrun"><img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/vlmrun.svg?style=social&logo=twitter"></a>
  </p>
  </div>

  This is an n8n community node. It lets you use [VLM Run](https://vlm.run) in your n8n workflows.

  VLM Run is a unified gateway for Visual AI that enables you to extract structured data from unstructured visual content like images, videos, audio, and documents using Vision Language Models (VLMs).


  ## 💾 Installation

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

  ```bash
  npm i @vlm-run/n8n-nodes-vlmrun
  ```

  ## ⚙️ Operations

  - **Analyze Audio**: Analyze audio files for transcription, speaker identification, sentiment analysis, and more.
  - **Analyze Document**: Extract structured data from documents such as resumes, invoices, presentations, and more.
  - **Analyze Image**: Extract information or generate captions from images.
  - **Analyze Video**: Extract insights or transcribe content from video files.
  - **Manage Files**: List uploaded files or upload new files to VLM Run.

  ## 🔑 Credentials

  1. Sign up for a VLM Run account at [vlm.run](https://app.vlm.run/)
  2. Get your API key from the dashboard
  3. Use the API key in the n8n VLM Run node credentials

  ## 📖 Usage

  1. **Configure Credentials**:
     - Add your VLM Run API credentials in n8n
     - Set the API base URL (default: https://api.vlm.run/v1)

  2. **Add VLM Run Node**:
     - Search for "VLM Run" in the n8n nodes panel
     - Add it to your workflow

  3. **Configure Node**:
     - Select the operation (Analyze Audio, Analyze Document, Analyze Image, Analyze Video, or Manage Files)
     - Provide the required input fields (such as file data, model, or domain)
     - Configure any additional parameters as needed

  4. **Run the workflow** to process your visual or audio data with VLM Run's AI models.

  ## 📸 Screenshots

  Here are some screenshots of the n8n-nodes-vlmrun in action:

  ![VLM Run Node Overview](assets/vlmrun-overview.png)
  _Overview of the VLM Run node in n8n_

  ![VLM Run Workflow Example](assets/vlmrun-workflow.png)
  _Example workflow using the VLM Run node_

  ## 🔗 Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [VLM Run Documentation](https://docs.vlm.run/introduction)
  - [VLM Run API Reference](https://docs.vlm.run/api-reference/v1/health)
  - [Example Workflows](https://n8n.io/workflows)

  ## 🛠️ Example Use Cases

  - Extracting structured data from resumes, invoices, or utility bills
  - Cataloging and captioning product images
  - Transcribing and analyzing audio interviews or calls
  - Extracting insights from video content
  - Managing files in your VLM Run account from n8n workflows

  ## 📄 License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the VLM Run API to process visual and audio content using Vision Language Models.","capabilities":["Analyze audio files for transcription and sentiment analysis","Analyze documents to extract structured data (resumes, invoices, presentations)","Analyze images to extract information or generate captions","Analyze video files for insights or transcription","Manage files (list or upload) in the VLM Run account"],"authentication":"API key required","commonUseCases":["Extracting structured data from resumes, invoices, or utility bills","Cataloging and captioning product images","Transcribing and analyzing audio interviews or calls","Extracting insights from video content"],"limitations":[],"relatedNodes":[]}


node_type: @searchapi/n8n-nodes-searchapi.searchApi
package_name: @searchapi/n8n-nodes-searchapi
display_name: SearchApi
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: searchapi_team
author_github_url: https://github.com/SearchApi/n8n-nodes-searchapi.git
npm_package_name: @searchapi/n8n-nodes-searchapi
npm_version: 2.0.4
community_fetched_at: 2026-07-14T14:40:33.206Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Access real-time search results from Google, Google Images, Google Maps, Google Shopping and more. Use this when you need current, up-to-date information, product searches, location data, or visual content that may not be available in your training data.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "google",
      "options": [
        {
          "name": "Google Search",
          "value": "google"
        },
        {
          "name": "Google Images",
          "value": "google_images"
        },
        {
          "name": "Google Maps",
          "value": "google_maps"
        },
        {
          "name": "Google Shopping",
          "value": "google_shopping"
        }
      ],
      "description": "The search engine to use",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search",
          "routing": {
            "request": {
              "qs": {
                "engine": "={{ $parameter[\"resource\"] }}"
              }
            }
          },
          "description": "Search using the engine specified in the resource"
        }
      ],
      "displayName": "Operation Name",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search",
      "value": "search",
      "action": "Search",
      "routing": {
        "request": {
          "qs": {
            "engine": "={{ $parameter[\"resource\"] }}"
          }
        }
      },
      "description": "Search using the engine specified in the resource"
    }
  ]

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

  # n8n SearchApi.io Node

  Search the web with [SearchApi.io](https://www.searchapi.io/) directly from your n8n workflows. The node exposes the full power of the `/api/v1/search` endpoint and supports **all engines and query parameters** offered by the service.

  > **Why SearchApi.io?**\
  > Real‑time SERP data from Google, Bing, DuckDuckGo, Yahoo, Yandex and more – no captchas, no proxies, one simple API.

  ---

  ## Installation

  ### Via the n8n UI (recommended)

  1. Open **Settings → Community Nodes** inside your self‑hosted n8n instance.
  2. Fill **npm Package Name** with `@searchapi/n8n-nodes-searchapi`.
  3. Select the package, accept the risk prompt, and hit **Install**.
  4. It should now appear as a node when you search for it.

  ### Via the command line

  ```bash
  # inside your n8n installation folder
  npm install @searchapi/n8n-nodes-searchapi
  # or with pnpm
  pnpm add @searchapi/n8n-nodes-searchapi
  ```

  Restart n8n after the install finishes.

  > **Compatibility**
  >
  > - n8n ≥ 1.30.0
  > - Node.js ≥ 18

  ---

  ## Credentials

  1. Sign up at **[SearchApi.io](https://www.searchapi.io/)** and copy your **API Key**.
  2. In n8n go to **Credentials → + New Credential → SearchApi**.
  3. Paste the key and save.\
     The new credential will now appear in the node’s **Credential** dropdown.

  ---

  ## Usage

  ### 1. Drag‑and‑drop UI

  1. Add the **SearchApi** node to your workflow.
  2. Choose your **Credential** and the **Engine**.
  3. Under **Parameters,** click **Add Parameter** for each query string field you need. To determine which fields to add, refer to the engine's documentation. Example:
     - **Name**: `q`
     - **Value**: `weather new york`
  4. Execute the workflow to receive the response as JSON.

  ### 2. Pass a parameters object (programmatic)

  You can also pass a parameters object directly to the node, instead of the UI:

  ```json
  {
    "parameters": {
      "q": "n8n workflow automation",
      "device": "mobile",
      "location": "Berlin"
    }
  }
  ```

  - Feed the object through a **Set** node or any previous node.
    ```
    {{$json.parameters}}
    ```
  - The node will give preference to the parameters object.

  ---

  ## Example workflows

  To easily see how to work with SearchApi on n8n, refer to the examples we've prepared. To use them you can download the json file and import on n8n, or you can paste the url for the, you can also copy the contents and paste inside a workflow. Refer to [n8n docs](https://docs.n8n.io/courses/level-one/chapter-6/#exporting-and-importing-workflows_1) on how to import workflows.

  - [Youtube video summarization with SearchApi](/examples/searchapi_youtube_transcripts/)
  - [Chatbot that searchs the web with SearchApi](/examples/searchapi_chatbot/)

  ## Output

  The node returns the raw JSON received from SearchApi.io. See the [official docs](https://www.searchapi.io/docs/google) for complete schemas.

  ---

  ## Troubleshooting

  | Error message                | Likely cause                 | Fix                                                                         |
  | ---------------------------- | ---------------------------- | --------------------------------------------------------------------------- |
  | **401 Unauthorized**         | Invalid or missing API key   | Double‑check the credentials.                                               |
  | **400 Bad Request** | Missing required parameter | Verify against SearchApi docs.                                              |
  | **429 Too Many Requests**    | Rate limit exceeded          | Slow down the workflow or [upgrade plan](https://www.searchapi.io/pricing). |

  ---

  ## Resources

  - **SearchApi.io documentation** – [https://www.searchapi.io/](https://www.searchapi.io/docs/google)
  - **n8n Community Forum** – [https://community.n8n.io](https://community.n8n.io)
  - **Community nodes installation** – [https://docs.n8n.io/integrations/community-nodes/installation/](https://docs.n8n.io/integrations/community-nodes/installation/)

  ## Contributing

  1. Run build with `pnpm build`
  2. Run `npm link` on the project root
  3. Run `npm link @searchapi/n8n-nodes-searchapi` on `$HOME/.n8n/custom`

  After that build the node on each change and it should be reflected in n8n local interface. Note: You can see we are using pnpm to build, and npm to test. With asdf this seems to be the best approach.

ai_documentation_summary:
  {"purpose":"This n8n node enables real-time web searches across multiple engines (Google, Bing, DuckDuckGo, etc.) by exposing the SearchApi.io API, providing up-to-date SERP data, images, maps, and shopping results.","capabilities":["Web search across multiple engines (Google, Bing, DuckDuckGo, Yahoo, Yandex)","Access to Google Images, Google Maps, and Google Shopping","Customizable query parameters via UI or JSON object","Support for device and location targeting","Real-time search results without captchas or proxies"],"authentication":"API Key required (obtained from SearchApi.io)","commonUseCases":["Retrieving current news or trending topics","Product searches for e-commerce workflows","Location-based data queries","Visual content search (images)","Web summarization and chatbot knowledge retrieval"],"limitations":["Rate limits apply; exceeding them requires upgrading the SearchApi.io plan","Requires n8n version ≥ 1.30.0 and Node.js ≥ 18","Output is raw JSON; schema details depend on SearchApi.io documentation"],"relatedNodes":["Set node (for passing parameters objects)","HTTP Request node (alternative for API calls)","JSON node (for transforming output)"]}


node_type: n8n-nodes-ikas.ikas
package_name: n8n-nodes-ikas
display_name: IKAS
description: Consume IKAS e-commerce platform API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: actuallyzefe
author_github_url: https://github.com/actuallyzefe/n8n-ikas.git
npm_package_name: n8n-nodes-ikas
npm_version: 2.0.5
community_fetched_at: 2026-07-14T14:40:33.207Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "product",
      "options": [
        {
          "name": "Order",
          "value": "order",
          "description": "Work with orders in your IKAS store"
        },
        {
          "name": "Product",
          "value": "product",
          "description": "Work with products in your IKAS store"
        },
        {
          "name": "Webhook",
          "value": "webhook",
          "description": "Manage webhooks for your IKAS store"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a product",
          "description": "Create a new product"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete products",
          "description": "Delete multiple products"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many products",
          "description": "Get multiple products"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search products",
          "description": "Search products with filters"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a product",
          "description": "Update an existing product"
        },
        {
          "name": "Upload Image",
          "value": "uploadImage",
          "action": "Upload image to product",
          "description": "Upload image to product variants"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many orders",
          "description": "Get multiple orders"
        },
        {
          "name": "Fulfill",
          "value": "fulfill",
          "action": "Fulfill an order",
          "description": "Fulfill order lines"
        },
        {
          "name": "Update Package Status",
          "value": "updatePackageStatus",
          "action": "Update package status",
          "description": "Update order package status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a webhook",
          "description": "Create a new webhook"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete webhooks",
          "description": "Delete webhooks by scope"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many webhooks",
          "description": "List all webhooks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a product",
      "description": "Create a new product",
      "resource": "product"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete products",
      "description": "Delete multiple products",
      "resource": "product"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many products",
      "description": "Get multiple products",
      "resource": "product"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search products",
      "description": "Search products with filters",
      "resource": "product"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a product",
      "description": "Update an existing product",
      "resource": "product"
    },
    {
      "name": "Upload Image",
      "value": "uploadImage",
      "action": "Upload image to product",
      "description": "Upload image to product variants",
      "resource": "product"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many orders",
      "description": "Get multiple orders",
      "resource": "order"
    },
    {
      "name": "Fulfill",
      "value": "fulfill",
      "action": "Fulfill an order",
      "description": "Fulfill order lines",
      "resource": "order"
    },
    {
      "name": "Update Package Status",
      "value": "updatePackageStatus",
      "action": "Update package status",
      "description": "Update order package status",
      "resource": "order"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a webhook",
      "description": "Create a new webhook",
      "resource": "webhook"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete webhooks",
      "description": "Delete webhooks by scope",
      "resource": "webhook"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many webhooks",
      "description": "List all webhooks",
      "resource": "webhook"
    }
  ]

npm_readme:
  # n8n-nodes-ikas

  <div align="center">
    <img src="https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-logo.png" alt="n8n" width="120" height="120">
    <span style="font-size: 50px; margin: 0 20px;">+</span>
    <img src="https://ikas.com/favicon.ico" alt="IKAS" width="120" height="120">
  </div>

  <div align="center">
    
  ![n8n.io - IKAS](https://img.shields.io/badge/n8n.io-IKAS-blue.svg)
  ![Version](https://img.shields.io/npm/v/n8n-nodes-ikas.svg)
  ![Downloads](https://img.shields.io/npm/dt/n8n-nodes-ikas.svg)
  ![License](https://img.shields.io/npm/l/n8n-nodes-ikas.svg)

  </div>

  This is an n8n community node that lets you integrate the [IKAS e-commerce platform](https://ikas.com) into your n8n workflows. Automate your e-commerce operations with comprehensive product management, order processing, and inventory control.

  ## What is IKAS?

  IKAS is a comprehensive e-commerce platform that provides merchants with tools to create, manage, and grow their online stores. This node enables seamless integration with IKAS's GraphQL API for automating e-commerce operations including:

  - Product catalog management
  - Order processing and fulfillment
  - Inventory and stock management
  - Customer data handling
  - Sales analytics and reporting

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

  ## Table of Contents

  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Operations](#operations)
  - [Usage Examples](#usage-examples)
  - [Compatibility](#compatibility)
  - [Contributing](#contributing)
  - [Development Setup](#development-setup)
  - [Resources](#resources)
  - [Version History](#version-history)
  - [License](#license)

  ## Installation

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

  Use the package name: `n8n-nodes-ikas`

  ## Operations

  This node supports the following operations:

  ### Products

  - **Get Many**: Retrieve multiple products from your IKAS store
  - **Search**: Search products with advanced filters and pagination including:
    - Search by name, description, or other text fields
    - Filter by product IDs, SKUs, or barcodes
    - Pagination support with customizable page size
  - **Create**: Create new products in your store with:
    - Simple product structure support
    - Automatic variant creation
    - Stock location assignment
    - Pricing configuration (sell price, buy price, discount price)
  - **Update**: Update existing product information including all product fields

  ### Orders

  - **Get Many**: Retrieve orders from your IKAS store with advanced filtering:
    - Filter by customer email or customer ID
    - Filter by order number or sales channel
    - Filter by order status (Created, Confirmed, Fulfilled, etc.)
    - Filter by payment status (Paid, Pending, Refunded, etc.)
    - Filter by package status (Preparing, Shipped, Delivered, etc.)
  - **Fulfill**: Fulfill order line items with:
    - Multiple line item fulfillment
    - Quantity specification per line item
    - Optional marking as ready for shipment
    - Customer notification settings
    - Tracking information (tracking number, cargo company, barcode, etc.)
  - **Update Package Status**: Update order package statuses with:
    - Multiple package status updates in one operation
    - Comprehensive status options (Fulfilled, Shipped, Delivered, Cancelled, etc.)
    - Tracking information updates
    - Error message handling

  ### Stock Management

  - **Stock Location Retrieval**: Get stock locations by name or filters
  - **Stock Assignment**: Automatically assign stock to locations during product creation

  ### Available GraphQL Operations

  - **Queries**:
    - `GetProducts` - Fetch product data with full product information
    - `SearchProducts` - Advanced product search with filters and pagination
    - `GetOrders` - Retrieve order information with comprehensive filtering
  - **Mutations**:
    - `SaveProduct` - Create or update products with full product structure
    - `FulfillOrder` - Fulfill order line items with tracking
    - `UpdateOrderPackageStatus` - Update package statuses with tracking info

  ## Credentials

  To use this node, you need to authenticate with IKAS using OAuth2 credentials. Here's how to set it up:

  ### Prerequisites

  1. You must have an IKAS store
  2. Create a Private App in your IKAS admin panel to get API credentials

  ### Authentication Setup

  1. In your IKAS admin panel, navigate to Apps & Integrations
  2. Create a new Private App
  3. Note down your:
     - **Store Name** (your store subdomain without .myikas.com)
     - **Client ID**
     - **Client Secret**

  ### Credential Configuration

  When setting up the IKAS API credentials in n8n:

  - **Store Name**: Your IKAS store name (e.g., "mystore" for mystore.myikas.com)
  - **Client ID**: The Client ID from your Private App
  - **Client Secret**: The Client Secret from your Private App

  The node will automatically handle OAuth2 authentication and session token management.

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Node version**: 1.0
  - **Tested with**: n8n 1.x
  - **Node.js**: >=22.16

  This node uses the IKAS GraphQL API v1 and should be compatible with all current IKAS store configurations.

  ## Usage Examples

  ### Quick Start

  1. Install the node using n8n's community node installation process
  2. Set up your IKAS API credentials
  3. Create a new workflow and add the IKAS node
  4. Configure your desired operation (Product or Order management)

  ### Workflow Examples

  #### Example 1: Sync Products from External Source

  ```
  Webhook → Data Processing → IKAS (Create Product) → Email Notification
  ```

  This workflow listens for new product data, processes it, creates the product in IKAS, and sends a confirmation email.

  #### Example 2: Order Fulfillment Automation

  ```
  IKAS (Get Orders) → Filter (Paid Orders) → IKAS (Fulfill Order) → Send Tracking Email
  ```

  This workflow automatically fulfills paid orders and sends tracking information to customers.

  #### Example 3: Inventory Management

  ```
  Schedule Trigger → IKAS (Get Products) → Check Stock Levels → IKAS (Update Product) → Slack Notification
  ```

  This workflow runs daily to check stock levels and update products with low inventory alerts.

  ### Product Operations

  **Get Products**: Select "Product" as resource and "Get Many" as operation to fetch all products from your store with complete product information.

  **Search Products**: Use advanced filtering to find specific products:

  - Search by text query across product names and descriptions
  - Filter by specific product IDs, SKUs, or barcodes (comma-separated lists)
  - Use pagination controls to manage large result sets
  - Return all results or limit to specific page sizes

  **Create Products**: Create new products with comprehensive configuration:

  - Set product name, type (Physical, Digital, Bundle, Membership), and structure
  - Configure pricing (sell price, buy price, discount price)
  - Add descriptions, weight, and quantity limits
  - Assign to sales channels
  - Set initial stock counts and assign to stock locations
  - Add additional attributes, translations, and metadata

  **Update Products**: Modify existing products using the same configuration options as creation, plus the ability to update all product fields.

  ### Order Management

  **Get Orders**: Retrieve orders with powerful filtering capabilities:

  - Filter by customer information (email, customer ID)
  - Filter by order details (order number, sales channel)
  - Filter by order status (Created, Confirmed, Fulfilled, Cancelled, etc.)
  - Filter by payment status (Paid, Pending, Refunded, Partially Paid, etc.)
  - Filter by package status (Preparing, Shipped, Delivered, Returned, etc.)

  **Fulfill Orders**: Process order fulfillment with detailed control:

  - Fulfill specific line items with custom quantities
  - Add tracking information (tracking number, cargo company, barcode)
  - Configure shipment notifications to customers
  - Mark orders as ready for shipment
  - Link to source packages for inventory tracking

  **Update Package Status**: Manage package lifecycle with comprehensive status updates:

  - Update multiple packages in a single operation
  - Set detailed package statuses (Fulfilled, Ready for Shipment, Shipped, Delivered, Cancelled, Error, etc.)
  - Add or update tracking information per package
  - Handle error states with custom error messages
  - Include source IDs for external system integration

  ## Contributing

  We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.

  ### How to Contribute

  1. **Fork the Repository**: Click the "Fork" button on GitHub to create your own copy
  2. **Clone Your Fork**: `git clone https://github.com/YOUR_USERNAME/n8n-ikas.git`
  3. **Create a Branch**: `git checkout -b feature/your-feature-name`
  4. **Make Your Changes**: Implement your feature or fix
  5. **Test Your Changes**: Ensure everything works correctly
  6. **Commit Your Changes**: `git commit -am 'Add some feature'`
  7. **Push to Your Branch**: `git push origin feature/your-feature-name`
  8. **Create a Pull Request**: Submit your changes for review

  ### Code Standards

  - Follow the existing TypeScript code style
  - Use meaningful variable and function names
  - Add JSDoc comments for new functions
  - Ensure all new code is properly typed

  ### Reporting Issues

  Found a bug or have a feature request? Please check existing issues first, then create a new issue with:

  - Clear description of the problem or request
  - Steps to reproduce (for bugs)
  - Expected vs actual behavior
  - Your environment details (n8n version, Node.js version, etc.)

  ## Development Setup

  ### Prerequisites

  - Node.js >=22.16
  - n8n (for testing)
  - Ikas Credentials (Client ID - Client Secret)

  ### Setup Instructions

  1. **Clone the Repository**

     ```bash
     git clone https://github.com/actuallyzefe/n8n-ikas.git
     cd n8n-ikas
     ```

  2. **Install Dependencies**

     ```bash
     npm install
     ```

  3. **Build the Project**

     ```bash
     npm run build
     ```

  4. **Linting and Formatting**
     ```bash
     npm run lint        # Check for linting issues
     npm run lintfix     # Fix auto-fixable issues
     npm run format      # Format code with prettier
     ```

  ### Project Structure

  ```
  ├── credentials/           # Authentication credential definitions
  ├── nodes/
  │   └── Ikas/
  │       ├── Ikas.node.ts  # Main node implementation
  │       ├── GenericFunctions.ts # Shared utilities
  │       ├── graphql/      # GraphQL queries and mutations
  │       ├── node-definition/ # Node property definitions
  │       ├── operations/   # Operation implementations
  │       └── types/        # TypeScript type definitions
  ├── gulpfile.js          # Build configuration
  └── package.json         # Project configuration
  ```

  ### Testing Your Changes

  1. Build the project: `npm run build`
  2. Link to n8n: Follow [n8n's community node development guide](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally//)
  3. Test your changes in n8n workflows
  4. Verify all operations work as expected

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [n8n Node Development Guide](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally//)
  - [IKAS API Documentation](https://ikas.dev/docs/intro)
  - [IKAS Authentication Guide](https://ikas.dev/docs/api/getting-started/authentication)
  - [IKAS Developer Portal](https://ikas.dev/)
  - [GraphQL Best Practices](https://graphql.org/learn/best-practices/)

  ## License

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

  ## Acknowledgments

  - Thanks to the [n8n team](https://n8n.io/) for creating an amazing workflow automation platform
  - Thanks to [IKAS](https://ikas.com) for providing a comprehensive e-commerce platform
  - Thanks to all contributors who help improve this node

  ---

  **Need Help?**

  - Check out the [Issues](https://github.com/actuallyzefe/n8n-ikas/issues) for common problems
  - Create a new issue if you can't find a solution
  - Join the [n8n community](https://community.n8n.io/) for general n8n support

ai_documentation_summary:
  {"purpose":"An n8n community node that integrates with the IKAS e-commerce platform's GraphQL API to automate product management, order processing, inventory control, and customer data handling.","capabilities":["Retrieve multiple products with pagination","Search products by name, description, SKU, or barcode with filters","Create new products with variants and pricing configuration","Update existing product information","Retrieve orders with advanced filtering by customer, status, and payment","Fulfill order line items with tracking information","Update order package statuses (Fulfilled, Shipped, Delivered, Cancelled)","Retrieve stock locations by name or filters","Assign stock to locations during product creation","Handle customer data and sales analytics"],"authentication":"OAuth2 (requires IKAS Private App credentials: Store Name, Client ID, Client Secret)","commonUseCases":["Automated product catalog synchronization from external sources","Order fulfillment automation for paid orders","Inventory and stock management workflows","Customer order processing and tracking notifications","Sales analytics and reporting automation"],"limitations":["Requires an existing IKAS store with a Private App configured","Minimum n8n version 1.0.0 required","Requires Node.js >=22.16","Limited to IKAS GraphQL API v1"],"relatedNodes":["n8n-nodes.webhook","n8n-nodes.filter","n8n-nodes.email"]}


node_type: @alipeople/n8n-nodes-sendon.sendon
package_name: @alipeople/n8n-nodes-sendon
display_name: Sendon
description: Send SMS using Sendon API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: alipeople
author_github_url: https://github.com/alipeople/n8n-nodes-sendon.git
npm_package_name: @alipeople/n8n-nodes-sendon
npm_version: 0.1.7
community_fetched_at: 2026-07-14T14:40:33.208Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-sendon

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

  Sendon is a messaging platform that allows you to send SMS, LMS, and MMS messages programmatically via API.

  [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 Sendon node supports the following operations:

  - Send SMS, LMS, and MMS messages
    - Automatic message type detection (SMS/LMS) based on content length
    - Optional title auto-generation for LMS/MMS
    - Support for development and production environments
    - Mark message as advertisement

  ## Credentials

  To use this node, you need a Sendon account and API credentials.

  1. Sign up at [Sendon](https://sendon.io/) as a business user. **Note: Only users with a registered business in South Korea are eligible to use Sendon.** After registration, obtain your Sendon ID and API Key.
  2. Charge your credits or points to send messages.
  3. Generate your API Key in your settings.
  4. In n8n, go to **Settings** → **Credentials**.
  5. Add new credentials for "Sendon" and enter:
     - **Sendon ID**: Your Sendon account ID
     - **API Key**: Your Sendon API key

  Authentication uses HTTP Basic Auth with your Sendon ID and API Key.

  ## Compatibility

  - Requires n8n version: 1.0.0 or higher (please adjust if you have a different minimum)
  - Node.js ≥ 20.15
  - No known incompatibilities at this time.

  ## Usage

  ### Parameters

  - **Sender Number** (`from`): The phone number sending the message
  - **Recipient Number** (`to`): The phone number receiving the message
  - **Message** (`message`): The content of your SMS/LMS/MMS
  - **Title** (`title`, optional): Custom title for LMS/MMS (auto-generated from first 20 characters if omitted)
  - **Is Ad** (`isAd`, optional): Mark as advertisement (default: false)
  - **Type** (`type`, optional): `Auto` (default), `SMS`, `LMS`, `MMS`

  ### Message Type Auto-Detection

  - If `Type` is set to `Auto` or left blank:
    - **SMS**: ≤ 90 bytes
    - **LMS**: > 90 bytes
    - **MMS**: Only if selected manually

  ### Example

  **Basic SMS:**

  ```json
  {
    "from": "01012345678",
    "to": "01087654321",
    "message": "Hello from n8n!",
    "isAd": false,
    "type": "auto"
  }
  ```

  **Long Message (LMS):**

  ```json
  {
    "from": "01012345678",
    "to": "01087654321",
    "message": "This is a longer message that will automatically be sent as LMS because it exceeds the SMS character limit...",
    "title": "Custom Title",
    "isAd": false,
    "type": "auto"
  }
  ```

  For more usage help, see the [Try it out](https://docs.n8n.io/try-it-out/) documentation.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Sendon API documentation](https://api.sendon.io/swagger)

  ## Version history

  - v1.0.0: Initial release. Supports sending SMS, LMS, and MMS with auto-detection and credential management.

ai_documentation_summary:
  {"purpose":"A community n8n node that sends SMS, LMS, and MMS messages programmatically using the Sendon API.","capabilities":["Send SMS messages","Send LMS (Long SMS) messages","Send MMS (Multimedia) messages","Automatic message type detection based on content length","Optional title auto-generation for LMS/MMS","Support for development and production environments","Mark messages as advertisements"],"authentication":"HTTP Basic Auth with Sendon ID and API Key","commonUseCases":["Automated SMS notifications in n8n workflows","Bulk messaging campaigns","Transactional message delivery","Marketing message distribution"],"limitations":["Sendon service is only available to business users registered in South Korea","Requires separate Sendon account and API credentials","Minimum n8n version 1.0.0 required"],"relatedNodes":["HTTP Request","Webhook","Generic Code"]}


node_type: n8n-nodes-sinergiacrm.sinergiaCrm
package_name: n8n-nodes-sinergiacrm
display_name: SinergiaCRM
description: Perform operations on any module in SinergiaCRM (SuiteCRM API).
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: tecnologia-solidaria
author_github_url: https://github.com/Tecnologia-Solidaria/
npm_package_name: n8n-nodes-sinergiacrm
npm_version: 2.0.0
community_fetched_at: 2026-07-14T14:40:33.209Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get All",
          "value": "getAll",
          "action": "Get all records"
        },
        {
          "name": "Get One",
          "value": "getOne",
          "action": "Get a single record"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new record"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a record"
        },
        {
          "name": "Get Relationships",
          "value": "getRelationships",
          "action": "Get related records"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all records"
    },
    {
      "name": "Get One",
      "value": "getOne",
      "action": "Get a single record"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new record"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a record"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a record"
    },
    {
      "name": "Get Relationships",
      "value": "getRelationships",
      "action": "Get related records"
    }
  ]

npm_readme:
  # n8n-nodes-sinergiacrm

  A generic n8n node to operate with any SinergiaCRM (SuiteCRM 7.x+) module via the official JSON API.

  Supports CRUD operations, dynamic module and field discovery (including custom fields), advanced filtering, pagination, and relationship retrieval.

  ---

  ## Features

  - **Full CRUD** – Create, read, update, and delete any SuiteCRM module
  - **Dynamic discovery** – Auto-lists modules and fields, including custom fields
  - **Advanced filtering** – Filter records using operators, custom fields, pagination
  - **Relationship handling** – Retrieve related records from any entity
  - **OAuth2 authentication** – Native SuiteCRM client credentials flow
  - **Robust error handling** – Clear errors and maintainable structure

  ---

  ## Installation

  ```bash
  pnpm add n8n-nodes-sinergiacrm
  ```

  Or with npm:

  ```bash
  npm install n8n-nodes-sinergiacrm
  ```

  Add to your instance following [n8n's custom node guide](https://docs.n8n.io/integrations/creating-nodes/code/create-node/).

  ---

  ## Usage

  ### 1. Credentials

  - Create credentials in n8n of type **SinergiaCRM API**
  - Fill in your SuiteCRM domain, Client ID, and Client Secret  
    *(see SuiteCRM → Admin → OAuth2 Clients)*

  ### 2. Node Configuration

  - **Module:** Auto-discovered list from your API
  - **Operation:** Choose from Get All, Get One, Create, Update, Delete, Get Relationships
  - **Parameters:** Filters, IDs, pagination, or JSON payloads depending on operation

  ### 3. Example – Create a Contact

  Input data:
  ```json
  {
    "first_name": "John",
    "last_name": "Doe",
    "email1": "john.doe@example.com"
  }
  ```

  ---

  ## Supported Operations

  | Operation         | Description                                   |
  |------------------|-----------------------------------------------|
  | Get All          | Fetch records with optional filters & paging  |
  | Get One          | Retrieve a single record by ID                |
  | Create           | Add a new record (JSON fields)                |
  | Update           | Modify a record (PATCH with JSON)             |
  | Delete           | Remove a record by ID                         |
  | Get Relationships| Fetch related records of a module by ID       |

  ---

  ## Requirements

  - SuiteCRM 7.x+ with API and OAuth2 enabled
  - All modules and fields are fetched dynamically
  - For 1:N relations, set the "parent" ID on the child (SuiteCRM logic)
  - Tested against SuiteCRM v7+ JSON API

  ---

  ## Troubleshooting

  - `access_token` missing → Check credentials or OAuth2 setup
  - `405 Method Not Allowed` → PATCH may not be enabled in your SuiteCRM
  - Any API error is returned as node output for transparency

  ---

  ## Contributing

  Contributions welcome!  
  Feel free to open issues or PRs.

  ---

  ## License

  MIT

  ---

  **Maintainer:** Javier Quilez Cabello / [tecnologiasolidaria.org](https://tecnologiasolidaria.org)  
  **Support:** [SuiteCRM Forums](https://community.suitecrm.com/)  
  **Source:** [GitHub](https://github.com/tecnologiasolidaria/n8n-nodes-sinergiacrm)  
  **Docs:** [SuiteCRM JSON API](https://docs.suitecrm.com/developer/api/developer-setup-guide/json-api/)

ai_documentation_summary:
  {"purpose":"A generic n8n node that performs CRUD operations and data retrieval on any module in SinergiaCRM (SuiteCRM 7.x+) using the official JSON API.","capabilities":["Create new records","Read all records with filtering","Read single record by ID","Update existing records","Delete records","Retrieve related records","Dynamic module and field discovery","Advanced filtering with operators","Pagination support","OAuth2 client credentials authentication"],"authentication":"OAuth2 (Client Credentials Flow)","commonUseCases":["Automating data entry into SuiteCRM","Syncing customer data between systems","Retrieving contact lists with custom filters","Updating records based on external triggers","Fetching related records for relationship management"],"limitations":["Requires SuiteCRM 7.x+ with API and OAuth2 enabled","PATCH method may not be enabled in all SuiteCRM configurations","1:N relations require setting the 'parent' ID on the child record according to SuiteCRM logic","Custom node installation required via n8n's custom node guide"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.oauth2","n8n-nodes-base.credentialManager"]}


node_type: @reportei/n8n-nodes-reportei.reportei
package_name: @reportei/n8n-nodes-reportei
display_name: Reportei
description: Perform actions with Reportei API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: pgabriel20
author_github_url: https://github.com/reportei/reportei-n8n-node.git
npm_package_name: @reportei/n8n-nodes-reportei
npm_version: 0.1.5
community_fetched_at: 2026-07-14T14:40:33.209Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "report",
      "options": [
        {
          "name": "Report",
          "value": "report"
        },
        {
          "name": "Dashboard",
          "value": "dashboard"
        },
        {
          "name": "Timeline",
          "value": "timeline"
        }
      ],
      "required": true,
      "description": "Choose which resource you want to operate on",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create a Report",
          "value": "create",
          "action": "Create a report",
          "description": "Creates a new report in Reportei"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a dashboard",
          "description": "Create a new dashboard in Reportei"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Add event to timeline",
          "description": "Add an event (milestone) to the timeline in Reportei"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "timeline"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create a Report",
      "value": "create",
      "action": "Create a report",
      "description": "Creates a new report in Reportei",
      "resource": "report"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a dashboard",
      "description": "Create a new dashboard in Reportei",
      "resource": "dashboard"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Add event to timeline",
      "description": "Add an event (milestone) to the timeline in Reportei",
      "resource": "timeline"
    }
  ]

npm_readme:
  # n8n-nodes-reportei

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

  **Reportei** is a reporting and dashboard platform that helps you generate marketing reports, track timelines, and automate analytics. With this node, you can create reports, dashboards, and timeline events, as well as trigger workflows on various events happening in your Reportei account.

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

  Once installed, you can select **Reportei** and **Reportei Trigger** in your n8n workflows to interact with the Reportei API.

  ## Operations

  The **Reportei** node offers the following _actions_ (operations):

  - **Create Report**: Create a marketing report, specifying the project, integrations, date ranges, titles, and optionally select a template.  
  - **Create Dashboard**: Create a custom dashboard linked to a project, with selected integrations, date ranges, and optionally select a template.  
  - **Add Event to Timeline**: Insert a milestone or note into a project’s report timeline.

  The **Reportei Trigger** node supports these _events_ (webhooks):

  - **Report Created**  
  - **Report Viewed**  
  - **Dashboard Created**  
  - **Automation Executed**  
  - **Control Goal Met**  
  - **Control Goal Not Met**  
  - **Timeline Milestone Added**

  ## Credentials

  To use this node, you need a **Reportei API** token (Bearer token).  
  1. **Get your token** from the Reportei account page.  
  2. In n8n, create a new credential called **Reportei API** and paste your token.  
  3. Use this credential in the **Reportei** or **Reportei Trigger** node.

  For webhooks, the node will automatically register or unregister a webhook subscription in your Reportei account if you use the **Reportei Trigger** node. You only need to provide valid credentials and set the correct event type.

  ## Compatibility

  - **Minimum n8n version**: 1.85.0 (or whichever you have tested).  
  - The node is developed and tested against **Reportei**’s [API v1](https://app.reportei.com/docs/api).  
  - No known incompatibilities, but you must enable **community nodes** in n8n’s settings for installation.

  ## Usage

  1. In your n8n instance, install the node via one of the methods described in the community nodes [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).  
  2. Create or select a credential for **Reportei API**.  
  3. **Actions** node (Reportei):
     - Drag the **Reportei** node into your workflow.  
     - Select your resource (Report, Dashboard, or Timeline) and the operation (create).  
     - Fill the required fields, such as “Project ID”, “Integrations”, “Title”, etc.  
     - Execute the workflow to see the results.
  4. **Trigger** node (Reportei Trigger):
     - Drag the **Reportei Trigger** node into your workflow.  
     - Choose an event type (e.g., “report_created”).  
     - (Optional) If you are running n8n locally or behind a tunnel, fill **Custom Webhook Base URL** with your public domain (for example, `https://your-domain.tld`). This replaces the default localhost address in the webhook registration, ensuring external services (Reportei) can reach your n8n instance.  
     - Activate the workflow. The node will register a webhook at Reportei.  
     - Once the event occurs, n8n will receive a POST request at your specified domain and trigger your workflow.

  If you need more help with n8n basics, check out the [Try it out](https://docs.n8n.io/try-it-out/) documentation.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)  
  - [Reportei API documentation](https://app.reportei.com/docs/api)  
  - [n8n official docs](https://docs.n8n.io/)

  ## Version history

  - **0.1.0**  
    - Initial release of the **n8n-nodes-reportei** package.  
    - Added actions: Create Report, Create Dashboard, Add Timeline Event.  
    - Added triggers for 6 events: `report_created`, `dashboard_created`, `automation_executed`, `control_goal_met`, `control_goal_not_met`, `timeline_milestone`.

  - **0.1.1**  
    - Fixed minor bugs in the existing operations and triggers.

  - **0.1.2**  
    - Added the optional **Custom Webhook Base URL** input in the trigger node.  
    - Users can now specify a public domain (such as a tunnel URL) to replace localhost, making it easier to receive events behind NAT or local environments.

  - **0.1.3**  
    - **NEW**: Added optional **Template Selection** for Reports and Dashboards.  
    - Templates are now loaded dynamically based on the selected project.  
    - Enhanced API endpoint handling with multiple fallback URLs for better reliability.  
    - Improved error handling for template loading operations.

  - **0.1.4**  
    - **FIXED**: Added credential test functionality to validate API tokens.  
    - The node now includes automatic credential validation using the `/me` endpoint.  
    - This resolves the "Missing credential test" error during n8n community node verification.  
    - Improved user experience with immediate feedback on invalid credentials.

  - **0.1.5**  
    - **NEW**: Added 'Report Viewed' trigger event (`report_viewed`).  
    - **IMPROVED**: Made 'Project Name or ID' field optional in trigger configuration. Users can now create triggers without specifying a specific project, allowing for more flexible webhook configurations.  

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Reportei API to create marketing reports, dashboards, and timeline events, or to trigger workflows based on specific events within a Reportei account.","capabilities":["Create marketing reports with project and template selection","Create custom dashboards linked to projects","Add milestones or notes to project timelines","Trigger workflows on report creation","Trigger workflows on dashboard creation","Trigger workflows on automation execution","Trigger workflows when control goals are met or not met","Trigger workflows on timeline milestone addition","Trigger workflows when reports are viewed","Register and unregister webhook subscriptions"],"authentication":"API key required (Reportei API Bearer token)","commonUseCases":["Automating marketing report generation based on project milestones","Creating dynamic dashboards for project tracking","Receiving notifications when reports are viewed or automation runs","Integrating Reportei analytics into external n8n workflows"],"limitations":["Community node (requires enabling in n8n settings)","Requires Reportei API v1 compatibility","Minimum n8n version 1.85.0"],"relatedNodes":["Reportei Trigger","Community Nodes"]}


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-07-14 14:40:33
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-07-14T14:40:33.210Z
ai_summary_generated_at: 2026-03-25 22:51:43
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",
      "resource": "codeDocumentation"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate code tests",
      "description": "Generate test cases from source code",
      "resource": "codeTests"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate code comments",
      "description": "Generate comments for source code",
      "resource": "codeComments"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate UML diagram",
      "description": "Generate UML diagram from source code",
      "resource": "umlDiagram"
    },
    {
      "name": "Optimize",
      "value": "optimize",
      "action": "Optimize code",
      "description": "Optimize and refactor source code",
      "resource": "codeOptimization"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all generations",
      "description": "Get all generations",
      "resource": "generations"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get generation",
      "description": "Get a specific generation",
      "resource": "generations"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "action": "Get all generations",
      "description": "Get all generations",
      "resource": "generations"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get generation",
      "description": "Get a specific generation",
      "resource": "generations"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get user info",
      "description": "Get user account information",
      "resource": "userInfo"
    }
  ]

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":"This n8n community node integrates with DocuWriter.ai to automate code documentation, test generation, UML diagram creation, and code optimization using AI.","capabilities":["Generate comprehensive code documentation from source code","Create automated test suites with framework auto-detection","Generate UML diagrams (class, sequence, use case, activity, component, state, object)","Provide AI-powered code optimization suggestions","Retrieve previously generated content by ID or list all generations","Check account status and credit balance","Support webhook triggers for real-time event responses"],"authentication":"API key required (DocuWriter.ai API token)","commonUseCases":["Automatically generate documentation on code commits in CI/CD pipelines","Create test suites for new features during development","Generate architectural diagrams and optimization suggestions for code reviews","Maintain project documentation automatically"],"limitations":["Requires n8n version 0.198.0 or later","Requires a separate DocuWriter.ai account and API token","Documentation mode is always set to 'Accurate' and cannot be changed"],"relatedNodes":["GitHub Webhook","GitLab Webhook","Google Drive","Slack","Discord"]}


node_type: n8n-nodes-autocalls.autocalls
package_name: n8n-nodes-autocalls
display_name: Autocalls
description: Make phone calls using AI assistants from Autocalls platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: zebi15
author_github_url: https://github.com/Zebi15/n8n-autocalls.git
npm_package_name: n8n-nodes-autocalls
npm_version: 1.0.3
community_fetched_at: 2026-07-14T14:40:33.211Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "Call",
          "value": "call"
        },
        {
          "name": "Assistant",
          "value": "assistant"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "make",
      "options": [
        {
          "name": "Make",
          "value": "make",
          "action": "Make a phone call",
          "description": "Make a phone call using an AI assistant"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAssistants",
      "options": [
        {
          "name": "Get Assistants",
          "value": "getAssistants",
          "action": "Get assistants",
          "description": "Get all assistants from your account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assistant"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Make",
      "value": "make",
      "action": "Make a phone call",
      "description": "Make a phone call using an AI assistant",
      "resource": "call"
    },
    {
      "name": "Get Assistants",
      "value": "getAssistants",
      "action": "Get assistants",
      "description": "Get all assistants from your account",
      "resource": "assistant"
    }
  ]

npm_readme:
  # n8n-nodes-autocalls

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

  Autocalls is an AI-powered calling platform that enables you to automate phone calls using intelligent virtual assistants.

  [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

  This package provides the Autocalls node with a unified interface for both actions and triggers:

  ### Autocalls Node

  When you add the **Autocalls** node to your workflow, n8n will present you with a submenu to choose between:

  #### Actions (Regular Node)
  - **Call**: Make phone calls using AI assistants
    - **Make**: Initiate phone calls using AI assistants
      - Select an assistant from your Autocalls account (outbound assistants only)
      - Specify the phone number to call
      - Add variables with name/value pairs to customize the conversation

  - **Assistant**: Manage assistants
    - **Get Assistants**: Retrieve assistants from your Autocalls account
      - Fetches all assistants from your account
      - Returns each assistant as a separate item with details like name, ID, status, etc.
      - Regular action that can be used in any workflow

  #### Triggers (Trigger Node)
  - **Call**: Monitor phone call events
    - **Call Ended**: Receive notifications when phone calls end
      - Select an assistant to monitor
      - Receives call details including duration, status, and transcript
      - Gets extracted variables from the conversation
      - Provides input variables that were used
      - Real-time webhook notifications

  ## Credentials

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

  1. Sign up for an account at [Autocalls](https://app.autocalls.ai/)
  2. Generate an API key from your account settings
  3. In n8n, create new credentials of type "Autocalls API"
  4. Enter your API key

  The credentials are automatically validated when you save them.

  ## Compatibility

  - Minimum n8n version: 0.36.1
  - Tested with n8n version: 1.0.0+

  ## Usage

  ### Adding the Autocalls Node

  1. Add the **Autocalls** node to your workflow
  2. n8n will present you with a submenu to choose between **Action** and **Trigger**
  3. Select the type you need:
     - **Action**: For making phone calls (requires input connection)
     - **Trigger**: For receiving events or fetching data (no input connection needed)

  ### Using Actions

  #### Making Phone Calls

  1. Choose **Action** from the submenu
  2. Select **Resource**: Call, **Operation**: Make
  3. Choose an outbound assistant from the dropdown (assistants are loaded from your Autocalls account)
  4. Enter the phone number to call
  5. Add variables using the name/value interface to personalize the conversation (e.g., Name: "customer_name", Value: "John")

  #### Getting Assistants

  1. Choose **Action** from the submenu
  2. Select **Resource**: Assistant, **Operation**: Get Assistants
  3. The action will fetch all assistants from your account
  4. Each assistant will be returned as a separate item with details like name, ID, status, etc.
  5. Can be used like any regular action in your workflows

  ### Using Triggers

  The **Autocalls Call Ended Trigger** receives webhook notifications when phone calls are completed. This trigger provides real-time data about call outcomes, extracted variables, and conversation transcripts.

  #### What Data You Receive

  When a call ends, the trigger receives a webhook with the following information:

  - **Call Details**: ID, duration, status
  - **Phone Numbers**: Customer and assistant phone numbers
  - **Extracted Variables**: AI-extracted data from the conversation
  - **Input Variables**: Variables passed to the assistant before the call
  - **Transcript**: Full conversation transcript
  - **Recording URL**: Link to call recording (if enabled)
  - **Timestamps**: When the call started and ended
  - **Lead Information**: Lead and campaign details (for campaign calls)

  #### Setting Up the Trigger

  1. Choose **Trigger** from the submenu
  2. Select an assistant to monitor from the dropdown
  3. The trigger will automatically generate a webhook URL
  4. **Important**: You must manually register this webhook URL in your Autocalls assistant settings
  5. Go to your assistant settings in Autocalls dashboard
  6. Add the webhook URL ,enable webhook status and save the configuration

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Autocalls Documentation](https://docs.autocalls.ai/)
  * [Autocalls API Reference](https://docs.autocalls.ai/api-reference/)
  * [Autocalls Platform](https://app.autocalls.ai/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of phone calls using AI assistants from the Autocalls platform, supporting both initiating calls and receiving real-time call event notifications.","capabilities":["Initiate outbound phone calls using AI assistants","Personalize conversations via custom variables","Retrieve and manage assistant configurations","Monitor call events and receive real-time webhook notifications","Access call details including duration, status, and transcript","Extract variables from conversation transcripts"],"authentication":"API key required","commonUseCases":["Automated customer outreach and sales calls","Appointment scheduling via AI voice assistants","Lead generation through campaign-based calling","Post-call analysis and data extraction"],"limitations":["Requires manual registration of webhook URLs in the Autocalls dashboard for triggers","Only outbound assistants can be selected for making calls","Requires separate Autocalls account setup and API key generation"],"relatedNodes":["Webhook","HTTP Request","Split In Batches","Set"]}


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-07-14 14:40:33
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-07-14T14:40:33.212Z
ai_summary_generated_at: 2026-03-25 22:51:43
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.",
      "resource": "message"
    },
    {
      "name": "Create Contact",
      "value": "createcontact",
      "action": "Create Contact",
      "description": "Creates a new contact",
      "resource": "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":"This n8n node enables automation of Zoho TeamInbox workflows by consuming the Zoho TeamInbox API to manage multichannel conversations from platforms like WhatsApp, Telegram, Facebook, Instagram DMs, and email.","capabilities":["Trigger on new messages from multiple channels","Send emails via TeamInbox","Create contacts in TeamInbox","Align TeamInbox with business processes through custom workflows"],"authentication":"OAuth2 API","commonUseCases":["Automating responses to customer inquiries across social media and messaging apps","Centralizing team collaboration on shared conversations","Integrating TeamInbox data into other business workflows"],"limitations":["Requires a verified domain added to the TeamInbox account","Requires manual setup of Client ID and Client Secret in Zoho Developer Console before OAuth2 flow"],"relatedNodes":["Zoho Calendar","Generic Email nodes","Contact Management nodes"]}


node_type: @promptlayer/n8n-nodes-promptlayer-runagent.promptLayerRunAgent
package_name: @promptlayer/n8n-nodes-promptlayer-runagent
display_name: PromptLayer Run Agent
description: Run an Agent from the PromptLayer API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: jpedoeem
author_github_url: https://github.com/MagnivOrg/n8n-node.git
npm_package_name: @promptlayer/n8n-nodes-promptlayer-runagent
npm_version: 0.1.9
community_fetched_at: 2026-07-14T14:40:33.214Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # PromptLayer RunAgent Node for n8n

  This package provides a custom n8n node for running [PromptLayer Agents](https://promptlayer.com/) directly from your n8n workflows. The **PromptLayer RunAgent** node allows you to execute PromptLayer Agents, pass input variables, select agent versions or labels, and retrieve results programmatically.

  ---

  ## Features

  - **Run any PromptLayer Agent** by name from your n8n workflow
  - **Select agent version** by number or label
  - **Pass input variables** as JSON
  - **Attach metadata** to executions
  - **Control output** (return all outputs or just the main one)
  - **Timeout handling** for long-running agents
  - **Credential-based authentication**

  ---

  ## Prerequisites

  - [n8n](https://n8n.io/) installed (Node.js 20+ required)
  - A [PromptLayer](https://promptlayer.com/) account and API key

  ---

  ## Installation

  1. Clone or download this repository into your n8n custom nodes directory.
  2. Install dependencies:
     ```bash
     npm install
     ```
  3. Build the node:
     ```bash
     npm run build
     ```
  4. [Register the custom node with n8n](https://docs.n8n.io/integrations/creating-nodes/build/node-development-environment/#load-custom-nodes) if needed.

  ---

  ## Configuration

  ### Setting up Credentials

  1. In n8n, go to **Credentials**.
  2. Create new credentials for **PromptLayerRunAgentApi**.
  3. Enter your PromptLayer API key.

  ---

  ## Usage

  1. Add the **PromptLayer RunAgent** node to your workflow.
  2. Configure the following fields:
     - **Agent Name**: Select the name of the agent to run.
     - **Use Agent Label Name**: Toggle to use a label instead of a version number.
     - **Agent Version Number**: (Optional) Specify a version number (if not using label). By default the latest version of the agent is used.
     - **Agent Label Name**: (Optional) Specify a label name (if using label). By default the latest version of the agent is used.
     - **Input Variables**: JSON object of variables required by the agent (e.g., `{ "question": "What is the weather?" }`).
     - **Additional Fields**:
       - **Metadata**: (Optional) JSON object of metadata to attach.
       - **Return All Outputs**: (Optional) Return all outputs from the agent.
       - **Timeout**: (Optional) Maximum wait time in minutes (default: 10).
  3. Connect the node as needed in your workflow.
  4. Run the workflow. The node will execute the agent and return the results.

  ---

  ## Example

  Suppose you have a PromptLayer agent named `weatherAgent` that takes a `location` variable:

  - **Agent Name**: `weatherAgent`
  - **Input Variables**: `{ "location": "London" }`
  - **Return All Outputs**: `false`

  The node will execute the agent and return the weather information for London.

  ---

  ## Troubleshooting

  - Ensure your PromptLayer API key is correct and has access to the agent.
  - Input variables and metadata must be valid JSON.
  - If the agent takes too long, increase the timeout in Additional Fields.

ai_documentation_summary:
  {"purpose":"Executes PromptLayer Agents from within n8n workflows by sending input variables and retrieving results programmatically.","capabilities":["Run agents by name","Select agent versions by number or label","Pass input variables as JSON","Attach metadata to executions","Control output selection (all outputs or main output only)","Handle timeouts for long-running agents"],"authentication":"API key required","commonUseCases":["Integrating PromptLayer agents into automated n8n workflows","Retrieving agent outputs for further processing","Testing agent performance with custom inputs"],"limitations":["Requires manual installation and building of the custom node in n8n"],"relatedNodes":["n8n Credentials node","n8n HTTP Request node"]}


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-07-14 14:40:33
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-07-14T14:40:33.215Z
ai_summary_generated_at: 2026-03-25 22:47:20
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.",
      "resource": "message"
    },
    {
      "name": "Send Template Mail",
      "value": "sendtemplatemail",
      "action": "Send Template Mail",
      "description": "Send custom Template Mail.",
      "resource": "message"
    }
  ]

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":"This n8n node enables the creation of automated workflows to send transactional emails (such as OTPs, password resets, and welcome emails) via the Zoho ZeptoMail API.","capabilities":["Send transactional emails","Send template emails","Integrate with Zoho ZeptoMail API","Automate time-sensitive email delivery"],"authentication":"OAuth2 via Zoho Developer Console (Client ID and Client Secret)","commonUseCases":["Automated OTP delivery","Password reset notifications","Welcome email automation","Invoice delivery"],"limitations":["Requires a verified domain added to ZeptoMail before use","Requires a separate ZeptoMail account"],"relatedNodes":["n8n-nodes-zoho.zoho","n8n-nodes-zoho.zohoEmail","n8n-nodes-zoho.zohoCRM"]}


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-07-14 14:40:33
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-07-14T14:40:33.216Z
ai_summary_generated_at: 2026-03-25 22:51:43
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.",
      "resource": "event"
    },
    {
      "name": "Update an Event",
      "value": "update",
      "action": "Update Event",
      "description": "Updates an event in the specified calendar.",
      "resource": "event"
    },
    {
      "name": "Delete an Event",
      "value": "delete",
      "action": "Delete Event",
      "description": "Deletes an event from the specified calendar.",
      "resource": "event"
    },
    {
      "name": "Quick Add an Event",
      "value": "quick_event",
      "action": "Quick Add Event",
      "description": "Creates an event from a piece of text.",
      "resource": "event"
    }
  ]

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":"This n8n node enables automation of Zoho Calendar events by allowing users to create, delete, update, and trigger workflows based on calendar events.","capabilities":["Create calendar events","Delete calendar events","Update existing calendar events","Quick add events","Trigger on event creation","Trigger on event deletion","Trigger on event updates"],"authentication":"OAuth2 (Client ID and Client Secret required via Zoho Developer Console)","commonUseCases":["Automate meeting reminders from Zoho Calendar","Sync calendar events with other business tools","Automate event notifications or follow-ups","Centralize scheduling workflows"],"limitations":["Requires a Zoho Mail account with a verified domain","Requires n8n admin login account","Requires manual setup of OAuth2 credentials via Zoho Developer Console"],"relatedNodes":["Zoho Mail","Zoho CRM","Generic Calendar nodes"]}


node_type: n8n-nodes-streak-crm.streak
package_name: n8n-nodes-streak-crm
display_name: Streak
description: Streak CRM Node
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: nader_heidari
author_github_url: https://github.com/nukleas/
npm_package_name: n8n-nodes-streak-crm
npm_version: 1.3.0
community_fetched_at: 2026-07-14T14:40:33.217Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "Box",
          "value": "box",
          "description": "Operate on Streak boxes (deals/opportunities)"
        },
        {
          "name": "Comment",
          "value": "comment",
          "description": "Operate on Streak comments"
        },
        {
          "name": "Contact",
          "value": "contact",
          "description": "Operate on Streak contacts"
        },
        {
          "name": "Field",
          "value": "field",
          "description": "Operate on Streak fields and field values"
        },
        {
          "name": "File",
          "value": "file",
          "description": "Operate on Streak files"
        },
        {
          "name": "Meeting",
          "value": "meeting",
          "description": "Operate on Streak meetings"
        },
        {
          "name": "Newsfeed",
          "value": "newsfeed",
          "description": "View Streak activity newsfeeds"
        },
        {
          "name": "Organization",
          "value": "organization",
          "description": "Operate on Streak organizations"
        },
        {
          "name": "Pipeline",
          "value": "pipeline",
          "description": "Operate on Streak pipelines"
        },
        {
          "name": "Search",
          "value": "search",
          "description": "Search across Streak data"
        },
        {
          "name": "Snippet",
          "value": "snippet",
          "description": "Operate on Streak snippets"
        },
        {
          "name": "Stage",
          "value": "stage",
          "description": "Operate on Streak pipeline stages"
        },
        {
          "name": "Task",
          "value": "task",
          "description": "Operate on Streak tasks"
        },
        {
          "name": "Team",
          "value": "team",
          "description": "Operate on Streak teams"
        },
        {
          "name": "Thread",
          "value": "thread",
          "description": "Operate on Streak email threads"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Operate on Streak users"
        },
        {
          "name": "Webhook",
          "value": "webhook",
          "description": "Manage Streak webhooks"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCurrentUser",
      "options": [
        {
          "name": "Get Current User",
          "value": "getCurrentUser",
          "action": "Get current user",
          "description": "Get information about the current user"
        },
        {
          "name": "Get User",
          "value": "getUser",
          "action": "Get a user",
          "description": "Get information about a specific user by their key"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMyTeams",
      "options": [
        {
          "name": "Get My Teams",
          "value": "getMyTeams",
          "action": "Get my teams",
          "description": "List all teams the authenticated user belongs to"
        },
        {
          "name": "Get Team",
          "value": "getTeam",
          "action": "Get a team",
          "description": "Get information about a specific team"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAllPipelines",
      "options": [
        {
          "name": "Create Pipeline",
          "value": "createPipeline",
          "action": "Create a pipeline",
          "description": "Creates a new pipeline"
        },
        {
          "name": "Delete Pipeline",
          "value": "deletePipeline",
          "action": "Delete a pipeline",
          "description": "Deletes a pipeline"
        },
        {
          "name": "Get Pipeline",
          "value": "getPipeline",
          "action": "Get a pipeline",
          "description": "Gets a specific pipeline by its key"
        },
        {
          "name": "List All Pipelines",
          "value": "listAllPipelines",
          "action": "List all pipelines",
          "description": "Lists all pipelines the user has access to"
        },
        {
          "name": "Move Boxes (Batch)",
          "value": "moveBoxesBatch",
          "action": "Move boxes between pipelines",
          "description": "Moves multiple boxes to a different pipeline"
        },
        {
          "name": "Update Pipeline",
          "value": "updatePipeline",
          "action": "Update a pipeline",
          "description": "Updates an existing pipeline"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pipeline"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listBoxes",
      "options": [
        {
          "name": "Create Box in a Pipeline",
          "value": "createBox",
          "action": "Create a box in a pipeline",
          "description": "Creates a new box in a pipeline"
        },
        {
          "name": "Delete Box",
          "value": "deleteBox",
          "action": "Delete a box",
          "description": "Deletes a box"
        },
        {
          "name": "Get Box",
          "value": "getBox",
          "action": "Get a box",
          "description": "Gets a specific box by its key"
        },
        {
          "name": "Get Multiple Boxes",
          "value": "getMultipleBoxes",
          "action": "Get multiple boxes",
          "description": "Gets multiple boxes by their keys"
        },
        {
          "name": "Get Timeline",
          "value": "getTimeline",
          "action": "Get timeline",
          "description": "Gets the timeline of events for a box"
        },
        {
          "name": "List Boxes in Pipeline",
          "value": "listBoxes",
          "action": "Get all boxes in a pipeline",
          "description": "Get all boxes (deals) in a pipeline"
        },
        {
          "name": "Update Box",
          "value": "updateBox",
          "action": "Update a box",
          "description": "Updates an existing box"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "box"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listStages",
      "options": [
        {
          "name": "Create Stage in a Pipeline",
          "value": "createStage",
          "action": "Create a stage in a pipeline",
          "description": "Creates a new stage in a pipeline"
        },
        {
          "name": "Delete Stage",
          "value": "deleteStage",
          "action": "Delete a stage",
          "description": "Deletes a stage"
        },
        {
          "name": "Get Stage",
          "value": "getStage",
          "action": "Get a stage",
          "description": "Gets a specific stage by its key"
        },
        {
          "name": "List Stages in a Pipeline",
          "value": "listStages",
          "action": "List stages in a pipeline",
          "description": "Lists all stages in a pipeline"
        },
        {
          "name": "Update Stage",
          "value": "updateStage",
          "action": "Update a stage",
          "description": "Updates an existing stage"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listFields",
      "options": [
        {
          "name": "Create Field in a Pipeline",
          "value": "createField",
          "action": "Create a field in a pipeline",
          "description": "Creates a new field in a pipeline"
        },
        {
          "name": "Delete Field",
          "value": "deleteField",
          "action": "Delete a field",
          "description": "Deletes a field"
        },
        {
          "name": "Get Field",
          "value": "getField",
          "action": "Get a field",
          "description": "Gets a specific field by its key"
        },
        {
          "name": "Get Field Value in a Box",
          "value": "getFieldValue",
          "action": "Get a field value in a box",
          "description": "Gets a specific field value for a box"
        },
        {
          "name": "List Field Values in a Box",
          "value": "listFieldValues",
          "action": "List field values in a box",
          "description": "Lists all field values for a box"
        },
        {
          "name": "List Fields in a Pipeline",
          "value": "listFields",
          "action": "List fields in a pipeline",
          "description": "Lists all fields in a pipeline"
        },
        {
          "name": "Update Field",
          "value": "updateField",
          "action": "Update a field",
          "description": "Updates an existing field"
        },
        {
          "name": "Update Field Value in a Box",
          "value": "updateFieldValue",
          "action": "Update a field value in a box",
          "description": "Updates a field value for a box"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "field"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getContact",
      "options": [
        {
          "name": "Get Contact",
          "value": "getContact",
          "action": "Get a contact",
          "description": "Gets a specific contact"
        },
        {
          "name": "Create Contact",
          "value": "createContact",
          "action": "Create a contact",
          "description": "Creates a new contact"
        },
        {
          "name": "Update Contact",
          "value": "updateContact",
          "action": "Update a contact",
          "description": "Updates an existing contact"
        },
        {
          "name": "Delete Contact",
          "value": "deleteContact",
          "action": "Delete a contact",
          "description": "Deletes a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getOrganization",
      "options": [
        {
          "name": "Check Existing Organizations",
          "value": "checkExistingOrganizations",
          "action": "Check existing organizations",
          "description": "Checks for existing organizations by name or domain"
        },
        {
          "name": "Create Organization",
          "value": "createOrganization",
          "action": "Create an organization",
          "description": "Creates a new organization"
        },
        {
          "name": "Delete Organization",
          "value": "deleteOrganization",
          "action": "Delete an organization",
          "description": "Deletes an organization"
        },
        {
          "name": "Get Organization",
          "value": "getOrganization",
          "action": "Get an organization",
          "description": "Gets a specific organization"
        },
        {
          "name": "Update Organization",
          "value": "updateOrganization",
          "action": "Update an organization",
          "description": "Updates an existing organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "organization"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTask",
      "options": [
        {
          "name": "Create Task in a Box",
          "value": "createTask",
          "action": "Create a task in a box",
          "description": "Creates a new task for a box"
        },
        {
          "name": "Delete Task",
          "value": "deleteTask",
          "action": "Delete a task",
          "description": "Deletes a task"
        },
        {
          "name": "Get Task",
          "value": "getTask",
          "action": "Get a task",
          "description": "Gets a specific task"
        },
        {
          "name": "Get Tasks in a Box",
          "value": "getTasksInBox",
          "action": "Get tasks in a box",
          "description": "Gets all tasks associated with a box"
        },
        {
          "name": "Update Task",
          "value": "updateTask",
          "action": "Update a task",
          "description": "Updates an existing task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listCommentsInBox",
      "options": [
        {
          "name": "Create Comment",
          "value": "createComment",
          "action": "Create a comment",
          "description": "Creates a new comment on a box"
        },
        {
          "name": "Delete Comment",
          "value": "deleteComment",
          "action": "Delete a comment",
          "description": "Deletes a comment"
        },
        {
          "name": "Edit Comment",
          "value": "editComment",
          "action": "Edit a comment",
          "description": "Edits an existing comment"
        },
        {
          "name": "Get Comment",
          "value": "getComment",
          "action": "Get a comment",
          "description": "Gets a specific comment"
        },
        {
          "name": "List Comments in Box",
          "value": "listCommentsInBox",
          "action": "List comments in a box",
          "description": "Lists all comments in a box"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "comment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listMeetingsInBox",
      "options": [
        {
          "name": "Create Meeting",
          "value": "createMeeting",
          "action": "Create a meeting",
          "description": "Creates a new meeting or call log for a box"
        },
        {
          "name": "Delete Meeting",
          "value": "deleteMeeting",
          "action": "Delete a meeting",
          "description": "Deletes a meeting"
        },
        {
          "name": "Edit Meeting",
          "value": "editMeeting",
          "action": "Edit a meeting",
          "description": "Edits an existing meeting"
        },
        {
          "name": "Get Meeting",
          "value": "getMeeting",
          "action": "Get a meeting",
          "description": "Gets a single meeting by key"
        },
        {
          "name": "List Meetings in Box",
          "value": "listMeetingsInBox",
          "action": "List meetings in a box",
          "description": "Lists all meetings for a box"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "meeting"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listThreadsInBox",
      "options": [
        {
          "name": "Add Thread to Box",
          "value": "addThreadToBox",
          "action": "Add a thread to a box",
          "description": "Adds an email thread to a box"
        },
        {
          "name": "Get Thread",
          "value": "getThread",
          "action": "Get a thread",
          "description": "Gets a specific email thread"
        },
        {
          "name": "Get Thread by Gmail ID",
          "value": "getThreadByGmailId",
          "action": "Get a thread by gmail id",
          "description": "Gets thread info by Gmail thread ID"
        },
        {
          "name": "List Threads in Box",
          "value": "listThreadsInBox",
          "action": "List threads in a box",
          "description": "Lists all email threads in a box"
        },
        {
          "name": "Remove Thread",
          "value": "removeThread",
          "action": "Remove a thread",
          "description": "Removes an email thread from a box"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "thread"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listFilesInBox",
      "options": [
        {
          "name": "Add File to Box",
          "value": "addFileToBox",
          "action": "Add a file to a box",
          "description": "Adds a Google Drive file to a box"
        },
        {
          "name": "Get File Contents",
          "value": "getFileContents",
          "action": "Get file contents",
          "description": "Gets the contents of a file (only works for GMAIL_API file types)"
        },
        {
          "name": "Get File Metadata",
          "value": "getFile",
          "action": "Get file metadata",
          "description": "Gets metadata for a specific file"
        },
        {
          "name": "List Files in Box",
          "value": "listFilesInBox",
          "action": "List files in a box",
          "description": "Lists all files associated with a box"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllNewsfeed",
      "options": [
        {
          "name": "Get All Newsfeed",
          "value": "getAllNewsfeed",
          "action": "Get all newsfeed",
          "description": "Gets activity across all pipelines"
        },
        {
          "name": "Get Box Newsfeed",
          "value": "getBoxNewsfeed",
          "action": "Get box newsfeed",
          "description": "Gets activity history for a specific box"
        },
        {
          "name": "Get Pipeline Newsfeed",
          "value": "getPipelineNewsfeed",
          "action": "Get pipeline newsfeed",
          "description": "Gets activity history for a pipeline and its boxes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "newsfeed"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listSnippets",
      "options": [
        {
          "name": "Create Snippet",
          "value": "createSnippet",
          "action": "Create a snippet",
          "description": "Creates a new snippet"
        },
        {
          "name": "Delete Snippet",
          "value": "deleteSnippet",
          "action": "Delete a snippet",
          "description": "Deletes a snippet"
        },
        {
          "name": "Edit Snippet",
          "value": "editSnippet",
          "action": "Edit a snippet",
          "description": "Edits an existing snippet"
        },
        {
          "name": "Get Snippet",
          "value": "getSnippet",
          "action": "Get a snippet",
          "description": "Gets a specific snippet"
        },
        {
          "name": "List Snippets",
          "value": "listSnippets",
          "action": "List snippets",
          "description": "Lists all snippets for the current user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "snippet"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchByQuery",
      "options": [
        {
          "name": "Search by Name",
          "value": "searchByName",
          "action": "Search boxes by name",
          "description": "Search for boxes by exact name match"
        },
        {
          "name": "Search by Query",
          "value": "searchByQuery",
          "action": "Search streak data",
          "description": "Search across boxes, contacts, and organizations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listWebhooks",
      "options": [
        {
          "name": "Create Webhook",
          "value": "createWebhook",
          "action": "Create a webhook",
          "description": "Creates a new webhook"
        },
        {
          "name": "Delete Webhook",
          "value": "deleteWebhook",
          "action": "Delete a webhook",
          "description": "Deletes a webhook"
        },
        {
          "name": "Get Webhook",
          "value": "getWebhook",
          "action": "Get a webhook",
          "description": "Gets a specific webhook"
        },
        {
          "name": "List Webhooks",
          "value": "listWebhooks",
          "action": "List webhooks",
          "description": "Lists all webhooks for a pipeline or team"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Current User",
      "value": "getCurrentUser",
      "action": "Get current user",
      "description": "Get information about the current user",
      "resource": "user"
    },
    {
      "name": "Get User",
      "value": "getUser",
      "action": "Get a user",
      "description": "Get information about a specific user by their key",
      "resource": "user"
    },
    {
      "name": "Get My Teams",
      "value": "getMyTeams",
      "action": "Get my teams",
      "description": "List all teams the authenticated user belongs to",
      "resource": "team"
    },
    {
      "name": "Get Team",
      "value": "getTeam",
      "action": "Get a team",
      "description": "Get information about a specific team",
      "resource": "team"
    },
    {
      "name": "Create Pipeline",
      "value": "createPipeline",
      "action": "Create a pipeline",
      "description": "Creates a new pipeline",
      "resource": "pipeline"
    },
    {
      "name": "Delete Pipeline",
      "value": "deletePipeline",
      "action": "Delete a pipeline",
      "description": "Deletes a pipeline",
      "resource": "pipeline"
    },
    {
      "name": "Get Pipeline",
      "value": "getPipeline",
      "action": "Get a pipeline",
      "description": "Gets a specific pipeline by its key",
      "resource": "pipeline"
    },
    {
      "name": "List All Pipelines",
      "value": "listAllPipelines",
      "action": "List all pipelines",
      "description": "Lists all pipelines the user has access to",
      "resource": "pipeline"
    },
    {
      "name": "Move Boxes (Batch)",
      "value": "moveBoxesBatch",
      "action": "Move boxes between pipelines",
      "description": "Moves multiple boxes to a different pipeline",
      "resource": "pipeline"
    },
    {
      "name": "Update Pipeline",
      "value": "updatePipeline",
      "action": "Update a pipeline",
      "description": "Updates an existing pipeline",
      "resource": "pipeline"
    },
    {
      "name": "Create Box in a Pipeline",
      "value": "createBox",
      "action": "Create a box in a pipeline",
      "description": "Creates a new box in a pipeline",
      "resource": "box"
    },
    {
      "name": "Delete Box",
      "value": "deleteBox",
      "action": "Delete a box",
      "description": "Deletes a box",
      "resource": "box"
    },
    {
      "name": "Get Box",
      "value": "getBox",
      "action": "Get a box",
      "description": "Gets a specific box by its key",
      "resource": "box"
    },
    {
      "name": "Get Multiple Boxes",
      "value": "getMultipleBoxes",
      "action": "Get multiple boxes",
      "description": "Gets multiple boxes by their keys",
      "resource": "box"
    },
    {
      "name": "Get Timeline",
      "value": "getTimeline",
      "action": "Get timeline",
      "description": "Gets the timeline of events for a box",
      "resource": "box"
    },
    {
      "name": "List Boxes in Pipeline",
      "value": "listBoxes",
      "action": "Get all boxes in a pipeline",
      "description": "Get all boxes (deals) in a pipeline",
      "resource": "box"
    },
    {
      "name": "Update Box",
      "value": "updateBox",
      "action": "Update a box",
      "description": "Updates an existing box",
      "resource": "box"
    },
    {
      "name": "Create Stage in a Pipeline",
      "value": "createStage",
      "action": "Create a stage in a pipeline",
      "description": "Creates a new stage in a pipeline",
      "resource": "stage"
    },
    {
      "name": "Delete Stage",
      "value": "deleteStage",
      "action": "Delete a stage",
      "description": "Deletes a stage",
      "resource": "stage"
    },
    {
      "name": "Get Stage",
      "value": "getStage",
      "action": "Get a stage",
      "description": "Gets a specific stage by its key",
      "resource": "stage"
    },
    {
      "name": "List Stages in a Pipeline",
      "value": "listStages",
      "action": "List stages in a pipeline",
      "description": "Lists all stages in a pipeline",
      "resource": "stage"
    },
    {
      "name": "Update Stage",
      "value": "updateStage",
      "action": "Update a stage",
      "description": "Updates an existing stage",
      "resource": "stage"
    },
    {
      "name": "Create Field in a Pipeline",
      "value": "createField",
      "action": "Create a field in a pipeline",
      "description": "Creates a new field in a pipeline",
      "resource": "field"
    },
    {
      "name": "Delete Field",
      "value": "deleteField",
      "action": "Delete a field",
      "description": "Deletes a field",
      "resource": "field"
    },
    {
      "name": "Get Field",
      "value": "getField",
      "action": "Get a field",
      "description": "Gets a specific field by its key",
      "resource": "field"
    },
    {
      "name": "Get Field Value in a Box",
      "value": "getFieldValue",
      "action": "Get a field value in a box",
      "description": "Gets a specific field value for a box",
      "resource": "field"
    },
    {
      "name": "List Field Values in a Box",
      "value": "listFieldValues",
      "action": "List field values in a box",
      "description": "Lists all field values for a box",
      "resource": "field"
    },
    {
      "name": "List Fields in a Pipeline",
      "value": "listFields",
      "action": "List fields in a pipeline",
      "description": "Lists all fields in a pipeline",
      "resource": "field"
    },
    {
      "name": "Update Field",
      "value": "updateField",
      "action": "Update a field",
      "description": "Updates an existing field",
      "resource": "field"
    },
    {
      "name": "Update Field Value in a Box",
      "value": "updateFieldValue",
      "action": "Update a field value in a box",
      "description": "Updates a field value for a box",
      "resource": "field"
    },
    {
      "name": "Get Contact",
      "value": "getContact",
      "action": "Get a contact",
      "description": "Gets a specific contact",
      "resource": "contact"
    },
    {
      "name": "Create Contact",
      "value": "createContact",
      "action": "Create a contact",
      "description": "Creates a new contact",
      "resource": "contact"
    },
    {
      "name": "Update Contact",
      "value": "updateContact",
      "action": "Update a contact",
      "description": "Updates an existing contact",
      "resource": "contact"
    },
    {
      "name": "Delete Contact",
      "value": "deleteContact",
      "action": "Delete a contact",
      "description": "Deletes a contact",
      "resource": "contact"
    },
    {
      "name": "Check Existing Organizations",
      "value": "checkExistingOrganizations",
      "action": "Check existing organizations",
      "description": "Checks for existing organizations by name or domain",
      "resource": "organization"
    },
    {
      "name": "Create Organization",
      "value": "createOrganization",
      "action": "Create an organization",
      "description": "Creates a new organization",
      "resource": "organization"
    },
    {
      "name": "Delete Organization",
      "value": "deleteOrganization",
      "action": "Delete an organization",
      "description": "Deletes an organization",
      "resource": "organization"
    },
    {
      "name": "Get Organization",
      "value": "getOrganization",
      "action": "Get an organization",
      "description": "Gets a specific organization",
      "resource": "organization"
    },
    {
      "name": "Update Organization",
      "value": "updateOrganization",
      "action": "Update an organization",
      "description": "Updates an existing organization",
      "resource": "organization"
    },
    {
      "name": "Create Task in a Box",
      "value": "createTask",
      "action": "Create a task in a box",
      "description": "Creates a new task for a box",
      "resource": "task"
    },
    {
      "name": "Delete Task",
      "value": "deleteTask",
      "action": "Delete a task",
      "description": "Deletes a task",
      "resource": "task"
    },
    {
      "name": "Get Task",
      "value": "getTask",
      "action": "Get a task",
      "description": "Gets a specific task",
      "resource": "task"
    },
    {
      "name": "Get Tasks in a Box",
      "value": "getTasksInBox",
      "action": "Get tasks in a box",
      "description": "Gets all tasks associated with a box",
      "resource": "task"
    },
    {
      "name": "Update Task",
      "value": "updateTask",
      "action": "Update a task",
      "description": "Updates an existing task",
      "resource": "task"
    },
    {
      "name": "Create Comment",
      "value": "createComment",
      "action": "Create a comment",
      "description": "Creates a new comment on a box",
      "resource": "comment"
    },
    {
      "name": "Delete Comment",
      "value": "deleteComment",
      "action": "Delete a comment",
      "description": "Deletes a comment",
      "resource": "comment"
    },
    {
      "name": "Edit Comment",
      "value": "editComment",
      "action": "Edit a comment",
      "description": "Edits an existing comment",
      "resource": "comment"
    },
    {
      "name": "Get Comment",
      "value": "getComment",
      "action": "Get a comment",
      "description": "Gets a specific comment",
      "resource": "comment"
    },
    {
      "name": "List Comments in Box",
      "value": "listCommentsInBox",
      "action": "List comments in a box",
      "description": "Lists all comments in a box",
      "resource": "comment"
    },
    {
      "name": "Create Meeting",
      "value": "createMeeting",
      "action": "Create a meeting",
      "description": "Creates a new meeting or call log for a box",
      "resource": "meeting"
    },
    {
      "name": "Delete Meeting",
      "value": "deleteMeeting",
      "action": "Delete a meeting",
      "description": "Deletes a meeting",
      "resource": "meeting"
    },
    {
      "name": "Edit Meeting",
      "value": "editMeeting",
      "action": "Edit a meeting",
      "description": "Edits an existing meeting",
      "resource": "meeting"
    },
    {
      "name": "Get Meeting",
      "value": "getMeeting",
      "action": "Get a meeting",
      "description": "Gets a single meeting by key",
      "resource": "meeting"
    },
    {
      "name": "List Meetings in Box",
      "value": "listMeetingsInBox",
      "action": "List meetings in a box",
      "description": "Lists all meetings for a box",
      "resource": "meeting"
    },
    {
      "name": "Add Thread to Box",
      "value": "addThreadToBox",
      "action": "Add a thread to a box",
      "description": "Adds an email thread to a box",
      "resource": "thread"
    },
    {
      "name": "Get Thread",
      "value": "getThread",
      "action": "Get a thread",
      "description": "Gets a specific email thread",
      "resource": "thread"
    },
    {
      "name": "Get Thread by Gmail ID",
      "value": "getThreadByGmailId",
      "action": "Get a thread by gmail id",
      "description": "Gets thread info by Gmail thread ID",
      "resource": "thread"
    },
    {
      "name": "List Threads in Box",
      "value": "listThreadsInBox",
      "action": "List threads in a box",
      "description": "Lists all email threads in a box",
      "resource": "thread"
    },
    {
      "name": "Remove Thread",
      "value": "removeThread",
      "action": "Remove a thread",
      "description": "Removes an email thread from a box",
      "resource": "thread"
    },
    {
      "name": "Add File to Box",
      "value": "addFileToBox",
      "action": "Add a file to a box",
      "description": "Adds a Google Drive file to a box",
      "resource": "file"
    },
    {
      "name": "Get File Contents",
      "value": "getFileContents",
      "action": "Get file contents",
      "description": "Gets the contents of a file (only works for GMAIL_API file types)",
      "resource": "file"
    },
    {
      "name": "Get File Metadata",
      "value": "getFile",
      "action": "Get file metadata",
      "description": "Gets metadata for a specific file",
      "resource": "file"
    },
    {
      "name": "List Files in Box",
      "value": "listFilesInBox",
      "action": "List files in a box",
      "description": "Lists all files associated with a box",
      "resource": "file"
    },
    {
      "name": "Get All Newsfeed",
      "value": "getAllNewsfeed",
      "action": "Get all newsfeed",
      "description": "Gets activity across all pipelines",
      "resource": "newsfeed"
    },
    {
      "name": "Get Box Newsfeed",
      "value": "getBoxNewsfeed",
      "action": "Get box newsfeed",
      "description": "Gets activity history for a specific box",
      "resource": "newsfeed"
    },
    {
      "name": "Get Pipeline Newsfeed",
      "value": "getPipelineNewsfeed",
      "action": "Get pipeline newsfeed",
      "description": "Gets activity history for a pipeline and its boxes",
      "resource": "newsfeed"
    },
    {
      "name": "Create Snippet",
      "value": "createSnippet",
      "action": "Create a snippet",
      "description": "Creates a new snippet",
      "resource": "snippet"
    },
    {
      "name": "Delete Snippet",
      "value": "deleteSnippet",
      "action": "Delete a snippet",
      "description": "Deletes a snippet",
      "resource": "snippet"
    },
    {
      "name": "Edit Snippet",
      "value": "editSnippet",
      "action": "Edit a snippet",
      "description": "Edits an existing snippet",
      "resource": "snippet"
    },
    {
      "name": "Get Snippet",
      "value": "getSnippet",
      "action": "Get a snippet",
      "description": "Gets a specific snippet",
      "resource": "snippet"
    },
    {
      "name": "List Snippets",
      "value": "listSnippets",
      "action": "List snippets",
      "description": "Lists all snippets for the current user",
      "resource": "snippet"
    },
    {
      "name": "Search by Name",
      "value": "searchByName",
      "action": "Search boxes by name",
      "description": "Search for boxes by exact name match",
      "resource": "search"
    },
    {
      "name": "Search by Query",
      "value": "searchByQuery",
      "action": "Search streak data",
      "description": "Search across boxes, contacts, and organizations",
      "resource": "search"
    },
    {
      "name": "Create Webhook",
      "value": "createWebhook",
      "action": "Create a webhook",
      "description": "Creates a new webhook",
      "resource": "webhook"
    },
    {
      "name": "Delete Webhook",
      "value": "deleteWebhook",
      "action": "Delete a webhook",
      "description": "Deletes a webhook",
      "resource": "webhook"
    },
    {
      "name": "Get Webhook",
      "value": "getWebhook",
      "action": "Get a webhook",
      "description": "Gets a specific webhook",
      "resource": "webhook"
    },
    {
      "name": "List Webhooks",
      "value": "listWebhooks",
      "action": "List webhooks",
      "description": "Lists all webhooks for a pipeline or team",
      "resource": "webhook"
    }
  ]

npm_readme:
  # n8n-nodes-streak-crm

  This is an n8n community node that lets you use [Streak CRM](https://streak.com) in your n8n workflows.

  Streak CRM is a powerful customer relationship management (CRM) tool integrated directly into Gmail that helps teams track leads, manage sales pipelines, and streamline customer communications.

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

  [Installation](#installation)
  [Operations](#operations)
  [Trigger Events](#trigger-events)
  [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.

  ```bash
  npm install n8n-nodes-streak-crm
  ```

  Or if you use n8n Desktop, you can go to **Settings > Community nodes > Install** and provide the package name `n8n-nodes-streak-crm`.

  ## Operations

  This node supports a comprehensive set of operations across various Streak CRM resources.

  ### Architecture Improvements

  The node now features a dedicated `StreakApiService` class that centralizes all API interactions, providing:

  - Consistent error handling across all operations
  - Strong TypeScript typing for better code reliability
  - Improved performance with optimized request handling
  - Better developer experience for future enhancements

  ### User Operations
  - **Get Current User** - Retrieve the details of the current authenticated user
  - **Get User** - Retrieve details of a specific user by key

  ### Team Operations
  - **Get My Teams** - Retrieve all teams the current user belongs to
  - **Get Team** - Retrieve details of a specific team by key

  ### Pipeline Operations
  - **List All Pipelines** - Get all available pipelines
  - **Get Pipeline** - Retrieve a specific pipeline by key
  - **Create Pipeline** - Create a new pipeline with customizable properties
  - **Update Pipeline** - Update properties of an existing pipeline
  - **Delete Pipeline** - Remove a pipeline
  - **Move Boxes Between Pipelines** - Move multiple boxes (deals) between pipelines in batch

  ### Box Operations
  - **List Boxes in Pipeline** - Get all boxes (deals) in a specific pipeline
  - **Get Box** - Retrieve a specific box by key
  - **Get Multiple Boxes** - Retrieve multiple boxes at once
  - **Create Box** - Create a new box in a pipeline
  - **Update Box** - Update properties of an existing box
  - **Delete Box** - Remove a box
  - **Get Box Timeline** - Retrieve the timeline of events for a box

  ### Stage Operations
  - **List Stages** - Get all stages in a pipeline
  - **Get Stage** - Retrieve a specific stage by key
  - **Create Stage** - Create a new stage in a pipeline
  - **Update Stage** - Update properties of an existing stage
  - **Delete Stage** - Remove a stage from a pipeline

  ### Field Operations
  - **List Fields** - Get all fields in a pipeline
  - **Get Field** - Retrieve a specific field by key
  - **Create Field** - Create a new field in a pipeline
  - **Update Field** - Update properties of an existing field
  - **Delete Field** - Remove a field from a pipeline
  - **List Field Values** - Get all field values for a box
  - **Get Field Value** - Retrieve a specific field value
  - **Update Field Value** - Update a field value for a box

  ### Contact Operations
  - **Get Contact** - Retrieve a specific contact by key
  - **Create Contact** - Create a new contact
  - **Update Contact** - Update properties of an existing contact
  - **Delete Contact** - Remove a contact

  ### Organization Operations
  - **Get Organization** - Retrieve a specific organization by key
  - **Create Organization** - Create a new organization
  - **Check Existing Organizations** - Search for existing organizations by name or domain
  - **Update Organization** - Update properties of an existing organization
  - **Delete Organization** - Remove an organization

  ### Task Operations
  - **Get Task** - Retrieve a specific task by key
  - **Get Tasks in Box** - Get all tasks associated with a box
  - **Create Task** - Create a new task for a box
  - **Update Task** - Update properties of an existing task
  - **Delete Task** - Remove a task

  ### Comment Operations
  - **List Comments** - Get all comments on a box
  - **Get Comment** - Retrieve a specific comment by key
  - **Create Comment** - Add a comment to a box
  - **Delete Comment** - Remove a comment

  ### Meeting Operations
  - **List Meetings** - Get all meetings for a box
  - **Get Meeting** - Retrieve a specific meeting by key
  - **Create Meeting** - Create a new meeting for a box
  - **Update Meeting** - Update properties of an existing meeting
  - **Delete Meeting** - Remove a meeting

  ### Thread Operations
  - **List Threads** - Get all threads for a box
  - **Get Thread** - Retrieve a specific thread by key
  - **Get Thread by Gmail ID** - Retrieve a thread using its Gmail ID
  - **Add Thread to Box** - Link a Gmail thread to a box

  ### File Operations
  - **List Files** - Get all files attached to a box
  - **Get File** - Retrieve a specific file by key
  - **Upload File** - Upload a file to a box
  - **Delete File** - Remove a file

  ### Newsfeed Operations
  - **Get Pipeline Newsfeed** - Get recent activity for a pipeline
  - **Get Box Newsfeed** - Get recent activity for a box
  - **Get All Newsfeed** - Get all recent activity

  ### Snippet Operations
  - **List Snippets** - Get all snippets
  - **Get Snippet** - Retrieve a specific snippet by key
  - **Create Snippet** - Create a new snippet
  - **Delete Snippet** - Remove a snippet

  ### Webhook Operations
  - **List Webhooks** - Get all webhooks for a pipeline or team
  - **Get Webhook** - Retrieve a specific webhook by key
  - **Create Webhook** - Create a new webhook for a pipeline or team event
  - **Delete Webhook** - Remove a webhook

  ### Search Operations
  - **Search by Query** - Search across Streak using a query string
  - **Search by Name** - Search for boxes by name

  ## Trigger Events

  The **Streak Trigger** node starts workflows automatically when events occur in Streak. Webhooks can be scoped to a specific pipeline or team.

  ### Supported Events

  | Event | Description |
  |-------|-------------|
  | Box Create | A new box is created |
  | Box Delete | A box is deleted |
  | Box Edit | A box's fields, notes, assignments, or name change |
  | Box Change Stage | A box moves to a different stage |
  | Box Change Pipeline | A box is transferred to a different pipeline |
  | Box New Email Address | A new email address is detected on a box |
  | Stage Create | A new stage is created |
  | Comment Create | A comment is added to a box |
  | Meeting Create | A meeting is created |
  | Meeting Update | A meeting is updated |
  | Task Create | A task is created |
  | Task Complete | A task is marked complete |
  | Task Due | A task reaches its due date |
  | Task Updated | A task is updated |
  | Contact Create | A contact is created |
  | Contact Update | A contact is updated |
  | Contact Delete | A contact is deleted |
  | Org Create | An organization is created |
  | Org Update | An organization is updated |
  | Org Delete | An organization is deleted |

  ## Credentials

  To use this node, you need an API key from Streak CRM.

  ### How to get your API key:

  1. Log in to your Streak account at [streak.com](https://streak.com)
  2. Go to **Settings** > **API** 
  3. Copy your API key

  In n8n, create a new credential of type **Streak CRM API** and enter your API key.

  ## Compatibility

  This node was developed and tested with n8n version 1.0.0 and uses Streak API v1 and v2.

  ## Usage

  ### Example: Creating a new pipeline and adding a box (deal)

  This is a simple workflow to create a pipeline and then add a box to it:

  1. **Streak CRM node** with operation **Create Pipeline**
     - Set name: `New Sales Pipeline`
     - Optional: Add description, team key, and other properties

  2. **Streak CRM node** with operation **Create Box**
     - Use the pipeline key from the previous node
     - Set name: `Potential Client`
     - Optional: Add stage key and other properties

  ### Example: Triggering a workflow when a box changes stage

  1. Add a **Streak Trigger** node
     - Set scope to **Pipeline** and select your pipeline
     - Set event to **Box Change Stage**
  2. Activate the workflow — it will now run automatically whenever a box moves between stages

  ### Example: Managing contacts and linking them to boxes

  1. **Streak CRM node** with operation **Create Contact**
     - Set email: `client@example.com`
     - Add fields for name, organization, etc.

  2. **Streak CRM node** with operation **Update Box**
     - Use an existing box key
     - Link the contact by updating field values

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Streak API Documentation](https://streak.readme.io/reference/about-the-streak-api)
  * [Streak User Guide](https://streak.com/support/articles)

  ## Version History

  ### 1.2.0
  - Added **Streak Trigger** node with webhook support for 20 event types
  - Webhooks can be scoped to a pipeline or team
  - Automatic webhook registration/cleanup on workflow activate/deactivate
  - Added Comment operations (list, get, create, delete)
  - Added Meeting operations (list, get, create, update, delete)
  - Added Thread operations (list, get, get by Gmail ID, add to box)
  - Added File operations (list, get, upload, delete)
  - Added Newsfeed operations (pipeline, box, all)
  - Added Snippet operations (list, get, create, delete)
  - Added Search operations (by query, by name)

  ### 1.0.3
  - Added a comprehensive StreakApiService class to centralize API interactions
  - Improved pipeline selection with dynamic dropdown loading
  - Fixed Box Keys field handling in Move Boxes operation
  - Enhanced error handling and API request consistency
  - Added TypeScript interfaces for better type safety

  ### 1.0.2
  - Initial release with comprehensive support for Users, Teams, Pipelines, Boxes, Stages, Fields, Contacts, Organizations, and Tasks
  - Support for pagination in list operations
  - Detailed error handling

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of Streak CRM workflows, allowing users to manage pipelines, boxes (deals), contacts, organizations, tasks, and other CRM resources directly within n8n.","capabilities":["Create, read, update, and delete pipelines","Create, read, update, and delete boxes (deals)","Create, read, update, and delete contacts","Create, read, update, and delete organizations","Create, read, update, and delete tasks","Manage stages and fields within pipelines","Move boxes between pipelines in batch","Retrieve box timelines","Search for existing organizations by name or domain","Retrieve current authenticated user details"],"authentication":"API key required","commonUseCases":["Automating lead tracking and sales pipeline management","Syncing CRM data between Streak and other tools via n8n","Automating contact creation and organization management","Batch moving deals between sales stages"],"limitations":["Requires a Streak API key from the user's account","Compatible with Streak API v1 only","Requires manual installation via npm package"],"relatedNodes":["Streak CRM API","Gmail","Generic HTTP Request"]}


