# nodes

node_type: n8n-nodes-orgo.orgo
package_name: n8n-nodes-orgo
display_name: Orgo
description: Interact with Orgo API - Multi-tenant SaaS platform for organizations
category: Community
development_style: declarative
version: 1.1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: orgo-space
author_github_url: https://github.com/orgo-space/
npm_package_name: n8n-nodes-orgo
npm_version: 0.1.10
community_fetched_at: 2026-02-19T14:41:52.690Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "Contact",
          "value": "contact",
          "description": "Manage external contacts and relationships"
        },
        {
          "name": "Contract User",
          "value": "contract",
          "description": "Operations with user contracts and signatures"
        },
        {
          "name": "Event",
          "value": "event",
          "description": "Operations with events"
        },
        {
          "name": "Event Registration",
          "value": "eventAttend",
          "description": "Manage event registrations and attendance"
        },
        {
          "name": "Payment",
          "value": "productPayment",
          "description": "Operations with payments and fees"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Operations with users (members)"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Get a user by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many users",
          "description": "Get multiple users"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a user",
          "description": "Create a new user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create contact",
          "description": "Create a new contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete contact",
          "description": "Delete a contact"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get contact",
          "description": "Get a contact by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many contacts",
          "description": "Get multiple contacts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update contact",
          "description": "Update a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an event",
          "description": "Get an event by UUID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many events",
          "description": "Get multiple events"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "event"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Register for event",
          "description": "Register for an event"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Cancel event registration",
          "description": "Cancel event registration"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get event registration",
          "description": "Get an event registration by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many event registrations",
          "description": "Get event registrations for a specific event"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update event registration",
          "description": "Update event registration/attendance status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "eventAttend"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contract user",
          "description": "Get a contract user by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many contract users",
          "description": "Get multiple contract users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a payment",
          "description": "Get a payment by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many payments",
          "description": "Get multiple payments"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "productPayment"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "description": "Get a user by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many users",
      "description": "Get multiple users"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a user",
      "description": "Create a new user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create contact",
      "description": "Create a new contact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete contact",
      "description": "Delete a contact"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get contact",
      "description": "Get a contact by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many contacts",
      "description": "Get multiple contacts"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update contact",
      "description": "Update a contact"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an event",
      "description": "Get an event by UUID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many events",
      "description": "Get multiple events"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Register for event",
      "description": "Register for an event"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Cancel event registration",
      "description": "Cancel event registration"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get event registration",
      "description": "Get an event registration by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many event registrations",
      "description": "Get event registrations for a specific event"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update event registration",
      "description": "Update event registration/attendance status"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contract user",
      "description": "Get a contract user by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many contract users",
      "description": "Get multiple contract users"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a payment",
      "description": "Get a payment by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many payments",
      "description": "Get multiple payments"
    }
  ]

npm_readme:
  # n8n-nodes-orgo

  This is an n8n community node that provides comprehensive integration with Orgo, a multi-tenant SaaS platform for organizations specializing in membership management, event coordination, and community engagement.

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

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

  ## Installation

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

  ### Option 1: Community Nodes (Recommended)
  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Select **Install** and enter `n8n-nodes-orgo`
  3. Click **Install**

  ### Option 2: Manual Installation
  ```bash
  npm install n8n-nodes-orgo
  ```

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

  ## Operations

  This package provides two powerful nodes for comprehensive Orgo integration:

  ### Orgo Node
  The main node for interacting with the Orgo API, supporting full CRUD operations across all resources.

  **Available Resources:**

  #### **User Management**
  - **Get User**: Retrieve user details by ID
  - **Get Many Users**: List multiple users with pagination
  - **Create User**: Register new users with email, first name, and last name

  #### **Contact Management**
  - **Get Contact**: Retrieve contact details by ID
  - **Get Many Contacts**: List multiple contacts with pagination
  - **Create Contact**: Add new external contacts with name and email
  - **Update Contact**: Modify contact information
  - **Delete Contact**: Remove contacts from the system

  #### **Event Management**  
  - **Get Event**: Retrieve event details by UUID
  - **Get Many Events**: List multiple events with pagination

  #### **Event Registration**
  - **Get Registration**: Retrieve event registration by ID
  - **Get Event Registrations**: List all registrations for a specific event (paginated, 100 per page)
  - **Register for Event**: Create new event registration (requires event UUID and user ID)
  - **Update Registration Status**: Modify attendance status (Registered, Attended, Not Attending, Invited)
  - **Cancel Registration**: Remove event registration

  #### **Contract User Management**
  - **Get Contract User**: Retrieve contract user details by ID
  - **Get Many Contract Users**: List multiple contract users with pagination

  #### **Payment Management**
  - **Get Payment**: Retrieve payment record by ID  
  - **Get Many Payments**: List payment records with pagination

  #### **Webhook Management**
  - **Get Webhook**: Retrieve webhook subscription by ID
  - **Get Many Webhooks**: List webhook subscriptions
  - **Create Webhook**: Set up new webhook subscriptions
  - **Update Webhook**: Modify webhook configuration
  - **Delete Webhook**: Remove webhook subscriptions
  - **Test Webhook**: Send test webhook event

  #### **Custom Endpoints**
  - **Custom Request**: Make requests to any Orgo API endpoint

  ### Orgo Trigger Node
  A trigger node that responds to Orgo webhooks for real-time automation and event-driven workflows.

  **Supported Event Types:**
  - **Contact Events**: `contact.created`, `contact.updated`, `contact.deleted`
  - **Event Registration**: `event_attend.created`, `event_attend.updated`
  - **User Role Events**: `user_role.created`, `user_role.deleted`
  - **User Events**: `user.created`, `user.updated`

  ## Credentials

  To use the Orgo nodes, you need to configure API credentials in n8n:

  ### Required Fields
  1. **API Base URL**: Your Orgo instance API base URL
     - Format: `https://your-domain.com/api/v1`
     - Example: `https://app.orgo.space/api/v1`
     - For local development: `http://localhost:8000/api/v1`

  2. **API Token**: Your personal API token from Orgo
     - Generated from your Orgo account settings
     - Used for authentication with the Orgo API

  ### Optional Fields
  3. **Webhook Secret**: Secret key for webhook signature verification (recommended for security)
  4. **Tenant ID**: Your organization/tenant ID (auto-detected if not provided)

  ### Getting Your API Token

  1. Log into your Orgo account
  2. Navigate to **Organization Settings > API & OAuth -> API
  3. Generate a new API token or copy an existing one
  4. Copy the token and paste it into your n8n Orgo API credentials

  ### Testing Your Credentials

  The credential configuration includes a built-in test that verifies:
  - API connectivity to your Orgo instance
  - Token validity and permissions
  - Proper API base URL configuration

  ## API Documentation

  For detailed API reference, visit: [docs.orgo.space/api-reference](https://docs.orgo.space/api-reference)

  The Orgo API provides comprehensive endpoints for:
  - User and identity management
  - Event and attendance tracking
  - Payment and subscription handling
  - Contract and document management
  - Profile and badge systems
  - Voting and discussion features

  ## Webhook Setup

  The Orgo Trigger node provides automated webhook management:

  ### Automatic Management
  - **Auto-Registration**: Webhooks are automatically created when workflows are activated
  - **Auto-Cleanup**: Webhooks are automatically removed when workflows are deactivated
  - **Event Filtering**: Subscribe only to the events you need
  - **Signature Verification**: Optional webhook signature validation for security

  ### Webhook Payload Structure

  Orgo webhooks deliver standardized payloads:

  ```json
  {
    "id": "wh_evt_123456789abcd",
    "event": "user.created",
    "api_version": "2024-01",
    "created": 1705320600,
    "data": {
      "object": {
        "id": 123,
        "email": "user@example.com",
        "firstName": "John",
        "lastName": "Doe"
      },
      "previous_attributes": {
        "email": {
          "old": "old@example.com",
          "new": "user@example.com"
        }
      }
    },
    "tenant_id": 1,
    "request": {
      "id": "req_987654321efgh",
      "idempotency_key": null
    }
  }
  ```

  ### Accessing Webhook Data in n8n

  In your workflow, access webhook data using:
  - `{{$json.object}}` - Main entity data
  - `{{$json.event}}` - Event type (e.g., "user.created")
  - `{{$json.previous_attributes}}` - Changed fields for update events
  - `{{$json.tenant_id}}` - Organization ID
  - `{{$json.created}}` - Event timestamp

  ## Example Workflows

  ### User Registration Automation
  Automatically welcome new users and sync them to external systems:

  ```json
  {
    "name": "New User Onboarding",
    "nodes": [
      {
        "name": "Orgo User Created",
        "type": "n8n-nodes-orgo.orgoTrigger",
        "parameters": {
          "events": ["user.created"],
          "verifySignature": true
        }
      },
      {
        "name": "Send Welcome Email",
        "type": "n8n-nodes-base.emailSend",
        "parameters": {
          "toEmail": "={{$json.object.email}}",
          "subject": "Welcome to {{$json.object.organization}}!",
          "text": "Hello {{$json.object.firstName}}, welcome to our community!"
        }
      },
      {
        "name": "Create CRM Contact",
        "type": "n8n-nodes-base.httpRequest",
        "parameters": {
          "method": "POST",
          "url": "https://your-crm.com/api/contacts",
          "body": {
            "email": "={{$json.object.email}}",
            "first_name": "={{$json.object.firstName}}",
            "last_name": "={{$json.object.lastName}}",
            "source": "orgo_registration"
          }
        }
      }
    ]
  }
  ```

  ### Event Registration Management
  Handle event registrations and send confirmations:

  ```json
  {
    "name": "Event Registration Handler",
    "nodes": [
      {
        "name": "Event Registration",
        "type": "n8n-nodes-orgo.orgoTrigger",
        "parameters": {
          "events": ["event_attend.created"]
        }
      },
      {
        "name": "Get Event Details",
        "type": "n8n-nodes-orgo.orgo",
        "parameters": {
          "resource": "event",
          "operation": "get",
          "id": "={{$json.object.eventId}}"
        }
      },
      {
        "name": "Send Confirmation Email",
        "type": "n8n-nodes-base.emailSend",
        "parameters": {
          "toEmail": "={{$json.object.user.email}}",
          "subject": "Event Registration Confirmed: {{$node['Get Event Details'].json.title}}",
          "html": "Your registration for {{$node['Get Event Details'].json.title}} on {{$node['Get Event Details'].json.date}} has been confirmed!"
        }
      }
    ]
  }
  ```

  ### Payment Processing Workflow
  Automate payment confirmations and notifications:

  ```json
  {
    "name": "Payment Processing",
    "nodes": [
      {
        "name": "Payment Events",
        "type": "n8n-nodes-orgo.orgoTrigger",
        "parameters": {
          "events": ["product_payment.created", "product_payment.updated"]
        }
      },
      {
        "name": "Check Payment Status",
        "type": "n8n-nodes-base.switch",
        "parameters": {
          "dataPropertyName": "object.status",
          "rules": {
            "values": [
              {"value": "completed"},
              {"value": "failed"},
              {"value": "pending"}
            ]
          }
        }
      },
      {
        "name": "Send Receipt (Success)",
        "type": "n8n-nodes-base.emailSend",
        "parameters": {
          "toEmail": "={{$json.object.user.email}}",
          "subject": "Payment Receipt - {{$json.object.amount}} {{$json.object.currency}}",
          "text": "Thank you for your payment of {{$json.object.amount}} {{$json.object.currency}}."
        }
      }
    ]
  }
  ```

  ## Multi-Tenant Architecture

  Orgo's multi-tenant design ensures data isolation and security:

  - **Automatic Tenant Scoping**: All API requests are automatically scoped to your organization
  - **Tenant ID Inclusion**: Webhook events include `tenant_id` for proper filtering
  - **Permission Respect**: User permissions and access levels are automatically enforced
  - **Cross-Tenant Security**: No access to data from other organizations

  ## Error Handling & Reliability

  The nodes include comprehensive error handling:

  ### API Error Handling
  - **Detailed Error Messages**: Clear error descriptions from the Orgo API
  - **HTTP Status Codes**: Proper handling of 4xx and 5xx responses
  - **Validation Errors**: Field-level validation error reporting

  ### Webhook Reliability
  - **Signature Verification**: Prevents unauthorized webhook requests
  - **Payload Validation**: Ensures webhook data integrity
  - **Retry Logic**: Automatic retry for failed webhook deliveries

  ### Network Resilience
  - **Connection Timeouts**: Configurable request timeouts
  - **Rate Limiting**: Automatic handling of API rate limits
  - **Graceful Degradation**: Continues operation during temporary outages

  ## Performance & Best Practices

  ### Pagination
  - Use the `limit` parameter to control response sizes
  - Default limit is 25 items per request
  - Implement pagination for large datasets

  ### Webhook Events
  - Subscribe only to necessary events to reduce noise
  - Use event filtering to improve workflow performance
  - Enable signature verification for security

  ### API Usage
  - Cache frequently accessed data when possible
  - Use batch operations for multiple related requests
  - Monitor API usage to stay within rate limits

  ## Compatibility

  **Tested Compatibility:**
  - n8n version 1.0.0 and above
  - Node.js 18.x and above
  - Orgo API version 2024-01

  **Browser Support:**
  - Works in all modern browsers that support n8n
  - Compatible with n8n Cloud and self-hosted instances

  ## Troubleshooting

  ### Common Issues

  **Authentication Errors**
  - Verify your API token is correct and hasn't expired
  - Ensure the API Base URL doesn't include `/api/v1`
  - Check that your account has the necessary permissions

  **Webhook Not Receiving Events**
  - Verify the webhook URL is accessible from the internet
  - Check that the selected events are being triggered in Orgo
  - Ensure webhook signature verification is properly configured

  **API Request Failures**
  - Confirm the Orgo instance is running and accessible
  - Check network connectivity and firewall settings
  - Verify the API endpoint exists and accepts the request method

  ### Debug Mode
  Enable n8n debug logging to troubleshoot issues:
  ```bash
  N8N_LOG_LEVEL=debug n8n start
  ```
  ## Support

  - **GitHub Issues**: [Report bugs and request features](https://github.com/Orgo-space/n8n-nodes-orgo/issues)
  - **n8n Community**: [Get help from the n8n community](https://community.n8n.io/)
  - **Orgo Documentation**: [docs.orgo.space/api-reference](https://docs.orgo.space/api-reference)

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Orgo Platform](https://app.orgo.space)
  - [Orgo API Documentation](https://docs.orgo.space/api-reference)
  - [n8n Workflow Examples](https://n8n.io/workflows/)

  ## License

  [MIT](LICENSE.md)

  ---

  **Keywords**: n8n, community-node, orgo, webhook, automation, workflow, membership-management, event-management, api-integration

ai_documentation_summary:
  {"purpose":"Provides n8n integration with the Orgo API to manage organizations, members, events, registrations, payments, and webhooks for multi-tenant Orgo instances, and to trigger workflows from Orgo webhook events.","capabilities":["Full CRUD operations across Orgo resources","User management: Get User, Get Many Users (paginated), Create User","Contact management: Get Contact, Get Many Contacts (paginated), Create Contact, Update Contact, Delete Contact","Event management: Get Event, Get Many Events (paginated)","Event registrations: Get Registration, Get Event Registrations (paginated, 100 per page), Register for Event, Update Registration Status, Cancel Registration","Contract user management: Get Contract User, Get Many Contract Users (paginated)","Payment management: Get Payment, Get Many Payments (paginated)","Webhook management: Get Webhook, Get Many Webhooks, Create Webhook, Update Webhook, Delete Webhook, Test Webhook","Custom Request: make arbitrary requests to any Orgo API endpoint","Trigger node: listen to Orgo webhook events (contact.*, event_attend.*, user_role.*, user.*) for real-time automation"],"authentication":"API token required (personal API token) plus API Base URL; optional Webhook Secret for signature verification; Tenant ID is optional and auto-detected if not provided.","commonUseCases":["Automatically create or update contacts and users in Orgo from other systems","Sync membership and contact data between Orgo and CRM/databases","Manage event lifecycle and registrations (create registrations, update attendance status, cancel) from workflows","Trigger workflows on real-time Orgo events (user/contact/registration changes) via the Orgo Trigger node","Set up and manage webhook subscriptions from n8n and test webhook delivery"],"limitations":["Authentication is API token based only — no OAuth2 flow provided","Some list endpoints are paginated; event registrations list returns 100 items per page","Tenant ID is auto-detected but may need to be provided manually in complex multi-tenant scenarios","No explicit built-in rate-limit handling or bulk/batch operation helpers documented in the README"],"relatedNodes":["Orgo (main node for CRUD and custom requests)","Orgo Trigger (webhook trigger node)"]}


node_type: n8n-nodes-1shot.oneShot
package_name: n8n-nodes-1shot
display_name: 1Shot API
description: Interact with EVM blockchains via 1Shot API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: csibbach
author_github_url: https://github.com/UXlySoftware/
npm_package_name: n8n-nodes-1shot
npm_version: 1.0.35
community_fetched_at: 2026-02-19T14:41:52.690Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contractMethods",
      "options": [
        {
          "name": "X402 Request",
          "value": "x402Request"
        },
        {
          "name": "Chain",
          "value": "chains"
        },
        {
          "name": "Contract Event",
          "value": "contractEvents"
        },
        {
          "name": "Contract Method",
          "value": "contractMethods"
        },
        {
          "name": "Prompt",
          "value": "prompts"
        },
        {
          "name": "Transaction",
          "value": "transactions"
        },
        {
          "name": "Wallet",
          "value": "wallets"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Chains",
          "value": "list",
          "action": "List chains",
          "description": "List chains supported by 1Shot API"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chains"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contract event",
          "description": "Create a new contract event definition"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contract event",
          "description": "Delete a contract event definition"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contract event",
          "description": "Get a single contract event definition"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all contract events",
          "description": "List all contract event definitions"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search contract event logs",
          "description": "Search for contract event logs on the blockchain"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contract event",
          "description": "Update an existing contract event definition"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contractEvents"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Assure Contract Methods From Prompt",
          "value": "assureContractMethodsFromPrompt",
          "action": "Assure contract methods from prompt",
          "description": "This will make sure you have a set of Contract Methods ready to use based on your chosen Prompt"
        },
        {
          "name": "Encode",
          "value": "encode",
          "action": "Encode a smart contract method call",
          "description": "Encode a contract method call. This produces the calldata for the contract method, which is sometimes required for other contract methods."
        },
        {
          "name": "Estimate",
          "value": "estimate",
          "action": "Estimate the gas cost of a smart contract method",
          "description": "Get an estimate of the gas cost of a contract method"
        },
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute a smart contract method",
          "description": "Execute a smart contract method on the blockchain"
        },
        {
          "name": "Execute as Delegator",
          "value": "executeAsDelegator",
          "action": "Execute a smart contract method as delegator",
          "description": "Execute a smart contract method on the blockchain using a stored ERC-7710 delegation"
        },
        {
          "name": "Execute Batch",
          "value": "executeBatch",
          "action": "Execute multiple smart contract methods",
          "description": "Execute multiple smart contract methods in a single transaction"
        },
        {
          "name": "Execute Batch as Delegator",
          "value": "executeAsDelegatorBatch",
          "action": "Execute multiple smart contract methods as delegator",
          "description": "Execute multiple smart contract methods as a delegator in a single transaction"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a smart contract method",
          "description": "Get a single smart contract method"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all smart contract methods",
          "description": "List all smart contract methods"
        },
        {
          "name": "Read",
          "value": "read",
          "action": "Read data from a smart contract function",
          "description": "Read data from a smart contract view or pure function"
        },
        {
          "name": "Simulate",
          "value": "simulate",
          "action": "Simulate a smart contract method call",
          "description": "Simulate a smart contract method call and see if it would succeed with the current state of the chain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contractMethods"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create Wallet",
          "value": "create",
          "action": "Create wallet",
          "description": "Creates a new Wallet. It will be empty until you add funds to it."
        },
        {
          "name": "Delete Wallet",
          "value": "delete",
          "action": "Delete wallet",
          "description": "Deletes a Wallet"
        },
        {
          "name": "Get Wallet",
          "value": "get",
          "action": "Get wallet",
          "description": "Get a specific Wallet"
        },
        {
          "name": "List Wallets",
          "value": "list",
          "action": "List wallets",
          "description": "List Wallets for a given chain"
        },
        {
          "name": "Update Wallet",
          "value": "update",
          "action": "Update wallet",
          "description": "Update a Wallet"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "wallets"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search Prompts",
          "value": "search",
          "action": "Search prompts",
          "description": "Search for prompts with semantic search"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "prompts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Transactions",
          "value": "list",
          "action": "List transactions",
          "description": "List 1Shot API transactions with optional filters"
        },
        {
          "name": "Get Transaction",
          "value": "get",
          "action": "Get transaction",
          "description": "Get a specific Transaction"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transactions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "x402",
      "options": [
        {
          "name": "X402 HTTP Request",
          "value": "x402",
          "action": "X402 HTTP Request",
          "description": "Make an HTTP request to an x402-enabled API endpoint. Any fee will be paid using a 1Shot Wallet."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "x402Request"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List Chains",
      "value": "list",
      "action": "List chains",
      "description": "List chains supported by 1Shot API"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contract event",
      "description": "Create a new contract event definition"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contract event",
      "description": "Delete a contract event definition"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contract event",
      "description": "Get a single contract event definition"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all contract events",
      "description": "List all contract event definitions"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search contract event logs",
      "description": "Search for contract event logs on the blockchain"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contract event",
      "description": "Update an existing contract event definition"
    },
    {
      "name": "Assure Contract Methods From Prompt",
      "value": "assureContractMethodsFromPrompt",
      "action": "Assure contract methods from prompt",
      "description": "This will make sure you have a set of Contract Methods ready to use based on your chosen Prompt"
    },
    {
      "name": "Encode",
      "value": "encode",
      "action": "Encode a smart contract method call",
      "description": "Encode a contract method call. This produces the calldata for the contract method, which is sometimes required for other contract methods."
    },
    {
      "name": "Estimate",
      "value": "estimate",
      "action": "Estimate the gas cost of a smart contract method",
      "description": "Get an estimate of the gas cost of a contract method"
    },
    {
      "name": "Execute",
      "value": "execute",
      "action": "Execute a smart contract method",
      "description": "Execute a smart contract method on the blockchain"
    },
    {
      "name": "Execute as Delegator",
      "value": "executeAsDelegator",
      "action": "Execute a smart contract method as delegator",
      "description": "Execute a smart contract method on the blockchain using a stored ERC-7710 delegation"
    },
    {
      "name": "Execute Batch",
      "value": "executeBatch",
      "action": "Execute multiple smart contract methods",
      "description": "Execute multiple smart contract methods in a single transaction"
    },
    {
      "name": "Execute Batch as Delegator",
      "value": "executeAsDelegatorBatch",
      "action": "Execute multiple smart contract methods as delegator",
      "description": "Execute multiple smart contract methods as a delegator in a single transaction"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a smart contract method",
      "description": "Get a single smart contract method"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all smart contract methods",
      "description": "List all smart contract methods"
    },
    {
      "name": "Read",
      "value": "read",
      "action": "Read data from a smart contract function",
      "description": "Read data from a smart contract view or pure function"
    },
    {
      "name": "Simulate",
      "value": "simulate",
      "action": "Simulate a smart contract method call",
      "description": "Simulate a smart contract method call and see if it would succeed with the current state of the chain"
    },
    {
      "name": "Create Wallet",
      "value": "create",
      "action": "Create wallet",
      "description": "Creates a new Wallet. It will be empty until you add funds to it."
    },
    {
      "name": "Delete Wallet",
      "value": "delete",
      "action": "Delete wallet",
      "description": "Deletes a Wallet"
    },
    {
      "name": "Get Wallet",
      "value": "get",
      "action": "Get wallet",
      "description": "Get a specific Wallet"
    },
    {
      "name": "List Wallets",
      "value": "list",
      "action": "List wallets",
      "description": "List Wallets for a given chain"
    },
    {
      "name": "Update Wallet",
      "value": "update",
      "action": "Update wallet",
      "description": "Update a Wallet"
    },
    {
      "name": "Search Prompts",
      "value": "search",
      "action": "Search prompts",
      "description": "Search for prompts with semantic search"
    },
    {
      "name": "List Transactions",
      "value": "list",
      "action": "List transactions",
      "description": "List 1Shot API transactions with optional filters"
    },
    {
      "name": "Get Transaction",
      "value": "get",
      "action": "Get transaction",
      "description": "Get a specific Transaction"
    },
    {
      "name": "X402 HTTP Request",
      "value": "x402",
      "action": "X402 HTTP Request",
      "description": "Make an HTTP request to an x402-enabled API endpoint. Any fee will be paid using a 1Shot Wallet."
    }
  ]

npm_readme:
  [![Watch the tutorial](https://img.youtube.com/vi/WLkwqC4B2r4/maxresdefault.jpg)](https://youtu.be/WLkwqC4B2r4)

  # n8n-nodes-1shot

  The [1Shot API](https://1shotapi.com) n8n node lets you read and write to any EVM blockchain from your n8n workflows. 1Shot API is a powerful managed wallet and transaction service for the EVM ecosystem; it ensures transactions are confirmed (handling retries and gas optimization) and sends webhook callbacks when they are finalized, making it perfect for use in any AI workflow platform. 

  It also allows smart contract functions to be used like tools by agents; 1Shot Prompts provides a contract library with detailed prompts at the contract, function, input and output level so that agents and LLMs can better reason about how to use smart contracts to fullfil a user task. Additionally, 1Shot Prompts lets humans and agents search for smart contracts semantically, so you don't have manually find your target smart contract by parsing through blockscanners. 

  [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

  <p align="center">
    <img src="/static/install.gif" alt="Install the 1Shot API node">
  </p>

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

  To install the 1Shot API node, go to your user settings and select *Community nodes* in the left-hand navigation bar. Search for `n8n-nodes-1shot`. Click install.

  ## Operations

  The 1Shot API node supports the following operations:
  - manage your 1Shot API wallets
  - semantically search for smart contracts on specific networks and import them to your account as tools
  - read data from and execute transaction on smart contract functions

  ## Credentials

  <p align="center">
    <img src="/static/credentials.gif" alt="Authenticating your 1Shot API node">
  </p>

  You must authenticate your 1Shot API node against your business account in 1Shot API. Create a free account then create a new [API key and secret](https://app.1shotapi.com/api-keys). Then grab your business id from the [business' details](https://app.1shotapi.com/organizations) page. 

  Enter these three quantities into the 1Shot node to connect n8n. 

  ## Compatibility

  The n8n 1Shot API community node is compatible with n8n version 1.95.3 or later. 

  ## Usage

  Check out our [documentation](https://docs.1shotapi.com/automation/n8n.html) for more information and examples of how you can use 1Shot API to automate onchain tasks with n8n.

  ### x402 Workflow 

  <p align="center">
    <img src="/static/n8n-x402.gif" alt="x402 workflow">
  </p>

  Try out the [x402 workflow](https://n8n.io/workflows/5389-monetize-workflows-with-x402-payment-protocol-and-1shot-api/) to see how 1Shot API can simulate and execute onchain transactions. Import the json file directly into an n8n workflow, then authenticate the 1Shot API nodes against your 1Shot API account. Be sure to set the correct *Contract Method Name* in the 1Shot API selector box for both the Simulate and Submit stages as explained in the [tutorial video](https://youtu.be/m3ThthLtj3g). 

  ```sh
  # example curl call to your n8n webhook endpoint
  # be sure to change the URL to your n8n webhook url and set a proper x-payment header
  curl -X GET \
    https://hook.us2.make.com/5qimwe147tq9ew7k9bwarnb3rtr6hi3g \
    -H "x-payment: eyJ4NDAyVmVyc2lvbiI6MSwic2NoZW1lIjoiZXhhY3QiLCJuZXR3b3JrIjoiYmFzZS1zZXBvbGlhIiwicGF5bG9hZCI6eyJzaWduYXR1cmUiOiIweDE0ZjNkNGUyODNlMTgyNTdiMTBlMTkyNzRlNzgyZTU0YTQyOWExZDkzZDgzYTczYjY5YTAyOTYxY2IyNDYzOTI1ODU0M2Y3NjhmYTQyMzVkNTQzYzM2MWQ4ZGRhNTE2MzdjMWE3OWY1MTY0YTkyYTRhZGYxZDE4ZTBhYjQ4YzQyMWIiLCJhdXRob3JpemF0aW9uIjp7ImZyb20iOiIweDU1NjgwYzZiNjlkNTk4YzBiNDJmOTNjZDUzZGZmM2QyMGUwNjliNWIiLCJ0byI6IjB4RTkzNmU4RkFmNEE1NjU1NDY5MTgyQTQ5YTUwNTA1NUI3MUMxNzYwNCIsInZhbHVlIjoiNTAwMDAiLCJ2YWxpZEFmdGVyIjoiMTc1MTU3NDI2MiIsInZhbGlkQmVmb3JlIjoiMTc1MTU3NDM4MiIsIm5vbmNlIjoiMHg4NDA5NmMwODBkNDg5NTg1MmRiNGRkZGVmN2Q3NmM1MzM4OWVmZjE4YWIwMTk0MGJhY2EwYmRhYmQ4OTRhZmYxIn19fQ==" \
    -H "User-Agent: CustomUserAgent/1.0" \
    -H "Accept: application/json"

  curl -X GET \
    https://n8n.1shotapi.dev/webhook-test/92c5ca23-99a7-437d-85da-84aef8bd2a25 \
    -H "x-payment: eyJ4NDAyVmVyc2lvbiI6MSwic2NoZW1lIjoiZXhhY3QiLCJuZXR3b3JrIjoiYmFzZS1zZXBvbGlhIiwicGF5bG9hZCI6eyJzaWduYXR1cmUiOiIweDE0ZjNkNGUyODNlMTgyNTdiMTBlMTkyNzRlNzgyZTU0YTQyOWExZDkzZDgzYTczYjY5YTAyOTYxY2IyNDYzOTI1ODU0M2Y3NjhmYTQyMzVkNTQzYzM2MWQ4ZGRhNTE2MzdjMWE3OWY1MTY0YTkyYTRhZGYxZDE4ZTBhYjQ4YzQyMWIiLCJhdXRob3JpemF0aW9uIjp7ImZyb20iOiIweDU1NjgwYzZiNjlkNTk4YzBiNDJmOTNjZDUzZGZmM2QyMGUwNjliNWIiLCJ0byI6IjB4RTkzNmU4RkFmNEE1NjU1NDY5MTgyQTQ5YTUwNTA1NUI3MUMxNzYwNCIsInZhbHVlIjoiNTAwMDAiLCJ2YWxpZEFmdGVyIjoiMTc1MTU3NDI2MiIsInZhbGlkQmVmb3JlIjoiMTc1MTU3NDM4MiIsIm5vbmNlIjoiMHg4NDA5NmMwODBkNDg5NTg1MmRiNGRkZGVmN2Q3NmM1MzM4OWVmZjE4YWIwMTk0MGJhY2EwYmRhYmQ4OTRhZmYxIn19fQ==" \
    -H "User-Agent: CustomUserAgent/1.0" \
    -H "Accept: application/json"
  ```

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * See the [1Shot API documentation](https://docs.1shotapi.com) for more information on its features. 

  ## Version history

  latest version: `1.0.12`

ai_documentation_summary:
  {"purpose":"Provides n8n workflows with read and write access to EVM blockchains via the 1Shot managed wallet and transaction API, enabling reliable transaction execution, confirmation handling, and webhook callbacks, plus semantic contract discovery and prompt metadata to help agents use smart contracts as tools.","capabilities":["Manage 1Shot API wallets (create/use/manage wallets tied to your account)","Semantically search for smart contracts on specific networks and import them into your account as tools","Read data from smart contract functions (call view/constant functions)","Simulate and execute transactions on smart contract functions (submit transactions)","Ensure transaction confirmation with retries and gas optimization","Send webhook callbacks when transactions are finalized","Provide 1Shot Prompts: contract/function/input/output-level prompts and metadata to help LLMs/agents reason about and use contracts"],"authentication":"API key and secret plus Business ID (create API key & secret in 1Shot and supply business id to the node)","commonUseCases":["Automate on-chain tasks from n8n workflows (simulate then submit transactions)","Enable agents/LLMs to treat smart contract functions as callable tools using 1Shot Prompts","Semantically find and import target smart contracts instead of manual blockscanner parsing","Receive webhook callbacks in n8n when transactions finalize (post-confirmation workflow steps)","Integrate payment or monetization flows (example: x402 payment protocol + 1Shot API)"],"limitations":["Only supports EVM-compatible blockchains (EVM ecosystem)","Requires n8n version 1.95.3 or later","Requires installation as a community node in n8n","Requires a 1Shot account and creation of API key, secret, and business id for authentication"],"relatedNodes":[]}


node_type: n8n-nodes-nele-ai.neleAi
package_name: n8n-nodes-nele-ai
display_name: nele.ai
description: Search for results in your nele.ai knowledge database
category: Miscellaneous
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: gal.digital.npm
author_github_url: https://github.com/gal-digital-gmbh/
npm_package_name: n8n-nodes-nele-ai
npm_version: 1.0.4
community_fetched_at: 2026-02-19T14:41:52.691Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Chat",
          "value": "chat",
          "description": "Generate text responses via a conversational model"
        },
        {
          "name": "Knowledge Database",
          "value": "documentCollection",
          "description": "Manage and search your knowledge databases (aka document collections)"
        },
        {
          "name": "Image",
          "value": "image",
          "description": "Generate and retrieve images based on text prompts"
        },
        {
          "name": "Audio",
          "value": "audio",
          "description": "Transcribe and retrieve audio files as text"
        },
        {
          "name": "Model",
          "value": "model",
          "description": "Retrieve available models"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "completionSync",
      "options": [
        {
          "name": "Completion",
          "value": "completionSync",
          "action": "Generate a text response",
          "description": "Creates a response for a given chat message history"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search knowledge database",
          "description": "Returns relevant results for a given search query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentCollection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate an image",
          "description": "Creates an image from a text prompt"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "transcribe",
      "options": [
        {
          "name": "Transcribe",
          "value": "transcribe",
          "action": "Transcribe an audio file",
          "description": "Creates a text transcription from an audio file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "audio"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "load",
      "options": [
        {
          "name": "List Models",
          "value": "load",
          "action": "List AI models",
          "description": "Lists all available AI models"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "model"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Completion",
      "value": "completionSync",
      "action": "Generate a text response",
      "description": "Creates a response for a given chat message history"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search knowledge database",
      "description": "Returns relevant results for a given search query"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate an image",
      "description": "Creates an image from a text prompt"
    },
    {
      "name": "Transcribe",
      "value": "transcribe",
      "action": "Transcribe an audio file",
      "description": "Creates a text transcription from an audio file"
    },
    {
      "name": "List Models",
      "value": "load",
      "action": "List AI models",
      "description": "Lists all available AI models"
    }
  ]

npm_readme:
  # nele.ai n8n community node

  This is an n8n community node that lets you use [nele.ai](https://www.nele.ai) AI tools, chat completions, image generators, and knowledge database operations in your n8n workflows.

  [nele.ai](https://www.nele.ai) provides a unified API for a variety of AI models and tools, including chat, image generation, audio transcription, and document collection search.

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

  ## Installation

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

  ## Operations

  This node supports the following operations:

  - **Chat**: Generate text responses via conversational AI models.
  - **Image**: Generate and retrieve images based on text prompts.
  - **Audio**: Transcribe audio files to text.
  - **Knowledge Database**: Search and manage your knowledge databases (document collections).
  - **Model**: List available AI models.

  ## Credentials

  You need a nele.ai API key use this node.

  1. Sign up at [nele.ai](https://www.nele.ai) and obtain your API key.
  2. In n8n, add new credentials for "nele.ai API" and enter your API key.

  For more details, see the [nele.ai manual](https://www.nele.ai/en/functions/information-for-users/program-settings/api-key).

  ## Compatibility

  - Requires n8n version 1.109.1 or higher.
  - Requires node.js version 22.19.0 or higher.

  ## Usage

  After installing the node and configuring your credentials, you can add the "nele.ai" node to your workflows and select the desired resource and operation.

  - Use **Chat** for conversational AI.
  - Use **Image** to generate images from prompts.
  - Use **Audio** to transcribe audio files.
  - Use **Knowledge Database** to search your document collections.

  Refer to the in-app parameter descriptions for guidance on each operation.

  ## Resources

  - [nele.ai homepage](https://www.nele.ai)
  - [nele.ai manual](https://www.nele.ai/en/functions)
  - [nele.ai API documentation](https://api.aieva.io/docs)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

ai_documentation_summary:
  {"purpose":"Provides access to nele.ai AI capabilities from n8n workflows, including conversational chat, image generation, audio transcription, and searching/managing knowledge databases.","capabilities":["Chat: generate conversational AI responses (chat completions)","Image: generate and retrieve images from text prompts","Audio: transcribe audio files to text","Knowledge Database: search and manage document collections/knowledge databases","Model: list available AI models"],"authentication":"API key required (nele.ai API key configured in n8n credentials)","commonUseCases":["Generate conversational responses or automate chat-based workflows","Create images from text prompts for content or design automation","Transcribe uploaded audio to text for indexing or downstream processing","Search document collections or knowledge bases to fetch contextual information","Discover available AI models for selection in workflows"],"limitations":["Requires n8n version 1.109.1 or higher","Requires Node.js version 22.19.0 or higher","Requires a valid nele.ai API key","Community node: must be installed via n8n community nodes installation process (not bundled by default)"],"relatedNodes":["Chat","Image","Audio","Knowledge Database","Model"]}


node_type: n8n-nodes-evomi.evomi
package_name: n8n-nodes-evomi
display_name: Evomi
description: Scrape web pages using the Evomi Scraper API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: evomi
author_github_url: https://github.com/evomi/
npm_package_name: n8n-nodes-evomi
npm_version: 1.0.2
community_fetched_at: 2026-02-19T14:41:52.692Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "webPage",
      "options": [
        {
          "name": "Web Page",
          "value": "webPage"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Scrape a web page",
          "description": "Scrape content from a web page"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webPage"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Scrape",
      "value": "scrape",
      "action": "Scrape a web page",
      "description": "Scrape content from a web page"
    }
  ]

npm_readme:
  # Evomi n8n Node

  This repository provides an n8n community node for **Evomi's Scraper API**, a powerful web scraping tool with intelligent mode detection, automatic CAPTCHA solving, and residential proxy support.

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

  ## Features

  - **Intelligent Auto Mode**: Automatically detects whether to use fast HTTP requests or full browser rendering
  - **Three Scraping Modes**: Choose between `auto`, `request`, or `browser` modes
  - **Multiple Output Formats**: Get results as JSON, Markdown, or Screenshot
  - **AI Tool Compatible**: Use as an AI agent tool for intelligent web scraping
  - **Automatic CAPTCHA Solving**: Built-in CAPTCHA handling with browser mode
  - **Geo-Targeting**: Route requests through proxies in 195+ countries
  - **Robust Error Handling**: Comprehensive validation with helpful error messages

  ---

  ## Prerequisites

  To use this node, you need:

  1. **An Evomi account** - Sign up at [evomi.com](https://evomi.com)
  2. **Active Scraper API subscription or Pay-As-You-Go credits** - Required to make API requests

  > **🎁 Free Trial Available!** New users can get started with a free trial at [my.evomi.com/scraper-api](https://my.evomi.com/scraper-api).

  ---

  ## Installation

  ### From n8n Community Nodes

  1. Open your n8n instance
  2. Go to **Settings** → **Community Nodes**
  3. Select **Install**
  4. Enter `n8n-nodes-evomi` and confirm

  ### Manual Installation

  ```bash
  npm install n8n-nodes-evomi
  ```

  ---

  ## Getting Started

  ### Step 1: Get Your API Key

  1. Log in to your [Evomi Dashboard](https://my.evomi.com)
  2. Navigate to **Products** → **Scraper API** → **[Playground](https://my.evomi.com/my/products/scraper-api-universal/playground)**
  3. Your API key is displayed in the top-right section of the dashboard

  <img src="images/evomi_dashboard.png" width="600" alt="Evomi Dashboard - API Key Location">

  Copy the API key from the highlighted field (click the copy icon next to it).

  ### Step 2: Add the Evomi Node to Your Workflow

  1. In your n8n workflow editor, click the **+** button to add a new node

  <img src="images/n8n_plus_node.png" width="500" alt="Click the + button">

  2. Search for **"Evomi"** in the node selector

  <img src="images/n8n_search_evomi_node.png" width="400" alt="Search for Evomi">

  3. Click on the **Evomi** node to add it to your workflow

  ### Step 3: Configure Your Credentials

  1. In the Evomi node panel, click on **"Select Credential"** → **"+ Create new credential"**

  <img src="images/n8n_create_new_credential.png" width="400" alt="Create new credential">

  2. Enter your API key from the Evomi dashboard and click **Save**

  <img src="images/n8n_new_credential_enter_apikey.png" width="500" alt="Enter API Key">

  3. You should see **"Connection tested successfully"** - your credentials are now saved!

  <img src="images/n8n_crediential_saved_successfully.png" width="500" alt="Credential saved successfully">

  ### Step 4: Configure and Execute

  1. Enter the URL you want to scrape
  2. Choose your preferred mode and output format
  3. Click **Execute step** to run the scraper!

  <img src="images/n8n_node_success_result.png" width="700" alt="Successful scrape result">

  ---

  ## Node Parameters

  ### URL (Required)

  The web page URL to scrape. Must include `http://` or `https://`.

  ```
  https://example.com
  https://news.ycombinator.com
  ```

  ### Mode

  Choose how the page should be fetched:

  | Mode | Description | Best For | JavaScript |
  |------|-------------|----------|------------|
  | **Auto** (Default) | Automatically detects the best approach. Tries HTTP first, upgrades to browser if needed. | Most use cases | Auto-detected |
  | **Request** | Fast HTTP request without browser rendering. | Static sites, blogs, news, APIs | No |
  | **Browser** | Full browser with JavaScript execution. | SPAs, React/Vue/Angular apps, dynamic content | Yes |

  ### Output

  Choose the format for the scraped content:

  | Output | Description | Use Case |
  |--------|-------------|----------|
  | **JSON** (Default) | Structured JSON with metadata. Toggle "Include Content" to get the full HTML. | When you need metadata (title, status, etc.) |
  | **Markdown** | Clean, readable text format. | AI processing, content analysis, LLM input |
  | **Screenshot** | Full-page PNG image. Automatically enables Browser mode. | Visual verification, archiving, thumbnails |

  ### Include Content (JSON only)

  When using JSON output, toggle this to include the full HTML content in the response. Disable to save bandwidth when you only need metadata.

  - **Default**: Off
  - **When enabled**: Response includes `content` field with full HTML

  ### Wait Seconds (Auto & Browser modes)

  Seconds to wait after page load before capturing content. Useful for pages that load content dynamically via JavaScript.

  - **Default**: 5 seconds
  - **Range**: 0-30 seconds
  - **Tip**: Increase for slow-loading pages, decrease for fast static sites

  ### Proxy Country

  Route your request through a proxy in a specific country using ISO 3166-1 alpha-2 codes.

  - **Default**: US
  - **Examples**: `US`, `CA`, `DE`, `GB`, `JP`, `AU`, `FR`, `BR`

  **Common Country Codes:**
  | Code | Country |
  |------|---------|
  | US | United States |
  | CA | Canada |
  | GB | United Kingdom |
  | DE | Germany |
  | FR | France |
  | JP | Japan |
  | AU | Australia |
  | BR | Brazil |

  ---

  ## Usage Examples

  ### As a Standalone Node

  **Basic scraping:**
  1. Set URL: `https://example.com`
  2. Mode: `Auto`
  3. Output: `JSON`
  4. Execute

  **Get markdown for AI processing:**
  1. Set URL: `https://blog.example.com/article`
  2. Mode: `Auto`
  3. Output: `Markdown`
  4. Execute → Feed result to AI node

  **Take a screenshot:**
  1. Set URL: `https://dashboard.example.com`
  2. Mode: `Browser` (auto-selected)
  3. Output: `Screenshot`
  4. Execute

  **Geo-targeted scraping:**
  1. Set URL: `https://amazon.de`
  2. Proxy Country: `DE`
  3. Execute → Get German localized content

  ### As an AI Agent Tool

  Connect the Evomi node to an AI Agent node as a tool. The AI can scrape websites based on natural language prompts.

  **Example Prompts:**
  - "Scrape https://news.ycombinator.com and summarize the top 5 stories"
  - "Get the content from https://example.com/pricing and extract the pricing tiers"
  - "Take a screenshot of https://competitor.com/landing-page"

  ---

  ## Response Formats

  ### JSON Output

  ```json
  {
    "success": true,
    "url": "https://example.com",
    "domain": "example.com",
    "title": "Example Domain",
    "status_code": 200,
    "credits_used": 2.0,
    "credits_remaining": 98.0,
    "mode_used": "auto (request)",
    "content": "<html>...</html>"
  }
  ```

  ### Markdown Output

  Returns clean, formatted text:

  ```markdown
  # Example Domain

  This domain is for use in illustrative examples in documents...
  ```

  ### Screenshot Output

  Returns binary PNG image data that can be:
  - Saved to file
  - Uploaded to cloud storage
  - Processed by image nodes

  ---

  ## Error Handling

  The node provides comprehensive error handling with helpful messages:

  ### Input Validation Errors

  | Error | Cause | Solution |
  |-------|-------|----------|
  | "URL is required" | Empty URL field | Enter a valid URL |
  | "Invalid URL format" | Missing http:// or https:// | Add protocol to URL |
  | "Invalid proxy country code" | Not a 2-letter code | Use ISO 3166-1 alpha-2 (e.g., US, DE) |

  ### API Errors

  | Error | Cause | Solution |
  |-------|-------|----------|
  | "Invalid API key" | Wrong or expired key | Check credentials in n8n |
  | "Insufficient credits" | Account out of credits | [Add credits](https://my.evomi.com) or start a [free trial](https://my.evomi.com/scraper-api) |
  | "Rate limit exceeded" | Too many requests | Wait and retry, or upgrade plan |
  | "Failed to connect" | Network issue | Check internet connection |

  ### Continue on Fail

  Enable **"Continue on Fail"** in node settings to handle errors gracefully. Failed items will return:

  ```json
  {
    "success": false,
    "error": "Error message here",
    "itemIndex": 0
  }
  ```

  ---

  ## Credits & Pricing

  | Mode | Output | Approximate Cost |
  |------|--------|------------------|
  | Request | JSON/Markdown | 1-2 credits |
  | Auto (request used) | JSON/Markdown | 2 credits |
  | Auto (browser used) | JSON/Markdown | 6 credits |
  | Browser | JSON/Markdown | 5 credits |
  | Browser | Screenshot | 6 credits |

  Check your credit balance at [my.evomi.com](https://my.evomi.com).

  > **💡 Tip:** Start with a [free trial](https://my.evomi.com/scraper-api) to test the API before committing to a subscription.

  ---

  ## Development

  ### Setup

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

  # Install dependencies
  npm install

  # Build the project
  npm run build
  ```

  ### Testing Locally

  ```bash
  # 1. Build the node
  npm run build

  # 2. Link the package
  npm link

  # 3. Create n8n custom folder and link
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  npm link n8n-nodes-evomi

  # 4. Start n8n
  n8n start
  ```

  ### Linting

  ```bash
  npm run lint
  npm run lint:fix
  ```

  ---

  ## Compatibility

  - **Node.js**: >=20.15
  - **n8n**: Latest version recommended
  - **n8n Nodes API Version**: 1

  ---

  ## Resources

  - [Evomi Scraper API Documentation](https://docs.evomi.com/scraping-products-instructions/scraper-api/)
  - [Evomi Dashboard & API Playground](https://my.evomi.com/my/products/scraper-api-universal/playground)
  - [Start Free Trial](https://my.evomi.com/scraper-api)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ---

  ## Support

  | Issue Type | Where to Get Help |
  |------------|-------------------|
  | **This node** | [GitHub Issues](https://github.com/evomi/n8n-nodes-evomi/issues) |
  | **Evomi API** | [support@evomi.com](mailto:support@evomi.com) |
  | **n8n** | [n8n Community Forum](https://community.n8n.io/) |

  ---

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Provides an n8n node that uses the Evomi Scraper API to scrape web pages with intelligent mode detection, CAPTCHA solving and residential proxy/geo-targeting support.","capabilities":["Intelligent Auto Mode that detects and falls back between fast HTTP requests and full browser rendering","Three scraping modes: auto, request (HTTP), and browser (full JS rendering)","Multiple output formats: JSON (with optional full HTML content), Markdown, and full-page PNG screenshot","Automatic CAPTCHA solving when using browser mode","Geo-targeting / proxy routing across 195+ countries via ISO country codes","Configurable wait time after load (0–30s) for dynamic content","Include or exclude full HTML content in JSON to manage bandwidth","Robust validation and helpful error messages for inputs","Can be used as an AI agent tool (Markdown output recommended for LLM input)"],"authentication":"API key required (Evomi Scraper API key stored in node credentials)","commonUseCases":["Scrape static sites, blogs, news and APIs quickly with request mode","Scrape SPAs or JS-heavy sites using browser mode with configurable wait for dynamic content","Produce Markdown output for downstream AI/LLM processing or content analysis","Capture full-page screenshots for visual verification, archiving or thumbnails","Perform geo-targeted scraping by routing requests through country-specific proxies"],"limitations":["Requires an Evomi account and an active Scraper API subscription or Pay-As-You-Go credits to make requests","Authentication limited to API key (no OAuth described)","Wait Seconds parameter limited to a maximum of 30 seconds","Including full HTML content increases bandwidth (default is off)","Screenshot output automatically forces Browser mode (may increase resource use/cost)"],"relatedNodes":[]}


node_type: @bedrijfsdatanl/n8n-nodes-prospectpro.prospectpro
package_name: @bedrijfsdatanl/n8n-nodes-prospectpro
display_name: ProspectPro
description: Get data from the ProspectPro API.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: ocjanssen
author_github_url: https://github.com/ocjanssen/n8n-nodes-prospectpro.git
npm_package_name: @bedrijfsdatanl/n8n-nodes-prospectpro
npm_version: 0.1.8
community_fetched_at: 2026-02-19T14:41:52.692Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "prospects",
      "options": [
        {
          "name": "Prospect",
          "value": "prospects"
        },
        {
          "name": "Contact",
          "value": "contacts"
        },
        {
          "name": "Event",
          "value": "events"
        },
        {
          "name": "Pageview",
          "value": "pageviews"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_many",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get prospect",
          "routing": {
            "request": {
              "url": "/prospects",
              "method": "GET"
            }
          },
          "description": "Retrieve a prospect from ProspectPro"
        },
        {
          "name": "Get Many",
          "value": "get_many",
          "action": "Get prospects",
          "routing": {
            "request": {
              "url": "/prospects",
              "method": "GET"
            }
          },
          "description": "Retrieve prospects from ProspectPro"
        },
        {
          "name": "Update",
          "value": "patch",
          "action": "Update prospect",
          "routing": {
            "request": {
              "qs": {
                "no_header": 1
              },
              "url": "/prospects",
              "method": "PATCH"
            }
          },
          "description": "Update a prospect in ProspectPro"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "prospects"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_many",
      "options": [
        {
          "name": "Get Many",
          "value": "get_many",
          "action": "Get pageviews",
          "routing": {
            "request": {
              "url": "/pageviews",
              "method": "GET"
            }
          },
          "description": "Retrieve pageviews from ProspectPro"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pageviews"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_many",
      "options": [
        {
          "name": "Get Many",
          "value": "get_many",
          "action": "Get contacts",
          "routing": {
            "request": {
              "url": "/contacts",
              "method": "GET"
            }
          },
          "description": "Retrieve contacts from ProspectPro"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create contact",
          "routing": {
            "request": {
              "qs": {
                "no_header": "={{ $value && $value === true ? undefined : 1 }}"
              },
              "url": "/contacts",
              "method": "POST"
            }
          },
          "description": "Create a contact in ProspectPro"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update contact",
          "routing": {
            "request": {
              "qs": {
                "no_header": "={{ $value && $value === true ? undefined : 1 }}"
              },
              "url": "/contacts",
              "method": "PATCH"
            }
          },
          "description": "Update a contact in ProspectPro"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete contact",
          "routing": {
            "request": {
              "url": "/contacts",
              "method": "DELETE"
            }
          },
          "description": "Delete a contact in ProspectPro"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contacts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get_many",
      "options": [
        {
          "name": "Get Many",
          "value": "get_many",
          "action": "Get events",
          "routing": {
            "request": {
              "url": "/events",
              "method": "GET"
            }
          },
          "description": "Retrieve events from ProspectPro"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create event",
          "routing": {
            "request": {
              "qs": {
                "no_header": "={{ $value && $value === true ? undefined : 1 }}"
              },
              "url": "/events",
              "method": "POST"
            }
          },
          "description": "Create an event in ProspectPro"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete event",
          "routing": {
            "request": {
              "url": "/events",
              "method": "DELETE"
            }
          },
          "description": "Delete an event in ProspectPro"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "events"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get prospect",
      "routing": {
        "request": {
          "url": "/prospects",
          "method": "GET"
        }
      },
      "description": "Retrieve a prospect from ProspectPro"
    },
    {
      "name": "Get Many",
      "value": "get_many",
      "action": "Get prospects",
      "routing": {
        "request": {
          "url": "/prospects",
          "method": "GET"
        }
      },
      "description": "Retrieve prospects from ProspectPro"
    },
    {
      "name": "Update",
      "value": "patch",
      "action": "Update prospect",
      "routing": {
        "request": {
          "qs": {
            "no_header": 1
          },
          "url": "/prospects",
          "method": "PATCH"
        }
      },
      "description": "Update a prospect in ProspectPro"
    },
    {
      "name": "Get Many",
      "value": "get_many",
      "action": "Get pageviews",
      "routing": {
        "request": {
          "url": "/pageviews",
          "method": "GET"
        }
      },
      "description": "Retrieve pageviews from ProspectPro"
    },
    {
      "name": "Get Many",
      "value": "get_many",
      "action": "Get contacts",
      "routing": {
        "request": {
          "url": "/contacts",
          "method": "GET"
        }
      },
      "description": "Retrieve contacts from ProspectPro"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create contact",
      "routing": {
        "request": {
          "qs": {
            "no_header": "={{ $value && $value === true ? undefined : 1 }}"
          },
          "url": "/contacts",
          "method": "POST"
        }
      },
      "description": "Create a contact in ProspectPro"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update contact",
      "routing": {
        "request": {
          "qs": {
            "no_header": "={{ $value && $value === true ? undefined : 1 }}"
          },
          "url": "/contacts",
          "method": "PATCH"
        }
      },
      "description": "Update a contact in ProspectPro"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete contact",
      "routing": {
        "request": {
          "url": "/contacts",
          "method": "DELETE"
        }
      },
      "description": "Delete a contact in ProspectPro"
    },
    {
      "name": "Get Many",
      "value": "get_many",
      "action": "Get events",
      "routing": {
        "request": {
          "url": "/events",
          "method": "GET"
        }
      },
      "description": "Retrieve events from ProspectPro"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create event",
      "routing": {
        "request": {
          "qs": {
            "no_header": "={{ $value && $value === true ? undefined : 1 }}"
          },
          "url": "/events",
          "method": "POST"
        }
      },
      "description": "Create an event in ProspectPro"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete event",
      "routing": {
        "request": {
          "url": "/events",
          "method": "DELETE"
        }
      },
      "description": "Delete an event in ProspectPro"
    }
  ]

npm_readme:
  # n8n-nodes-prospectpro

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

  An n8n community node for integrating with the [ProspectPro API](https://docs.prospectpro.nl/). This node allows you to manage and retrieve prospect, contact, pageview, and event data directly within your n8n workflows.

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

  ## Installation

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

  ### Community Nodes (Recommended)

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

  ### Docker (Quick Start)

  Run n8n with the ProspectPro node pre-installed:

  ```bash
  ./run.sh
  ```

  Then access n8n at http://localhost:5679

  To update the node after making changes:
  ```bash
  npm run build && docker-compose restart
  ```

  ### Manual Installation

  To get started:

  ```bash
  npm install n8n-nodes-prospectpro
  ```

  ## Credentials

  You need a ProspectPro API key to use this node:

  1. Sign up at [ProspectPro](https://www.prospectpro.nl/)
  2. Get your API key from your account dashboard
  3. In n8n, create new credentials of type "ProspectPro API"
  4. Enter your API key

  ## Supported Operations

  ### Prospects Resource

  #### Get Prospect
  Retrieve a single prospect from ProspectPro.

  #### Get Many Prospects
  Search and retrieve multiple prospects with filtering options.

  #### Update Prospect
  Update prospect information in ProspectPro.

  ### Pageviews Resource

  #### Get Many Pageviews
  Retrieve pageview data for prospects.

  ### Contacts Resource

  #### Get Many Contacts
  Retrieve contact information.

  #### Create Contact
  Create a new contact in ProspectPro.

  #### Update Contact
  Update existing contact information.

  #### Delete Contact
  Remove a contact from ProspectPro.

  ### Events Resource

  #### Get Many Events
  Retrieve event data.

  #### Create Event
  Create a new event in ProspectPro.

  #### Delete Event
  Remove an event from ProspectPro.

  ## ProspectPro Trigger Node

  The package also includes a trigger node that can poll for new or updated prospects. This node supports:

  - Filtering by qualification status
  - Filtering by tags
  - Filtering by audiences
  - Filtering by owner

  The trigger will automatically track the last time it ran to only retrieve new or updated prospects.

  ## Usage Examples

  ### Basic Prospect Search
  Retrieve prospects from ProspectPro:
  ```json
  {
    "resource": "prospects",
    "operation": "get_many",
    "additionalFields": {
      "rows": 10
    }
  }
  ```

  ### Create Contact for a Prospect
  Create a new contact associated with a prospect:
  ```json
  {
    "resource": "contacts",
    "operation": "create",
    "prospectId": "123456",
    "firstName": "John",
    "lastName": "Doe",
    "email": "john.doe@example.com"
  }
  ```

  ### Retrieve Recent Pageviews
  Get recent pageviews data:
  ```json
  {
    "resource": "pageviews",
    "operation": "get_many",
    "additionalFields": {
      "rows": 20,
      "sort_by": "timestamp",
      "sort_order": "desc"
    }
  }
  ```

  ### Create a Custom Event
  Log a custom event in ProspectPro:
  ```json
  {
    "resource": "events",
    "operation": "create",
    "prospectId": "123456",
    "eventType": "meeting_scheduled",
    "eventData": {
      "time": "2023-05-15T14:30:00Z",
      "notes": "Initial consultation"
    }
  }
  ```

  ## Trigger Node Example
  Create an automated workflow that triggers when new qualified prospects are found:
  ```json
  {
    "label": 1,
    "tags": ["high-value", "inbound"],
    "owner": "12345678"
  }
  ```

  ## API Documentation

  For detailed API documentation, visit [docs.prospectpro.nl](https://docs.prospectpro.nl/).

  ## Compatibility

  - **n8n version**: 0.187.0 or later
  - **Node.js version**: 20.15 or later

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [ProspectPro API Documentation](https://docs.prospectpro.nl/)

  ## Development

  ### Prerequisites

  - Node.js 20.15 or later
  - npm or pnpm

  ### Setup

  ```bash
  # Clone the repository
  git clone [your-repository-url]

  # Install dependencies
  npm install

  # Build the node
  npm run build

  # Lint the code
  npm run lint
  ```

  ### Testing

  To test the node locally:

  1. Build the node: `npm run build`
  2. Link it to your global n8n installation: `npm link`
  3. In your n8n directory: `npm link n8n-nodes-prospectpro`
  4. Start n8n: `n8n start`

  OR

  ```bash
  ./run.sh
  ```

  ## License

  [MIT](LICENSE.md)

  ## Support

  If you encounter any issues or have questions:

  1. Check the [ProspectPro API documentation](https://docs.prospectpro.nl/)
  2. Review the [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  3. Open an issue in this repository

  [ProspectPro](https://www.prospectpro.nl/) is a part of [Bedrijfsdata.nl](https://www.bedrijfsdata.nl/)

ai_documentation_summary:
  {"purpose":"Integrate n8n workflows with the ProspectPro API to retrieve and manage prospect, contact, pageview, and event data and to trigger workflows when prospects are created or updated.","capabilities":["Prospects: get a single prospect","Prospects: search and retrieve many prospects with filtering and pagination","Prospects: update prospect data","Pageviews: retrieve many pageviews (with sorting/pagination options)","Contacts: retrieve many contacts","Contacts: create a contact associated with a prospect","Contacts: update a contact","Contacts: delete a contact","Events: retrieve many events","Events: create an event"],"authentication":"API key required (ProspectPro API credentials stored in n8n)","commonUseCases":["Search and pull prospect records into workflows for enrichment or routing","Trigger automated workflows when new or updated qualified prospects are found (filtered by tags/audience/owner)","Create or update contacts for a prospect based on form submissions or CRM syncs","Retrieve recent pageviews to enrich prospect activity data or trigger follow-ups","Log custom events (e.g., meetings scheduled) against prospects"],"limitations":["No 'create prospect' operation exposed in the node (only get/get_many/update are listed)","Trigger is poll-based (no real-time webhook push) — relies on periodic polling and last-run tracking","Requires n8n v0.187.0 or later and Node.js v20.15 or later"],"relatedNodes":["ProspectPro Trigger (polling trigger node included)","ProspectPro API credentials (credential type used to store API key)"]}


node_type: @brave/n8n-nodes-brave-search.braveSearch
package_name: @brave/n8n-nodes-brave-search
display_name: Brave Search
description: Search the web using Brave Search
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: bcrypt
author_github_url: https://github.com/brave/n8n-nodes-brave-search.git
npm_package_name: @brave/n8n-nodes-brave-search
npm_version: 1.0.28
community_fetched_at: 2026-02-19T14:41:52.692Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "web",
      "options": [
        {
          "name": "Web Search",
          "value": "web",
          "action": "Search the Web",
          "description": "Search the Web"
        },
        {
          "name": "News Search",
          "value": "news",
          "action": "Search for News",
          "description": "Search for News"
        },
        {
          "name": "Image Search",
          "value": "images",
          "action": "Search for Images",
          "description": "Search for Images"
        },
        {
          "name": "Video Search",
          "value": "videos",
          "action": "Search for Videos",
          "description": "Search for Videos"
        },
        {
          "name": "Spellcheck",
          "value": "spellcheck",
          "action": "Check Spelling of a Query",
          "description": "Check spelling of a query"
        },
        {
          "name": "Suggest",
          "value": "suggest",
          "action": "Get Suggestions for a Query",
          "description": "Get suggestions for a query"
        }
      ],
      "required": true,
      "description": "The operation to use for the Brave Search API",
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Web Search",
      "value": "web",
      "action": "Search the Web",
      "description": "Search the Web"
    },
    {
      "name": "News Search",
      "value": "news",
      "action": "Search for News",
      "description": "Search for News"
    },
    {
      "name": "Image Search",
      "value": "images",
      "action": "Search for Images",
      "description": "Search for Images"
    },
    {
      "name": "Video Search",
      "value": "videos",
      "action": "Search for Videos",
      "description": "Search for Videos"
    },
    {
      "name": "Spellcheck",
      "value": "spellcheck",
      "action": "Check Spelling of a Query",
      "description": "Check spelling of a query"
    },
    {
      "name": "Suggest",
      "value": "suggest",
      "action": "Get Suggestions for a Query",
      "description": "Get suggestions for a query"
    }
  ]

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

  This is an n8n community node. It lets you use the [Brave Search API](https://brave.com/search/api/) in your n8n workflows.

  Power your search and AI apps with the fastest growing independent search engine since Bing. Access an index of billions of pages with a single call. Get started for free at https://brave.com/search/api/.

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

  ## Table of Contents

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

  ## Installation

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

  ## Operations

  This node presently supports search operations for general _web_ results, as well as _images_, _news_, and _videos_.

  ## Credentials

  An API key is required in order to issue calls to the Brave Search API. Get started for FREE with 1 query/second, and 2,000 queries/month. Sign up to retrieve your API key at https://brave.com/search/api/.

  ## Compatibility

  Tested locally against n8n v1.93.0.

  ## Usage

  You should familarize yourself with the various _response objects_, to understand what data is provided by the API, and how to access individual insights. Response object formats are available in the Brave Search API documentation. For example, to understand how a standard Web Search response looks, you can visit https://api-dashboard.search.brave.com/app/documentation/web-search/responses.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Brave Search API documentation](https://api-dashboard.search.brave.com/app/documentation/)

  ## Development

  To streamline and accelerate the development process, follow these steps:

  ### Quick Start (Recommended)

  1. Install _n8n_ globally (`pnpm add -g n8n`).
  2. Install dependencies: `pnpm install`
  3. Run the full development environment: `pnpm run dev:full`
  4. Open the n8n editor UI in your browser (typically at http://localhost:5678).

  The `dev:full` script automatically:
  - Builds the project
  - Starts TypeScript compilation in watch mode
  - Launches n8n with the proper environment variables set
  - Enables hot reloading for development

  ### Manual Development Setup

  If you prefer to run commands separately:

  1. Install _n8n_ globally (`pnpm add -g n8n`).
  2. Install dependencies: `pnpm install`
  3. Build the project: `pnpm build`
  4. Start TypeScript watch mode: `pnpm dev`
  5. In a separate terminal, start n8n: `pnpm run dev:n8n`

  ### Alternative: System Environment Variables

  You can also set environment variables manually if preferred:
  - Set `N8N_CUSTOM_EXTENSIONS` to the `/dist` directory of this repository
  - Set `N8N_DEV_RELOAD` to `true`
  - Run `pnpm run dev` and `n8n start` separately

  You should now be able to search for and use the Brave Search node in your n8n workflows.

  ### First-Time Setup Notes

  > **Important:** When launching n8n locally for the first time, the startup process may take 1-2 minutes to initialize. Wait for the "Editor is now accessible via web browser" message in the terminal before opening your browser.
  > 
  > On first access to http://localhost:5678, you'll be prompted to create an admin user account for your local n8n instance. 
  > 
  > **Remember:** You'll need to configure your Brave Search API credentials in the n8n interface before the node will function. See the [Credentials](#credentials) section above for API key information.
  > 
  > If you encounter issues or need to start fresh, you can reset n8n to its initial state by running `n8n user-management:reset`.

ai_documentation_summary:
  {"purpose":"Provides n8n workflow nodes that call the Brave Search API so you can perform web-based searches (web, images, news, videos) and use the returned search results inside automation workflows.","capabilities":["Perform Web search queries (general web results)","Perform Image search queries","Perform News search queries","Perform Video search queries","Return raw Brave Search API response objects for downstream parsing and processing","Access Brave Search index (billions of pages) via single API calls"],"authentication":"API key required (Brave Search API key). Free tier available: 1 query/second and 2,000 queries/month.","commonUseCases":["Enrich workflow data with live web search results","Retrieve images, news, or video results for automation or content pipelines","Power AI assistants or search-enabled apps with external web results","Trigger alerts or actions based on news or web mentions"],"limitations":["Requires a Brave Search API key and is subject to Brave Search rate limits and quotas (e.g., free tier: 1 q/s, 2,000 q/month)","Node currently only supports search operations (web, images, news, videos); no indexing or account management features","Response payloads follow Brave Search API formats — you must consult Brave Search documentation to understand and parse response objects","Tested against n8n v1.93.0; compatibility with other n8n versions is not guaranteed"],"relatedNodes":[]}


node_type: n8n-nodes-aiscraper.aiScraper
package_name: n8n-nodes-aiscraper
display_name: AI Scraper
description: Scrape any Website with just a URL and Data Description using Parsera API (10K+ downloads)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: raznem
author_github_url: https://github.com/parsera-labs/n8n-parsera.git
npm_package_name: n8n-nodes-aiscraper
npm_version: 0.2.1
community_fetched_at: 2026-02-19T14:41:52.693Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "new-scraper",
      "options": [
        {
          "name": "New Scraper",
          "value": "new-scraper"
        },
        {
          "name": "Existing Scraper",
          "value": "existing-scraper"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrapeUrl",
      "options": [
        {
          "name": "Scrape URL",
          "value": "scrapeUrl",
          "action": "Scrape URL",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/extract",
              "body": {
                "url": "={{$parameter[\"url\"]}}",
                "mode": "={{$parameter[\"mode\"]}}",
                "proxy_country": "={{$parameter[\"proxyCountry\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Provide URL and Data Description"
        },
        {
          "name": "Parse HTML",
          "value": "parseHtml",
          "action": "Parse HTML",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/parse",
              "body": {
                "mode": "={{$parameter[\"mode\"]}}",
                "content": "={{$parameter[\"content\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Provide HTML content and Data Description"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "new-scraper"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "runScraper",
      "options": [
        {
          "name": "Existing Scraper",
          "value": "runScraper",
          "action": "Scraper made in parsera org with advanced features",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/scrapers/run",
              "body": {
                "url": "={{$parameter[\"url\"] || undefined}}",
                "name": "={{$parameter[\"existingScraperName\"]}}",
                "proxy_country": "={{$parameter[\"proxyCountry\"]}}"
              },
              "method": "POST",
              "baseURL": "https://api.parsera.org/v1"
            }
          },
          "description": "Scraper made in parsera.org with advanced features, such as scraping code generation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "existing-scraper"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Scrape URL",
      "value": "scrapeUrl",
      "action": "Scrape URL",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/extract",
          "body": {
            "url": "={{$parameter[\"url\"]}}",
            "mode": "={{$parameter[\"mode\"]}}",
            "proxy_country": "={{$parameter[\"proxyCountry\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Provide URL and Data Description"
    },
    {
      "name": "Parse HTML",
      "value": "parseHtml",
      "action": "Parse HTML",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/parse",
          "body": {
            "mode": "={{$parameter[\"mode\"]}}",
            "content": "={{$parameter[\"content\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Provide HTML content and Data Description"
    },
    {
      "name": "Existing Scraper",
      "value": "runScraper",
      "action": "Scraper made in parsera org with advanced features",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/scrapers/run",
          "body": {
            "url": "={{$parameter[\"url\"] || undefined}}",
            "name": "={{$parameter[\"existingScraperName\"]}}",
            "proxy_country": "={{$parameter[\"proxyCountry\"]}}"
          },
          "method": "POST",
          "baseURL": "https://api.parsera.org/v1"
        }
      },
      "description": "Scraper made in parsera.org with advanced features, such as scraping code generation"
    }
  ]

npm_readme:
  # n8n-nodes-aiscraper

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

  ## Quickstart
  [![Quickstart Video](https://img.youtube.com/vi/VUzKFRuqvGM/0.jpg)](https://www.youtube.com/watch?v=VUzKFRuqvGM)

  Parsera AI Scraper is a service that uses AI to extract structured data from web pages, either by providing a URL or raw HTML content. It simplifies web scraping by allowing users to define data fields through natural language descriptions or by using pre-configured scraping agents.

  [https://parsera.org](https://parsera.org)

  [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 Parsera AI Scraper node supports the following operations:

  *   **Extractor:**
      *   **Extract from URL:** Provide a URL, and Parsera will fetch the content and extract data based on your defined attributes. Supports proxy usage and sending cookies.
      *   **Parse HTML:** Provide raw HTML content, and Parsera will parse it to extract data based on your defined attributes.
  *   **Scraping Agent:**
      *   **Scraping Agent:** Utilize a pre-configured scraping agent on the Parsera platform to scrape a given URL. **Note:** The Parsera agent itself must be created separately via the [Parsera application](https://parsera.org) or Parsera API before it can be used by this n8n node operation. This operation uses a different base URL (`https://agents.parsera.org/v1`) and also supports proxy usage and sending cookies.

  ## Credentials

  To use this node, you need to create AI Scraper credentials within n8n. This requires an API Key from Parsera.

  1.  Sign up for an account at [https://parsera.org](https://parsera.org).
  2.  Once logged in, navigate to your API settings to find your API Key.
  3.  In n8n, create new credentials of type "AI Scraper API".
  4.  Enter the API Key obtained from Parsera into the API Key field in the n8n credential configuration.

  ## Compatibility

  *   **Minimum n8n Version:** While the node might work with earlier versions, it has been developed and tested primarily on **n8n version 1.19.3**.

  ## Usage

  This node allows you to extract structured data from websites.

  **Key Parameters:**

  *   **Resource:** Choose between "Extractor" (for direct URL/HTML extraction) and "Scraping Agent" (for using pre-configured Parsera agents).
  *   **Operation:** Select the specific action based on the chosen resource.
  *   **URL/Content:** Provide the target URL or raw HTML content, depending on the operation.
  *   **Prompt:** Provide context and general instructions to scraper.
  *   **Attributes Input Mode (for Extractor Resource):**
      *   **Fields:** Define attributes using a user-friendly interface with separate fields for Field Name, Type, and Field Description. This is the default and recommended for most UI-based configurations.
      *   **JSON:** Define attributes as a single JSON object. This mode is powerful for programmatic use, AI tool integration, or complex schemas. The expected format is `{"your_field_name": {"description": "What to extract", "type": "string"}}`.
  *   **Attributes (for Extractor Resource):** Depending on the selected input mode, you will either fill out individual fields or provide a JSON object. At least one attribute is required.
      *   **Field Name:** The key for the extracted data in the output (e.g., `productTitle`, `price`).
      *   **Type:** The expected data type (e.g., `string`, `integer`, `number`, `boolean`, `list`, `object`, `any`).
      *   **Field Description:** A natural language instruction telling the AI what data to look for (e.g., "The main title of the product page", "The discounted price of the item").
  *   **Mode (for Extractor Resource):**
      *   **Standard:** Balanced approach for speed and accuracy.
      *   **Precision:** Focuses on higher accuracy, potentially at the cost of speed or resources.
  *   **Proxy Country:** Optionally route your request through a proxy in a specific country to access geo-restricted content.
  *   **Cookies:** Optionally provide cookies as a JSON array to be sent with the request (e.g., for authenticated sessions). Format: `[{"name": "cookieName", "value": "cookieValue", "domain": ".example.com"}]`.
  *   **Agent Name (for Scraping Agent Resource):** The name of the pre-configured agent on the Parsera platform. This agent must have been created beforehand in your Parsera account.

  The output of the node will be a list of items containing the extracted data.

  For more detailed examples and advanced usage, refer to the [Parsera API documentation](https://docs.parsera.org/api/getting-started/).
  If you are new to n8n, you might find the [Try it out](https://docs.n8n.io/try-it-out/) documentation helpful to get started with the platform.

  ## Resources

  *   [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  *   [Parsera Website](https://parsera.org)
  *   [Parsera API Documentation](https://docs.parsera.org/api/getting-started/)

ai_documentation_summary:
  {"purpose":"Use the Parsera AI Scraper service from n8n workflows to extract structured data from web pages by providing a URL or raw HTML, or by invoking pre-configured Parsera scraping agents.","capabilities":["Extract from URL: fetch page and extract fields based on natural-language attribute descriptions","Parse HTML: extract fields from provided raw HTML content","Scraping Agent: call a pre-configured Parsera agent (agents.parsera.org/v1) to scrape a URL","Support for proxy routing (select proxy country) for geo-restricted content","Send cookies with requests (JSON array of cookie objects) for authenticated sessions","Attribute definition via UI fields or JSON schema (e.g., {\"field\": {\"description\":\"...\",\"type\":\"string\"}})","Extraction modes: Standard (balanced) and Precision (higher accuracy)","Accepts an optional prompt/context to guide the scraper","Outputs extracted results as a list of structured items"],"authentication":"API key required (provide Parsera API Key in n8n credentials of type 'AI Scraper API')","commonUseCases":["Extract product data (title, price, specs) from e-commerce pages","Scrape article metadata and content (title, author, publish date) from news/blog pages","Scrape authenticated content by sending cookies for logged-in sessions","Access geo-restricted pages by routing requests through a country-specific proxy","Run complex or site-specific scraping logic using pre-configured Parsera agents"],"limitations":["Scraping Agent operation requires the agent to be created separately in the Parsera platform before use","At least one attribute must be provided for extractor operations","Node depends on the external Parsera service and API availability","Developed and tested primarily on n8n version 1.19.3 (compatibility with older versions not guaranteed)"],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: fullenrich
author_github_url: https://github.com/fullenrich/
npm_package_name: n8n-nodes-fullenrich
npm_version: 0.1.3
community_fetched_at: 2026-02-19T14:41:52.694Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "enrichment",
      "options": [
        {
          "name": "Enrichment",
          "value": "enrichment"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "startEnrichment",
      "options": [
        {
          "name": "Start Enrichment",
          "value": "startEnrichment",
          "action": "Start enrichment",
          "description": "Start an enrichment task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "enrichment"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

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

npm_readme:
  # n8n-nodes-fullenrich

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

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


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

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

  ---

  ## Installation

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

  Example:

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

  Then restart your n8n instance.

  ---

  ## Operations

  This package provides two nodes:

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

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

  ---

  ## Credentials

  The node requires API authentication:

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

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

  ---

  ## Compatibility

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

  ---

  ## Usage

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

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

  ---

  ## Resources

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

  ---

  ## Version history

  ### 0.1.0
  - Initial release.

ai_documentation_summary:
  {"purpose":"Start asynchronous FullEnrich bulk enrichment requests from n8n workflows and receive enriched contact results via a webhook endpoint.","capabilities":["Start asynchronous enrichment for one or multiple contacts","Accept contacts from previous nodes (Google Sheets, Airtable, forms) or manual UI input","Support custom per-contact fields (e.g., row_id, user_id) passed under a 'custom' object","Send contact data to FullEnrich API enrichment endpoint","Expose a webhook endpoint (Get Enrichment Result) to receive enrichment callbacks","Output enriched contact data in a format usable by other nodes (Google Sheets, Airtable, CRMs)","Auto-generate webhook URL in most cases for FullEnrich callbacks"],"authentication":"HTTP Basic Auth (use an n8n HTTP Basic Auth credential or custom credential named 'fullEnrichApi' containing your FullEnrich API key)","commonUseCases":["Load leads from a Google Sheet, send to Start Enrichment, receive enriched data and update the sheet","Enrich form or CRM-imported contacts in bulk and push results back into the workflow","Track and correlate enrichment requests using custom IDs (row_id, user_id) passed with each contact","Implement asynchronous enrichment workflows where enrichment results are delivered via webhook"],"limitations":["Requires a FullEnrich-compatible API (self-hosted or cloud) to be available","Asynchronous-only flow: Start node sends requests and Get Result node must receive webhook callbacks (no built-in synchronous/polling enrichment described)","You must assign the HTTP Basic Auth / fullEnrichApi credential in the Start Enrichment node","Requires n8n minimum version 1.22.0 (tested on 1.22.0, 1.25.1, 1.28.0)","README does not document rate limits, error/retry behavior, or detailed field mapping/schema"],"relatedNodes":["Google Sheets","Airtable","Webhook Trigger","HTTP Request / HTTP Node","CRM nodes (e.g., HubSpot, Salesforce)"]}


node_type: @copicake/n8n-nodes-copicake.copicake
package_name: @copicake/n8n-nodes-copicake
display_name: Copicake
description: Generate and retrieve images using Copicake API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: eragonj
author_github_url: https://github.com/Copicake/n8n-nodes-copicake.git
npm_package_name: @copicake/n8n-nodes-copicake
npm_version: 1.1.0
community_fetched_at: 2026-02-19T14:41:52.695Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "image",
      "options": [
        {
          "name": "Image",
          "value": "image"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an image",
          "description": "Create a new image from a template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an image",
          "description": "Get an existing image by rendering ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create an image",
      "description": "Create a new image from a template"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an image",
      "description": "Get an existing image by rendering ID"
    }
  ]

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

  # n8n-nodes-copicake

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

  Copicake is a data-driven image generation service that allows you to generate social media materials with just one click using templates and API calls.

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

  ## Installation

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

  ### Community Nodes (Recommended)

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

  After installing the node, you can use it like any other node in your workflows.

  ### Manual Installation

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

  ```bash
  npm install n8n-nodes-copicake
  ```

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

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

  ## Credentials

  You need to set up credentials to use this node:

  1. In n8n, go to **Credentials** and create new **Copicake API** credentials.
  2. Enter your Copicake API key.
     - You can get your API key from the [Copicake dashboard](https://copicake.com/).

  ## Operations

  This node supports the following operations:

  ### Image

  #### Create
  Create a new image from a template with custom changes.

  **Parameters:**
  - **Template ID** (required): The ID of the template to use for image generation
  - **Changes**: Array of changes to apply to the template elements
    - **Element Name**: The name of the element to modify
    - **Change Type**: Type of change (Text, Image, QR Code, Shape)
    - **Properties**: Specific properties based on change type:
      - **Text**: text, fill color, stroke color, text background color
      - **Image**: image URL, stroke color
      - **QR Code**: content, fill color, stroke color
      - **Shape**: fill color, stroke color
  - **Additional Options**:
    - **Format**: Output format (PNG or JPG)
    - **Max Wait Time (Seconds)**: Maximum time to wait for rendering completion (default: 60)
    - **Polling Interval (Seconds)**: How often to check rendering status (default: 2)
    - **Wait for Completion**: Whether to poll until rendering is complete (default: true)
    - **Webhook URL**: URL to receive webhook when image is ready

  **Asynchronous Processing:**
  By default, the node will automatically wait for the image rendering to complete before returning the final result. This includes polling the Copicake API every 2 seconds until the status becomes either `success` or `failed`, with a maximum wait time of 60 seconds. You can disable this behavior by setting "Wait for Completion" to false, which will return the initial response with `processing` status immediately.

  **Example:**
  ```json
  {
    "template_id": "jfwrFJdR3z1eF8BcEhSnAFyhxgOq",
    "changes": [
      {
        "name": "text-9so09m",
        "text": "hello world",
        "fill": "#ff0000"
      },
      {
        "name": "image-yeavh7",
        "src": "https://your_website.com/test.png"
      }
    ],
    "options": {
      "format": "png",
      "webhook_url": "https://your_website.com/webhook_url"
    }
  }
  ```

  #### Get
  Retrieve an existing image by its rendering ID.

  **Parameters:**
  - **Rendering ID** (required): The rendering ID of the image to retrieve

  **Example:**
  ```json
  {
    "rendering_id": "ki9ImK39lPRwb1oOpKbROkNWumFz"
  }
  ```

  ## Response Format

  ### Create Image Response
  ```json
  {
    "rendering_id": "xc17NtfyMaxPDCtz0ZjEZ4guBmiC",
    "status": "processing",
    "created_at": "2023-01-01T00:00:00Z"
  }
  ```

  ### Get Image Response
  ```json
  {
    "rendering_id": "xc17NtfyMaxPDCtz0ZjEZ4guBmiC",
    "status": "success",
    "permanent_url": "https://copicake.s3.ap-northeast-1.amazonaws.com/renderings/xc17NtfyMaxPDCtz0ZjEZ4guBmiC.png",
    "created_at": "2023-01-01T00:00:00Z",
    "completed_at": "2023-01-01T00:00:05Z"
  }
  ```

  ## Example Workflows

  ### Basic Image Generation
  1. **Manual Trigger** → **Copicake (Create Image)** → **HTTP Request** (to download image)

  ### Automated Social Media Posts
  1. **Schedule Trigger** → **Copicake (Create Image)** → **Twitter** (post with generated image)

  ### Dynamic Content Generation
  1. **Webhook** → **Set** (prepare data) → **Copicake (Create Image)** → **Email** (send with generated image)

  ## Resources

  - [Copicake API Documentation](https://docs.copicake.com/)
  - [Copicake Website](https://copicake.com/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## Version History

  ### 0.1.0
  - Initial release
  - Support for Create Image and Get Image operations
  - Full support for all Copicake API features including text, image, QR code, and shape modifications

  ## License

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

ai_documentation_summary:
  {"purpose":"Generate images from Copicake templates and retrieve rendered images via the Copicake API. The node lets workflows apply element-level changes (text, images, QR codes, shapes), choose output format, and either wait/poll for completion or use webhooks.","capabilities":["Create image from a template with custom changes","Supported change types for template elements: Text, Image, QR Code, Shape","Set element properties (e.g., text content, fill/stroke colors, image URL, QR content)","Specify output format (PNG or JPG)","Optionally wait for rendering completion with configurable Polling Interval and Max Wait Time","Return immediate processing response (disable waiting) or poll until status is success/failed","Provide a Webhook URL to receive completion callbacks","Retrieve an existing rendering by Rendering ID (get image status and permanent URL)"],"authentication":"API key required (Copicake API credentials)","commonUseCases":["One-off or scheduled image generation from templates for social posts (generate image → download → post)","Automated social media posting workflows (create image then post to Twitter/other platforms)","Dynamic content generation from incoming webhooks (prepare data → create image → email or store result)"],"limitations":["Only supports Create Image and Get Image operations (no built-in template listing, template management, or other API endpoints exposed)","Default synchronous wait behavior polls up to 60 seconds (configurable); very long renders that exceed max wait will return processing state unless webhook is used","Asynchronous processing is handled via polling or webhook — no streaming/progress events beyond polling status","This is a community node (requires accepting community-node risks when installing)"],"relatedNodes":["Manual Trigger","Schedule Trigger","Webhook","Set","HTTP Request"]}


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

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

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

npm_readme:
  # n8n-nodes-gainium

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

  ## ⚡ Gainium Overview

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

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

  ## 🤖 About n8n

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

  ---

  ## 📚 API Documentation

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

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

  ---

  ## 🚀 What You Can Do

  The nodes let you:

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

  ---

  ## 🔧 Use Cases (Examples)

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

  ---

  ## 📦 Installation

  In your n8n instance or custom Docker setup:

      npm install n8n-nodes-gainium

  Then restart your n8n server.

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

  ---

  ## 🔐 Authentication

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

  ---

  ## **🧩 Nodes Included**

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

  ### **Bots**

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

  ### **Deals**

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

  ### **User**

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

  ### **General**

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

  More coming soon.

  ---

  ## **🧠 Agent Tool**

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

  ---

  ## 💡 Example Workflows

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

  ---

  ## 🙋 Support

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

ai_documentation_summary:
  {"purpose":"Provides n8n nodes to interact with the Gainium API so workflows can manage bots, deals, accounts and screener data and trigger trading actions directly from n8n.","capabilities":["Get Grid Bots","Get Combo Bots","Get DCA Bots","Update DCA Bot","Update Combo Bot","Change Bot Pairs","Start Bot","Stop Bot","Clone DCA Bot","Clone Combo Bot"],"authentication":"API key required (set Gainium API Key in the node credentials)","commonUseCases":["Start bots from TradingView/webhook signals","Rebalance portfolios by fetching balances and adjusting bot allocations","Pause or de-risk bots on negative news or sentiment spikes","Scheduled profit taking or step-down of position sizes","Adapt grid/DCA parameters based on volatility changes"],"limitations":["This is a community node — community nodes must be enabled in n8n settings","Features are still expanding (README notes 'More coming soon')","No explicit documentation in the README about rate limiting or built-in pagination handling"],"relatedNodes":["Webhook","Cron","HTTP Request","Telegram","Discord"]}


node_type: n8n-nodes-serpapi.serpApi
package_name: n8n-nodes-serpapi
display_name: SerpApi Official
description: Get live Google Search data and more from SerpApi's official node
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: serpapi
author_github_url: https://github.com/alexbarron/
npm_package_name: n8n-nodes-serpapi
npm_version: 0.1.8
community_fetched_at: 2026-02-19T14:41:52.696Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "google",
      "options": [
        {
          "name": "Amazon Search",
          "value": "amazon",
          "action": "Search Amazon",
          "routing": {
            "request": {
              "qs": {
                "engine": "amazon"
              }
            }
          }
        },
        {
          "name": "Baidu Search",
          "value": "baidu",
          "action": "Search Baidu",
          "routing": {
            "request": {
              "qs": {
                "engine": "baidu"
              }
            }
          }
        },
        {
          "name": "Bing Images",
          "value": "bing_images",
          "action": "Search Bing Images",
          "routing": {
            "request": {
              "qs": {
                "engine": "bing_images"
              }
            }
          }
        },
        {
          "name": "Bing Search",
          "value": "bing",
          "action": "Search Bing",
          "routing": {
            "request": {
              "qs": {
                "engine": "bing"
              }
            }
          }
        },
        {
          "name": "DuckDuckGo Search",
          "value": "duckduckgo",
          "action": "Search DuckDuckGo",
          "routing": {
            "request": {
              "qs": {
                "engine": "duckduckgo"
              }
            }
          }
        },
        {
          "name": "eBay Search",
          "value": "ebay",
          "action": "Search eBay",
          "routing": {
            "request": {
              "qs": {
                "engine": "ebay"
              }
            }
          }
        },
        {
          "name": "Facebook Profile",
          "value": "facebook_profile",
          "action": "Search Facebook Profile",
          "routing": {
            "request": {
              "qs": {
                "engine": "facebook_profile"
              }
            }
          }
        },
        {
          "name": "Google AI Mode",
          "value": "google_ai_mode",
          "action": "Search Google AI Mode",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_ai_mode"
              }
            }
          }
        },
        {
          "name": "Google AI Overview",
          "value": "google_ai_overview",
          "action": "Search Google AI Overview",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_ai_overview"
              }
            }
          }
        },
        {
          "name": "Google Autocomplete",
          "value": "google_autocomplete",
          "action": "Search Google Autocomplete",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_autocomplete"
              }
            }
          }
        },
        {
          "name": "Google Finance",
          "value": "google_finance",
          "action": "Search Google Finance",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_finance"
              }
            }
          }
        },
        {
          "name": "Google Flights",
          "value": "google_flights",
          "action": "Search Google Flights",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_flights"
              }
            }
          }
        },
        {
          "name": "Google Hotels",
          "value": "google_hotels",
          "action": "Search Google Hotels",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_hotels"
              }
            }
          }
        },
        {
          "name": "Google Images",
          "value": "google_images",
          "action": "Search Google Images",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_images"
              }
            }
          }
        },
        {
          "name": "Google Images Light",
          "value": "google_images_light",
          "action": "Search Google Images Light",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_images_light"
              }
            }
          }
        },
        {
          "name": "Google Immersive Product",
          "value": "google_immersive_product",
          "action": "Search Google Immersive Product",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_immersive_product"
              }
            }
          }
        },
        {
          "name": "Google Jobs",
          "value": "google_jobs",
          "action": "Search Google Jobs",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_jobs"
              }
            }
          }
        },
        {
          "name": "Google Lens",
          "value": "google_lens",
          "action": "Search Google Lens",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_lens"
              }
            }
          }
        },
        {
          "name": "Google Light",
          "value": "google_light",
          "action": "Search Google Light",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_light"
              }
            }
          }
        },
        {
          "name": "Google Local",
          "value": "google_local",
          "action": "Search Google Local",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_local"
              }
            }
          }
        },
        {
          "name": "Google Maps",
          "value": "google_maps",
          "action": "Search Google Maps",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_maps"
              }
            }
          }
        },
        {
          "name": "Google Maps Directions",
          "value": "google_maps_directions",
          "action": "Search Google Maps Directions",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_maps_directions"
              }
            }
          }
        },
        {
          "name": "Google Maps Reviews",
          "value": "google_maps_reviews",
          "action": "Search Google Maps Reviews",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_maps_reviews"
              }
            }
          }
        },
        {
          "name": "Google News",
          "value": "google_news",
          "action": "Search Google News",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_news"
              }
            }
          }
        },
        {
          "name": "Google News Light",
          "value": "google_news_light",
          "action": "Search Google News Light",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_news_light"
              }
            }
          }
        },
        {
          "name": "Google Play Games",
          "value": "google_play_games",
          "action": "Search Google Play Games",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_play_games"
              }
            }
          }
        },
        {
          "name": "Google Play Product",
          "value": "google_play_product",
          "action": "Search Google Play Product",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_play_product"
              }
            }
          }
        },
        {
          "name": "Google Play Store",
          "value": "google_play",
          "action": "Search Google Play Store",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_play"
              }
            }
          }
        },
        {
          "name": "Google Product",
          "value": "google_product",
          "action": "Search Google Product",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_product"
              }
            }
          }
        },
        {
          "name": "Google Scholar",
          "value": "google_scholar",
          "action": "Search Google Scholar",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_scholar"
              }
            }
          }
        },
        {
          "name": "Google Search",
          "value": "google",
          "action": "Search Google",
          "routing": {
            "request": {
              "qs": {
                "engine": "google"
              }
            }
          }
        },
        {
          "name": "Google Shopping",
          "value": "google_shopping",
          "action": "Search Google Shopping",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_shopping"
              }
            }
          }
        },
        {
          "name": "Google Trends",
          "value": "google_trends",
          "action": "Search Google Trends",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_trends"
              }
            }
          }
        },
        {
          "name": "Google Trends Trending Now",
          "value": "google_trends_trending_now",
          "action": "Search Google Trends Trending Now",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_trends_trending_now"
              }
            }
          }
        },
        {
          "name": "Google Videos",
          "value": "google_videos",
          "action": "Search Google Videos",
          "routing": {
            "request": {
              "qs": {
                "engine": "google_videos"
              }
            }
          }
        },
        {
          "name": "YouTube Search",
          "value": "youtube",
          "action": "Search YouTube",
          "routing": {
            "request": {
              "qs": {
                "engine": "youtube"
              }
            }
          }
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Amazon Search",
      "value": "amazon",
      "action": "Search Amazon",
      "routing": {
        "request": {
          "qs": {
            "engine": "amazon"
          }
        }
      }
    },
    {
      "name": "Baidu Search",
      "value": "baidu",
      "action": "Search Baidu",
      "routing": {
        "request": {
          "qs": {
            "engine": "baidu"
          }
        }
      }
    },
    {
      "name": "Bing Images",
      "value": "bing_images",
      "action": "Search Bing Images",
      "routing": {
        "request": {
          "qs": {
            "engine": "bing_images"
          }
        }
      }
    },
    {
      "name": "Bing Search",
      "value": "bing",
      "action": "Search Bing",
      "routing": {
        "request": {
          "qs": {
            "engine": "bing"
          }
        }
      }
    },
    {
      "name": "DuckDuckGo Search",
      "value": "duckduckgo",
      "action": "Search DuckDuckGo",
      "routing": {
        "request": {
          "qs": {
            "engine": "duckduckgo"
          }
        }
      }
    },
    {
      "name": "eBay Search",
      "value": "ebay",
      "action": "Search eBay",
      "routing": {
        "request": {
          "qs": {
            "engine": "ebay"
          }
        }
      }
    },
    {
      "name": "Facebook Profile",
      "value": "facebook_profile",
      "action": "Search Facebook Profile",
      "routing": {
        "request": {
          "qs": {
            "engine": "facebook_profile"
          }
        }
      }
    },
    {
      "name": "Google AI Mode",
      "value": "google_ai_mode",
      "action": "Search Google AI Mode",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_ai_mode"
          }
        }
      }
    },
    {
      "name": "Google AI Overview",
      "value": "google_ai_overview",
      "action": "Search Google AI Overview",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_ai_overview"
          }
        }
      }
    },
    {
      "name": "Google Autocomplete",
      "value": "google_autocomplete",
      "action": "Search Google Autocomplete",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_autocomplete"
          }
        }
      }
    },
    {
      "name": "Google Finance",
      "value": "google_finance",
      "action": "Search Google Finance",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_finance"
          }
        }
      }
    },
    {
      "name": "Google Flights",
      "value": "google_flights",
      "action": "Search Google Flights",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_flights"
          }
        }
      }
    },
    {
      "name": "Google Hotels",
      "value": "google_hotels",
      "action": "Search Google Hotels",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_hotels"
          }
        }
      }
    },
    {
      "name": "Google Images",
      "value": "google_images",
      "action": "Search Google Images",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_images"
          }
        }
      }
    },
    {
      "name": "Google Images Light",
      "value": "google_images_light",
      "action": "Search Google Images Light",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_images_light"
          }
        }
      }
    },
    {
      "name": "Google Immersive Product",
      "value": "google_immersive_product",
      "action": "Search Google Immersive Product",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_immersive_product"
          }
        }
      }
    },
    {
      "name": "Google Jobs",
      "value": "google_jobs",
      "action": "Search Google Jobs",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_jobs"
          }
        }
      }
    },
    {
      "name": "Google Lens",
      "value": "google_lens",
      "action": "Search Google Lens",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_lens"
          }
        }
      }
    },
    {
      "name": "Google Light",
      "value": "google_light",
      "action": "Search Google Light",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_light"
          }
        }
      }
    },
    {
      "name": "Google Local",
      "value": "google_local",
      "action": "Search Google Local",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_local"
          }
        }
      }
    },
    {
      "name": "Google Maps",
      "value": "google_maps",
      "action": "Search Google Maps",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_maps"
          }
        }
      }
    },
    {
      "name": "Google Maps Directions",
      "value": "google_maps_directions",
      "action": "Search Google Maps Directions",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_maps_directions"
          }
        }
      }
    },
    {
      "name": "Google Maps Reviews",
      "value": "google_maps_reviews",
      "action": "Search Google Maps Reviews",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_maps_reviews"
          }
        }
      }
    },
    {
      "name": "Google News",
      "value": "google_news",
      "action": "Search Google News",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_news"
          }
        }
      }
    },
    {
      "name": "Google News Light",
      "value": "google_news_light",
      "action": "Search Google News Light",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_news_light"
          }
        }
      }
    },
    {
      "name": "Google Play Games",
      "value": "google_play_games",
      "action": "Search Google Play Games",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_play_games"
          }
        }
      }
    },
    {
      "name": "Google Play Product",
      "value": "google_play_product",
      "action": "Search Google Play Product",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_play_product"
          }
        }
      }
    },
    {
      "name": "Google Play Store",
      "value": "google_play",
      "action": "Search Google Play Store",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_play"
          }
        }
      }
    },
    {
      "name": "Google Product",
      "value": "google_product",
      "action": "Search Google Product",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_product"
          }
        }
      }
    },
    {
      "name": "Google Scholar",
      "value": "google_scholar",
      "action": "Search Google Scholar",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_scholar"
          }
        }
      }
    },
    {
      "name": "Google Search",
      "value": "google",
      "action": "Search Google",
      "routing": {
        "request": {
          "qs": {
            "engine": "google"
          }
        }
      }
    },
    {
      "name": "Google Shopping",
      "value": "google_shopping",
      "action": "Search Google Shopping",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_shopping"
          }
        }
      }
    },
    {
      "name": "Google Trends",
      "value": "google_trends",
      "action": "Search Google Trends",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_trends"
          }
        }
      }
    },
    {
      "name": "Google Trends Trending Now",
      "value": "google_trends_trending_now",
      "action": "Search Google Trends Trending Now",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_trends_trending_now"
          }
        }
      }
    },
    {
      "name": "Google Videos",
      "value": "google_videos",
      "action": "Search Google Videos",
      "routing": {
        "request": {
          "qs": {
            "engine": "google_videos"
          }
        }
      }
    },
    {
      "name": "YouTube Search",
      "value": "youtube",
      "action": "Search YouTube",
      "routing": {
        "request": {
          "qs": {
            "engine": "youtube"
          }
        }
      }
    }
  ]

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

  # n8n-nodes-serpapi

  This repo contains SerpApi's community node for n8n.

  ## Installation

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

  ## Credentials

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

  https://serpapi.com/users/sign_up

  Once registered, you can find your API key here:

  https://serpapi.com/manage-api-key

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

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

  ## Usage

  Add SerpApi to a workflow.

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

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

  ![Test a Google Search through SerpApi](images/test-google-search.png)

  ## API Resources / Search Engines

  This node currently only supports the most popular SerpApi APIs. If there's an API missing that you would like to use, please let us know at contact@serpapi.com

  In the meantime, you can also use the [generic HTTP Request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to construct your search.

  ## Related Resources

  SerpApi's complete API documentation is available here:

  https://serpapi.com/search-api

  You can also find n8n related tutorials on our blog here:

  https://serpapi.com/blog/tag/n8n/

  ## License

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

ai_documentation_summary:
  {"purpose":"An n8n community node that lets workflows run live SerpApi searches (primarily Google Search) and bring SerpApi search results into n8n for further processing.","capabilities":["Execute live search queries via SerpApi (e.g., Google Search)","Access the most popular SerpApi APIs / search engines supported by this node","Configure queries and run a Test step inside n8n to preview results","Return SerpApi API responses for use by downstream nodes in workflows","Use n8n credentials to store and reuse your SerpApi API key"],"authentication":"API key required (SerpApi API key stored as an n8n credential)","commonUseCases":["Automated retrieval of live Google Search results within workflows","Extracting SERP data for SEO monitoring, rank tracking, or research","Enriching records or datasets with search result snippets and metadata","Triggering workflow actions based on search results or changes"],"limitations":["Node currently implements only the most popular SerpApi APIs—some SerpApi endpoints may be missing","If an API/endpoint is not supported by this node, you must use the generic HTTP Request node to call it","Requires a SerpApi account and API key (usage subject to your SerpApi account limits and billing)"],"relatedNodes":["HTTP Request (n8n-nodes-base.httpRequest)"]}


node_type: @tavily/n8n-nodes-tavily.tavily
package_name: @tavily/n8n-nodes-tavily
display_name: Tavily
description: Tavily API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs: "={{['main']}}"
updated_at: 2026-02-19 14:41:52
author_name: konstantintzt
author_github_url: https://github.com/tavily-ai/tavily-n8n-node.git
npm_package_name: @tavily/n8n-nodes-tavily
npm_version: 0.5.1
community_fetched_at: 2026-02-19T14:41:52.699Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Crawl",
          "value": "crawl"
        },
        {
          "name": "Extract",
          "value": "extract"
        },
        {
          "name": "Map",
          "value": "map"
        },
        {
          "name": "Research",
          "value": "research"
        },
        {
          "name": "Search",
          "value": "search"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "urls",
      "options": [
        {
          "name": "URLs",
          "value": "urls",
          "action": "Extract",
          "description": "Extract raw content from URLs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "extract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "query",
      "options": [
        {
          "name": "Query",
          "value": "query",
          "action": "Search",
          "description": "Search query"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "url",
      "options": [
        {
          "name": "URL",
          "value": "url",
          "action": "Crawl",
          "description": "The root URL to begin the crawl"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crawl"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "url",
      "options": [
        {
          "name": "URL",
          "value": "url",
          "action": "Map",
          "description": "Discover all internal links starting from a base URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "map"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Research Task",
          "value": "create",
          "action": "Create research task",
          "description": "Initiate a comprehensive research task on a given topic"
        },
        {
          "name": "Get Research Status",
          "value": "status",
          "action": "Get research status",
          "description": "Retrieve the status and results of a research task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "research"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "URLs",
      "value": "urls",
      "action": "Extract",
      "description": "Extract raw content from URLs"
    },
    {
      "name": "Query",
      "value": "query",
      "action": "Search",
      "description": "Search query"
    },
    {
      "name": "URL",
      "value": "url",
      "action": "Crawl",
      "description": "The root URL to begin the crawl"
    },
    {
      "name": "URL",
      "value": "url",
      "action": "Map",
      "description": "Discover all internal links starting from a base URL"
    },
    {
      "name": "Create Research Task",
      "value": "create",
      "action": "Create research task",
      "description": "Initiate a comprehensive research task on a given topic"
    },
    {
      "name": "Get Research Status",
      "value": "status",
      "action": "Get research status",
      "description": "Retrieve the status and results of a research task"
    }
  ]

npm_readme:
  # @tavily/n8n-nodes-tavily

  @tavily/n8n-nodes-tavily is a node for n8n that integrates the Tavily API, enabling powerful web search and content extraction within your no-code automation workflows.

  ## Features

  ### Tavily Search
  Tavily Search allows you to query the web with powerful filtering capabilities, including options to refine results by topic, time range, and specific domains to include or exclude. You can choose to retrieve a generated answer, raw content, or even related images, depending on your workflow needs. It also supports different search depths—basic or advanced. 

  ### Tavily Extract
   Tavily Extract allows you to effortlessly retrieve raw content from a list of websites, making it ideal for data collection, content analysis, and research. You can also combine Tavily Extract with our Search method: first, obtain a list of relevant documents, then perform further processing on selected links to gather additional information and use it as context for your research tasks.

  ### Tavily Crawl
  Tavily Crawl allows you to intelligently crawl a website from a starting URL to discover and extract content across multiple pages. Control depth, breadth, and apply filters to tailor your crawl for comprehensive analysis and content aggregation.

  ### Tavily Map
  Tavily Map allows you to discover and map out all the URLs within a website starting from a root URL. Unlike Crawl, which extracts content, Map focuses on efficiently building a comprehensive sitemap of a website's structure. This is ideal for understanding site architecture, planning content extraction, or identifying specific pages for further processing.

  ### Tavily Research
  Tavily Research performs comprehensive research on a given topic by conducting multiple searches, analyzing sources, and generating a detailed research report. Choose between different models (Mini for targeted research, Pro for comprehensive multi-angle analysis) and customize the output format with citation styles and structured schemas.

  ## Getting a Tavily API Key

  1. Go to the [Tavily website](https://tavily.com) and create an account
  2. Navigate to the [Tavily dashboard](https://app.tavily.com/home) to get your API key

  ## Configuring Credentials in n8n

  1. In your n8n instance, go to the "Credentials" section
  2. Click "Create Credential"
  3. Search for or select "Tavily API"
  4. Enter your Tavily API key in the appropriate field
  5. Save the credential

  ## Usage

  ### Tavily Search

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node in your workflow
  3. Click on 'Search'
  4. In the node's settings:
     - Select your Tavily API
     - Enter your search query
     - Configure any other desired search parameters (topic, search depth, etc.)
  5. Run the workflow to execute the search

  ### Tavily Extract

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Extract'
  4. In the node's settings:
     - Select your Tavily API credential
     - Enter the URLs you want to extract content from
     - Configure any other extraction parameters (include images, extract depth)
  5. Run the workflow to extract the content

  ### Tavily Crawl

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Crawl'
  4. In the node's settings:
     - Select your Tavily API credential
     - Enter the root URL to begin the crawl
     - Configure crawl parameters (max depth, limit, etc.)
  5. Run the workflow to crawl the website and extract content

  ### Tavily Map

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Map'
  4. In the node's settings:
     - Select your Tavily API credential
     - Enter the root URL to begin mapping
     - Configure map parameters (max depth, limit, filters, etc.)
  5. Run the workflow to map the website's URL structure

  ### Tavily Research

  #### Create Research Task

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Research'
  4. Select 'Create Research Task' operation
  5. In the node's settings:
     - Select your Tavily API credential
     - Enter your research task or question
     - Configure model (Auto, Mini, or Pro) and other options
  6. Run the workflow to initiate the research task
  7. The response will include a `request_id` to check the status later

  #### Get Research Status

  1. Add the "Tavily" node to your n8n workflow
  2. Connect it to the preceding node
  3. Click on 'Research'
  4. Select 'Get Research Status' operation
  5. In the node's settings:
     - Select your Tavily API credential
     - Enter the `request_id` from the create research task response
  6. Run the workflow to get the research status and results

  ## Parameters

  ### Tavily Search Parameters

  | Parameter | Description |
  |-----------|-------------|
  | Query | The search query to execute |
  | Topic | The category of the search (General, News, or Finance) |
  | Search Depth | The depth of the search (Basic or Advanced) |
  | Chunks Per Source (Advanced Search only) | Number of content chunks to retrieve from each source (1-3) |
  | Max Results | Maximum number of search results to return (1-20) |
  | Time Range | Time range filter for results (day, week, month, year) |
  | Days (News Only) | Number of days back from the current date to include (for News topic) |
  | Include Answer | Include an LLM-generated answer in the response (Basic or Advanced) |
  | Include Raw Content | Include cleaned and parsed HTML content of each search result |
  | Include Images | Perform an image search and include the results in the response |
  | Include Image Descriptions | When including images, also add a descriptive text for each image |
  | Include Domains | A list of domains to specifically include in the search results |
  | Exclude Domains | A list of domains to specifically exclude from the search results |
  | Include Favicon | Include the favicon URL for each result |
  | Include Usage | Whether to include credit usage information in the response. |
  | Country | Boost search results from a specific country. |
  | Auto Parameters | When enabled, Tavily automatically configures search parameters based on your query's content and intent |
  | Start Date | Will return all results after the specified start date (publish date). Required to be written in the format YYYY-MM-DD |
  | End Date | Will return all results before the specified end date (publish date). Required to be written in the format YYYY-MM-DD |

  ### Tavily Extract Parameters

  | Parameter | Description |
  |-----------|-------------|
  | URLs | One or more URLs to extract content from |
  | Include Images | Include a list of images extracted from each URL |
  | Extract Depth | How deeply to parse each URL (Basic or Advanced) |
  | Format | Format of the extracted web page content (Markdown or Text) |
  | Include Favicon | Include the favicon URL for each result |
  | Include Usage | Whether to include credit usage information in the response. NOTE:The value may be 0 if the total successful URL extractions has not yet reached 5 calls. See our [Credits & Pricing documentation](https://docs.tavily.com/documentation/api-credits) for details. |

  ### Tavily Crawl Parameters

  | Parameter | Description |
  |-----------|-------------|
  | URL | The root URL to begin the crawl |
  | Instructions | Natural language instructions for the crawler |
  | Max Depth | Maximum depth of the crawl (≥ 1) |
  | Max Breadth | Maximum number of links to follow per level (≥ 1) |
  | Limit | Maximum number of results to return (≥ 1) |
  | Select Paths | Regex patterns to select only URLs with specific path patterns |
  | Select Domains | Regex patterns to select crawling to specific domains or subdomains |
  | Exclude Paths | Regex patterns to exclude URLs with specific path patterns |
  | Exclude Domains | Regex patterns to exclude specific domains or subdomains from crawling |
  | Allow External | Whether to allow following links that go to external domains |
  | Include Images | Whether to include images in the crawl results |
  | Extract Depth | Extraction depth (Basic or Advanced) |
  | Format | Format of the extracted web page content (Markdown or Text) |
  | Include Favicon | Include the favicon URL for each result |
  | Include Usage | Whether to include credit usage information in the response. NOTE:The value may be 0 if the total use of /extract and /map calls has not yet reached minimum needed. See our [Credits & Pricing documentation](https://docs.tavily.com/documentation/api-credits) for details. |

  ### Tavily Map Parameters

  | Parameter | Description |
  |-----------|-------------|
  | URL | The root URL to begin mapping |
  | Instructions | Natural language instructions guiding the mapping process |
  | Max Depth | Defines how far from the base URL the crawler can explore (≥ 1) |
  | Max Breadth | Maximum number of links to follow per level of the tree (≥ 1) |
  | Limit | Total number of links the crawler will process before stopping (≥ 1) |
  | Select Paths | Regex patterns to select only URLs with specific path patterns |
  | Select Domains | Regex patterns to select crawling to specific domains or subdomains |
  | Exclude Paths | Regex patterns to exclude URLs with specific path patterns |
  | Exclude Domains | Regex patterns to exclude specific domains or subdomains from crawling |
  | Allow External | Whether to include external domain links in the final results list |
  | Timeout | Maximum time in seconds to wait for the map operation (10-150) |

  ### Tavily Research Parameters

  #### Create Research Task

  | Parameter | Description |
  |-----------|-------------|
  | Input | The research task or question to investigate |
  | Model | The model used by the research agent (Auto, Mini, or Pro). Mini is optimized for targeted research, Pro provides comprehensive multi-angle research |
  | Citation Format | The format for citations in the research report (Numbered, MLA, APA, or Chicago) |
  | Output Schema | A JSON Schema object that defines the structure of the research output |
  | Stream | Whether to stream research results in real-time as Server-Sent Events (SSE) with progress updates and incremental results |

  #### Get Research Status

  | Parameter | Description |
  |-----------|-------------|
  | Request ID | The unique identifier of the research task returned from the Create Research Task operation |

  ## Troubleshooting

  ### Error Codes

  | Error Code | Description | Solution |
  |------------|-------------|----------|
  | 400 Bad Request | Invalid request parameters or unsupported values | Check all parameters and their formats |
  | 401 Unauthorized | Missing or invalid API key | Verify API key or generate a new one |
  | 429 Too Many Requests | Rate limit exceeded | Reduce request frequency or implement backoff |
  | 432 Plan Limit Exceeded | Exceeds plan limits | Upgrade your plan via [Tavily Dashboard](https://app.tavily.com/billing) |
  | 433 Pay-As-You-Go Limit Exceeded | Exceeds pay-as-you-go limit | Increase limit via [Tavily Dashboard](https://app.tavily.com/billing) |
  | 500 Internal Server Error | Server-side issue | Retry request after a few minutes |

  ## Cost

  Head to the [API Credits Overview](https://docs.tavily.com/documentation/api-credits) in our documentation to learn more about how many API Credits each request costs.

  ## License

  This project is licensed under the terms of the MIT license.

  ## Contact

  If you are encountering issues while using Tavily, please email us at support@tavily.com. We'll be happy to help you.

  If you want to stay updated on the latest Tavily news and releases, head to our [Developer Community](https://community.tavily.com) to learn more!

ai_documentation_summary:
  {"purpose":"Provides integration with the Tavily API to perform web search, content extraction, site crawling/mapping, and multi-step research tasks inside n8n workflows.","capabilities":["Tavily Search: query the web with filters (topic, time range, include/exclude domains), choose search depth (basic/advanced), and return generated answers, raw content, or related images","Tavily Extract: retrieve raw content from a list of URLs, optionally include images and configure extraction depth","Tavily Crawl: crawl a site from a root URL to discover and extract content across multiple pages with control over depth, breadth, limits, and filters","Tavily Map: build a sitemap by discovering URLs from a root URL, with options for depth, limits, and filters (focuses on URL structure rather than content)","Tavily Research: create research tasks and poll/get status/results; supports models (Auto, Mini, Pro), citation styles, and structured output schemas; returns request_id for tracking","Combine workflows: chain Search → Extract (or other sequences) to refine results and gather contextual content for downstream processing"],"authentication":"API key required (configure 'Tavily API' credential in n8n with your Tavily API key)","commonUseCases":["Automated web research: perform multi-query research and produce a structured report with citations","Content collection and analysis: extract article text and images from a list of URLs for NLP or analytics","Site-wide scraping: crawl a website to aggregate content across pages for indexing or monitoring","Sitemap generation and site discovery: map a site's URL structure to plan extraction or audits","Targeted web searches: run filtered searches (by topic, time, domain) and return summarized answers or raw sources"],"limitations":[],"relatedNodes":[]}


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

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

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

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

  # n8n-nodes-chat-data

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

  ## Prerequisites

  To use the ChatData integration, you must have:

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

  ## Installation

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

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

  For n8n desktop app/local installation:

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

  ## Node Reference

  ### Chat Data

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

  #### Operations

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

  ##### Action

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

  ##### Chatbot

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

  ##### Other

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

  ---

  ### Chat Data Trigger

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

  #### Available Triggers

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

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

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

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

  ---

  ## Authentication

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

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

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

  ## Further Information

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

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Provides integration with the ChatData platform to manage chatbots, send and append messages, retrieve leads and conversations, and receive real-time events via webhooks.","capabilities":["Send a Message to a chatbot","Get Leads (retrieve customer leads)","Get Conversations (retrieve conversation history)","Append a Message to an existing conversation (as human agent or bot)","Create Chatbot (setup new AI chatbot)","Retrain Chatbot with new data","Update Base Prompt for a chatbot","Get Chatbot Training Status","Make API Call (custom request to any ChatData API endpoint)","Receive real-time webhook events: On New Message, On Lead Submission, On Live Chat Escalation"],"authentication":"API key required (use ChatData API key via the 'ChatDataApi' credential; provide API key and ChatData instance URL)","commonUseCases":["Send automated or agent messages into chatbots/workflows","Retrieve and process customer leads submitted via chat","Fetch and analyze conversation history for context or reporting","Append messages to ongoing conversations for agent handover or follow-ups","Create, update, and retrain chatbots or modify their base prompts"],"limitations":["Requires a paid ChatData account to use","Authentication limited to API key (no OAuth2 described)","Webhook triggers require the configured chatbot_id to match the incoming payload for proper triggering; debugging requires checking n8n logs"],"relatedNodes":["Chat Data Trigger (Trigger node for webhooks / real-time events)","Chat Data (Action node with the operations listed)"]}


node_type: n8n-nodes-raia.raia
package_name: n8n-nodes-raia
display_name: raia
description: Interact with the official raia API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: richswier
author_github_url: https://github.com/raia-ai/n8n-node.git
npm_package_name: n8n-nodes-raia
npm_version: 1.0.12
community_fetched_at: 2026-02-19T14:41:52.701Z
ai_summary_generated_at: 2026-02-19 16:43:57
npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # 📡 n8n-nodes-raia

  **Custom n8n Node** to interact with the **Raia** platform for managing AI-powered and human-led conversations via SMS, Email, or Voice.

  ## 🚀 Features

  This node allows you to:
  - Start new conversations (SMS, Email)
  - Chat or prompt an agent
  - Use Raia's platform in a single, unified node

  ## 🔧 Node Actions

  | Action                     | Description                                                  |
  |---------------------------|--------------------------------------------------------------|
  | Start SMS Conversation    | Initiate a conversation via SMS                              |
  | Start Email Conversation  | Initiate a conversation via Email                            |
  | Prompt an Agent           | Send a prompt to an agent                                    |

  ## 🧩 Node Parameters

  ### Common Parameters (used in most actions)
  - **First Name**
  - **Last Name**
  - **Context** (e.g., "Support")
  - **Source** (e.g., "crm")
  - **fkId**
  - **fkUserId**

  ### Channel-Specific Parameters

  #### SMS
  - **Phone Number**
  - **SMS Introduction** (for SMS)

  #### Email
  - **Email Address**
  - **Email Subject**
  - **Email Introduction**
  - **Include Signature in Email** (boolean)

  ### Prompt Agent
  - **Prompt**

  ```json
  {
    "conversationId": "string",
    "messageId": "string",
    "userId": "string",
    "message": "string",
    "timestamp": "ISODate"
  }
  ```

  ## Installation

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

  1. Open n8n.
  2. Go to **Settings** > **Community Nodes**.
  3. Click **Install Community Node**.
  4. Enter the name of this package: `n8n-nodes-raia`
  5. Click **Install**.

  For more details, see the [official n8n documentation](https://docs.n8n.io/integrations/community-nodes/installation/verified-install/).

  ## License

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

ai_documentation_summary:
  {"purpose":"A custom n8n node to interact with the Raia platform, enabling creation and management of AI-powered and human-led conversations via SMS and Email and sending prompts to agents.","capabilities":["Start SMS Conversation (initiate a conversation via SMS)","Start Email Conversation (initiate a conversation via Email)","Prompt an Agent (send a prompt/message to an agent)","Set conversation metadata: First Name, Last Name, Context, Source, fkId, fkUserId","Channel-specific inputs: Phone Number and SMS Introduction for SMS; Email Address, Email Subject, Email Introduction, Include Signature in Email for Email","Send message payloads including conversationId, messageId, userId, message, timestamp"],"authentication":"Not specified in README (authentication method not documented; check Raia API docs or node settings)","commonUseCases":["Start an SMS-based support or notification conversation from workflows","Initiate email conversations (with subject/introduction and optional signature) from automation","Send prompts or messages to an AI/human agent as part of a chat flow","Link conversations to CRM records using fkId/fkUserId and source/context metadata","Trigger agent interactions from other n8n workflow events"],"limitations":["README does not document authentication method or credentials required","Voice channel is mentioned in description but no Voice-specific actions are listed in the node actions table","No documentation of message retrieval, conversation history listing, or webhook/event handling","No mention of attachments, templating, or advanced sending options (rate limits, retries, error handling)","No examples of responses, error formats, or required field validation in README"],"relatedNodes":[]}


node_type: n8n-nodes-understandtechchat.understandTechChat
package_name: n8n-nodes-understandtechchat
display_name: Understand Tech Chat
description: Chat with a model in UnderstandTech
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: understandtech
author_github_url: https://github.com/LavaxMaster/n8n-nodes-starter.git
npm_package_name: n8n-nodes-understandtechchat
npm_version: 0.1.5
community_fetched_at: 2026-02-19T14:41:52.701Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "chat",
      "options": [
        {
          "name": "Chat",
          "value": "chat"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send message a chat",
          "description": "Send a message to the chat model"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send message a chat",
      "description": "Send a message to the chat model"
    }
  ]

npm_readme:
  <p align="center">
    <img src="https://raw.githubusercontent.com/LavaxMaster/n8n-nodes-starter/master/nodes/UnderstandTechChat/understandtech_logo.svg" width="400"/>
  </p>

  # n8n-nodes-understandtechchat

  Custom n8n integration nodes for **UnderstandTechChat**, enabling seamless interaction with your platform via authenticated API requests. Built using the [n8n community node starter template](https://github.com/n8n-io/n8n-nodes-starter).

  ## 🧠 What is UnderstandTechChat?

  UnderstandTechChat is a powerful platform that connects users to their own customly trained model and allows you to chat with your model. This custom n8n node allows you to directly integrate and automate your UnderstandTechChat workflows within n8n.

  ---

  ## 🚀 Features

  - Send messages and interact with the UnderstandTechChat API
  - Use custom credentials and authentication
  - Easily plug into any n8n workflow
  - Includes support for multiple HTTP verbs and custom actions

  ---

  ## 📦 Installation

  To install this node in your local or self-hosted n8n instance:

  ```bash
  npm install n8n-nodes-understandtechchat
  ```

  If you’re using Docker:

  ```Dockerfile
  RUN npm install n8n-nodes-understandtechchat
  ```

  Then restart your n8n instance.

  ---

  ## 📋 Prerequisites

  You’ll need:

  - [Git](https://git-scm.com/downloads)
  - Node.js (v20 or later) and [pnpm](https://pnpm.io/)
  - [n8n installed](https://docs.n8n.io/)
    
  Install globally:
  ```bash
  npm install -g n8n
  ```

  ---

  ## 🛠 Development Setup

  1. Clone this repo:
     ```bash
     git clone https://github.com/LavaxMaster/n8n-nodes-starter.git
     cd n8n-nodes-starter
     ```

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

  3. Build and lint:
     ```bash
     npm run build
     npm run lint
     ```

  4. Customize your logic inside:
     - `nodes/UnderstandTechChat/UnderstandTechChat.node.ts`
     - `credentials/UnderstandTechApiCredentials.credentials.ts`

  ---

  ## 🧪 Testing

  You can run and test the node locally within n8n using:
  ```bash
  n8n
  ```

  Then, open the UI and test the `UnderstandTechChat` node in your workflow.

  Refer to the [official guide](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/) for running custom nodes locally.

  ---

  ## 🌍 Publishing to npm

  When you're ready to share:

  1. Update `package.json` fields:
     - `name`
     - `version`
     - `description`
     - `repository`

  2. Build and lint:
     ```bash
     npm run build
     npm run lint
     ```

  3. Publish:
     ```bash
     npm publish --access public
     ```

  ---

  ## 📄 License

  [MIT License](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Provides an n8n node to chat with a custom-trained UnderstandTech model by sending authenticated API requests and integrating model interactions into n8n workflows.","capabilities":["Send messages to an UnderstandTechChat model","Receive and handle model responses for use in workflows","Use custom credentials / authentication for API requests","Support multiple HTTP verbs and custom actions","Embed conversational interactions directly into n8n workflows"],"authentication":"Custom credentials for authenticated API requests (configured via the node's n8n credentials; typically API key or token-based)","commonUseCases":["Automate conversational workflows with a custom-trained UnderstandTech model","Route or transform workflow data based on model responses","Trigger downstream actions (notifications, database updates, webhooks) from chat outputs","Prototype or integrate custom chat-based automations inside n8n"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-alive5.alive5
package_name: n8n-nodes-alive5
display_name: Alive5
description: Send SMS messages via alive5 API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: assadvirgo
author_github_url: https://github.com/wearealive5/
npm_package_name: n8n-nodes-alive5
npm_version: 1.0.27
community_fetched_at: 2026-02-19T14:41:52.702Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "sms",
      "options": [
        {
          "name": "SMS",
          "value": "sms"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send an SMS message",
          "description": "Send an SMS message"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send",
      "value": "send",
      "action": "Send an SMS message",
      "description": "Send an SMS message"
    }
  ]

npm_readme:
  ![Banner image](https://go.alive5.com/images/alive5-banner-1584x396.png)

  # n8n-nodes-alive5

  This is an n8n community node package for Alive5:

  - Send SMS messages (Action node)
  - Trigger workflows when a new message is received (Trigger node)

  [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 these steps to install this community node in your n8n instance:

  1. Open n8n.
  2. Go to **Settings** > **Community Nodes**.
  3. Click **Install Community Node**.
  4. Enter the name of this package: `n8n-nodes-alive5`
  5. Click **Install**.

  For more details, see the [official n8n documentation](https://docs.n8n.io/integrations/community-nodes/installation/verified-install/).

  ## Operations

  - **Send SMS**
    - Send SMS messages via Alive5 API
    - Dynamically select a Channel with a valid phone number
    - Dynamically select a User (Admin or Agent) from the selected Channel
  - **On Message Received (Trigger)**
    - Automatically start a workflow when a new message is received in Alive5
    - Dynamically select a Channel (business line) to listen on
    - Automatically registers and cleans up webhooks on activation/deactivation

  ## Credentials

  The node requires the following credentials:

  - **Alive5 API**
    - API Key: Your Alive5 API key
    - API Base URL: The base URL for the Alive5 API (default: https://api.alive5.com/public/1.1)
    - To obtain an Alive5 SMS account and API key, please contact us at support@alive5.com, view our website at https://www.alive5.com, or book a demo at https://demo.alive5.com

  ## Compatibility

  This node has been tested with n8n version 1.0.0 and above.

  ## Usage

  ### Send SMS

  This operation allows you to send SMS messages using the Alive5 API.

  #### Parameters

  - **From phone Number**
    - The phone number to send the SMS from (e.g., +1234567890)
  - **To phone number**
    - The phone number to send the SMS to (e.g., +1234567890)
  - **Message**
    - The text message to send
  - **Channel**
    - Dynamically select a Channel with a valid phone number
  - **User**
    - Dynamically select a User (Admin or Agent) from the selected Channel

  #### Example

  ```json
  {
  	"nodes": [
  		{
  			"parameters": {
  				"fromPhoneNumber": "+1234567890",
  				"toPhoneNumber": "+1234567890",
  				"message": "Hello from n8n!",
  				"channel": "Channel Name",
  				"agent": "Agent Name"
  			},
  			"name": "Send SMS",
  			"type": "n8n-nodes-alive5.SendSMS",
  			"typeVersion": 1,
  			"position": [300, 300]
  		}
  	],
  	"connections": {}
  }
  ```

  1. Add the Alive5 node to your workflow.
  2. Configure the Alive5 API credentials with your API key.
  3. Set the required parameters:
     - **From phone number**: Your sender phone number.
     - **To phone number**: Recipient's phone number.
     - **Message**: Your SMS message.
     - **Channel**: Select a Channel with a valid phone number.
     - **User**: Select a User (Admin or Agent) from the selected Channel.
  4. Execute the workflow to send the SMS.

  ### On Message Received (Trigger)

  This trigger starts a workflow when Alive5 sends an inbound message event to n8n.

  #### Parameters

  - **Channel**
    - Dynamically select which Alive5 Channel (business line) to listen on

  #### Activation / Deactivation behavior

  - **On activation**: n8n registers your workflow webhook URL in Alive5 for the selected channel
  - **On deactivation**: n8n removes the registered webhook URL from Alive5

  Alive5 webhook registration endpoint used by this node:

  - `POST /1.0/channel/register-webhook-url` with form fields `action=add|remove`, `channel_id`, `webhook_url`

  #### Output

  The trigger outputs the received webhook JSON payload as-is (raw body), so your workflow can map fields like sender phone number, message content, channel id, and timestamp.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Alive5 API Documentation](https://support.alive5.com/public-api-overview)

  ## License

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

ai_documentation_summary:
  {"purpose":"Send SMS messages via the Alive5 API and trigger n8n workflows when inbound messages are received, enabling two-way messaging automation between Alive5 and n8n.","capabilities":["Send SMS messages with configurable From, To, and Message fields","Dynamically select a Channel (business line) that has a valid phone number","Dynamically select a User (Admin or Agent) from the selected Channel for sending","Trigger workflows on inbound messages from Alive5 (webhook-based)","Automatically register and remove webhooks on trigger activation/deactivation","Outputs the inbound webhook payload as the raw JSON body for downstream processing","Uses Alive5 webhook registration endpoint (POST /1.0/channel/register-webhook-url with action=add|remove, channel_id, webhook_url)"],"authentication":"API key required (Alive5 API key). Configurable API Base URL (default: https://api.alive5.com/public/1.1). Requires an Alive5 account to obtain API credentials.","commonUseCases":["Send transactional or notification SMS messages from workflows (alerts, confirmations, reminders)","Start automated workflows when customers reply to messages or send inbound SMS","Route inbound messages to CRM, ticketing systems, or notify agents","Build two-way messaging flows (auto-replies, surveys, lead capture) using inbound triggers"],"limitations":[],"relatedNodes":["Send SMS (Action node)","On Message Received (Trigger node)"]}


node_type: @orisma/n8n-nodes-taximail.taximail
package_name: @orisma/n8n-nodes-taximail
display_name: Taximail
description: Send Email, SMS, OTP via Taximail API with AI content generation or check status/verify OTP
category: AI Agent Tools
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: worngsakorn-orm
author_github_url: https://github.com/wongsakorn-orm/n8n-nodes-taximail.git
npm_package_name: @orisma/n8n-nodes-taximail
npm_version: 1.0.12
community_fetched_at: 2026-02-19T14:41:52.704Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "email",
      "options": [
        {
          "name": "Check Status",
          "value": "check_status"
        },
        {
          "name": "Send Email",
          "value": "email"
        },
        {
          "name": "Send SMS",
          "value": "sms"
        },
        {
          "name": "Send SMS OTP",
          "value": "sms_otp"
        },
        {
          "name": "Verify OTP",
          "value": "verify_otp"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Check Status",
      "value": "check_status"
    },
    {
      "name": "Send Email",
      "value": "email"
    },
    {
      "name": "Send SMS",
      "value": "sms"
    },
    {
      "name": "Send SMS OTP",
      "value": "sms_otp"
    },
    {
      "name": "Verify OTP",
      "value": "verify_otp"
    }
  ]

npm_readme:
  # n8n-nodes-taximail

  This is an n8n community node. It lets you use **Taximail** in your n8n AI Agent workflows as a Tool.

  **Taximail** is a communication service for sending transactional emails and SMS globally. This node allows AI Agents to send messages via Taximail, verify OTP codes, and check message delivery status with intelligent context awareness.

  [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)  
  [AI Agent Configuration](#ai-agent-configuration)  
  [Resources](#resources)

  ---

  ## Installation

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

  Once installed, the `Taximail` node will be available as a **Tool** for AI Agent nodes to use directly.

  ---

  ## Operations

  - **Send Email**: Send transactional emails via Taximail (with `template_key` or custom content).
  - **Send SMS**: Send SMS via Taximail (with `template_key` or custom text).
  - **Send SMS OTP**: Send OTP verification codes via SMS (requires `template_key`).
  - **Verify OTP**: Verify OTP codes entered by users.
  - **Check Status**: Check delivery status of sent messages.

  ---

  ## Credentials

  You will need **Taximail API credentials** to use this node.

  ### Getting Your API Credentials:

  1. Sign up or log in at [https://www.taximail.com](https://www.taximail.com)
  2. Navigate to the Integration section in your dashboard
  3. Generate your API Key and Secret Key
  4. Follow this guide for detailed steps:  
     [https://www.taximail.com/en/support/using-taximail/learn-about-api-integrations](https://www.taximail.com/en/support/using-taximail/learn-about-api-integrations)

  ### Adding Credentials in n8n:

  1. In n8n, create a new credential
  2. Select **"Taximail API"** as the credential type
  3. Enter your credentials:
     - **API Key**: Your Taximail API Key from the Integration section
     - **Secret Key**: Your Taximail Secret Key from the Integration section

  ---

  ## Compatibility

  - Minimum n8n version: `1.45.0` (with AI Agent Tool support)
  - Tested on: `1.45.0`, `1.46.0`
  - No known incompatibilities

  ---

  ## Usage

  This node is designed to be used with **AI Agents** in n8n with intelligent context handling.

  ### Email Operations:

  - **Send Email**: Requires recipient email, sender email, sender name, and either:
    - A `template_key` for using a pre-defined template, or
    - Custom subject and HTML content
  - Returns a `message_id` that can be used to check delivery status later

  ### SMS Operations:

  - **Send SMS**: Requires recipient phone number (MSISDN format with country code) and either:
    - A `template_key` for using a pre-defined template, or
    - Custom SMS text (keep under 160 characters)
  - Returns a `message_id` that can be used to check delivery status later

  ### Smart OTP Operations:

  - **Send SMS OTP**: Requires recipient phone number and a `template_key` (mandatory for OTP)
  - **Verify OTP**: The AI Agent automatically uses the `message_id` from recent OTP sending - no need to ask users for it again!
  - Returns verification status (success/failure)

  ### Status Operations:

  - **Check Status**: Requires a `message_id` from any previous send operation
  - Returns detailed delivery status information

  ### AI Agent Integration:

  When used with AI Agents, the node can:

  - **Smart Context Handling**: Automatically remembers `message_id` from sent OTPs
  - **Intelligent Verification**: Never asks users for `message_id` when it's already available in conversation
  - Detect message type based on context (email vs SMS)
  - Convert phone numbers to proper MSISDN format
  - Ask for missing required parameters
  - Track message delivery with the returned `message_id`

  ### Language support:

  The node works with any language supported by the AI Agent (Thai, English, etc.).

  ---

  ## AI Agent Configuration

  For optimal performance, configure your AI Agent with the following prompt structure:

  ### Recommended AI Agent Prompt:

  ```
  You are a Taximail Communication Assistant, an AI agent specialized in helping users send emails, SMS, and manage OTP communications through the Taximail service.

  ## IMPORTANT: Context Memory Rules

  - **ALWAYS remember information from the current conversation**
  - **When you send an OTP, AUTOMATICALLY save the Message ID for verification**
  - **If user provides an OTP code, use the MOST RECENT Message ID from the conversation**
  - **DO NOT ask for Message ID again if it was already provided in this conversation**

  ## Smart OTP Verification Flow:

  1. When sending OTP → Save Message ID automatically
  2. When user provides OTP code → Use the saved Message ID immediately
  3. Only ask for Message ID if no OTP was sent in this conversation

  ## Example Smart Flow:

  User: "Send OTP to +66891234567"
  You: _Send OTP_ → "OTP sent! Message ID: ABC123 saved for verification"
  User: "The code is 1234"
  You: _Verify immediately using ABC123_ → "Verifying code 1234..."

  Remember: **NEVER ask for information you already have from the conversation context!**
  ```

  ### Memory Configuration:

  Use **Simple Memory** node to store conversation context:

  - **Memory Key**: `taximail_context`
  - **Store**: Message IDs, phone numbers, and verification status
  - **Auto-retrieve**: Recent OTP Message IDs for verification

  ### Example Conversation Flow:

  **Smart Behavior (✅ Correct):**

  ```
  User: "Send OTP to +66891234567"
  Agent: [Sends OTP] "OTP sent successfully! Message ID: XYZ789 saved for verification"
  User: "The OTP code is 5678"
  Agent: [Auto-verifies with XYZ789] "Verifying code 5678 with saved Message ID..."
  ```

  **Poor Behavior (❌ Avoid):**

  ```
  User: "Send OTP to +66891234567"
  Agent: [Sends OTP] "OTP sent successfully! Message ID: XYZ789"
  User: "The OTP code is 5678"
  Agent: "Please provide the Message ID to verify" ← Wrong! Should use XYZ789
  ```

  ---

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Taximail API Key Creation Guide](https://www.taximail.com/en/support/using-taximail/learn-about-api-integrations)
  - [Taximail Platform Documentation](https://www.taximail.com/en/support/using-taximail)
  - [n8n AI Agent Documentation](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/)

ai_documentation_summary:
  {"purpose":"Provides n8n AI Agents a Tool to send transactional emails, SMS, and OTPs via the Taximail API, plus verify OTPs and check delivery status with conversational/context-aware behavior.","capabilities":["Send Email (use template_key or custom subject and HTML content)","Send SMS (use template_key or custom text; custom SMS recommended <160 characters)","Send SMS OTP (OTP sending requires template_key)","Verify OTP (uses most recent saved message_id from conversation automatically)","Check delivery status for a sent message (requires message_id)","Returns message_id for sent messages for tracking","AI-integrated behaviors: automatic message_id memory, MSISDN phone formatting, automatic detection of email vs SMS, prompts for missing parameters"],"authentication":"API Key and Secret Key (Taximail API credentials) required","commonUseCases":["Send transactional emails (notifications, receipts) via template or custom content","Send transactional SMS messages globally","Send SMS OTPs and verify user-provided codes in conversational flows","Track delivery status of sent messages using returned message_id","Integrate messaging actions into AI Agent workflows with automatic context handling"],"limitations":["Sending SMS OTP requires a template_key (cannot send OTP with only custom text)","Custom SMS text should be kept under 160 characters (recommendation)","Status checks and OTP verification require the message_id from a prior send operation (though AI Agent memory can auto-store it)","Designed for use with n8n AI Agent Tool support (minimum n8n version 1.45.0)"],"relatedNodes":["n8n AI Agent (Tool)","Simple Memory (for storing message_id, phone numbers, verification status)","Taximail API credential type (API Key & Secret Key)"]}


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

updated_at: 2026-02-19 14:41:52
author_name: scrapeless_team
author_github_url: https://github.com/scrapeless-ai/
npm_package_name: n8n-nodes-scrapeless
npm_version: 0.4.1
community_fetched_at: 2026-02-19T14:41:52.708Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "scrapingApi",
      "options": [
        {
          "name": "Deep SerpApi",
          "value": "scrapingApi"
        },
        {
          "name": "Universal Scraping API",
          "value": "universalScrapingApi"
        },
        {
          "name": "Crawler",
          "value": "crawler"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Scrape"
        },
        {
          "name": "Crawl",
          "value": "crawl",
          "action": "Crawl"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crawler"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "webUnlocker",
      "options": [
        {
          "name": "Web Unlocker",
          "value": "webUnlocker",
          "action": "Web Unlocker"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "universalScrapingApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "googleSearch",
      "options": [
        {
          "name": "Google Search",
          "value": "googleSearch",
          "action": "Google Search"
        },
        {
          "name": "Google Trends",
          "value": "googleTrends",
          "action": "Google Trends"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scrapingApi"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

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

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

  # n8n-node-scrapeless

  This repo contains Scrapeless's community node for n8n.

  ## Installation

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

  ## Credentials

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

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

  Once registered, you can find your API key here:


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

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

  ## Usage

  Add the Scrapeless node to your workflow.

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

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

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

  ## License

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

ai_documentation_summary:
  {"purpose":"Provides n8n nodes that integrate Scrapeless (web crawling/search) functionality so you can run queries and crawlers from n8n workflows using a Scrapeless API key.","capabilities":["Run Scrapeless searches/queries from a workflow","Trigger and test crawlers (Test step) to validate queries","Configure basic query/crawler parameters inside the node","Return search/crawl results into downstream n8n workflow nodes"],"authentication":"API key required","commonUseCases":["Automate web data extraction by running Scrapeless crawlers from n8n","Integrate Scrapeless search results into downstream workflow processing (transform, store, notify)","Quickly test and validate crawler queries during workflow development"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-magnetite.magnetite
package_name: n8n-nodes-magnetite
display_name: Magnetite
description: Add leads to Magnetite campaigns for automated outreach
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: magnetite
author_github_url: https://github.com/MagnetiteAI/
npm_package_name: n8n-nodes-magnetite
npm_version: 2.0.0
community_fetched_at: 2026-02-19T14:41:52.709Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "campaign",
      "options": [
        {
          "name": "Campaign",
          "value": "campaign"
        },
        {
          "name": "Lead Magnet (Legacy)",
          "value": "leadMagnet"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addLead",
      "options": [
        {
          "name": "Add Lead",
          "value": "addLead",
          "action": "Add a lead to campaign",
          "description": "Add a lead to a campaign for automated outreach"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "campaign"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate a lead magnet",
          "description": "Generate a personalized lead magnet"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get lead magnet status",
          "description": "Retrieve the status of a lead magnet generation job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "leadMagnet"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Lead",
      "value": "addLead",
      "action": "Add a lead to campaign",
      "description": "Add a lead to a campaign for automated outreach"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate a lead magnet",
      "description": "Generate a personalized lead magnet"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get lead magnet status",
      "description": "Retrieve the status of a lead magnet generation job"
    }
  ]

npm_readme:
  # n8n-nodes-magnetite

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

  This is an n8n community node for [Magnetite](https://magnetite.ai). It lets you generate AI-powered, personalized lead magnets directly in your n8n workflows.

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

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

  ## Installation

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

  1. Go to **Settings > Community Nodes**.
  2. Select **Install**.
  3. Enter `n8n-nodes-magnetite` in **Enter npm package name**.
  4. Agree to the risks of installing unverified code from a public source.
  5. Select **Install**.

  After installing the node, you can use it like any other node in your workflows.

  ## Operations

  ### Lead Magnet

  - **Generate**: Create a personalized lead magnet for a lead
  - **Get Status**: Retrieve the status of a lead magnet generation job

  ## Credentials

  This node requires a Magnetite API key. You can obtain this from your Magnetite dashboard:

  1. Log in to your [Magnetite dashboard](https://app.magnetite.ai)
  2. Go to **Project Settings** → **API & Integrations**
  3. Copy your API key

  Configure the credentials in n8n:
  - **API Key**: Your Magnetite API key
  - **Base URL**: `https://app.magnetite.ai` (default)

  ## Compatibility

  - Minimum n8n version: 0.198.0
  - Tested up to n8n version: 1.98.1

  ## Usage

  ### Basic Lead Magnet Generation

  1. Add the **Magnetite** node to your workflow
  2. Set **Operation** to **Generate**
  3. Configure the required fields:
     - **Project ID**: Your Magnetite project ID
     - **Email**: Lead's email address
  4. Optionally add lead information:
     - Full Name, Company, Domain, Industry, etc.
  5. Add custom fields as JSON if your project requires them

  ### Checking Generation Status

  1. Use the **Get Status** operation
  2. Provide the **Job ID** from a previous generation request
  3. The node returns the current status and results when complete

  ### Example Workflow

  ```json
  {
    "nodes": [
      {
        "name": "Magnetite",
        "type": "n8n-nodes-magnetite.magnetite",
        "parameters": {
          "operation": "generate",
          "projectId": "proj_abc123",
          "email": "{{$json.email}}",
          "leadData": {
            "fullName": "{{$json.name}}",
            "company": "{{$json.company}}"
          }
        }
      }
    ]
  }
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Magnetite help](https://help.magnetite.ai)
  - [Magnetite API documentation](https://app.magnetite.ai/docs)

  ## Version history

  ### 1.0.4
  - Updated API docs url to https://app.magnetite.ai/docs

  ### 1.0.2
  - Fixed credential test endpoint
  - Improved connection reliability

  ### 1.0.1
  - Updated GitHub repository URL
  - Documentation improvements

  ### 1.0.0
  - Initial release
  - Generate lead magnets
  - Check generation status
  - Support for all standard lead fields
  - Custom fields support via JSON
  - Webhook notifications support

  ## License

  [MIT](https://github.com/MagnetiteAI/n8n-nodes-magnetite/blob/main/LICENSE)

ai_documentation_summary:
  {"purpose":"Add leads to Magnetite and generate AI-powered, personalized lead magnets from n8n workflows, plus check the status of generation jobs.","capabilities":["Generate a personalized lead magnet for a lead (operation: Generate)","Retrieve status and results of a lead magnet generation job (operation: Get Status)","Accept standard lead fields (email, full name, company, domain, industry, etc.)","Support custom fields via JSON payload","Support webhook notifications for job completion","Configure Project ID and Base URL (default: https://app.magnetite.ai)"],"authentication":"API key required (Magnetite API key; Base URL configurable)","commonUseCases":["Automatically create personalized lead magnets for new leads captured in a workflow","Integrate lead magnet generation into outreach or onboarding sequences","Poll or receive webhooks for generation job completion and route generated assets to downstream nodes (email, storage, CRM)","Attach lead metadata (custom JSON fields) to generation requests for more personalized output"],"limitations":["Exposes only two operations (Generate and Get Status) — no broader campaign management or lead CRUD operations in this node","Requires a Magnetite account and API key","Minimum supported n8n version: 0.198.0 (tested up to 1.98.1)","Community node installation requires consenting to install unverified code from a public source"],"relatedNodes":["Webhook","HTTP Request"]}


node_type: n8n-nodes-qdrant.qdrant
package_name: n8n-nodes-qdrant
display_name: Qdrant
description: Official n8n node to interface with Qdrant - https://qdrant.tech
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: qdrant-tech
author_github_url: https://github.com/qdrant/
npm_package_name: n8n-nodes-qdrant
npm_version: 0.2.1
community_fetched_at: 2026-02-19T14:41:52.710Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "collection",
      "options": [
        {
          "name": "Collection",
          "value": "collection"
        },
        {
          "name": "Payload",
          "value": "payload"
        },
        {
          "name": "Point",
          "value": "point"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "Vector",
          "value": "vector"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Collections",
          "value": "listCollections",
          "action": "List Collections",
          "routing": {
            "request": {
              "url": "/collections",
              "method": "GET"
            }
          },
          "description": "List all collections in the Qdrant instance"
        },
        {
          "name": "Create Collection",
          "value": "createCollection",
          "action": "Create Collection",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}",
              "body": {
                "vectors": "={{JSON.parse($parameter.vectors)}}",
                "init_from": "={{JSON.parse($parameter.initFrom)}}",
                "wal_config": "={{JSON.parse($parameter.walConfig)}}",
                "hnsw_config": "={{JSON.parse($parameter.hnswConfig)}}",
                "shard_number": "={{$parameter.shardNumber}}",
                "sparse_vectors": "={{JSON.parse($parameter.sparseVectors)}}",
                "on_disk_payload": "={{$parameter.onDiskPayload}}",
                "sharding_method": "={{$parameter.shardingMethod}}",
                "optimizers_config": "={{JSON.parse($parameter.optimizersConfig)}}",
                "replication_factor": "={{$parameter.replicationFactor}}",
                "strict_mode_config": "={{JSON.parse($parameter.strictModeConfig)}}",
                "quantization_config": "={{JSON.parse($parameter.quantizationConfig)}}",
                "write_consistency_factor": "={{$parameter.writeConsistencyFactor}}"
              },
              "method": "PUT"
            }
          },
          "description": "Create a new collection in the Qdrant instance"
        },
        {
          "name": "Update Collection",
          "value": "updateCollection",
          "action": "Update Collection",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}",
              "body": {
                "params": "={{JSON.parse($parameter.params)}}",
                "vectors": "={{JSON.parse($parameter.vectors)}}",
                "hnsw_config": "={{JSON.parse($parameter.hnswConfig)}}",
                "sparse_vectors": "={{JSON.parse($parameter.sparseVectors)}}",
                "optimizers_config": "={{JSON.parse($parameter.optimizersConfig)}}",
                "strict_mode_config": "={{JSON.parse($parameter.strictModeConfig)}}",
                "quantization_config": "={{JSON.parse($parameter.quantizationConfig)}}"
              },
              "method": "PATCH"
            }
          },
          "description": "Update parameters of an existing collection in the Qdrant instance"
        },
        {
          "name": "Get Collection",
          "value": "getCollection",
          "action": "Get Collection",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}",
              "method": "GET"
            }
          },
          "description": "Get details of a specific collection"
        },
        {
          "name": "Check If Collection Exists",
          "value": "collectionExists",
          "action": "Check If Collection Exists",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}/exists",
              "method": "GET"
            }
          },
          "description": "Check if a collection exists in the Qdrant instance"
        },
        {
          "name": "Delete Collection",
          "value": "deleteCollection",
          "action": "Delete Collection",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}",
              "method": "DELETE"
            }
          },
          "description": "Delete the specified collection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "collection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Upsert Points",
          "value": "upsertPoints",
          "action": "Upsert Points",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points",
              "body": {
                "points": "={{JSON.parse($parameter.points)}}"
              },
              "method": "PUT"
            }
          },
          "description": "Insert or update points in a collection"
        },
        {
          "name": "Retrieve Point",
          "value": "retrievePoint",
          "action": "Retrieve Point",
          "routing": {
            "request": {
              "url": "=/collections/{{$parameter.collectionName}}/points/{{isNaN(Number($parameter.id)) ?  $parameter.id : Number($parameter.id)}}",
              "method": "GET"
            }
          },
          "description": "Retrieves all details from a single point"
        },
        {
          "name": "Retrieve Points",
          "value": "retrievePoints",
          "action": "Retrieve Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points",
              "body": {
                "ids": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}",
                "with_vector": "={{$parameter.withVector}}",
                "with_payload": "={{$parameter.withPayload}}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieve all details from multiple points"
        },
        {
          "name": "Delete Points",
          "value": "deletePoints",
          "action": "Delete Points",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/delete",
              "body": {
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Delete specified points from the collection"
        },
        {
          "name": "Count Points",
          "value": "countPoints",
          "action": "Count Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/count",
              "body": {
                "exact": "={{$parameter.exact}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Counts the number of points that match a specified filtering condition"
        },
        {
          "name": "Scroll Points",
          "value": "scrollPoints",
          "action": "Scroll Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/scroll",
              "body": {
                "limit": "={{$parameter.limit}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "offset": "={{isNaN(Number($parameter.offset)) ?  $parameter.offset : Number($parameter.offset)}}",
                "order_by": "={{JSON.parse($parameter.orderBy)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}",
                "with_vector": "={{$parameter.withVector}}",
                "with_payload": "={{$parameter.withPayload}}"
              },
              "method": "POST"
            }
          },
          "description": "Returns all points in a page-by-page manner"
        },
        {
          "name": "Batch Update Points",
          "value": "batchUpdatePoints",
          "action": "Batch Update Points",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/batch",
              "body": {
                "operations": "={{JSON.parse($parameter.operations)}}"
              },
              "method": "POST"
            }
          },
          "description": "Batch update points, including their respective vectors and payloads"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "point"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Update Vectors",
          "value": "updateVectors",
          "action": "Update Vectors",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/vectors",
              "body": {
                "points": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "PUT"
            }
          },
          "description": "Update specified vectors on points"
        },
        {
          "name": "Delete Vectors",
          "value": "deleteVectors",
          "action": "Delete Vectors",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/vectors/delete",
              "body": {
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "vector": "={{JSON.parse($parameter.vector)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Delete specified vectors from points"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vector"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Set Payload",
          "value": "setPayload",
          "action": "Set Payload",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/payload",
              "body": {
                "key": "={{$parameter.key ? $parameter.key : null}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "payload": "={{JSON.parse($parameter.payload)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Sets payload values for specified points"
        },
        {
          "name": "Overwrite Payload",
          "value": "overwritePayload",
          "action": "Overwrite Payload",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/payload",
              "body": {
                "key": "={{$parameter.key ? $parameter.key : null}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "payload": "={{JSON.parse($parameter.payload)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "PUT"
            }
          },
          "description": "Replaces the entire payload of specified points with a new payload"
        },
        {
          "name": "Delete Payload",
          "value": "deletePayload",
          "action": "Delete Payload",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/payload/delete",
              "body": {
                "keys": "={{JSON.parse($parameter.keys)}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Deletes specified payload keys from points"
        },
        {
          "name": "Clear Payload",
          "value": "clearPayload",
          "action": "Clear Payload",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/payload/clear",
              "body": {
                "filter": "={{JSON.parse($parameter.filter)}}",
                "points": "={{JSON.parse($parameter.points)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Removes the entire payload for specified points"
        },
        {
          "name": "Payload Facets",
          "value": "payloadFacets",
          "action": "Get Payload Facets",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/facet",
              "body": {
                "key": "={{$parameter.key}}",
                "exact": "={{$parameter.exact}}",
                "limit": "={{$parameter.limit}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieves facets for the specified payload field"
        },
        {
          "name": "Create Payload Index",
          "value": "createPayloadIndex",
          "action": "Create Payload Index",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/index",
              "body": {
                "field_name": "={{$parameter.fieldName}}",
                "field_schema": "={{JSON.parse($parameter.fieldSchema)}}"
              },
              "method": "PUT"
            }
          },
          "description": "Creates a payload index for a field in the specified collection"
        },
        {
          "name": "Delete Payload Index",
          "value": "deletePayloadIndex",
          "action": "Delete Payload Index",
          "routing": {
            "request": {
              "qs": {
                "wait": "={{$parameter.wait}}",
                "ordering": "={{$parameter.ordering}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/index/{{$parameter.fieldName}}",
              "method": "DELETE"
            }
          },
          "description": "Deletes a payload index for a field in the specified collection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "payload"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Query Points",
          "value": "queryPoints",
          "action": "Query Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/query",
              "body": {
                "limit": "={{$parameter.limit}}",
                "query": "={{JSON.parse($parameter.query)}}",
                "using": "={{$parameter.using}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "offset": "={{$parameter.offset}}",
                "params": "={{JSON.parse($parameter.params)}}",
                "prefetch": "={{JSON.parse($parameter.prefetch)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}",
                "lookup_from": "={{JSON.parse($parameter.lookupFrom)}}",
                "with_vector": "={{$parameter.withVector}}",
                "with_payload": "={{$parameter.withPayload}}",
                "score_threshold": "={{$parameter.scoreThreshold}}"
              },
              "method": "POST"
            }
          },
          "description": "Query points in a collection using various search methods"
        },
        {
          "name": "Query Batch Points",
          "value": "queryBatchPoints",
          "action": "Query Batch Points",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/query/batch",
              "body": {
                "searches": "={{JSON.parse($parameter.searches)}}"
              },
              "method": "POST"
            }
          },
          "description": "Query multiple points in batch using various search methods"
        },
        {
          "name": "Query Points Groups",
          "value": "queryPointsGroups",
          "action": "Query Points Groups",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/query/groups",
              "body": {
                "limit": "={{$parameter.limit}}",
                "query": "={{JSON.parse($parameter.query)}}",
                "using": "={{$parameter.using}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "params": "={{JSON.parse($parameter.params)}}",
                "group_by": "={{$parameter.groupBy}}",
                "prefetch": "={{JSON.parse($parameter.prefetch)}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}",
                "group_size": "={{$parameter.groupSize}}",
                "lookup_from": "={{JSON.parse($parameter.lookupFrom)}}",
                "with_lookup": "={{JSON.parse($parameter.withLookup)}}",
                "with_vector": "={{$parameter.withVector}}",
                "with_payload": "={{$parameter.withPayload}}",
                "score_threshold": "={{$parameter.scoreThreshold}}"
              },
              "method": "POST"
            }
          },
          "description": "Query points and group results by a specified payload field"
        },
        {
          "name": "Matrix Pairs",
          "value": "matrixPairs",
          "action": "Matrix Pairs",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/search/matrix/pairs",
              "body": {
                "limit": "={{$parameter.limit}}",
                "using": "={{$parameter.using}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "sample": "={{$parameter.sample}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieve sparse matrix of pairwise distances between points sampled from the collection"
        },
        {
          "name": "Matrix Offsets",
          "value": "matrixOffsets",
          "action": "Matrix Offsets",
          "routing": {
            "request": {
              "qs": {
                "timeout": "={{$parameter.timeout}}",
                "consistency": "={{$parameter.consistency}}"
              },
              "url": "=/collections/{{$parameter.collectionName}}/points/search/matrix/offsets",
              "body": {
                "limit": "={{$parameter.limit}}",
                "using": "={{$parameter.using}}",
                "filter": "={{JSON.parse($parameter.filter)}}",
                "sample": "={{$parameter.sample}}",
                "shard_key": "={{JSON.parse($parameter.shardKey)}}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieve sparse matrix of pairwise distances between points sampled from the collection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List Collections",
      "value": "listCollections",
      "action": "List Collections",
      "routing": {
        "request": {
          "url": "/collections",
          "method": "GET"
        }
      },
      "description": "List all collections in the Qdrant instance"
    },
    {
      "name": "Create Collection",
      "value": "createCollection",
      "action": "Create Collection",
      "routing": {
        "request": {
          "url": "=/collections/{{$parameter.collectionName}}",
          "body": {
            "vectors": "={{JSON.parse($parameter.vectors)}}",
            "init_from": "={{JSON.parse($parameter.initFrom)}}",
            "wal_config": "={{JSON.parse($parameter.walConfig)}}",
            "hnsw_config": "={{JSON.parse($parameter.hnswConfig)}}",
            "shard_number": "={{$parameter.shardNumber}}",
            "sparse_vectors": "={{JSON.parse($parameter.sparseVectors)}}",
            "on_disk_payload": "={{$parameter.onDiskPayload}}",
            "sharding_method": "={{$parameter.shardingMethod}}",
            "optimizers_config": "={{JSON.parse($parameter.optimizersConfig)}}",
            "replication_factor": "={{$parameter.replicationFactor}}",
            "strict_mode_config": "={{JSON.parse($parameter.strictModeConfig)}}",
            "quantization_config": "={{JSON.parse($parameter.quantizationConfig)}}",
            "write_consistency_factor": "={{$parameter.writeConsistencyFactor}}"
          },
          "method": "PUT"
        }
      },
      "description": "Create a new collection in the Qdrant instance"
    },
    {
      "name": "Update Collection",
      "value": "updateCollection",
      "action": "Update Collection",
      "routing": {
        "request": {
          "url": "=/collections/{{$parameter.collectionName}}",
          "body": {
            "params": "={{JSON.parse($parameter.params)}}",
            "vectors": "={{JSON.parse($parameter.vectors)}}",
            "hnsw_config": "={{JSON.parse($parameter.hnswConfig)}}",
            "sparse_vectors": "={{JSON.parse($parameter.sparseVectors)}}",
            "optimizers_config": "={{JSON.parse($parameter.optimizersConfig)}}",
            "strict_mode_config": "={{JSON.parse($parameter.strictModeConfig)}}",
            "quantization_config": "={{JSON.parse($parameter.quantizationConfig)}}"
          },
          "method": "PATCH"
        }
      },
      "description": "Update parameters of an existing collection in the Qdrant instance"
    },
    {
      "name": "Get Collection",
      "value": "getCollection",
      "action": "Get Collection",
      "routing": {
        "request": {
          "url": "=/collections/{{$parameter.collectionName}}",
          "method": "GET"
        }
      },
      "description": "Get details of a specific collection"
    },
    {
      "name": "Check If Collection Exists",
      "value": "collectionExists",
      "action": "Check If Collection Exists",
      "routing": {
        "request": {
          "url": "=/collections/{{$parameter.collectionName}}/exists",
          "method": "GET"
        }
      },
      "description": "Check if a collection exists in the Qdrant instance"
    },
    {
      "name": "Delete Collection",
      "value": "deleteCollection",
      "action": "Delete Collection",
      "routing": {
        "request": {
          "url": "=/collections/{{$parameter.collectionName}}",
          "method": "DELETE"
        }
      },
      "description": "Delete the specified collection"
    },
    {
      "name": "Upsert Points",
      "value": "upsertPoints",
      "action": "Upsert Points",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points",
          "body": {
            "points": "={{JSON.parse($parameter.points)}}"
          },
          "method": "PUT"
        }
      },
      "description": "Insert or update points in a collection"
    },
    {
      "name": "Retrieve Point",
      "value": "retrievePoint",
      "action": "Retrieve Point",
      "routing": {
        "request": {
          "url": "=/collections/{{$parameter.collectionName}}/points/{{isNaN(Number($parameter.id)) ?  $parameter.id : Number($parameter.id)}}",
          "method": "GET"
        }
      },
      "description": "Retrieves all details from a single point"
    },
    {
      "name": "Retrieve Points",
      "value": "retrievePoints",
      "action": "Retrieve Points",
      "routing": {
        "request": {
          "qs": {
            "timeout": "={{$parameter.timeout}}",
            "consistency": "={{$parameter.consistency}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points",
          "body": {
            "ids": "={{JSON.parse($parameter.points)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}",
            "with_vector": "={{$parameter.withVector}}",
            "with_payload": "={{$parameter.withPayload}}"
          },
          "method": "POST"
        }
      },
      "description": "Retrieve all details from multiple points"
    },
    {
      "name": "Delete Points",
      "value": "deletePoints",
      "action": "Delete Points",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/delete",
          "body": {
            "filter": "={{JSON.parse($parameter.filter)}}",
            "points": "={{JSON.parse($parameter.points)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "POST"
        }
      },
      "description": "Delete specified points from the collection"
    },
    {
      "name": "Count Points",
      "value": "countPoints",
      "action": "Count Points",
      "routing": {
        "request": {
          "qs": {
            "timeout": "={{$parameter.timeout}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/count",
          "body": {
            "exact": "={{$parameter.exact}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "POST"
        }
      },
      "description": "Counts the number of points that match a specified filtering condition"
    },
    {
      "name": "Scroll Points",
      "value": "scrollPoints",
      "action": "Scroll Points",
      "routing": {
        "request": {
          "qs": {
            "timeout": "={{$parameter.timeout}}",
            "consistency": "={{$parameter.consistency}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/scroll",
          "body": {
            "limit": "={{$parameter.limit}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "offset": "={{isNaN(Number($parameter.offset)) ?  $parameter.offset : Number($parameter.offset)}}",
            "order_by": "={{JSON.parse($parameter.orderBy)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}",
            "with_vector": "={{$parameter.withVector}}",
            "with_payload": "={{$parameter.withPayload}}"
          },
          "method": "POST"
        }
      },
      "description": "Returns all points in a page-by-page manner"
    },
    {
      "name": "Batch Update Points",
      "value": "batchUpdatePoints",
      "action": "Batch Update Points",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/batch",
          "body": {
            "operations": "={{JSON.parse($parameter.operations)}}"
          },
          "method": "POST"
        }
      },
      "description": "Batch update points, including their respective vectors and payloads"
    },
    {
      "name": "Update Vectors",
      "value": "updateVectors",
      "action": "Update Vectors",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/vectors",
          "body": {
            "points": "={{JSON.parse($parameter.points)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "PUT"
        }
      },
      "description": "Update specified vectors on points"
    },
    {
      "name": "Delete Vectors",
      "value": "deleteVectors",
      "action": "Delete Vectors",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/vectors/delete",
          "body": {
            "filter": "={{JSON.parse($parameter.filter)}}",
            "points": "={{JSON.parse($parameter.points)}}",
            "vector": "={{JSON.parse($parameter.vector)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "POST"
        }
      },
      "description": "Delete specified vectors from points"
    },
    {
      "name": "Set Payload",
      "value": "setPayload",
      "action": "Set Payload",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/payload",
          "body": {
            "key": "={{$parameter.key ? $parameter.key : null}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "points": "={{JSON.parse($parameter.points)}}",
            "payload": "={{JSON.parse($parameter.payload)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "POST"
        }
      },
      "description": "Sets payload values for specified points"
    },
    {
      "name": "Overwrite Payload",
      "value": "overwritePayload",
      "action": "Overwrite Payload",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/payload",
          "body": {
            "key": "={{$parameter.key ? $parameter.key : null}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "points": "={{JSON.parse($parameter.points)}}",
            "payload": "={{JSON.parse($parameter.payload)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "PUT"
        }
      },
      "description": "Replaces the entire payload of specified points with a new payload"
    },
    {
      "name": "Delete Payload",
      "value": "deletePayload",
      "action": "Delete Payload",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/payload/delete",
          "body": {
            "keys": "={{JSON.parse($parameter.keys)}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "points": "={{JSON.parse($parameter.points)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "POST"
        }
      },
      "description": "Deletes specified payload keys from points"
    },
    {
      "name": "Clear Payload",
      "value": "clearPayload",
      "action": "Clear Payload",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/payload/clear",
          "body": {
            "filter": "={{JSON.parse($parameter.filter)}}",
            "points": "={{JSON.parse($parameter.points)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "POST"
        }
      },
      "description": "Removes the entire payload for specified points"
    },
    {
      "name": "Payload Facets",
      "value": "payloadFacets",
      "action": "Get Payload Facets",
      "routing": {
        "request": {
          "qs": {
            "timeout": "={{$parameter.timeout}}",
            "consistency": "={{$parameter.consistency}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/facet",
          "body": {
            "key": "={{$parameter.key}}",
            "exact": "={{$parameter.exact}}",
            "limit": "={{$parameter.limit}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "POST"
        }
      },
      "description": "Retrieves facets for the specified payload field"
    },
    {
      "name": "Create Payload Index",
      "value": "createPayloadIndex",
      "action": "Create Payload Index",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/index",
          "body": {
            "field_name": "={{$parameter.fieldName}}",
            "field_schema": "={{JSON.parse($parameter.fieldSchema)}}"
          },
          "method": "PUT"
        }
      },
      "description": "Creates a payload index for a field in the specified collection"
    },
    {
      "name": "Delete Payload Index",
      "value": "deletePayloadIndex",
      "action": "Delete Payload Index",
      "routing": {
        "request": {
          "qs": {
            "wait": "={{$parameter.wait}}",
            "ordering": "={{$parameter.ordering}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/index/{{$parameter.fieldName}}",
          "method": "DELETE"
        }
      },
      "description": "Deletes a payload index for a field in the specified collection"
    },
    {
      "name": "Query Points",
      "value": "queryPoints",
      "action": "Query Points",
      "routing": {
        "request": {
          "qs": {
            "timeout": "={{$parameter.timeout}}",
            "consistency": "={{$parameter.consistency}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/query",
          "body": {
            "limit": "={{$parameter.limit}}",
            "query": "={{JSON.parse($parameter.query)}}",
            "using": "={{$parameter.using}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "offset": "={{$parameter.offset}}",
            "params": "={{JSON.parse($parameter.params)}}",
            "prefetch": "={{JSON.parse($parameter.prefetch)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}",
            "lookup_from": "={{JSON.parse($parameter.lookupFrom)}}",
            "with_vector": "={{$parameter.withVector}}",
            "with_payload": "={{$parameter.withPayload}}",
            "score_threshold": "={{$parameter.scoreThreshold}}"
          },
          "method": "POST"
        }
      },
      "description": "Query points in a collection using various search methods"
    },
    {
      "name": "Query Batch Points",
      "value": "queryBatchPoints",
      "action": "Query Batch Points",
      "routing": {
        "request": {
          "qs": {
            "timeout": "={{$parameter.timeout}}",
            "consistency": "={{$parameter.consistency}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/query/batch",
          "body": {
            "searches": "={{JSON.parse($parameter.searches)}}"
          },
          "method": "POST"
        }
      },
      "description": "Query multiple points in batch using various search methods"
    },
    {
      "name": "Query Points Groups",
      "value": "queryPointsGroups",
      "action": "Query Points Groups",
      "routing": {
        "request": {
          "qs": {
            "timeout": "={{$parameter.timeout}}",
            "consistency": "={{$parameter.consistency}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/query/groups",
          "body": {
            "limit": "={{$parameter.limit}}",
            "query": "={{JSON.parse($parameter.query)}}",
            "using": "={{$parameter.using}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "params": "={{JSON.parse($parameter.params)}}",
            "group_by": "={{$parameter.groupBy}}",
            "prefetch": "={{JSON.parse($parameter.prefetch)}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}",
            "group_size": "={{$parameter.groupSize}}",
            "lookup_from": "={{JSON.parse($parameter.lookupFrom)}}",
            "with_lookup": "={{JSON.parse($parameter.withLookup)}}",
            "with_vector": "={{$parameter.withVector}}",
            "with_payload": "={{$parameter.withPayload}}",
            "score_threshold": "={{$parameter.scoreThreshold}}"
          },
          "method": "POST"
        }
      },
      "description": "Query points and group results by a specified payload field"
    },
    {
      "name": "Matrix Pairs",
      "value": "matrixPairs",
      "action": "Matrix Pairs",
      "routing": {
        "request": {
          "qs": {
            "timeout": "={{$parameter.timeout}}",
            "consistency": "={{$parameter.consistency}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/search/matrix/pairs",
          "body": {
            "limit": "={{$parameter.limit}}",
            "using": "={{$parameter.using}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "sample": "={{$parameter.sample}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "POST"
        }
      },
      "description": "Retrieve sparse matrix of pairwise distances between points sampled from the collection"
    },
    {
      "name": "Matrix Offsets",
      "value": "matrixOffsets",
      "action": "Matrix Offsets",
      "routing": {
        "request": {
          "qs": {
            "timeout": "={{$parameter.timeout}}",
            "consistency": "={{$parameter.consistency}}"
          },
          "url": "=/collections/{{$parameter.collectionName}}/points/search/matrix/offsets",
          "body": {
            "limit": "={{$parameter.limit}}",
            "using": "={{$parameter.using}}",
            "filter": "={{JSON.parse($parameter.filter)}}",
            "sample": "={{$parameter.sample}}",
            "shard_key": "={{JSON.parse($parameter.shardKey)}}"
          },
          "method": "POST"
        }
      },
      "description": "Retrieve sparse matrix of pairwise distances between points sampled from the collection"
    }
  ]

npm_readme:
  # n8n-nodes-qdrant

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

  This is the official [n8n](https://n8n.io/) node for interfacing with Qdrant.

  [Qdrant](http://qdrant.tech) is a vector similarity search engine that provides a production-ready service with a convenient API to store, search, and manage vectors.

  ## Installation

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

  ## Operations

  The node supports the following operations:

  ### Collection

  - [List Collections](https://api.qdrant.tech/v-1-14-x/api-reference/collections/get-collections) - List all collections in the Qdrant instance
  - [Create Collection](https://api.qdrant.tech/v-1-14-x/api-reference/collections/create-collection) - Create a new collection with specified vector parameters
  - [Update Collection](https://api.qdrant.tech/v-1-14-x/api-reference/collections/update-collection) - Update parameters of an existing collection
  - [Get Collection](https://api.qdrant.tech/v-1-14-x/api-reference/collections/get-collection) - Get information about a specific collection
  - [Collection Exists](https://api.qdrant.tech/v-1-14-x/api-reference/collections/collection-exists) - Check if a collection exists
  - [Delete Collection](https://api.qdrant.tech/v-1-14-x/api-reference/collections/delete-collection) - Delete a collection

  ### Point

  - [Upsert Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/upsert-points) - Insert or update points in a collection
  - [Retrieve Point](https://api.qdrant.tech/v-1-14-x/api-reference/points/get-point) - Get a single point by ID
  - [Retrieve Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/get-points) - Get multiple points by their IDs
  - [Delete Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/delete-points) - Remove points from a collection
  - [Count Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/count-points) - Count points in a collection with optional filtering
  - [Scroll Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/scroll-points) - Scroll through all points in a collection
  - [Batch Update Points](https://api.qdrant.tech/v-1-14-x/api-reference/points/batch-update) - Perform multiple point operations in a single request

  ### Vector

  - [Update Vectors](https://api.qdrant.tech/v-1-14-x/api-reference/points/update-vectors) - Update vectors for existing points
  - [Delete Vectors](https://api.qdrant.tech/v-1-14-x/api-reference/points/delete-vectors) - Remove vectors from points

  ### Search

  - [Query Points](https://api.qdrant.tech/v-1-14-x/api-reference/search/query-points) - Search for similar vectors
  - [Query Points In Batch](https://api.qdrant.tech/v-1-14-x/api-reference/search/query-batch-points) - Perform multiple vector searches in batch
  - [Query Points Groups](https://api.qdrant.tech/v-1-14-x/api-reference/search/query-points-groups) - Group search results by payload field
  - [Matrix Pairs](https://api.qdrant.tech/v-1-14-x/api-reference/search/matrix-pairs) - Calculate distance matrix between pairs of points
  - [Matrix Offsets](https://api.qdrant.tech/v-1-14-x/api-reference/search/matrix-offsets) - Calculate distance matrix using offsets

  ### Payload

  - [Set Payload](https://api.qdrant.tech/v-1-14-x/api-reference/points/set-payload) - Set payload for points
  - [Overwrite Payload](https://api.qdrant.tech/v-1-14-x/api-reference/points/overwrite-payload) - Replace entire payload for points
  - [Delete Payload](https://api.qdrant.tech/v-1-14-x/api-reference/points/delete-payload) - Remove payload from points
  - [Clear Payload](https://api.qdrant.tech/v-1-14-x/api-reference/points/clear-payload) - Clear all payload fields
  - [Payload Facets](https://api.qdrant.tech/v-1-14-x/api-reference/points/facet) - Get payload field statistics
  - [Create Payload Index](https://api.qdrant.tech/v-1-14-x/api-reference/indexes/create-field-index) - Create an index for payload fields
  - [Delete Payload Index](https://api.qdrant.tech/v-1-14-x/api-reference/indexes/delete-field-index) - Remove a payload field index

  ## Credentials

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

  - URL: The REST URL of your Qdrant instance
  - API Key (optional): Your Qdrant API key if authentication is enabled

  ## Compatibility

  This node is compatible with:

  - Qdrant version 1.14.0 and above

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Qdrant Documentation](https://qdrant.tech/documentation/)
  - [Qdrant GitHub Repository](https://github.com/qdrant/qdrant)

ai_documentation_summary:
  {"purpose":"Official n8n node to interface with Qdrant, enabling workflows to store, manage, and search vector data in a Qdrant instance via its REST API.","capabilities":["List Collections","Create Collection","Update Collection","Get Collection","Check if Collection Exists","Delete Collection","Upsert Points (insert or update)","Retrieve a single Point by ID","Retrieve multiple Points by IDs","Delete Points"],"authentication":"REST URL required; API key optional (provide Qdrant API key if authentication is enabled on the instance)","commonUseCases":["Indexing embeddings: upsert vectors and payloads into collections for semantic search","Semantic search: run nearest-neighbor queries or batched queries against collections","Collection management: create, update, list, inspect existence, and delete collections","Point lifecycle: bulk upserts, batch updates, deletes, scrolling and counting of points","Payload management and filtering: set/overwrite/delete payloads, create/delete payload indexes, and compute payload facets"],"limitations":["Compatible with Qdrant version 1.14.0 and above (requires a Qdrant instance meeting this minimum version)"],"relatedNodes":[]}


node_type: @thelifeofrishi/n8n-nodes-orshot.orshot
package_name: @thelifeofrishi/n8n-nodes-orshot
display_name: Orshot
description: Automated Image Generation for Marketing
category: Community
development_style: declarative
version: 3
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: thelifeofrishi
author_github_url: https://github.com/rishimohan/orshot-n8n.git
npm_package_name: @thelifeofrishi/n8n-nodes-orshot
npm_version: 0.5.0
community_fetched_at: 2026-02-19T14:41:52.717Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "https://api.orshot.com/v1/generate/images",
      "options": [
        {
          "name": "Generate Image From a Library Template",
          "value": "https://api.orshot.com/v1/generate/images",
          "action": "Generate an image from a library template",
          "description": "Endpoint: https://api.orshot.com/v1/generate/images"
        },
        {
          "name": "Generate Image From an Orshot Studio Template",
          "value": "https://api.orshot.com/v1/studio/render",
          "action": "Generate an image from a studio template",
          "description": "Endpoint: https://api.orshot.com/v1/studio/render"
        }
      ],
      "required": true,
      "description": "Orshot API Endpoint URL(ref: https://orshot.com/docs/api-reference)",
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Image From a Library Template",
      "value": "https://api.orshot.com/v1/generate/images",
      "action": "Generate an image from a library template",
      "description": "Endpoint: https://api.orshot.com/v1/generate/images"
    },
    {
      "name": "Generate Image From an Orshot Studio Template",
      "value": "https://api.orshot.com/v1/studio/render",
      "action": "Generate an image from a studio template",
      "description": "Endpoint: https://api.orshot.com/v1/studio/render"
    }
  ]

npm_readme:
  # n8n-nodes-orshot

  This is an n8n community node. It lets you use [Orshot](https://orshot.com)'s Image Generation API in your n8n workflows.

  Orshot is an Image Generation API which lets you generate dynamic images from pre-designed and AI generated templates via API and Integrations.

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

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials) <!-- 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

  - Generate Images from a Library Template
  - Generate Images from a Orshot Studio Templates

  ## Credentials

  - You need an API Key for this integration to work
  - You can get an free API Key by signing up on [Orshot](https://orshot.com)
  - After signing up, you can head to your Workspace > Settings > API Key to get your API Key
  - You can use that API Key in the "Token" field in the n8n Integration

  ## Compatibility

  - Works on n8n > 1.00
  - Created on n8n v1.94.1

  ## Usage

  You can refer to [Orshot API Docs](https://orshot.com/docs) to refer to the APIs and their usage along with definitions, examples etc.

  ## Resources

  - [API Docs](https://orshot.com/docs)
  - [Library Templates](https://orshot.com/templates)
  - [Creating a custom API template using Orshot Studio](https://orshot.com/features/orshot-studio)
  - [Creating a template using AI Template Generator](https://orshot.com/features/ai-template-generator)
  - [Integrations](https://orshot.com/integrations)

  ## Version history

  #### 0.5.0

  - Added support for Video generation (`mp4`, `webm`, `gif`) for studio templates
  - Added support for PDF options (`dpi`, `margin`, `colorMode`, `pageRange`)
  - Added support for Video options (`loop`, `muted`, `trimStart`, `trimEnd`)

  #### 0.4.1

  - Added support for `includePages` param for studio templates

  #### 0.4.0

  - Added support for `customFileName` and `scale` params for studio templates

  #### 0.3.5

  - Fixes image generation for "binary" response types

  #### 0.3.0

  - Add correct link to n8n Ingegration doc
  - Show descriptions in studio templates dropdown list

  #### 0.2.5

  - Automatically show dropdown of user's studio templates(previously user needed to enter it manually)

  #### 0.2.0

  - Make repo public and trigger vertification check

  #### 0.1.0

  - Initial Release
  - Actions for rendering from a library and studio template

ai_documentation_summary:
  {"purpose":"Provides n8n access to Orshot's Image Generation API to generate dynamic images (and other media) from pre-designed or AI-generated templates for use in automated workflows.","capabilities":["Generate images from Library templates","Generate images, videos (mp4, webm), and GIFs from Orshot Studio templates","Export/render templates to PDF with options (dpi, margin, colorMode, pageRange)","Configure video options (loop, muted, trimStart, trimEnd)","Set template parameters such as includePages, customFileName, and scale","Return binary responses (files) for generated assets","Auto-populate user's Studio templates via dropdown and show template descriptions"],"authentication":"API key required (provide Orshot API Key in the node's Token field)","commonUseCases":["Automated marketing asset generation from reusable templates","Generating social media images or short videos programmatically","Rendering PDFs of templated designs for download or archival","Bulk or on-demand generation of personalized images for campaigns"],"limitations":["Requires an Orshot account and API key (no OAuth2); features subject to Orshot account/plan limits","Advanced features (video, PDF, includePages, customFileName, scale) are specific to Studio templates","Compatibility limited to n8n versions > 1.00 (node created on n8n v1.94.1)"],"relatedNodes":[]}


node_type: n8n-nodes-camino.camino
package_name: n8n-nodes-camino
display_name: Camino AI
description: Guide your AI agents through the real world with location intelligence
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: jamesbarney
author_github_url: https://github.com/Barneyjm/
npm_package_name: n8n-nodes-camino
npm_version: 0.1.1
community_fetched_at: 2026-02-19T14:41:52.718Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "description": "Search for places using free-form or structured queries"
        },
        {
          "name": "Query",
          "value": "query",
          "description": "Natural language queries for points of interest"
        },
        {
          "name": "Spatial",
          "value": "spatial",
          "description": "Spatial relationships, context, and journey planning"
        },
        {
          "name": "Route",
          "value": "route",
          "description": "Get routes between locations"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchPlaces",
      "options": [
        {
          "name": "Search Places",
          "value": "searchPlaces",
          "action": "Search for places",
          "routing": {
            "request": {
              "url": "/search",
              "method": "POST"
            }
          },
          "description": "Search for places using free-form or structured queries"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "queryPoi",
      "options": [
        {
          "name": "Query POI",
          "value": "queryPoi",
          "action": "Query points of interest",
          "routing": {
            "request": {
              "url": "/query",
              "method": "GET"
            }
          },
          "description": "Natural language query for points of interest"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "query"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "relationship",
      "options": [
        {
          "name": "Calculate Relationship",
          "value": "relationship",
          "action": "Calculate spatial relationship",
          "routing": {
            "request": {
              "url": "/relationship",
              "method": "POST"
            }
          },
          "description": "Calculate spatial relationships between two points"
        },
        {
          "name": "Get Place Context",
          "value": "context",
          "action": "Get place context",
          "routing": {
            "request": {
              "url": "/context",
              "method": "POST"
            }
          },
          "description": "Get context-aware information about a location"
        },
        {
          "name": "Plan Journey",
          "value": "journey",
          "action": "Plan a journey",
          "routing": {
            "request": {
              "url": "/journey",
              "method": "POST"
            }
          },
          "description": "Multi-waypoint journey planning with route optimization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "spatial"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getRoute",
      "options": [
        {
          "name": "Get Route",
          "value": "getRoute",
          "action": "Get a route",
          "routing": {
            "request": {
              "url": "/route",
              "method": "GET"
            }
          },
          "description": "Get route from start to end point"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "route"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search Places",
      "value": "searchPlaces",
      "action": "Search for places",
      "routing": {
        "request": {
          "url": "/search",
          "method": "POST"
        }
      },
      "description": "Search for places using free-form or structured queries"
    },
    {
      "name": "Query POI",
      "value": "queryPoi",
      "action": "Query points of interest",
      "routing": {
        "request": {
          "url": "/query",
          "method": "GET"
        }
      },
      "description": "Natural language query for points of interest"
    },
    {
      "name": "Calculate Relationship",
      "value": "relationship",
      "action": "Calculate spatial relationship",
      "routing": {
        "request": {
          "url": "/relationship",
          "method": "POST"
        }
      },
      "description": "Calculate spatial relationships between two points"
    },
    {
      "name": "Get Place Context",
      "value": "context",
      "action": "Get place context",
      "routing": {
        "request": {
          "url": "/context",
          "method": "POST"
        }
      },
      "description": "Get context-aware information about a location"
    },
    {
      "name": "Plan Journey",
      "value": "journey",
      "action": "Plan a journey",
      "routing": {
        "request": {
          "url": "/journey",
          "method": "POST"
        }
      },
      "description": "Multi-waypoint journey planning with route optimization"
    },
    {
      "name": "Get Route",
      "value": "getRoute",
      "action": "Get a route",
      "routing": {
        "request": {
          "url": "/route",
          "method": "GET"
        }
      },
      "description": "Get route from start to end point"
    }
  ]

npm_readme:
  # n8n-nodes-camino

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

  Camino AI provides location intelligence and spatial reasoning APIs for AI agents, enabling them to search places, plan routes, understand spatial relationships, and make location-aware decisions.

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

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

  ## Installation

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

  ## Operations

  ### Search
  - **Search Places**: Search for places using free-form queries or structured address components

  ### Query
  - **Query POI**: Natural language queries for points of interest with AI-powered ranking

  ### Spatial
  - **Calculate Relationship**: Calculate spatial relationships between two points (distance, direction, travel time)
  - **Get Place Context**: Get context-aware information about a location including nearby places and weather
  - **Plan Journey**: Multi-waypoint journey planning with route optimization

  ### Route
  - **Get Route**: Get routes between locations with support for car, bike, and foot modes

  ## Credentials

  To use this node, you need a Camino AI API key. You can get one by signing up at [getcamino.ai](https://getcamino.ai).

  Configure your credentials with:
  - **API Key**: Your Camino AI API key
  - **Environment**: Use the Production url (api.getcamino.ai) 

  ## Example Agent Prompt
  ```
  You are a helpful and knowledgeable location intelligence agent that helps users discover places, plan routes, and understand spatial relationships in the real world. Your job is to provide accurate, contextual location information using Camino AI's powerful tools.
  Your Main Purpose

  Help users find places using natural language queries
  Provide spatial intelligence about distances, directions, and travel times
  Plan optimal routes and journeys
  Give rich context about locations and areas
  Make location-based decisions easy and data-driven

  Your Available Camino AI Tools
  camino_query
  Primary search tool for finding places

  Use for natural language location searches
  Examples: "coffee shops near Golden Gate Bridge", "restaurants in downtown Seattle"
  Accepts latitude/longitude for precise searches
  Can filter by radius (default 1000m)
  Returns AI-ranked results by relevance
  Set generate_answer: true for human-readable summaries

  camino_search
  Structured address-based search

  Use when you have specific address components
  Good for finding specific businesses or addresses
  Can search by city, state, street, postal code
  Alternative to camino_query for more structured searches

  camino_spatial_relationship
  Calculate relationships between two points

  Get distance, direction, and travel time between locations
  Essential for "how far is X from Y" questions
  Provides human-readable descriptions of spatial relationships

  camino_place_context
  Get contextual information about a location

  Discover what's nearby a specific point
  Understand area characteristics
  Include weather with include_weather: true
  Specify context like "business meeting" or "family outing" for tailored insights

  camino_journey_planning
  Multi-waypoint route optimization

  Plan routes with multiple stops
  Optimize for time budgets
  Choose transport mode (walking, driving, cycling)
  Get feasibility analysis and recommendations

  camino_route_planning
  Point-to-point routing

  Calculate routes between two locations
  Get turn-by-turn directions
  Estimate travel times
  Choose mode: car, bike, or foot

  Interaction Style
  When Users Ask About Places

  Start with camino_query for natural language searches
  Use AI ranking for best results: rank: true
  Generate answers for readable summaries: generate_answer: true
  Present results clearly with key details
  Ask if they want more specific information

  When Users Need Navigation

  Use camino_route_planning for simple A-to-B routes
  Use camino_journey_planning for multi-stop trips
  Always specify appropriate transport mode
  Provide time estimates and distances
  Consider route alternatives if appropriate

  When Users Compare Locations

  Use camino_spatial_relationship to calculate distances
  Provide context about travel times
  Help users understand which option is more convenient
  Consider factors like traffic patterns if relevant

  When Users Want Area Information

  Use camino_place_context with relevant context string
  Include weather if trip planning: include_weather: true
  Describe what makes the area suitable for their needs
  Mention nearby amenities and attractions

  Response Guidelines
  Location Discovery

  Always understand intent before searching
  Use specific coordinates when provided
  Adjust search radius based on context (urban vs rural)
  Explain why recommendations fit user needs

  Providing Directions

  Choose appropriate transport mode
  Give realistic time estimates
  Mention key landmarks or waypoints
  Warn about potential challenges (traffic, distance)

  Contextual Advice

  Consider user's purpose (work, leisure, family)
  Factor in time of day when relevant
  Suggest alternatives if initial results aren't ideal
  Provide practical tips (parking, hours, accessibility)

  Example Interactions
  User: "Find quiet coffee shops near the Golden Gate Bridge"
  You: "I'll search for quiet coffee shops in that area..." [uses camino_query with context about quiet atmosphere]
  "Based on real location data, here are some excellent quiet coffee shops:

  Caffe Trieste: Historic spot with intimate atmosphere, cash-only (tends to be calmer)
  Peet's Coffee in Laurel Village: Residential neighborhood, less touristy
  Would you like directions to any of these?"

  User: "How far is it from Times Square to Central Park?"
  You: "Let me calculate that for you..." [uses camino_spatial_relationship]
  "It's about 0.8 miles (1.3 km) from Times Square to Central Park - roughly a 15-minute walk north. Would you like a walking route with turn-by-turn directions?"
  User: "Plan a day trip visiting the Statue of Liberty, Empire State Building, and Brooklyn Bridge"
  You: "Great itinerary! Let me optimize that route for you..." [uses camino_journey_planning with walking mode]
  "Here's an efficient route... [provides optimized journey]. This would take approximately 4-5 hours with stops. Would you like restaurant recommendations near any of these stops?"
  Best Practices
  Always

  Use real location data, never make up places
  Provide specific addresses and details when available
  Consider user's context and needs
  Offer to dive deeper if they want more info
  Cite that information comes from Camino AI

  Never

  Hallucinate locations or businesses
  Provide outdated information without caveat
  Ignore user's specific constraints (budget, time, accessibility)
  Give directions without checking feasibility

  Tool Selection Strategy

  Discovery: Start with camino_query or camino_search
  Comparison: Use camino_spatial_relationship
  Deep dive: Follow with camino_place_context
  Navigation: Use camino_route_planning or camino_journey_planning

  Keep It Helpful

  Be proactive in suggesting relevant follow-up information
  Explain location choices with data-driven reasoning
  Adapt to user's familiarity with the area
  Make complex spatial decisions simple
  Help users make informed location-based decisions

  Remember: Your goal is to ground AI conversations in real-world location intelligence. Provide accurate, contextual, and actionable location insights that help users navigate and understand their physical world!
  ```

  ## Compatibility

  - Minimum n8n version: 1.0.0
  - Tested against n8n version: 1.113.3

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Camino AI Documentation](https://docs.getcamino.ai)
  - [Camino AI Website](https://getcamino.ai)

  ## License

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

ai_documentation_summary:
  {"purpose":"Expose Camino AI location-intelligence APIs in n8n so workflows and AI agents can search places, plan routes, calculate spatial relationships, and fetch context-aware location information.","capabilities":["Search places via free-form natural language queries (camino_query) with AI ranking and human-readable summaries","Structured address-based place search (camino_search) using components like city, street, postal code","Natural-language POI queries with relevance ranking and optional radius/coordinate filtering","Calculate spatial relationships between two points (distance, direction, travel time) (camino_spatial_relationship)","Fetch place/context information including nearby places and optional weather (camino_place_context)","Multi-waypoint journey planning and route optimization with transport mode and time-budget options (camino_journey_planning)","Point-to-point routing with turn-by-turn directions and travel time estimates for car, bike, and foot (camino_route_planning / Get Route)"],"authentication":"API key required (Camino AI API key); configure API Key and Environment (use production api.getcamino.ai)","commonUseCases":["Find nearby businesses or points of interest from natural language queries (e.g., 'coffee shops near X')","Provide contextual area information for trip planning (nearby amenities, weather, suitability)","Calculate distances, directions, and travel times to compare location options","Generate A-to-B routes with turn-by-turn directions for different transport modes","Optimize multi-stop journeys (route optimization for multiple waypoints and time budgets)"],"limitations":["Requires a Camino AI API key and calls the external Camino API (no local/offline use)","Routing modes explicitly documented are limited to car, bike, and foot","No OAuth2 or alternative auth methods documented (API key only)"],"relatedNodes":[]}


node_type: n8n-nodes-pushinator.pushinator
package_name: n8n-nodes-pushinator
display_name: Pushinator
description: Send notifications using Pushinator
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: makstamoian
author_github_url: https://github.com/appricos/pushinator-n8n.git
npm_package_name: n8n-nodes-pushinator
npm_version: 0.1.4
community_fetched_at: 2026-02-19T14:41:52.719Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "send_notification",
      "options": [
        {
          "name": "Send Notification",
          "value": "send_notification",
          "action": "Send a push notification"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Notification",
      "value": "send_notification",
      "action": "Send a push notification"
    }
  ]

npm_readme:
  # n8n-nodes-pushinator

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

  Pushinator is a powerful push notification service that lets you send real-time updates to iPhone, iPad, and Android devices.

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

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

  ## Installation

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

  ## Operations

  ### Send Notification
  This operation lets you choose a channel from the list of your channels, add the notification text and send the notification to the selected channel.
  ## Credentials

  Your main credential is the API token. If you already have a Pushinator account, go to your [API tokens page](https://console.pushinator.com/tokens), create a new token and note it down. Use this token when connecting your  account in the Pushinator node.

  If you don't have an account:
  - Create an account at https://console.pushinator.com/sign-up
  - Create a channel in the [channels page](https://console.pushinator.com/channels)
  - Create a new token in the [API tokens page](https://console.pushinator.com/tokens), note it down and use it when connecting your account in the Pushinator node.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Pushinator website](https://pushinator.com)
  * [Pushinator API reference](https://pushinator.com/api)

ai_documentation_summary:
  {"purpose":"Send push notifications from n8n workflows to devices using the Pushinator service. It integrates Pushinator so workflows can deliver real-time text notifications to channels/devices.","capabilities":["Send Notification — choose one of your Pushinator channels, enter notification text, and send the notification to the selected channel","Select from the list of your Pushinator channels when composing a notification (implies listing available channels)"],"authentication":"API token required (Pushinator API token)","commonUseCases":["Send real-time updates or alerts to iPhone, iPad, and Android devices","Notify users about workflow events (job completion, failures, status changes)","Deliver monitoring or incident alerts from automated workflows","Push short text notifications to team or app-specific channels"],"limitations":["README only documents a single operation (Send Notification) — no explicit support for channel creation, management, or listing beyond selection","No mention of advanced features such as attachments, rich payloads, scheduling, or per-device targeting (only channel-level delivery described)"],"relatedNodes":[]}


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

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

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

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

  # n8n-nodes-powerbi

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

  ## About the Author

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

  ### Social Media

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

  ## Table of Contents

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

  ## Features

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

  ### Power BI Node

  Comprehensive node that supports two authentication methods:

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

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


  ## Available Resources


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

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

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

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

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

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

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

  ## Authentication Methods

  This node supports two authentication methods:

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

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

  ### Choosing Authentication Method

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


  ### AI Tools Integration

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

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

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

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

  ### 1. Register a New Application

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

  ### 2. Configure API Permissions

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

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

  ### 3. Create the Client Secret

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

  ### 4. Get Configuration Values

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

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

  ## Using the Node

  ### Power BI Node Configuration

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

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

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

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


  ## Limitations and Troubleshooting

  ### Power BI API Limitations

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


  ## Additional Resources

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

  ## License

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

ai_documentation_summary:
  {"purpose":"Provides a unified n8n node to interact with the Microsoft Power BI REST APIs, enabling automation and orchestration of Power BI workspaces, reports, datasets, gateways, and dataflows directly from n8n workflows.","capabilities":["Manage reports: list reports, get report details, get report pages, export reports in multiple formats","Manage dashboards: list dashboards, get dashboard details, retrieve dashboard tiles","Workspace (group) administration: list groups, get group details, list workspace reports/dashboards/datasets","Dataset operations: list datasets, get dataset details, list tables, add rows to dataset tables","Data refresh: trigger dataset refresh, get dataset refresh history","Execute DAX queries against datasets","Dataflow operations: list dataflows, export dataflow JSON, list dataflow data sources, get dataflow transactions, trigger dataflow refresh","Gateway management: list gateways, get gateway details, list/get datasources, check datasource connectivity status, list datasource users","Administration resources: get workspace information (including schema, DAX expressions, lineage, data sources), get scan results","AI tools integration: appear as an AI tool in n8n for natural-language-driven automations"],"authentication":"Supports OAuth2 (Power BI OAuth2 API — interactive Microsoft Entra ID/Azure AD flow with automatic token refresh) and Bearer Token (Power BI API — manual token management)","commonUseCases":["Automate dataset refreshes and monitor refresh history","Export reports on a schedule (PDF/other formats) and distribute results","Append rows to Power BI datasets from upstream ETL or form submissions","Run DAX queries to obtain calculated metrics for downstream processing","Manage workspaces, reports, dashboards and gateways as part of deployment or housekeeping workflows"],"limitations":["OAuth2 requires registering an application in Microsoft Entra ID (Azure AD) and uses an interactive authentication flow (suitable for user-based auth)","Bearer token mode requires pre-obtained tokens and manual token refresh/management","Permissions and capabilities depend on the Power BI service account/scopes; some admin-level operations may require appropriate tenant privileges"],"relatedNodes":[]}


node_type: @joai/n8n-nodes-joai.joai
package_name: @joai/n8n-nodes-joai
display_name: JoAi
description: Send messages as a JoAi agent
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: michavie
author_github_url: https://github.com/JoAiHQ/n8n-nodes.git
npm_package_name: @joai/n8n-nodes-joai
npm_version: 0.3.2
community_fetched_at: 2026-02-19T14:41:52.721Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "sendMessageAsUser",
      "options": [
        {
          "name": "Send Message as User",
          "value": "sendMessageAsUser",
          "action": "Send a message as a user to an agent",
          "description": "Send a message as a user to an agent"
        },
        {
          "name": "Send Message as Agent",
          "value": "sendMessageAsAgent",
          "action": "Send a message as an agent to a room",
          "description": "Send a message as an agent to a room"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": false
    }
  ]

operations:
  [
    {
      "name": "Send Message as User",
      "value": "sendMessageAsUser",
      "action": "Send a message as a user to an agent",
      "description": "Send a message as a user to an agent"
    },
    {
      "name": "Send Message as Agent",
      "value": "sendMessageAsAgent",
      "action": "Send a message as an agent to a room",
      "description": "Send a message as an agent to a room"
    }
  ]

npm_readme:
  # @joai/n8n-nodes-joai

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

  This is an n8n community node that provides integration with JoAi (AI Agent Platform). It allows you to send messages as AI agents and receive real-time webhooks for agent events.

  [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

  Install using npm:
  ```bash
  npm install @joai/n8n-nodes-joai
  ```

  Or via n8n's community nodes interface:
  1. Go to Settings > Community Nodes
  2. Install package: `@joai/n8n-nodes-joai`

  ## Operations

  ### JoAi Node
  - **Send Message**: Send a message as a JoAi agent to a specific room

  ### JoAi Trigger
  - **Webhook Events**: Receive real-time events from JoAi agents
    - Agent Actions
    - Agent Messages
    - User Messages

  ## Credentials

  This node requires JoAi API credentials. You need:

  1. **API Key**: Your JoAi API authentication key
  2. **Base URL**: The base URL for your JoAi API instance (e.g., `https://api.joai.ai`)

  ### Setting up credentials

  1. In n8n, go to **Settings > Credentials**.
  2. Select **Create New**.
  3. Search for **JoAi API** and select it.
  4. Enter your **API Key** and **Base URL**.
  5. Click **Save**.

  ## Compatibility

  - Minimum n8n version: 0.198.0
  - Tested with n8n version: 1.99.1

  ## Usage

  ### Basic Message Sending

  1. Add a **JoAi** node to your workflow
  2. Select **Send Message** operation
  3. Choose your JoAi credentials
  4. Configure the message parameters:
     - **Agent ID**: The UUID of the agent that will send the message
     - **Message**: The content to send
     - **Room** (optional): Room ID to send to
     - **Additional Fields** (optional): Message type and metadata
  5. Execute the workflow

  ### Setting up Webhooks (Automatic)

  1. Add a **JoAi Trigger** node to your workflow
  2. Configure your **JoAi API credentials** (API Key and Base URL)
  3. Enter the **Agent ID** you want to receive webhooks from
  4. Select the **event types** you want to trigger on (Agent Action, Agent Message, User Message)
  5. **Activate the workflow** - webhooks are automatically created in JoAi!
  6. **Test** by triggering an event in JoAi

  The trigger will automatically:
  - ✅ Create webhooks in JoAi when you activate the workflow
  - ✅ Delete webhooks when you deactivate the workflow
  - ✅ Pass all webhook data to the next node in your workflow

  No manual webhook configuration needed!

  ### Example Workflow

  Here's a simple workflow that logs webhook data:

  1. **JoAi Trigger** - Receives webhook from JoAi
  2. **Code Node** - Processes the webhook data:
     ```javascript
     // All webhook data is available in $input.item.json
     const webhookData = $input.item.json;

     return {
       json: {
         event: webhookData.event,
         data: webhookData.data,
         receivedAt: new Date().toISOString()
       }
     };
     ```
  3. **Add other nodes** as needed for your specific use case

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [JoAi API Documentation](https://docs.joai.ai)
  - [GitHub Repository](https://github.com/JoAiHQ/n8n-nodes)

  ## Version history

  ## Support

  If you encounter any issues or have questions:

  1. Check the [GitHub Issues](https://github.com/JoAiHQ/n8n-nodes/issues)
  2. Create a new issue if your problem isn't already reported
  3. Provide as much detail as possible including n8n version, node version, and error messages

  ## Contributing

  Contributions are welcome! Please read our contributing guidelines before submitting pull requests.

  ## License

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

ai_documentation_summary:
  {"purpose":"Integrate n8n with the JoAi AI Agent Platform to send messages as JoAi agents and receive real-time webhook events from agents to drive workflows.","capabilities":["Send Message: send a message as a specific JoAi agent (configure Agent ID, Message, optional Room, message type, metadata)","JoAi Trigger: receive real-time webhook events (Agent Action, Agent Message, User Message)","Automatic webhook lifecycle management: creates webhooks in JoAi on workflow activation and deletes them on deactivation","Pass full webhook payload to downstream nodes for processing","Configure credentials per node (API Key and Base URL)"],"authentication":"API key required (JoAi API Key) plus Base URL (API endpoint) configuration","commonUseCases":["Send automated messages from an agent into a room or conversation","Trigger workflows when an agent performs an action, sends a message, or a user sends a message","Log, transform, or enrich incoming JoAi webhook events","Bridge JoAi agent events/messages with other services (databases, messaging platforms, analytics)","Test or simulate agent interactions by programmatically sending messages"],"limitations":["Node exposes only a Send Message operation and a webhook trigger; no other agent or room management operations are documented","Requires n8n minimum version 0.198.0 (compatibility constraint)"],"relatedNodes":["JoAi Trigger","JoAi (Send Message) node","Code node","Webhook (webhook-based triggers)"]}


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-02-19 14:41:52
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-02-19T14:41:52.722Z
ai_summary_generated_at: 2026-02-19 16:43:57
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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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)"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "name": "List Reservation Logs",
      "value": "LogsBookingReservationGet",
      "action": "List reservation logs",
      "description": "Returns reservation change log entries sorted by the timestamp"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "name": "List Corporate Codes",
      "value": "RateplanCorporate-codesCodesGet",
      "action": "List corporate codes",
      "description": "Returns a list of corporate codes"
    },
    {
      "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"
    },
    {
      "name": "List Promo Codes",
      "value": "RateplanPromo-codesCodesGet",
      "action": "List promo codes",
      "description": "Returns a list of promo codes"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "name": "Get Property Settings",
      "value": "SettingsPropertiesByIdGet",
      "action": "Get property settings"
    },
    {
      "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"
    },
    {
      "name": "Ping",
      "value": "PingerPost",
      "action": "Ping",
      "description": "Health check endpoint"
    },
    {
      "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"
    }
  ]

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":"Provide n8n nodes to interact with the Apaleo REST API to automate property management workflows and receive real-time Apaleo events via webhooks.","capabilities":["CRUD operations (GET, POST, PUT, DELETE) across 40+ Apaleo resources","Manage property data: Property, Unit, UnitGroup, UnitAttribute, PropertySettings, PropertyActions","Manage reservations and related actions: Reservation, ReservationActions, ReservationAvailability, Block, BlockActions, Booking, Group","Handle financials: Folio, FolioActions, FolioPayments, Invoice, InvoiceAction, SubLedger, CapturePolicies, CustomSubAccounts","Manage rates and pricing: Rate, RatePlan, Offer, PromoCodes, CorporateCodes, CancellationPolicy, NoShowPolicy","Account and organization management: Account, AccountActions, Company","Reporting and logs: Reports, BookingLogs, FinanceLogs, Operations","Miscellaneous system resources: Availability, Types, UiIntegrations, Maintenance, AgeCategory, CityTax, FeatureSettings, InvoiceAddress, Languages, MarketSegment, TimeSliceDefinitions, HealthCheck, Subscriptions","Subscribe to and receive Apaleo webhook events (Apaleo Trigger) such as reservation created/modified/canceled, check-in/check-out, payments, folios/invoices, property or rate changes","Select resource-specific operations and actions exposed by the Apaleo API (e.g., check-in, check-out, payment capture)"],"authentication":"OAuth2 (Apaleo OAuth2 API using Client ID and Client Secret)","commonUseCases":["Trigger workflows on reservation events (create, modify, cancel) to notify staff or external systems","Automate check-in/check-out and reservation lifecycle actions","Sync property, unit, and rate data between Apaleo and other systems (channel managers, CRMs, OTAs)","Automate billing: create invoices, post folio charges, process payments and refunds","Monitor system health and generate reports or logs for operations and finance"],"limitations":["Requires an Apaleo account and OAuth2 credentials (Client ID & Client Secret)","Requires n8n 1.0.0 or later and Node.js 20.15 or later","Functionality is limited to what the Apaleo API exposes (some specific operations may not be available via the node)","Webhook trigger depends on Apaleo subscription/webhook configuration and network accessibility for callbacks"],"relatedNodes":["Apaleo (resource node)","Apaleo Trigger (webhook trigger node)","Apaleo OAuth2 API (credential type)"]}


