# nodes

node_type: @easysoftware/n8n-nodes-easy-redmine.easyRedmine
package_name: @easysoftware/n8n-nodes-easy-redmine
display_name: Easy Redmine
description: Easy Redmine Operations
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: martinnovak
author_github_url: https://github.com/easysoftware/n8n-nodes-easy-redmine.git
npm_package_name: @easysoftware/n8n-nodes-easy-redmine
npm_version: 0.5.3
community_fetched_at: 2026-03-25T21:19:40.530Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "issues",
      "options": [
        {
          "name": "Issue",
          "value": "issues"
        },
        {
          "name": "Lead",
          "value": "easy_leads"
        },
        {
          "name": "Opportunity",
          "value": "easy_crm_cases"
        },
        {
          "name": "Project",
          "value": "projects"
        },
        {
          "name": "Account",
          "value": "easy_contacts"
        },
        {
          "name": "Attendance",
          "value": "easy_attendances"
        },
        {
          "name": "Personal Contact",
          "value": "easy_personal_contacts"
        },
        {
          "name": "Time Entry",
          "value": "time_entries"
        },
        {
          "name": "User",
          "value": "users"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single entity"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple entities"
        },
        {
          "name": "Add Comment",
          "value": "add-comment",
          "action": "Add comment",
          "description": "Add a comment to entity"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create entity"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "easy_leads",
            "issues",
            "easy_crm_cases",
            "easy_contacts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single attendance entity"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple attendance entities"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create attendance entity"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update attendance entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "easy_attendances"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single project"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple projects"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single personal contact"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple personal contacts"
        },
        {
          "name": "Add Comment",
          "value": "add-comment",
          "action": "Add comment",
          "description": "Add comment to personal contact"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create personal contact"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update personal contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "easy_personal_contacts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single entity"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple entities"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create entity"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "time_entries"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get-many",
      "options": [
        {
          "name": "Get One",
          "value": "get-one",
          "action": "Get one",
          "description": "Get a single user"
        },
        {
          "name": "Get Many",
          "value": "get-many",
          "action": "Get many",
          "description": "Get multiple user"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create",
          "description": "Create user"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update",
          "description": "Update user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single entity"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple entities"
    },
    {
      "name": "Add Comment",
      "value": "add-comment",
      "action": "Add comment",
      "description": "Add a comment to entity"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create entity"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update entity"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single attendance entity"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple attendance entities"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create attendance entity"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update attendance entity"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single project"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple projects"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single personal contact"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple personal contacts"
    },
    {
      "name": "Add Comment",
      "value": "add-comment",
      "action": "Add comment",
      "description": "Add comment to personal contact"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create personal contact"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update personal contact"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single entity"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple entities"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create entity"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update entity"
    },
    {
      "name": "Get One",
      "value": "get-one",
      "action": "Get one",
      "description": "Get a single user"
    },
    {
      "name": "Get Many",
      "value": "get-many",
      "action": "Get many",
      "description": "Get multiple user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create",
      "description": "Create user"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update",
      "description": "Update user"
    }
  ]

npm_readme:
  # Easy Redmine credentials and node for n8n

  This repo contains n8n node for communication with Easy Redmine.

  ## How to install

  ### ⚙️ Requirements

  To use our community node, you need to have the following requirements:

  - n8n 1.54.4 or newer

  ### 🛠️ Installation in n8n

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

  ### 🔑 Setup credentials

  You need to set up credentials for the Easy Redmine node.
  You can do this by going to the credentials section in n8n and adding a new credential of type "Easy Redmine".

  In the newly created credential, you need to fill in domain, and user api key.

  The domain should be, for example, `https://instance.easyproject.com`.

  To find the API key, go to your Easy Redmine instance, click on your profile in the top right corner.

  ![Go to profile](images/cred-guide-1.png)

  Your profile window will open. Click on the "Edit" button.

  ![Profile window](images/cred-guide-2.png)

  Your profile edit page will open. Scroll down to the Preferences section. Here just copy the API access key.

  ![Preferences section with API key](images/cred-guide-3.png)

  Now, your credentials are ready to use.

  # Easy Redmine node

  The custom node is created to handle all aspects of Easy Redmine integration with n8n.
  Currently available operations and resources are:

  ## Easy Redmine Entities

  A list of all available entities in Easy Redmine node.

  - Accounts
  - Issues
  - Leads
  - Opportunities
  - Personal contacts
  - Users

  ## Accounts

  Account entity is used to manage company contacts. It has identifier `easy_contacts`

  **Operations**

  - **Get one** - returns a detailed view of a single entity. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Add comment** - adds a comment to the entity.
  - **Create** - creates a new account.
    - Custom fields
    - Industry ID
    - Name (known as `firstname` in the entity schema)
    - Type ID
    - Account Manager ID
    - External Account Manager ID
    - Account Status ID
    - Account Level ID
    - Author ID
    - Account Opened
    - Account Closed
    - Customer Left Reason ID
    - Primary Billing Information (see below)
    - Contact Information (see below)
  - **Update** - updates some fields of the entity.
    - Custom fields
    - Industry ID
    - Name (known as `firstname` in the entity schema)
    - Type ID
    - Account Manager ID
    - External Account Manager ID
    - Account Status ID
    - Account Level ID
    - Author ID
    - Account Opened
    - Account Closed
    - Customer Left Reason ID
    - Primary Billing Information (see below)
    - Contact Information (see below)

  ### Primary Billing and Contact Information

  This is a complex field that contains information about the account's billing and contact details. The structure
  is the same for both cases.

  - Company Name
  - Street
  - City
  - Country Code
  - Country Division
  - Postal Code
  - Email
  - Telephone
  - VAT Number
  - VAT Rate
  - Bank Account Number
  - IBAN
  - Variable Symbol
  - SWIFT
  - BIC

  ## Attendance

  Attendance is used to track user attendance. The entity name is `easy_attendance`.

  **Operations**

  - **Get one** - returns a detailed view of a single attendance record. The entity is specified by its ID.
  - **Get many** - returns a list of attendance records. You should use easy query id to specify the filter.
  - **Create** - creates a new attendance record.
    - Arrival (required)
    - Departure
    - Description
    - Activity ID
  - **Update** - updates some fields of the attendance record.
    - Arrival
    - Departure
    - Description
    - Activity ID

  ## Issues

  Issues are mostly Redmine issues. The identifier is `issue`.

  **Operations**

  - **Get one** - returns a detailed view of a single entity. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Add comment** - adds a comment to the entity.
  - **Create** - creates a new issue.
    - Subject (required)
    - Project ID (required)
    - Assigned To ID
    - Custom fields
    - Description
    - Done Ratio
    - Due Date
    - Estimated Hours
    - Is Private
    - Parent Issue ID
    - Priority ID
    - Start Date
    - Status ID
    - Tracker ID
  - **Update** - updates some fields of the entity.
    - Assigned To ID
    - Custom fields
    - Description
    - Done Ratio
    - Due Date
    - Estimated Hours
    - Is Private
    - Parent Issue ID
    - Priority ID
    - Project ID
    - Start Date
    - Subject
    - Tracker ID
    - Status ID
  - **Add Comment** - adds a comment to the issue.
    - Comment (required)
    - Private Note

  ## Leads

  Leads are CRM entities that refer to potential custom.
  The identifier is `easy_lead`.

  **Operations**

  - **Get one** - returns a detailed view of a single lead. The entity is specified by its ID.
  - **Get many** - returns a list of leads. You should use easy query id to specify the filter.
  - **Add comment** - adds a comment to the lead.
  - **Create** - creates a new lead.
    - Company Name
    - Description
    - Custom fields
  - **Update** - updates some fields of the leads.
    - Company Name
    - Description
    - Custom fields

  ## Opportunities

  Opportunities are CRM entities that represent a potential sale. The entity name is `easy_crm_case`.

  **Operations**

  - **Get one** - returns a detailed view of a single opportunity. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Add comment** - adds a comment to the opportunity.
  - **Create** - creates a new opportunity.
    - Name (required)
    - Project ID (required)
    - Account ID (required)
    - Status ID
    - Assigned To ID
    - External Assigned To ID
    - Price
    - Contract Date
    - Custom fields
  - **Update** - updates some fields of the opportunity.
    - Name
    - Description
    - Project ID
    - Status ID
    - Assigned To ID
    - External Assigned To ID
    - Price
    - Contract Date
    - Custom fields

  ## Personal contacts

  Personal contacts are CRM entities that represent a person. The entity name is `easy_personal_contacts`.

  **Operations**

  - **Get one** - returns a detailed view of a single personal contact. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Create** - creates a new personal contact.
    - Account ID (required or partner ID)
    - Partner ID (required or account ID)
    - First name (required)
    - Last name (required)
    - Email (required)
    - Job title
    - Custom fields
  - **Update** - updates some fields of the personal contact.
    - Account ID
    - Partner ID
    - First name
    - Last name
    - Email
    - Job title
    - Custom fields

  ## Projects

  Projects are used to manage project tasks. The entity name is `project`.

  **Operations**

  - **Get one** - returns a detailed view of a single project. The entity is specified by its ID.
  - **Get many** - returns a list of projects. You should use easy query id to specify the filter.

  ## Time entries

  Time entries are used to track time spent on issues. The entity name is `time_entry`.

  **Operations**

  - **Get one** - returns a detailed view of a single time entry. The entity is specified by its ID.
  - **Get many** - returns a list of time entries. You should use easy query id to specify the filter.
  - **Create** - creates a new time entry.
    - Hours (required)
    - Activity ID
    - Comment
    - Project ID
    - Spent On
    - User ID
    - Custom Fields
  - **Update** - updates some fields of the time entry.
    - Activity ID
    - Comment
    - Hours
    - Project ID
    - Spent On
    - User ID
    - Custom Fields

  ## Users

  Users are Easy Redmine users. The entity name is `user`.

  **Operations**

  - **Get one** - returns a detailed view of a single user. The entity is specified by its ID.
  - **Get many** - returns a list of entities. You should use easy query id to specify the filter.
  - **Create** - creates a new user
    - Login (required)
    - First name (required)
    - Last name (required)
    - Email (required)
    - Phone
    - Custom fields
  - **Update** - updates some fields of the user.
    - ID (required)
    - Login
    - First name
    - Last name
    - Email
    - Phone
    - Custom Fields

ai_documentation_summary:
  {"purpose":"The Easy Redmine node enables n8n workflows to interact with Easy Redmine instances, supporting CRUD operations on entities like accounts, issues, leads, opportunities, personal contacts, and users.","capabilities":["Retrieve single or multiple records for Accounts, Issues, Leads, Opportunities, Personal Contacts, and Users","Create new records for Accounts, Attendance, Issues, Leads, and Opportunities","Update existing records for Accounts, Attendance, Issues, Leads, and Opportunities","Add comments to Accounts, Issues, Leads, and Opportunities","Manage attendance records with arrival, departure, description, and activity fields","Handle complex billing and contact information fields for accounts","Filter records using 'easy query id' parameter"],"authentication":"API key required (Domain and User API Key)","commonUseCases":["Automating issue tracking and status updates in Redmine projects","Managing CRM leads and opportunities within n8n workflows","Tracking employee attendance and activity records","Synchronizing account and contact information between systems"],"limitations":["Requires n8n version 1.54.4 or newer","Personal contacts section details are truncated in the provided README"],"relatedNodes":["n8n HTTP Request","n8n Redmine (if available)","n8n CRM nodes"]}


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-03-25 21:19:40
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-03-25T21:19:40.530Z
ai_summary_generated_at: 2026-03-25 22:51:43
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":"An n8n community node that integrates with the ProspectPro API to manage and retrieve prospect, contact, pageview, and event data within workflows.","capabilities":["Retrieve single prospect data","Search and retrieve multiple prospects with filtering","Update prospect information","Retrieve pageview data","Retrieve contact information","Create new contacts","Update existing contacts","Delete contacts","Retrieve event data","Create new events"],"authentication":"API key required","commonUseCases":["Automated lead management workflows","Tracking prospect engagement via pageviews","Creating and updating CRM contacts","Logging custom events for sales tracking","Automated prospect discovery and qualification"],"limitations":["Requires external ProspectPro API key and account","Requires n8n version 0.187.0 or later","Requires Node.js version 20.15 or later","Community node (may have limited support compared to official nodes)"],"relatedNodes":["ProspectPro Trigger Node","ProspectPro API Credentials","n8n Community Nodes"]}


node_type: @leadspicker/n8n-nodes-leadspicker.leadspickerTrigger
package_name: @leadspicker/n8n-nodes-leadspicker
display_name: Leadspicker Trigger
description: Receive Leadspicker webhook events for multiple features
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: janskacel
author_github_url: https://github.com/Leadspicker/n8n-nodes-leadspicker.git
npm_package_name: @leadspicker/n8n-nodes-leadspicker
npm_version: 0.4.4
community_fetched_at: 2026-03-25T21:19:40.531Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # **n8n-nodes-leadspicker**

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

  Leadspicker is a B2B data and sales intelligence platform that helps businesses find, enrich, and connect with relevant contacts.

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

  [Installation](#installation)

  [Operations](#operations)

  [Triggers](#triggers)

  [Credentials](#credentials)

  [Compatibility](#compatibility)

  [Resources](#resources)

  [Changelog](#changelog)

  ## **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 resources and operations:

  * **Lead**
    * Create a new lead in a campaign
    * Delete a lead
    * Get a lead by ID
    * List leads in a campaign
    * Update an existing lead
    * Find leads by a company's LinkedIn URL
    * Find leads by a company's name
  * **Campaign**
    * Create a new campaign
    * Delete a campaign
    * Get the campaign log (timeline events with optional search, date, person, and type filters)
    * Add a lead to the campaign exclusion list
    * Remove a lead from the campaign exclusion list
    * Get the campaign exclusion list
  * **Reply**
    * Get replies based on filters (email accounts, campaigns, sentiment)
  * **Linkedin Activity**
    * Get a LinkedIn profile's details
    * Get a profile's latest posts
    * Get a profile's recent activities (reactions and comments)
    * Get people who reacted to posts and send the results to a webhook
    * Retrieve LinkedIn profiles that reacted to posts returned by a content search URL
    * Retrieve reactors for posts authored by specific LinkedIn profiles
  * **Global Exclusion List**
    * Add a lead identifier to the global exclusion list
    * Remove a lead identifier from the global exclusion list
    * Get the global exclusion list
  * **Outreach**
    * List LinkedIn outreach accounts
    * List email outreach accounts
  * **Account**
    * Get account info and limits

  Note: The Linkedin Activity operations "Search Post Reactors" and "Profiles Post Reactors" auto-paginate. They aggregate all pages internally (handling the cursor automatically) and return a single flat list of reactor profiles.

  ## **Triggers**

  The Leadspicker Trigger node lets you subscribe to webhook events across all projects or filter down to a single campaign and fire workflows from these Leadspicker events:

  * Account revoked (connected account access revoked)
  * Email bounced
  * Email reply
  * Email sent
  * LinkedIn reply
  * LinkedIn sent
  * Lead added to a project

  ## **Credentials**

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

  1. Sign up for an account with [Leadspicker](https://leadspicker.com/).
  2. Find your API Key in your account settings on the Leadspicker platform.
  3. In n8n, create a new credential for the Leadspicker node.
  4. Enter your API Key into the credential configuration screen.

  ## **Compatibility**

  This node has been developed and tested against n8n version 1.0.0. It may work with older versions, but it is not guaranteed.

  ## **Resources**

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

  ## **Changelog**

  ### 0.4.3

  * Replaced global timer usage with n8n workflow sleep helper to satisfy community-node linting.

  ### 0.4.2

  * Compliance fixes for n8n verification (removed external dependency usage and updated auth helper).

  ### 0.4.1
  * Added an **Account** resource with a "Get Account Info" action that surfaces subscription renewal dates, allowed LinkedIn/email accounts, allowed robots, and how many robots are currently running.
  * Added an **Outreach** resource to list all connected LinkedIn accounts and configured email accounts in one call so workflows can fan out automatically.
  * Added campaign-level exclusion list management actions (add, remove, list).
  * Added a **Global Exclusion List** resource to manage the organization-wide blacklist and return categorized LinkedIn/email/domain identifiers.
  * Leadspicker Trigger can now listen to every project when no campaign is selected.
  * Leadspicker Trigger requests Leadspicker to immediately send a test payload whenever the node is executed manually so `Test workflow` runs receive sample data instantly.
  * Added a **Bulk Create Leads** action under the Lead resource to send multiple user-provided leads (with optional custom fields) to the `/persons/bulk` API endpoint in a single call.

  ### 0.4.0

  * **Breaking:** Replaced the legacy `leadspickerNode` with the new `Leadspicker` node (type `leadspicker`), renamed resources to Lead/Campaign/Reply/Linkedin, and moved the AutoCPH operations under the Lead resource. Existing workflows referencing `leadspickerNode` must be recreated.
  * **Breaking:** Lead operations now expose individual fields (name, email, company, socials, custom fields) and all ID selectors use "Name or ID" dropdowns with a manual ID fallback, so any references to the previous collection-style parameters need to be reconfigured.
  * **Breaking:** Lead responses are flattened (no nested `person_data`) and the Lead/Reply list operations auto-paginate to return the entire dataset rather than a single page, changing the output structure and removing pagination parameters.
  * Added the Leadspicker Trigger node that manages webhooks for account revoked, email sent/replied/bounced, LinkedIn sent/replied, and lead-added events per campaign.
  * Linkedin Activity operations gained new controls (include/exclude profile cards, opt-in liker/commenter collection) and cursor-based aggregation so reactor searches return a single deduplicated array.
  * Lead finders now return the same flattened lead payloads as create/get/update results, keeping company/contact metadata consistent when searching by company name or LinkedIn URL.

  ### 0.3.1

  * Legacy release of the original `leadspickerNode` implementation.

ai_documentation_summary:
  {"purpose":"The Leadspicker Trigger node allows n8n workflows to subscribe to and process webhook events from the Leadspicker B2B sales intelligence platform, enabling automation based on account changes, email activities, and lead additions.","capabilities":["Subscribe to webhook events for multiple features","Handle Account Revoked events","Handle Email Bounced events","Handle Email Reply events","Handle Email Sent events","Handle LinkedIn Reply events","Handle LinkedIn Sent events","Handle Lead Added to Project events","Filter events by specific campaigns","Listen to all projects when no campaign is selected"],"authentication":"API Key required","commonUseCases":["Automate workflows triggered by new lead additions","Process email replies and bounces automatically","Monitor account access revocations","Track LinkedIn activity and engagement","Filter incoming events by specific campaigns"],"limitations":["Requires a Leadspicker account and API key","Compatible primarily with n8n version 1.0.0 and newer","Requires manual reconfiguration of existing workflows using the legacy leadspickerNode"],"relatedNodes":["Leadspicker Operation Node","Leadspicker Credential Node","Webhook Node","Email Node","LinkedIn Node"]}


node_type: @tehw0lf/n8n-nodes-toon.toon
package_name: @tehw0lf/n8n-nodes-toon
display_name: TOON
description: Convert between TOON and JSON formats with zero external dependencies
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: tehw0lf
author_github_url: https://github.com/tehw0lf/n8n-nodes-toon.git
npm_package_name: @tehw0lf/n8n-nodes-toon
npm_version: 1.2.1
community_fetched_at: 2026-03-25T21:19:40.532Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "jsonToToon",
      "options": [
        {
          "name": "JSON to TOON",
          "value": "jsonToToon",
          "action": "Convert JSON to TOON",
          "description": "Convert JSON data to TOON format"
        },
        {
          "name": "TOON to JSON",
          "value": "toonToJson",
          "action": "Convert TOON to JSON",
          "description": "Parse TOON format to JSON"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "JSON to TOON",
      "value": "jsonToToon",
      "action": "Convert JSON to TOON",
      "description": "Convert JSON data to TOON format"
    },
    {
      "name": "TOON to JSON",
      "value": "toonToJson",
      "action": "Convert TOON to JSON",
      "description": "Parse TOON format to JSON"
    }
  ]

npm_readme:
  # @tehw0lf/n8n-nodes-toon

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

  This is an n8n community node that provides bidirectional conversion between **TOON (Token-Oriented Object Notation)** and JSON formats. TOON is a line-oriented, indentation-based format optimized for LLM prompts and structured data interchange.

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

  ## Table of Contents

  - [What is TOON?](#what-is-toon)
  - [Installation](#installation)
  - [Operations](#operations)
  - [Configuration Options](#configuration-options)
  - [Usage Examples](#usage-examples)
  - [Use Cases](#use-cases)
  - [Compatibility](#compatibility)
  - [Zero Dependencies](#zero-dependencies)
  - [Resources](#resources)

  ## What is TOON?

  **TOON (Token-Oriented Object Notation)** is a compact text format that encodes the JSON data model with explicit structure and minimal quoting. It's particularly efficient for arrays of uniform objects — common in data exports, API responses, and LLM prompts.

  ### Key Features

  - **Line-oriented and indentation-based** — similar to YAML but more deterministic
  - **Minimal quoting** — strings are quoted only when necessary
  - **Explicit array lengths** — detect truncation and malformed data
  - **Tabular arrays** — declare field lists once, then list values row by row
  - **Multiple delimiters** — comma, tab, or pipe for different use cases
  - **Zero external dependencies** — pure Node.js implementation

  ### Quick Example

  **JSON:**
  ```json
  {
    "users": [
      {"id": 1, "name": "Alice", "role": "admin"},
      {"id": 2, "name": "Bob", "role": "user"}
    ]
  }
  ```

  **TOON:**
  ```
  users[2]{id,name,role}:
    1,Alice,admin
    2,Bob,user
  ```

  The TOON format is **50% more compact** than JSON for tabular data, making it ideal for:
  - **LLM prompts** — fit more context in token limits
  - **Data serialization** — compact representation of structured data
  - **API responses** — human-readable but machine-parseable
  - **Configuration files** — cleaner syntax than JSON

  ## Installation

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

  ### npm

  ```bash
  npm install @tehw0lf/n8n-nodes-toon
  ```

  ### n8n Cloud

  In n8n Cloud or self-hosted n8n (v0.200+):

  1. Go to **Settings** → **Community Nodes**
  2. Select **Install**
  3. Enter `@tehw0lf/n8n-nodes-toon` and agree to the risks
  4. Click **Install**

  The TOON node will appear in your node palette under the **Transform** category.

  ## Operations

  The TOON node supports two operations:

  ### 1. JSON to TOON

  Convert JSON data to TOON format.

  **Input:** JSON object or array
  **Output:** TOON formatted text

  **Use case:** Prepare data for LLM prompts, compact serialization

  ### 2. TOON to JSON

  Parse TOON formatted text back to JSON.

  **Input:** TOON formatted text
  **Output:** JSON object or array

  **Use case:** Parse LLM responses, deserialize TOON data

  ## Configuration Options

  ### Encoding Options (JSON→TOON)

  | Option | Type | Default | Description |
  |--------|------|---------|-------------|
  | **Indent Size** | Number | `2` | Spaces per indentation level |
  | **Delimiter** | Choice | `comma` | Delimiter for array values (`comma`, `tab`, `pipe`) |
  | **Key Folding** | Choice | `off` | Collapse single-key chains (`off`, `safe`) |
  | **Flatten Depth** | Number | `999` | Maximum segments to fold (999 = unlimited) |
  | **Include Token Metrics** | Boolean | `false` | Add token count comparison to output |

  ### Decoding Options (TOON→JSON)

  | Option | Type | Default | Description |
  |--------|------|---------|-------------|
  | **Expected Indent Size** | Number | `2` | Expected indentation for validation |
  | **Strict Mode** | Boolean | `true` | Enforce array counts and indentation |
  | **Expand Paths** | Choice | `off` | Split dotted keys (`off`, `safe`) |

  ### Input/Output Configuration

  | Option | Type | Default | Description |
  |--------|------|---------|-------------|
  | **Input Data** | String | `={{ $json }}` | Data to convert. Supports drag-and-drop, field names, dot notation, and expressions. Auto-detects input type. |
  | **Output Field** | String | `data` | Field name for output |

  #### Input Data Details

  The **Input Data** field auto-detects the input type:
  - **Drag-and-drop**: Drag fields from the left panel - automatically evaluated by n8n
  - **Field names**: Simple field access (e.g., `data`)
  - **Dot notation**: Nested access (e.g., `users[0].name`)
  - **Expressions**: Full n8n expressions (e.g., `={{ $json.users.filter(u => u.active) }}`)
  - **Literal TOON** (for decoding): If a string doesn't match a field path, treated as TOON data

  ### Token Metrics Output

  When **Include Token Metrics** is enabled for JSON→TOON conversion, the output includes a `tokenMetrics` object:

  ```json
  {
    "data": "users[2]{id,name}:\n  1,Alice\n  2,Bob",
    "tokenMetrics": {
      "json": 123,
      "toon": 58,
      "saved": 65,
      "reduction": 0.5285
    }
  }
  ```

  - **json**: Estimated token count for JSON input
  - **toon**: Estimated token count for TOON output
  - **saved**: Number of tokens saved
  - **reduction**: Reduction ratio (0.5285 = 52.85% reduction)

  ## Usage Examples

  ### Example 1: LLM Context Preparation

  **Workflow:** Fetch Users → JSON to TOON → Send to LLM

  Use TOON to fit more context into LLM token limits while maintaining readability.

  **Input (JSON):**
  ```json
  {
    "users": [
      {"id": 1, "name": "Alice", "role": "admin", "active": true},
      {"id": 2, "name": "Bob", "role": "user", "active": true},
      {"id": 3, "name": "Charlie", "role": "user", "active": false}
    ]
  }
  ```

  **Output (TOON - comma delimiter):**
  ```
  users[3]{id,name,role,active}:
    1,Alice,admin,true
    2,Bob,user,true
    3,Charlie,user,false
  ```

  **Token Savings:** ~40-50% fewer tokens than equivalent JSON for structured data.

  ### Example 2: Parse LLM Structured Output

  **Workflow:** Send Prompt to LLM → TOON to JSON → Process Data

  LLMs can generate TOON format more reliably than JSON due to simpler syntax.

  **LLM Output (TOON):**
  ```
  result:
    tasks[3]{name,priority,status}:
      "Update docs",high,pending
      "Fix bug #123",high,done
      "Refactor code",low,pending
    summary: "3 tasks identified"
  ```

  **Parsed JSON:**
  ```json
  {
    "result": {
      "tasks": [
        {"name": "Update docs", "priority": "high", "status": "pending"},
        {"name": "Fix bug #123", "priority": "high", "status": "done"},
        {"name": "Refactor code", "priority": "low", "status": "pending"}
      ],
      "summary": "3 tasks identified"
    }
  }
  ```

  ### Example 3: Working with CSV Data

  n8n has excellent built-in CSV support via the "Extract from File" node. Use TOON for transformations:

  **Workflow:** Read File → Extract from CSV → JSON to TOON → Transform → TOON to JSON → Use Data

  1. Use n8n's "Extract from File" (CSV) node to parse CSV files
  2. The extracted data is already JSON (one item per row)
  3. Use "JSON to TOON" to convert to TOON format for LLM processing
  4. Use "TOON to JSON" to convert back to JSON for further processing

  ### Example 4: Key Folding for Nested Data

  **Workflow:** API Request → JSON to TOON (Key Folding: Safe) → Transform

  Simplify deeply nested JSON structures.

  **Input:**
  ```json
  {
    "user": {
      "profile": {
        "name": "Alice",
        "email": "alice@example.com"
      }
    }
  }
  ```

  **Output (with Key Folding):**
  ```
  user.profile.name: Alice
  user.profile.email: alice@example.com
  ```

  ### Example 5: Different Delimiters

  Use tab delimiters for data with commas in values.

  **TOON (tab delimiter):**
  ```
  products[2]{id	name	price}:
    1	"Widget, Small"	9.99
    2	"Gadget, Large"	19.99
  ```

  ## Use Cases

  ### 1. LLM Integration

  **Problem:** JSON wastes tokens on quotes, brackets, and redundant keys.

  **Solution:** TOON reduces token usage by 40-50% for structured data.

  ```
  Workflow: Data Source → JSON to TOON → LLM → TOON to JSON → Process
  ```

  ### 2. API Response Transformation

  **Problem:** API responses are verbose JSON that's hard to read in logs.

  **Solution:** Convert to TOON for compact, human-readable logging.

  ```
  Workflow: API Request → JSON to TOON → Log/Store → TOON to JSON → Use
  ```

  ### 3. Data Format Conversion

  **Problem:** Need to transform data between different formats for different systems.

  **Solution:** Use TOON as an intermediate format for transformations.

  ```
  Workflow: Extract from CSV → JSON to TOON → Transform → TOON to JSON → Send to API
  ```

  ### 4. Configuration Management

  **Problem:** JSON config files are verbose and don't support comments well.

  **Solution:** Store configs in TOON format for better readability.

  ```
  Workflow: Read TOON Config → TOON to JSON → Apply Settings
  ```

  ### 5. Report Generation

  **Problem:** Need to generate readable reports from structured data.

  **Solution:** Convert to TOON for human-friendly text representation.

  ```
  Workflow: Fetch Data → JSON to TOON → Format Report → Send Email
  ```

  ## Compatibility

  - **n8n version:** 0.200.0 or later
  - **Node.js:** 18.x or later
  - **TOON Specification:** v3.0

  ## Specification Compliance

  This node implements **TOON Specification v3.0** with comprehensive coverage of all core features and major optional features.

  ### Implemented Features

  ✅ **Core Features (100%)**
  - All JSON data types (objects, arrays, primitives)
  - Indentation-based structure with configurable spacing
  - Array length declarations `[N]`
  - Tabular arrays for uniform objects `[N]{field1,field2}:`
  - All three delimiters: comma (default), tab, pipe
  - Deterministic string quoting and escaping
  - Strict mode validation with array count and width checking

  ✅ **Optional Features**
  - **Key Folding** (`keyFolding: "safe"`) - Collapse nested single-key objects into dotted paths (e.g., `{a: {b: {c: 1}}}` → `a.b.c: 1`)
  - **Path Expansion** (`expandPaths: "safe"`) - Expand dotted keys back into nested objects during decoding

  ### Not Implemented

  ❌ **Hyphen Syntax for List-Item Objects (§10)** - Optional YAML-style compact notation for objects in arrays. This is a purely cosmetic encoding optimization that doesn't affect functionality or data compatibility. Our implementation uses standard object indentation instead, which is equally spec-compliant and easier to maintain.

  ### Round-Trip Guarantee

  All JSON data can be encoded to TOON and decoded back to JSON with full fidelity. The implementation passes all conformance requirements for encoders and decoders per the specification.

  ## Advanced Features

  ### Strict Mode

  When enabled (default), the decoder validates:
  - Array element counts match declared length
  - Indentation multiples match expected indent size
  - Proper structure and syntax

  Disable for lenient parsing of hand-written TOON.

  ### Path Expansion

  Convert dotted keys into nested objects:

  **TOON:**
  ```
  user.name: Alice
  user.email: alice@example.com
  ```

  **JSON (with expandPaths: safe):**
  ```json
  {
    "user": {
      "name": "Alice",
      "email": "alice@example.com"
    }
  }
  ```

  ### Round-Trip Guarantees

  TOON guarantees lossless round-trip conversion:

  - **JSON → TOON → JSON** preserves all data and structure
  - Works with any valid JSON input
  - Maintains data types (strings, numbers, booleans, null)

  ## Zero Dependencies

  This node has **zero production dependencies**:
  - Pure Node.js implementation
  - No external libraries required
  - Minimal package size
  - No security vulnerabilities from dependencies

  **Note:** There is another package called `n8n-nodes-toon` (non-scoped) that wraps the official `@toon-format/toon` library. This package (`@tehw0lf/n8n-nodes-toon`) implements the TOON specification directly, resulting in zero production dependencies and full control over the implementation.

  ## Troubleshooting

  ### Issue: "Input must be a string" error

  **Cause:** TOON to JSON operation expects string input.

  **Solution:** Ensure input field contains TOON text, not a JSON object.

  ### Issue: Strict mode validation errors

  **Cause:** TOON data doesn't match expected structure.

  **Solution:** Disable strict mode or fix indentation/counts in TOON data.

  ### Issue: Key folding conflicts

  **Cause:** Both `user.name` and `user` keys exist in same object.

  **Solution:** Use `keyFolding: "safe"` which only folds when safe, or disable key folding.

  ### Issue: Round-trip doesn't match exactly

  **Cause:** TOON normalizes data (e.g., -0 → 0, sorts object keys).

  **Solution:** This is expected — TOON preserves semantic meaning, not exact formatting.

  ## Automated Monitoring

  This repository includes automated workflows for continuous monitoring:

  ### Specification Monitoring

  Monitors the official TOON specification for updates:

  - **Frequency:** Checks run every Monday at 9:00 AM UTC
  - **Automatic Detection:** Compares `toonSpecVersion` in `package.json` against the upstream GitHub Releases API
  - **Issue Creation:** Automatically opens a GitHub issue when updates are detected
  - **Manual Trigger:** Can be triggered manually via GitHub Actions

  When a specification update is detected, the workflow:
  1. Creates a labeled issue (`spec-update`, `enhancement`) with version details
  2. Includes a diff summary showing the changes
  3. Provides links to the official specification
  4. Avoids duplicate issues for the same version

  See [`.github/workflows/monitor-spec.yml`](.github/workflows/monitor-spec.yml) for implementation details.

  ### Security Monitoring

  Performs comprehensive security scanning to detect vulnerabilities:

  - **Frequency:** Runs daily at 2:00 AM UTC
  - **Source Code Scanning:** Semgrep analysis for security issues (OWASP Top 10, etc.)
  - **Dependency Scanning:** npm audit on dependencies
  - **Published Package Scanning:** Checks the live npm package for newly disclosed vulnerabilities
  - **Automatic Trigger:** Also runs on changes to `package.json` or `package-lock.json`

  When vulnerabilities are detected, the workflow:
  1. Creates a labeled issue (`security`, `vulnerability`, `dependencies`)
  2. Includes severity levels and full audit report
  3. Provides remediation guidance with specific commands
  4. Updates existing issues instead of creating duplicates

  See [`.github/workflows/security-scan.yml`](.github/workflows/security-scan.yml) for implementation details.

  ## Resources

  - **TOON Specification v3.0:** Official spec at [github.com/toon-format/spec](https://github.com/toon-format/spec) or see [SPEC.md](SPEC.md) in this repository
  - **n8n Documentation:** https://docs.n8n.io/
  - **Community Nodes Guide:** https://docs.n8n.io/integrations/community-nodes/
  - **GitHub Repository:** https://github.com/tehw0lf/n8n-nodes-toon
  - **Issues & Support:** https://github.com/tehw0lf/n8n-nodes-toon/issues

  ## License

  MIT © [tehw0lf](https://github.com/tehw0lf)

  ## Author

  **tehw0lf** <tehwolf@protonmail.com>

  ## Contributing

  Contributions are welcome! Please open an issue or pull request on GitHub.

  ---

  **Note:** This node implements the [TOON Specification v3.0](https://github.com/toon-format/spec). See `SPEC.md` for complete format documentation or visit the official spec repository.

ai_documentation_summary:
  {"purpose":"Converts data between TOON (Token-Oriented Object Notation) and JSON formats, optimizing for compactness in LLM prompts and structured data interchange.","capabilities":["JSON to TOON conversion","TOON to JSON parsing","Customizable indentation and delimiters","Token count metrics calculation","Key folding for compact output","Strict mode validation for TOON parsing","Support for comma, tab, and pipe delimiters","Support for nested key expansion"],"authentication":"None","commonUseCases":["Reducing token usage in LLM prompts","Compact serialization of tabular data","Parsing structured API responses","Data interchange between systems"],"limitations":["TOON format is optimized for arrays of uniform objects and may not be ideal for deeply nested or highly variable structures","Token metrics are estimated, not actual API token counts","Strict mode may reject valid but non-conforming TOON data"],"relatedNodes":["n8n HTTP Request","n8n Code","n8n Set","n8n Split In Batches"]}


node_type: n8n-nodes-itglue.iTGlue
package_name: n8n-nodes-itglue
display_name: IT Glue
description: Utilize the IT Glue API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: redanthrax
author_github_url: https://github.com/redanthrax/itglue-node.git
npm_package_name: n8n-nodes-itglue
npm_version: 2.1.0
community_fetched_at: 2026-03-25T21:19:40.533Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "organization",
      "options": [
        {
          "name": "Attachment",
          "value": "attachment"
        },
        {
          "name": "Configuration",
          "value": "configuration"
        },
        {
          "name": "Configuration Interface",
          "value": "configurationInterface"
        },
        {
          "name": "Configuration Status",
          "value": "configurationStatus"
        },
        {
          "name": "Configuration Type",
          "value": "configurationType"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Contact Type",
          "value": "contactType"
        },
        {
          "name": "Country",
          "value": "country"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Document Image",
          "value": "documentImage"
        },
        {
          "name": "Document Section",
          "value": "documentSection"
        },
        {
          "name": "Domain",
          "value": "domain"
        },
        {
          "name": "Expiration",
          "value": "expiration"
        },
        {
          "name": "Export",
          "value": "export"
        },
        {
          "name": "Flexible Asset",
          "value": "flexibleAsset"
        },
        {
          "name": "Flexible Asset Field",
          "value": "flexibleAssetField"
        },
        {
          "name": "Flexible Asset Type",
          "value": "flexibleAssetType"
        },
        {
          "name": "Group",
          "value": "group"
        },
        {
          "name": "Location",
          "value": "location"
        },
        {
          "name": "Log",
          "value": "log"
        },
        {
          "name": "Manufacturer",
          "value": "manufacturer"
        },
        {
          "name": "Model",
          "value": "model"
        },
        {
          "name": "Operating System",
          "value": "operatingSystem"
        },
        {
          "name": "Organization",
          "value": "organization"
        },
        {
          "name": "Organization Status",
          "value": "organizationStatus"
        },
        {
          "name": "Organization Type",
          "value": "organizationType"
        },
        {
          "name": "Password",
          "value": "password"
        },
        {
          "name": "Password Category",
          "value": "passwordCategory"
        },
        {
          "name": "Platform",
          "value": "platform"
        },
        {
          "name": "Region",
          "value": "region"
        },
        {
          "name": "Related Item",
          "value": "relatedItem"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "User Metric",
          "value": "userMetric"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Delete",
          "value": "bulkDestroy",
          "action": "Bulk delete configurations",
          "description": "Delete multiple configurations at once"
        },
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update configurations",
          "description": "Update multiple configurations at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a configuration",
          "description": "Create a new configuration"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get configurations data",
          "description": "Get data from the Configurations endpoint"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get configuration by ID",
          "description": "Get a specific configuration by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a configuration",
          "description": "Update an existing configuration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "configuration"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Delete",
          "value": "bulkDestroy",
          "action": "Bulk delete contacts",
          "description": "Delete multiple contacts at once"
        },
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update contacts",
          "description": "Update multiple contacts at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a new contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact",
          "description": "Delete a contact"
        },
        {
          "name": "Get",
          "value": "getById",
          "action": "Get a contact",
          "description": "Retrieve a single contact"
        },
        {
          "name": "Get Many",
          "value": "get",
          "action": "Get many contacts",
          "description": "Retrieve multiple contacts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "description": "Update an existing contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update documents",
          "description": "Update multiple documents at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document",
          "description": "Create a new document"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document",
          "description": "Delete a document"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get documents",
          "description": "Get all documents"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get document by ID",
          "description": "Get a specific document by ID"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a document",
          "description": "Publish a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a document",
          "description": "Update an existing document"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getById",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document image",
          "description": "Upload a new document image"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document image",
          "description": "Delete a document image"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get document image by ID",
          "description": "Get a specific document image by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentImage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document section",
          "description": "Create a new document section"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document section",
          "description": "Delete a document section"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get document sections",
          "description": "Get all document sections for a document"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get document section by ID",
          "description": "Get a specific document section by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a document section",
          "description": "Update an existing document section"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentSection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Many",
          "value": "get",
          "action": "Get many domains",
          "description": "Get domains"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "domain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Destroy",
          "value": "bulkDestroy",
          "action": "Bulk delete flexible assets",
          "description": "Delete multiple flexible assets at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a flexible asset",
          "description": "Create a new flexible asset"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a flexible asset",
          "description": "Delete a flexible asset"
        },
        {
          "name": "Get",
          "value": "getById",
          "action": "Get a flexible asset",
          "description": "Retrieve a single flexible asset"
        },
        {
          "name": "Get Many",
          "value": "get",
          "action": "Get many flexible assets",
          "description": "Retrieve multiple flexible assets"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a flexible asset",
          "description": "Update an existing flexible asset"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "flexibleAsset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Delete",
          "value": "bulkDestroy",
          "action": "Bulk delete organizations",
          "description": "Delete multiple organizations at once"
        },
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update organizations",
          "description": "Update multiple organizations at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create organizations data",
          "description": "Create an organization using the Organizations endpoint"
        },
        {
          "name": "Delete",
          "value": "deleteOrganization",
          "action": "Delete an organization",
          "description": "Delete an organization"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get organizations data",
          "description": "Get data from the Organizations endpoint"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get organization by ID",
          "description": "Get a specific organization by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update organizations data",
          "description": "Update an organization using the Organizations endpoint"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "organization"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Bulk Delete",
          "value": "bulkDestroy",
          "action": "Bulk delete passwords",
          "description": "Delete multiple passwords at once"
        },
        {
          "name": "Bulk Update",
          "value": "bulkUpdate",
          "action": "Bulk update passwords",
          "description": "Update multiple passwords at once"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a password",
          "description": "Create a new password"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a password",
          "description": "Delete a password"
        },
        {
          "name": "Get",
          "value": "getById",
          "action": "Get a password",
          "description": "Retrieve a single password"
        },
        {
          "name": "Get Many",
          "value": "get",
          "action": "Get many passwords",
          "description": "Retrieve multiple passwords"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a password",
          "description": "Update an existing password"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "password"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Bulk Delete",
      "value": "bulkDestroy",
      "action": "Bulk delete configurations",
      "description": "Delete multiple configurations at once"
    },
    {
      "name": "Bulk Update",
      "value": "bulkUpdate",
      "action": "Bulk update configurations",
      "description": "Update multiple configurations at once"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a configuration",
      "description": "Create a new configuration"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get configurations data",
      "description": "Get data from the Configurations endpoint"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get configuration by ID",
      "description": "Get a specific configuration by ID"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a configuration",
      "description": "Update an existing configuration"
    },
    {
      "name": "Bulk Delete",
      "value": "bulkDestroy",
      "action": "Bulk delete contacts",
      "description": "Delete multiple contacts at once"
    },
    {
      "name": "Bulk Update",
      "value": "bulkUpdate",
      "action": "Bulk update contacts",
      "description": "Update multiple contacts at once"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "description": "Create a new contact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contact",
      "description": "Delete a contact"
    },
    {
      "name": "Get",
      "value": "getById",
      "action": "Get a contact",
      "description": "Retrieve a single contact"
    },
    {
      "name": "Get Many",
      "value": "get",
      "action": "Get many contacts",
      "description": "Retrieve multiple contacts"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact",
      "description": "Update an existing contact"
    },
    {
      "name": "Bulk Update",
      "value": "bulkUpdate",
      "action": "Bulk update documents",
      "description": "Update multiple documents at once"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a document",
      "description": "Create a new document"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a document",
      "description": "Delete a document"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get documents",
      "description": "Get all documents"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get document by ID",
      "description": "Get a specific document by ID"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish a document",
      "description": "Publish a document"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a document",
      "description": "Update an existing document"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a document image",
      "description": "Upload a new document image"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a document image",
      "description": "Delete a document image"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get document image by ID",
      "description": "Get a specific document image by ID"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a document section",
      "description": "Create a new document section"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a document section",
      "description": "Delete a document section"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get document sections",
      "description": "Get all document sections for a document"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get document section by ID",
      "description": "Get a specific document section by ID"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a document section",
      "description": "Update an existing document section"
    },
    {
      "name": "Get Many",
      "value": "get",
      "action": "Get many domains",
      "description": "Get domains"
    },
    {
      "name": "Bulk Destroy",
      "value": "bulkDestroy",
      "action": "Bulk delete flexible assets",
      "description": "Delete multiple flexible assets at once"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a flexible asset",
      "description": "Create a new flexible asset"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a flexible asset",
      "description": "Delete a flexible asset"
    },
    {
      "name": "Get",
      "value": "getById",
      "action": "Get a flexible asset",
      "description": "Retrieve a single flexible asset"
    },
    {
      "name": "Get Many",
      "value": "get",
      "action": "Get many flexible assets",
      "description": "Retrieve multiple flexible assets"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a flexible asset",
      "description": "Update an existing flexible asset"
    },
    {
      "name": "Bulk Delete",
      "value": "bulkDestroy",
      "action": "Bulk delete organizations",
      "description": "Delete multiple organizations at once"
    },
    {
      "name": "Bulk Update",
      "value": "bulkUpdate",
      "action": "Bulk update organizations",
      "description": "Update multiple organizations at once"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create organizations data",
      "description": "Create an organization using the Organizations endpoint"
    },
    {
      "name": "Delete",
      "value": "deleteOrganization",
      "action": "Delete an organization",
      "description": "Delete an organization"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get organizations data",
      "description": "Get data from the Organizations endpoint"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get organization by ID",
      "description": "Get a specific organization by ID"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update organizations data",
      "description": "Update an organization using the Organizations endpoint"
    },
    {
      "name": "Bulk Delete",
      "value": "bulkDestroy",
      "action": "Bulk delete passwords",
      "description": "Delete multiple passwords at once"
    },
    {
      "name": "Bulk Update",
      "value": "bulkUpdate",
      "action": "Bulk update passwords",
      "description": "Update multiple passwords at once"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a password",
      "description": "Create a new password"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a password",
      "description": "Delete a password"
    },
    {
      "name": "Get",
      "value": "getById",
      "action": "Get a password",
      "description": "Retrieve a single password"
    },
    {
      "name": "Get Many",
      "value": "get",
      "action": "Get many passwords",
      "description": "Retrieve multiple passwords"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a password",
      "description": "Update an existing password"
    }
  ]

npm_readme:
  # n8n-nodes-itglue

  An n8n community node for integrating with IT Glue API.

  ## Installation

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

  ```bash
  npm install n8n-nodes-itglue
  ```

  ## Prerequisites

  - IT Glue account with API access
  - API Key from IT Glue
  - Your IT Glue region (US, Europe, or Australia)

  ## Setup

  ### Setting up API Key in IT Glue

  1. Log into your IT Glue instance
  2. Navigate to Account > Settings > API Keys
  3. Create a new API key
  4. Note down the API Key for use in n8n

  ### Configuring Credentials in n8n

  1. **Region**: Select your IT Glue region (api, api.eu, or api.au)
  2. **API Key**: The API key from IT Glue

  ## Supported Operations

  ### [Attachments](./docs/attachments.md)
  Manage file attachments with create, update, and bulk destroy operations for document management.

  ### [Configurations](./docs/configurations.md)
  Complete configuration item management with CRUD operations, bulk updates, and comprehensive filtering for IT asset management.

  ### [Configuration Interfaces](./docs/configuration-interfaces.md)
  Manage network interfaces and connections with full CRUD operations and bulk update capabilities.

  ### [Configuration Statuses](./docs/configuration-statuses.md)
  Manage configuration status definitions with complete CRUD operations for asset lifecycle tracking.

  ### [Configuration Types](./docs/configuration-types.md)
  Manage configuration type definitions with CRUD operations for asset categorization.

  ### [Contacts](./docs/contacts.md)
  Manage contact records with full CRUD operations, bulk updates, and comprehensive contact information management.

  ### [Contact Types](./docs/contact-types.md)
  Manage contact type definitions with CRUD operations for contact categorization.

  ### [Countries](./docs/countries.md)
  Retrieve country information and geographical data with filtering capabilities.

  ### [Documents](./docs/documents.md)
  Complete document management with CRUD operations, bulk updates, and comprehensive document handling.

  ### [Domains](./docs/domains.md)
  Retrieve domain records and DNS-related information with filtering options.

  ### [Expirations](./docs/expirations.md)
  Track asset and license expirations with retrieval and filtering capabilities.

  ### [Flexible Assets](./docs/flexible-assets.md)
  Manage custom flexible asset types with dynamic field structures, supporting full CRUD operations and bulk destroy.

  ### [Flexible Asset Fields](./docs/flexible-asset-fields.md)
  Manage flexible asset field definitions with complete CRUD operations and bulk update capabilities.

  ### [Flexible Asset Types](./docs/flexible-asset-types.md)
  Manage flexible asset type definitions with full CRUD operations for custom asset management.

  ### [Logs](./docs/logs.md)
  Retrieve system logs and audit trail information for monitoring and compliance.

  ### [Operating Systems](./docs/operating-systems.md)
  Retrieve operating system information and specifications with filtering capabilities.

  ### [Organizations](./docs/organizations.md)
  Manage organization records with comprehensive CRUD operations including creation, updates, bulk operations, and deletion with filtering capabilities.

  ### [Organization Statuses](./docs/organization-statuses.md)
  Manage organization status definitions with CRUD operations for organizational lifecycle tracking.

  ### [Organization Types](./docs/organization-types.md)
  Manage organization type definitions with CRUD operations for organizational categorization.

  ### [Passwords](./docs/passwords.md)
  Securely manage password entries with full CRUD operations including creation, updates, retrieval, deletion, and bulk operations with advanced filtering.

  ### [Password Categories](./docs/password-categories.md)
  Manage password category definitions with CRUD operations for password organization.

  ### [Platforms](./docs/platforms.md)
  Retrieve platform and technology information with filtering capabilities.

  ### [Regions](./docs/regions.md)
  Retrieve regional information and geographical data with filtering options.

  ### [Related Items](./docs/related-items.md)
  Manage relationships between different IT Glue resources with CRUD operations and bulk destroy capabilities.

  ### [Users](./docs/users.md)
  Manage user accounts with CRUD operations for user administration.

  ### [User Metrics](./docs/user-metrics.md)
  Retrieve user activity metrics and analytics for monitoring user engagement.

  ## Resources

  - [IT Glue API Documentation](https://api.itglue.com/developer/)
  - [n8n Documentation](https://docs.n8n.io)
  - [Repository](https://github.com/redanthrax/itglue-node)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with the IT Glue API to manage IT asset management, configuration, and organizational data.","capabilities":["Create, read, update, and delete IT assets and configurations","Manage flexible asset types with dynamic field structures","Handle file attachments and documents","Track password categories and secure password entries","Monitor user metrics and system logs","Manage organizational and contact records","Filter and retrieve data based on region and resource type"],"authentication":"API Key required","commonUseCases":["IT asset management and lifecycle tracking","Configuration management for IT infrastructure","User and organization administration","Password and credential management","Compliance and audit trail monitoring"],"limitations":["Community node (not official n8n node)","Requires separate IT Glue account with API access","Supports only specific IT Glue regions (US, Europe, Australia)"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-base.set"]}


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

updated_at: 2026-03-25 21:19:40
author_name: bborys
author_github_url: https://github.com/reply-team/n8n-public.git
npm_package_name: @replyio/n8n-nodes-reply
npm_version: 0.21.0
community_fetched_at: 2026-03-25T21:19:40.534Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Contact Status",
          "value": "contactStatus"
        },
        {
          "name": "Sequence",
          "value": "sequence"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "description": "Create a new contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact",
          "description": "Delete a contact"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact",
          "description": "Get a contact"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many contacts",
          "description": "Get many contacts with pagination"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "description": "Update an existing contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "updateStatus",
      "options": [
        {
          "name": "Clear Status",
          "value": "clearStatus",
          "action": "Clear contact status",
          "description": "Clear statuses from a contact"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update contact status",
          "description": "Update the status of a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contactStatus"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Add Contact",
          "value": "addContact",
          "action": "Add contact to sequence",
          "description": "Add an existing contact to a sequence by contact ID"
        },
        {
          "name": "Archive a Sequence",
          "value": "archive",
          "action": "Archive a sequence"
        },
        {
          "name": "Get a Sequence",
          "value": "get",
          "action": "Get a sequence",
          "description": "Get a sequence by ID"
        },
        {
          "name": "Get Contacts",
          "value": "getContacts",
          "action": "Get contacts in sequence",
          "description": "Get contacts in a sequence with pagination"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many sequences",
          "description": "Get many sequences with pagination"
        },
        {
          "name": "Pause a Sequence",
          "value": "pause",
          "action": "Pause a sequence"
        },
        {
          "name": "Start a Sequence",
          "value": "start",
          "action": "Start a sequence"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sequence"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "description": "Create a new contact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contact",
      "description": "Delete a contact"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact",
      "description": "Get a contact"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many contacts",
      "description": "Get many contacts with pagination"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact",
      "description": "Update an existing contact"
    },
    {
      "name": "Clear Status",
      "value": "clearStatus",
      "action": "Clear contact status",
      "description": "Clear statuses from a contact"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update contact status",
      "description": "Update the status of a contact"
    },
    {
      "name": "Add Contact",
      "value": "addContact",
      "action": "Add contact to sequence",
      "description": "Add an existing contact to a sequence by contact ID"
    },
    {
      "name": "Archive a Sequence",
      "value": "archive",
      "action": "Archive a sequence"
    },
    {
      "name": "Get a Sequence",
      "value": "get",
      "action": "Get a sequence",
      "description": "Get a sequence by ID"
    },
    {
      "name": "Get Contacts",
      "value": "getContacts",
      "action": "Get contacts in sequence",
      "description": "Get contacts in a sequence with pagination"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many sequences",
      "description": "Get many sequences with pagination"
    },
    {
      "name": "Pause a Sequence",
      "value": "pause",
      "action": "Pause a sequence"
    },
    {
      "name": "Start a Sequence",
      "value": "start",
      "action": "Start a sequence"
    }
  ]

npm_readme:
  # @replyio/n8n-nodes-reply

  This is an n8n community node for [Reply.io](https://reply.io) - a sales engagement platform that automates multichannel outreach across email, LinkedIn, calls, SMS, and WhatsApp.

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

  ## Installation

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

  ## Nodes

  ### Reply

  Interact with Reply.io API to manage contacts, sequences, and contact statuses.

  **Resources & Operations:**

  | Resource | Operations |
  |----------|------------|
  | Contact | Create, Get, Get Many, Update, Delete |
  | Contact Status | Update Status, Clear Status |
  | Sequence | Get, Get Many, Get Contacts, Add Contact, Start, Pause, Archive |

  ### Reply Trigger

  Starts workflows when Reply.io events occur.

  **Supported Events:**

  | Category | Events |
  |----------|--------|
  | Email | Sent, Opened, Bounced, Link Clicked, Replied, Reply Categorized |
  | LinkedIn | Message Sent, Message Replied, Connection Sent, Connection Accepted, Reply Categorized |
  | Sequence | Contact Finished, Contact Opted Out, Contact Called |
  | Account Health | Email Connection Lost, Email Account Error |

  ## Credentials

  1. Log in to your [Reply.io](https://reply.io) account
  2. Go to **Settings** > **API Key**
  3. Copy your API key
  4. In n8n, create new Reply API credentials and paste the key

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Reply.io API to manage sales engagement workflows, including contacts, sequences, and statuses.","capabilities":["Create, retrieve, update, and delete contacts","Update and clear contact statuses","Manage sequences (get, add contacts, start, pause, archive)","Trigger workflows on Reply.io events (email, LinkedIn, sequence, account health)","Monitor outreach metrics like opens, clicks, replies, and bounces"],"authentication":"API key required (obtained from Reply.io Settings > API Key)","commonUseCases":["Automating multi-channel sales outreach","Tracking engagement across email, LinkedIn, calls, SMS, and WhatsApp","Managing contact lists and sequence execution","Monitoring campaign performance and opt-outs"],"limitations":["Community node (not official n8n node)","Requires manual API key configuration in n8n"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Code Node"]}


node_type: @docuseal/n8n-nodes-docuseal.docusealTrigger
package_name: @docuseal/n8n-nodes-docuseal
display_name: DocuSeal Trigger
description: Handle DocuSeal events via webhooks
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: petem
author_github_url: https://github.com/docusealco/n8n-nodes-docuseal.git
npm_package_name: @docuseal/n8n-nodes-docuseal
npm_version: 1.0.3
community_fetched_at: 2026-03-25T21:19:40.534Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-docuseal

  This is an **n8n community node** that allows you to integrate [DocuSeal](https://www.docuseal.com) with your n8n workflows.

  [DocuSeal](https://www.docuseal.com) is a modern document signing platform that lets you securely collect legally binding electronic signatures online. You can create templates, send signature requests, and automate your signing process with ease.

  [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 Examples](#usage-examples)
  - [Resources](#resources)
  - [License](#license)

  ## Installation

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

  ### Community Nodes (Recommended)

  For n8n cloud or instances with UI access:

  1. Go to **Settings → Community Nodes** in your n8n dashboard.
  2. Click **Install**.
  3. Enter `@docuseal/n8n-nodes-docuseal` in the **Enter npm package name** field.
  4. Accept the [community node usage risks](https://docs.n8n.io/integrations/community-nodes/risks/).
  5. Click **Install** to complete setup.

  ### npm Installation

  To install manually in your n8n root directory:

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

  ### Docker Installation

  For Docker users, add the package to your setup using environment variables:

  **docker-compose.yml:**
  ```yaml
  services:
    n8n:
      image: docker.n8n.io/n8nio/n8n
      environment:
        - N8N_COMMUNITY_PACKAGES=@docuseal/n8n-nodes-docuseal
      ports:
        - "5678:5678"
      volumes:
        - ~/.n8n:/home/node/.n8n
  ```

  **Docker run command:**
  ```bash
  docker run -it --rm \
    --name n8n \
    -p 5678:5678 \
    -e N8N_COMMUNITY_PACKAGES="@docuseal/n8n-nodes-docuseal" \
    -v ~/.n8n:/home/node/.n8n \
    docker.n8n.io/n8nio/n8n
  ```

  ## Operations

  This package includes two nodes:

  ### DocuSeal Node

  The main node for creating and managing signature requests.

  #### Create Submission
  Create a signature request from an existing template.

  **Features:**
  - Select from your existing templates
  - Define multiple signers with their details
  - Pre-fill form fields
  - Customize email notifications
  - Set expiration dates
  - Configure signing order (sequential or random)

  #### Create Submission From DOCX
  Create a signature request from DOCX files with dynamic content.

  **Features:**
  - Upload DOCX or PDF files
  - Use dynamic variables for content replacement
  - Merge multiple documents
  - Define signers with roles
  - Support for template merging

  #### Create Submission From HTML
  Generate signature requests from HTML content.

  **Features:**
  - HTML document content with field tags
  - Custom headers and footers
  - Multiple page sizes (Letter, A4, Legal, etc.)
  - Merge with existing templates
  - Convert HTML to PDF automatically

  #### Create Submission From PDF
  Create signature requests from PDF documents.

  **Features:**
  - Upload PDF files (Base64 or URL)
  - Flatten PDF form fields
  - Remove or preserve text tags
  - Merge multiple PDFs
  - Template integration

  ### DocuSeal Trigger Node

  Webhook-based trigger for DocuSeal events.

  #### Signing Form Completed
  Triggers when a single signer completes their signing form.

  **Use cases:**
  - Send notifications to internal teams
  - Update CRM records
  - Trigger follow-up workflows

  #### Submission Completed
  Triggers when all parties complete the signing process.

  **Use cases:**
  - Archive completed documents
  - Send completion notifications
  - Update databases with signed document URLs
  - Generate invoices or contracts

  ## Credentials

  You'll need your **DocuSeal API key** to connect n8n to your account.

  ### Getting Your API Key

  1. Create an account at [DocuSeal Global](https://docuseal.com/sign_in) or [DocuSeal Europe](https://docuseal.eu/sign_in)
  2. Go to **Settings → Console → API**
  3. Copy an API key for your account

  ### Setting Up Credentials in n8n

  1. In n8n, click on **Credentials** in the left sidebar
  2. Click **Add Credential**
  3. Search for "DocuSeal" and select **DocuSeal API**
  4. Fill in the following fields:
     - **API Key** – your generated API key
     - **Server** – choose between *Global Server* or *Europe Server*
  5. Click **Save**

  ### Authentication Methods

  This node supports two authentication methods:

  - **Access Token** (recommended) - Use your API key directly
  - **OAuth2** - For more secure integrations (requires app setup)

  ## Compatibility

  - **n8n** version `0.187.0` or later
  - **Node.js** version `18.10` or later

  ## Usage Examples

  ### Example 1: Automated Contract Signing

  Send contracts for signing whenever a new deal is created in your CRM:

  1. **Trigger**: CRM Trigger (e.g., HubSpot, Salesforce)
  2. **DocuSeal Node**: Create Submission
     - Template: "Sales Contract"
     - Signer Email: `{{$json.contact_email}}`
     - Pre-fill fields with deal data
  3. **Slack Node**: Notify sales team

  ### Example 2: Onboarding Automation

  Automatically send onboarding documents to new employees:

  1. **Trigger**: HR System Webhook
  2. **DocuSeal Node**: Create Submission From DOCX
     - Upload employee handbook
     - Variables: Employee name, start date, department
     - Signers: New employee + HR manager
  3. **Email Node**: Send welcome email with signing link

  ### Example 3: Document Archive Workflow

  Archive completed documents automatically:

  1. **DocuSeal Trigger**: Submission Completed
  2. **HTTP Request Node**: Download signed PDF
  3. **Google Drive Node**: Upload to archive folder
  4. **Database Node**: Update records with document URL

  ### Example 4: Multi-Party Signing

  Send documents requiring multiple signatures in sequence:

  1. **Google Sheets Trigger**: New row in contracts sheet
  2. **DocuSeal Node**: Create Submission
     - Signers Order: "Preserved"
     - Signer 1: Client
     - Signer 2: Account Manager
     - Signer 3: Legal Team
  3. **Slack Node**: Notify when all parties sign

  ## Advanced Features

  ### Pre-filling Form Fields

  You can pre-fill form fields in your templates using the `Values` parameter in submitters:

  ```json
  {
    "field": "Company Name",
    "value": "{{$json.company}}"
  }
  ```

  ### Custom Email Notifications

  Customize the email sent to signers:

  - **Email Subject**: Your custom subject line
  - **Email Body**: Your custom message (supports plain text)
  - **Reply-To**: Set a custom reply-to address
  - **BCC**: Add BCC recipients for completed documents

  ### Metadata and External IDs

  Track your documents by adding:

  - **External ID**: Your internal reference ID
  - **Metadata**: Custom key-value pairs for additional data

  ### Expiration Dates

  Set expiration dates for signature requests:
  - After expiration, the signing link becomes unavailable
  - Use ISO 8601 format: `2025-12-31T23:59:59Z`

  ## Troubleshooting

  ### 🧩 Common Issues

  #### 🔑 Invalid API Key error
  **Solution:** Verify your API key is correct and matches the selected server (Global/Europe)

  #### 📄 Template not found
  **Solution:** Ensure the template exists in your DocuSeal account and is not archived

  #### 🌐 Webhook not triggering
  **Solution:** Check that your n8n instance is publicly accessible and the webhook is properly registered

  #### 📚 Documents not merging
  **Solution:** Verify that all documents are valid PDFs or DOCX files and properly encoded

  ### Getting Help

  If you encounter issues:

  1. Check the [DocuSeal API documentation](https://www.docuseal.com/docs/api)
  2. Visit the [n8n community forum](https://community.n8n.io/)
  3. Open an issue on [GitHub](https://github.com/docusealco/n8n-nodes-docuseal/issues)

  ## Resources

  - [DocuSeal Website](https://www.docuseal.com)
  - [DocuSeal API Reference](https://www.docuseal.com/docs/api)
  - [DocuSeal Webhooks Documentation](https://www.docuseal.com/docs/api#form-webhook)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Community Forum](https://community.n8n.io/)

  ## Support

  - 📧 Email: support@docuseal.com
  - 💬 Community: [n8n Community Forum](https://community.n8n.io/)
  - 🐛 Issues: [GitHub Issues](https://github.com/docusealco/n8n-nodes-docuseal/issues)

  ## License

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

ai_documentation_summary:
  {"purpose":"The DocuSeal Trigger node listens for webhook events from DocuSeal document signing platform to automate workflows upon signature completion or form submission.","capabilities":["Triggers on single signer form completion","Triggers on full submission completion","Integrates with n8n workflows for post-signing automation","Supports multiple DocuSeal event types"],"authentication":"API key required (Access Token) or OAuth2","commonUseCases":["Send notifications to internal teams when documents are signed","Update CRM records with signed document status","Archive completed documents automatically","Generate invoices or contracts upon signature completion","Trigger follow-up workflows after signing"],"limitations":["Requires separate DocuSeal API key setup","Requires n8n version 0.187.0 or later","Requires Node.js version 18.10 or later"],"relatedNodes":["DocuSeal Node","HTTP Request Node","Google Drive Node","Database Node","Slack Node"]}


node_type: n8n-nodes-deapi.deapiTrigger
package_name: n8n-nodes-deapi
display_name: deAPI Trigger
description: Triggers workflows based on the status of the generation job from deAPI.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: deapi
author_github_url: https://github.com/deapi-ai/
npm_package_name: n8n-nodes-deapi
npm_version: 0.2.0
community_fetched_at: 2026-03-25T21:19:40.535Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  ![Banner image](https://github.com/user-attachments/assets/398eeb5d-cbf7-452c-96ae-825850c32730)

  # n8n-nodes-deapi

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

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

  deAPI is a unified API platform providing instant access to open-source AI models (FLUX, LTX Video, Whisper and more) through a decentralized GPU network. One API key to access thousands of GPUs with up to 20x lower costs.

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

  ## Installation

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

  ## Credentials

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

  | Field | Description |
  |-------|-------------|
  | **API Key** | Your deAPI API key. Get it from the [deAPI Quickstart Guide](https://docs.deapi.ai/quickstart#2-obtain-your-api-key). |
  | **Webhook Secret** | Secret used to verify webhook signatures. Configure it at [deAPI Webhook Settings](https://deapi.ai/settings/webhooks). |

  ## Operations

  ### Image

  | Operation | Description | Models |
  |-----------|-------------|--------|
  | **Generate** | Generate an image from a text prompt | FLUX.1 Schnell, FLUX.2 Klein 4B, Z-Image Turbo |
  | **Remove Background** | Remove the background from an image | Ben2 |
  | **Upscale** | Increase image resolution by 4x | RealESRGAN x4 |

  ### Video

  | Operation | Description | Models |
  |-----------|-------------|--------|
  | **Generate** | Generate a video from text or image(s) | LTX-Video 0.9.8, LTX-2 19B, LTX-2.3 22B |
  | **Generate From Audio** | Generate a video conditioned on an audio file and text prompt | LTX-2 22B |
  | **Transcribe** | Transcribe video to text (YouTube, Twitch, X, Kick URLs or file upload) | Whisper Large V3 |

  ### Audio

  | Operation | Description | Models |
  |-----------|-------------|--------|
  | **Clone a Voice** | Clone a voice from a reference audio and generate speech | Qwen3 TTS VoiceClone |
  | **Generate a Speech** | Convert text to speech audio | Kokoro, Chatterbox, Qwen3 TTS Custom Voice, Qwen3 TTS Voice Design |
  | **Transcribe** | Transcribe audio file to text | Whisper Large V3 |

  ### Prompt

  | Operation | Description |
  |-----------|-------------|
  | **Image Prompt Booster** | Optimize a prompt for text-to-image generation |
  | **Video Prompt Booster** | Optimize a prompt for text/image-to-video generation |

  ## How It Works

  Generation operations (image, video, transcription) use a webhook-based waiting pattern:

  1. The node submits a generation request to deAPI with a webhook URL
  2. The workflow pauses while deAPI processes the request
  3. When deAPI completes the job, it sends a webhook notification
  4. The workflow resumes with the generated content (binary file or text)

  This approach ensures efficient resource usage - the workflow doesn't actively poll for results.

  ## Compatibility

  - Tested with n8n version 2.3.4
  - Webhook-based operations require n8n to be accessible via HTTPS

  ## Example Workflow

  An example n8n workflow demonstrating all available operations is included in [`examples/deAPI_guide.json`](examples/deAPI_guide.json). Import it into your n8n instance to get started quickly:

  1. Download [`deAPI_guide.json`](https://raw.githubusercontent.com/deapi-ai/n8n-nodes-deapi/main/examples/deAPI_guide.json) from the GitHub repository
  2. In n8n, go to **Workflows** > **Import from File**
  3. Select the downloaded `deAPI_guide.json`
  4. Set up your deAPI credentials (API Key + Webhook Secret)
  5. Explore the example nodes and sticky notes for usage instructions

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [deAPI Documentation](https://docs.deapi.ai/)
  - [deAPI Website](https://deapi.ai/)
  - [GitHub Repository](https://github.com/deapi-ai/n8n-nodes-deapi)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows based on the completion status of generation jobs (image, video, audio) submitted to the deAPI platform.","capabilities":["Image generation (FLUX models, Z-Image Turbo)","Background removal (Ben2)","Image upscaling (RealESRGAN x4)","Video generation from text or images (LTX-Video, LTX-2)","Video generation from audio and text (LTX-2)","Audio transcription from video URLs or files (Whisper)","Voice cloning for speech generation (Qwen3 TTS)","Text-to-speech generation (Kokoro, Chatterbox, Qwen3 TTS)","Audio transcription from files (Whisper)","Image prompt optimization"],"authentication":"API key required (deAPI API Key) and Webhook Secret","commonUseCases":["Automated content creation workflows using open-source AI models","Cost-effective image and video generation pipelines","Audio transcription and voice cloning automation","Prompt optimization for better AI generation results"],"limitations":["Requires n8n to be accessible via HTTPS for webhook-based operations","Tested only with n8n version 2.3.4","Webhook-based waiting pattern may introduce latency during job processing"],"relatedNodes":["n8n-nodes-deapi.deapiImage","n8n-nodes-deapi.deapiVideo","n8n-nodes-deapi.deapiAudio","n8n-nodes-deapi.deapiPrompt"]}


node_type: @watchflow/n8n-nodes-watchflow.watchflow
package_name: @watchflow/n8n-nodes-watchflow
display_name: Watchflow
description: Heartbeat monitoring for your cron jobs and scheduled tasks.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: henriklippke
author_github_url: https://github.com/watchflow/n8n-nodes-watchflow.git
npm_package_name: @watchflow/n8n-nodes-watchflow
npm_version: 0.5.0
community_fetched_at: 2026-03-25T21:19:40.535Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "heartbeat",
      "options": [
        {
          "name": "Heartbeat",
          "value": "heartbeat"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ping",
      "options": [
        {
          "name": "Ping",
          "value": "ping",
          "action": "Mark job as successful",
          "description": "Simple ping to mark job as successful"
        },
        {
          "name": "Start",
          "value": "start",
          "action": "Start job tracking",
          "description": "Start job tracking for duration measurement"
        },
        {
          "name": "Error",
          "value": "fail",
          "action": "Mark job as failed",
          "description": "Mark job as failed with error message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "heartbeat"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Ping",
      "value": "ping",
      "action": "Mark job as successful",
      "description": "Simple ping to mark job as successful"
    },
    {
      "name": "Start",
      "value": "start",
      "action": "Start job tracking",
      "description": "Start job tracking for duration measurement"
    },
    {
      "name": "Error",
      "value": "fail",
      "action": "Mark job as failed",
      "description": "Mark job as failed with error message"
    }
  ]

npm_readme:
  # @watchflow/n8n-nodes-watchflow

  This is an n8n community node for [Watchflow.io](https://www.watchflow.io/). It allows you to send heartbeats from your n8n workflows to monitor their health and execution time.

  ## Installation

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

  ## Credentials

  To use this node, you'll need a Watchflow API Key. You can get one from the [Watchflow Dashboard](https://app.watchflow.io).

  ## Resources & Operations

  ### Heartbeat

  Monitor your scheduled tasks and cron jobs.

  #### Operations:
  - **Ping**: Simple heartbeat successful notification. Marks the job as successful.
  - **Start**: Signal the start of a job. Use this at the beginning of a workflow to track execution duration.
  - **Error**: Signal a job failure. Marks the job as failed and allows you to provide an error message.

  #### Parameters:
  - **Monitor Key**: A unique identifier for your monitor (e.g., `daily-backup`).
  - **Monitor Name**: A human-readable name for your monitor.
  - **Interval**: Expected heartbeat interval (e.g., `5m`, `1h`, `24h`).
  - **Additional Data**: Custom metrics or metadata as a JSON object.
  - **Error Message**: Description of why the job failed (only for Error operation).

  ## Local Development

  See [LOCAL-DEVELOPMENT.md](./LOCAL-DEVELOPMENT.md) for instructions on how to run and test this node locally using Docker.

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node sends heartbeats to Watchflow.io to monitor the health, execution time, and status of scheduled tasks and cron jobs.","capabilities":["Send heartbeat notifications for job monitoring","Mark jobs as successful via Ping operation","Track job execution duration via Start operation","Report job failures with custom error messages via Error operation","Attach custom metrics and metadata as JSON objects","Configure heartbeat intervals (e.g., 5m, 1h, 24h)"],"authentication":"API key required (Watchflow API Key from Dashboard)","commonUseCases":["Monitoring cron job health","Tracking scheduled task execution time","Alerting on workflow failures","Custom metric collection for automated processes"],"limitations":[],"relatedNodes":[]}


node_type: @ionos-cloud/n8n-nodes-ionos-cloud.ionosCloudCloudApi
package_name: @ionos-cloud/n8n-nodes-ionos-cloud
display_name: IONOS Cloud (Infrastructure)
description: Manage IONOS Cloud infrastructure resources
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: rijeshharidas
author_github_url: https://github.com/ionos-cloud/n8n-nodes-ionos-cloud.git
npm_package_name: @ionos-cloud/n8n-nodes-ionos-cloud
npm_version: 1.0.8
community_fetched_at: 2026-03-25T21:19:40.536Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "datacenter",
      "options": [
        {
          "name": "Contract",
          "value": "contract"
        },
        {
          "name": "Location",
          "value": "location"
        },
        {
          "name": "Image",
          "value": "image"
        },
        {
          "name": "IP Block",
          "value": "ipBlock"
        },
        {
          "name": "Request",
          "value": "request"
        },
        {
          "name": "Datacenter",
          "value": "datacenter"
        },
        {
          "name": "LAN",
          "value": "lan"
        },
        {
          "name": "Server",
          "value": "server"
        },
        {
          "name": "Volume",
          "value": "volume"
        },
        {
          "name": "Snapshot",
          "value": "snapshot"
        },
        {
          "name": "NIC",
          "value": "nic"
        },
        {
          "name": "Firewall Rule",
          "value": "firewallRule"
        },
        {
          "name": "Kubernetes Cluster",
          "value": "k8s"
        },
        {
          "name": "Node Pool",
          "value": "nodePool"
        },
        {
          "name": "Private Cross-Connect",
          "value": "pcc"
        },
        {
          "name": "Load Balancer",
          "value": "loadBalancer"
        },
        {
          "name": "Network Load Balancer",
          "value": "networkLoadBalancer"
        },
        {
          "name": "Application Load Balancer",
          "value": "applicationLoadBalancer"
        },
        {
          "name": "Target Group",
          "value": "targetGroup"
        },
        {
          "name": "NAT Gateway",
          "value": "natGateway"
        },
        {
          "name": "Security Group",
          "value": "securityGroup"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get contracts",
          "routing": {
            "request": {
              "url": "/contracts",
              "method": "GET"
            }
          },
          "description": "Get contract information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contract"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a location",
          "routing": {
            "request": {
              "url": "=/locations/{{$parameter.regionId}}/{{$parameter.locationId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a specific location"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get locations",
          "routing": {
            "request": {
              "url": "/locations?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many available locations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "location"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an image",
          "routing": {
            "request": {
              "url": "=/images/{{$parameter.imageId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of an image"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get images",
          "routing": {
            "request": {
              "url": "/images?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many available images"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an IP block",
          "routing": {
            "request": {
              "url": "/ipblocks",
              "method": "POST"
            }
          },
          "description": "Reserve a new IP block"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an IP block",
          "routing": {
            "request": {
              "url": "=/ipblocks/{{$parameter.ipBlockId}}",
              "method": "DELETE"
            }
          },
          "description": "Release an IP block"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an IP block",
          "routing": {
            "request": {
              "url": "=/ipblocks/{{$parameter.ipBlockId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of an IP block"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get IP blocks",
          "routing": {
            "request": {
              "url": "/ipblocks?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many reserved IP blocks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ipBlock"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a request",
          "routing": {
            "request": {
              "method": "GET"
            }
          },
          "description": "Retrieve a specific request"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many requests",
          "routing": {
            "request": {
              "url": "/requests",
              "method": "GET"
            }
          },
          "description": "List many API requests"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get request status",
          "routing": {
            "request": {
              "method": "GET"
            }
          },
          "description": "Retrieve the status of a request"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "request"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a datacenter",
          "routing": {
            "request": {
              "url": "/datacenters",
              "method": "POST"
            }
          },
          "description": "Create a new datacenter"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a datacenter",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a datacenter"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a datacenter",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the data of a single datacenter"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get datacenters",
          "routing": {
            "request": {
              "url": "/datacenters?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many datacenters"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a datacenter",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}",
              "method": "PUT"
            }
          },
          "description": "Update the properties of a datacenter"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "datacenter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a LAN",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans",
              "method": "POST"
            }
          },
          "description": "Create a new LAN"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a LAN",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a LAN"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a LAN",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a LAN"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many lans",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many LANs within a datacenter"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a LAN",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}",
              "method": "PUT"
            }
          },
          "description": "Update LAN properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lan"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Attach CDROM",
          "value": "attachCdrom",
          "action": "Attach CDROM to server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms",
              "method": "POST"
            }
          },
          "description": "Attach a CDROM image to server"
        },
        {
          "name": "Attach Volume",
          "value": "attachVolume",
          "action": "Attach volume to server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes",
              "method": "POST"
            }
          },
          "description": "Attach an existing volume to server"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers",
              "method": "POST"
            }
          },
          "description": "Create a new server"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a server"
        },
        {
          "name": "Detach CDROM",
          "value": "detachCdrom",
          "action": "Detach CDROM from server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms/{{$parameter.cdromId}}",
              "method": "DELETE"
            }
          },
          "description": "Detach a CDROM from server"
        },
        {
          "name": "Detach Volume",
          "value": "detachVolume",
          "action": "Detach volume from server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes/{{$parameter.volumeId}}",
              "method": "DELETE"
            }
          },
          "description": "Detach a volume from server"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the data of a single server"
        },
        {
          "name": "Get CDROM",
          "value": "getCdrom",
          "action": "Get attached CDROM",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms/{{$parameter.cdromId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific attached CDROM"
        },
        {
          "name": "Get CDROMs",
          "value": "getCdroms",
          "action": "Get attached cdro ms",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms",
              "method": "GET"
            }
          },
          "description": "List all CDROMs attached to server"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get servers",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many servers within a specific data center"
        },
        {
          "name": "Get Remote Console",
          "value": "getRemoteConsole",
          "action": "Get remote console URL",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/remoteconsole",
              "method": "GET"
            }
          },
          "description": "Get remote console access URL"
        },
        {
          "name": "Get Token",
          "value": "getToken",
          "action": "Get server token",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/token",
              "method": "GET"
            }
          },
          "description": "Get JSON Web Token for server access"
        },
        {
          "name": "Get Volume",
          "value": "getVolume",
          "action": "Get attached volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes/{{$parameter.volumeId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific attached volume"
        },
        {
          "name": "Get Volumes",
          "value": "getVolumes",
          "action": "Get attached volumes",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes",
              "method": "GET"
            }
          },
          "description": "List all volumes attached to server"
        },
        {
          "name": "Reboot",
          "value": "reboot",
          "action": "Reboot a  server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/reboot",
              "method": "POST"
            }
          },
          "description": "Reboot a server"
        },
        {
          "name": "Resume",
          "value": "resume",
          "action": "Resume a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/resume",
              "method": "POST"
            }
          },
          "description": "Resume a suspended Cube server"
        },
        {
          "name": "Start",
          "value": "start",
          "action": "Start a  server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/start",
              "method": "POST"
            }
          },
          "description": "Start a server"
        },
        {
          "name": "Stop",
          "value": "stop",
          "action": "Stop a  server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/stop",
              "method": "POST"
            }
          },
          "description": "Stop a server"
        },
        {
          "name": "Suspend",
          "value": "suspend",
          "action": "Suspend a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/suspend",
              "method": "POST"
            }
          },
          "description": "Suspend a Cube server"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}",
              "method": "PUT"
            }
          },
          "description": "Update a server"
        },
        {
          "name": "Upgrade",
          "value": "upgrade",
          "action": "Upgrade a server",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/upgrade",
              "method": "POST"
            }
          },
          "description": "Upgrade a server to a newer generation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "server"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes",
              "method": "POST"
            }
          },
          "description": "Create a new volume"
        },
        {
          "name": "Create Snapshot",
          "value": "createSnapshot",
          "action": "Create a volume snapshot",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}/create-snapshot",
              "method": "POST"
            }
          },
          "description": "Create a snapshot of a volume"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a volume"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the data of a single volume"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get volumes",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many volumes within a datacenter"
        },
        {
          "name": "Restore Snapshot",
          "value": "restoreSnapshot",
          "action": "Restore volume from snapshot",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}/restore-snapshot",
              "method": "POST"
            }
          },
          "description": "Restore a volume from a snapshot"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a volume",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}",
              "method": "PUT"
            }
          },
          "description": "Update volume properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "volume"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a snapshot",
          "routing": {
            "request": {
              "url": "=/snapshots/{{$parameter.snapshotId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a snapshot"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a snapshot",
          "routing": {
            "request": {
              "url": "=/snapshots/{{$parameter.snapshotId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the data of a single snapshot"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get snapshots",
          "routing": {
            "request": {
              "url": "/snapshots?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many available snapshots"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a snapshot",
          "routing": {
            "request": {
              "url": "=/snapshots/{{$parameter.snapshotId}}",
              "method": "PUT"
            }
          },
          "description": "Update snapshot properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "snapshot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics",
              "method": "POST"
            }
          },
          "description": "Create a new network interface"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a network interface"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a network interface"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many nics",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many network interfaces of a server"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}",
              "method": "PUT"
            }
          },
          "description": "Update network interface properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "nic"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a firewall rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules",
              "method": "POST"
            }
          },
          "description": "Create a new firewall rule"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a firewall rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules/{{$parameter.firewallRuleId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a firewall rule"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a firewall rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules/{{$parameter.firewallRuleId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a firewall rule"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get firewall rules",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many firewall rules for a NIC"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a firewall rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules/{{$parameter.firewallRuleId}}",
              "method": "PUT"
            }
          },
          "description": "Update firewall rule properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "firewallRule"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a kubernetes cluster",
          "routing": {
            "request": {
              "url": "/k8s",
              "method": "POST"
            }
          },
          "description": "Create a new Kubernetes cluster"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a kubernetes cluster",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter.k8sClusterId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a Kubernetes cluster"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a kubernetes cluster",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter.k8sClusterId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a Kubernetes cluster"
        },
        {
          "name": "Get Kubeconfig",
          "value": "getKubeconfig",
          "action": "Get kubernetes configuration",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter.k8sClusterId}}/kubeconfig",
              "method": "GET"
            }
          },
          "description": "Get the kubeconfig file for a cluster"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many kubernetes clusters",
          "routing": {
            "request": {
              "url": "/k8s?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many Kubernetes clusters"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a kubernetes cluster",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter.k8sClusterId}}",
              "method": "PUT"
            }
          },
          "description": "Update Kubernetes cluster properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "k8s"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools",
              "method": "POST"
            }
          },
          "description": "Create a node pool"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a node pool"
        },
        {
          "name": "Delete Node",
          "value": "deleteNode",
          "action": "Delete a node from a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes/{{$parameter[\"nodeId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a node from a node pool"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a node pool"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many node pools",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools",
              "method": "GET"
            }
          },
          "description": "Get many node pools"
        },
        {
          "name": "Get Node",
          "value": "getNode",
          "action": "Get a node in a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes/{{$parameter[\"nodeId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific node in a node pool"
        },
        {
          "name": "Get Nodes",
          "value": "getNodes",
          "action": "Get nodes in a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes",
              "method": "GET"
            }
          },
          "description": "Get all nodes in a node pool"
        },
        {
          "name": "Replace Node",
          "value": "replaceNode",
          "action": "Replace a node in a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes/{{$parameter[\"nodeId\"]}}/replace",
              "method": "POST"
            }
          },
          "description": "Recreate a node in a node pool"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a node pool",
          "routing": {
            "request": {
              "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update a node pool"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "nodePool"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a private cross connect",
          "routing": {
            "request": {
              "url": "/pccs",
              "method": "POST"
            }
          },
          "description": "Create a new Private Cross-Connect"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a private cross connect",
          "routing": {
            "request": {
              "url": "=/pccs/{{$parameter.pccId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a Private Cross-Connect"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a private cross connect",
          "routing": {
            "request": {
              "url": "=/pccs/{{$parameter.pccId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a Private Cross-Connect"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many private cross connects",
          "routing": {
            "request": {
              "url": "/pccs?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many Private Cross-Connects"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a private cross connect",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/pccs/{{$parameter.pccId}}",
              "method": "PATCH"
            }
          },
          "description": "Update Private Cross-Connect properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pcc"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Attach NIC",
          "value": "attachNic",
          "action": "Attach NIC to load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics",
              "method": "POST"
            }
          },
          "description": "Attach a NIC to load balancer"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers",
              "method": "POST"
            }
          },
          "description": "Create a Load Balancer"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a Load Balancer"
        },
        {
          "name": "Detach NIC",
          "value": "detachNic",
          "action": "Detach NIC from load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics/{{$parameter[\"nicId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Detach a NIC from load balancer"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a Load Balancer"
        },
        {
          "name": "Get Balanced NIC",
          "value": "getBalancedNic",
          "action": "Get a balanced NIC",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics/{{$parameter[\"nicId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a balanced NIC"
        },
        {
          "name": "Get Balanced NICs",
          "value": "getBalancedNics",
          "action": "Get balanced nics",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics",
              "method": "GET"
            }
          },
          "description": "List balanced NICs"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many load balancers",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers",
              "method": "GET"
            }
          },
          "description": "Get many Load Balancers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update a Load Balancer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "loadBalancer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers",
              "method": "POST"
            }
          },
          "description": "Create a Network Load Balancer"
        },
        {
          "name": "Create Flow Log",
          "value": "createFlowLog",
          "action": "Create a flow log for a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs",
              "method": "POST"
            }
          },
          "description": "Create a flow log for a Network Load Balancer"
        },
        {
          "name": "Create Forwarding Rule",
          "value": "createForwardingRule",
          "action": "Create a forwarding rule for a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules",
              "method": "POST"
            }
          },
          "description": "Create a forwarding rule for a Network Load Balancer"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a Network Load Balancer"
        },
        {
          "name": "Delete Flow Log",
          "value": "deleteFlowLog",
          "action": "Delete a flow log from a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a flow log from a Network Load Balancer"
        },
        {
          "name": "Delete Forwarding Rule",
          "value": "deleteForwardingRule",
          "action": "Delete a forwarding rule from a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a forwarding rule from a Network Load Balancer"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a Network Load Balancer"
        },
        {
          "name": "Get Flow Log",
          "value": "getFlowLog",
          "action": "Get a flow log of a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific flow log of a Network Load Balancer"
        },
        {
          "name": "Get Flow Logs",
          "value": "getFlowLogs",
          "action": "Get flow logs of a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs",
              "method": "GET"
            }
          },
          "description": "Get all flow logs of a Network Load Balancer"
        },
        {
          "name": "Get Forwarding Rule",
          "value": "getForwardingRule",
          "action": "Get a forwarding rule of a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific forwarding rule of a Network Load Balancer"
        },
        {
          "name": "Get Forwarding Rules",
          "value": "getForwardingRules",
          "action": "Get forwarding rules of a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules",
              "method": "GET"
            }
          },
          "description": "Get all forwarding rules of a Network Load Balancer"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many network load balancers",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers",
              "method": "GET"
            }
          },
          "description": "Get many Network Load Balancers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a network load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update a Network Load Balancer"
        },
        {
          "name": "Update Flow Log",
          "value": "updateFlowLog",
          "action": "Update a flow log of a network load balancer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update a flow log of a Network Load Balancer"
        },
        {
          "name": "Update Forwarding Rule",
          "value": "updateForwardingRule",
          "action": "Update a forwarding rule of a network load balancer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update a forwarding rule of a Network Load Balancer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "networkLoadBalancer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers",
              "method": "POST"
            }
          },
          "description": "Create an Application Load Balancer"
        },
        {
          "name": "Create Flow Log",
          "value": "createFlowLog",
          "action": "Create a flow log for an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs",
              "method": "POST"
            }
          },
          "description": "Create a flow log for an Application Load Balancer"
        },
        {
          "name": "Create Forwarding Rule",
          "value": "createForwardingRule",
          "action": "Create a forwarding rule for an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules",
              "method": "POST"
            }
          },
          "description": "Create a forwarding rule for an Application Load Balancer"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete an Application Load Balancer"
        },
        {
          "name": "Delete Flow Log",
          "value": "deleteFlowLog",
          "action": "Delete a flow log from an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a flow log from an Application Load Balancer"
        },
        {
          "name": "Delete Forwarding Rule",
          "value": "deleteForwardingRule",
          "action": "Delete a forwarding rule from an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a forwarding rule from an Application Load Balancer"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get an Application Load Balancer"
        },
        {
          "name": "Get Flow Log",
          "value": "getFlowLog",
          "action": "Get a flow log of an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific flow log of an Application Load Balancer"
        },
        {
          "name": "Get Flow Logs",
          "value": "getFlowLogs",
          "action": "Get flow logs of an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs",
              "method": "GET"
            }
          },
          "description": "Get all flow logs of an Application Load Balancer"
        },
        {
          "name": "Get Forwarding Rule",
          "value": "getForwardingRule",
          "action": "Get a forwarding rule of an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a specific forwarding rule of an Application Load Balancer"
        },
        {
          "name": "Get Forwarding Rules",
          "value": "getForwardingRules",
          "action": "Get forwarding rules of an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules",
              "method": "GET"
            }
          },
          "description": "Get all forwarding rules of an Application Load Balancer"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many application load balancers",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers",
              "method": "GET"
            }
          },
          "description": "Get many Application Load Balancers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an application load balancer",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an Application Load Balancer"
        },
        {
          "name": "Update Flow Log",
          "value": "updateFlowLog",
          "action": "Update a flow log of an application load balancer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update a flow log of an Application Load Balancer"
        },
        {
          "name": "Update Forwarding Rule",
          "value": "updateForwardingRule",
          "action": "Update a forwarding rule of an application load balancer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update a forwarding rule of an Application Load Balancer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "applicationLoadBalancer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a target group",
          "routing": {
            "request": {
              "url": "=/targetgroups",
              "method": "POST"
            }
          },
          "description": "Create a target group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a target group",
          "routing": {
            "request": {
              "url": "=/targetgroups/{{$parameter.targetGroupId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a target group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a target group",
          "routing": {
            "request": {
              "url": "=/targetgroups/{{$parameter.targetGroupId}}",
              "method": "GET"
            }
          },
          "description": "Get a target group"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many target groups",
          "routing": {
            "request": {
              "url": "=/targetgroups",
              "method": "GET"
            }
          },
          "description": "Get many target groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a target group",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/targetgroups/{{$parameter.targetGroupId}}",
              "method": "PATCH"
            }
          },
          "description": "Update a target group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "targetGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways",
              "method": "POST"
            }
          },
          "description": "Create a new NAT Gateway"
        },
        {
          "name": "Create Flow Log",
          "value": "createFlowLog",
          "action": "Create a flow log for a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs",
              "method": "POST"
            }
          },
          "description": "Create a NAT Gateway flow log"
        },
        {
          "name": "Create Rule",
          "value": "createRule",
          "action": "Create a rule for a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules",
              "method": "POST"
            }
          },
          "description": "Create a NAT Gateway rule"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a NAT Gateway"
        },
        {
          "name": "Delete Flow Log",
          "value": "deleteFlowLog",
          "action": "Delete a flow log from a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs/{{$parameter.flowLogId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a NAT Gateway flow log"
        },
        {
          "name": "Delete Rule",
          "value": "deleteRule",
          "action": "Delete a rule from a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules/{{$parameter.ruleId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a NAT Gateway rule"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a NAT Gateway"
        },
        {
          "name": "Get Flow Log",
          "value": "getFlowLog",
          "action": "Get a flow log of a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs/{{$parameter.flowLogId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific NAT Gateway flow log"
        },
        {
          "name": "Get Flow Logs",
          "value": "getFlowLogs",
          "action": "Get flow logs of a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs",
              "method": "GET"
            }
          },
          "description": "Get all NAT Gateway flow logs"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many NAT gateways",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many NAT Gateways within a datacenter"
        },
        {
          "name": "Get Rule",
          "value": "getRule",
          "action": "Get a rule of a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules/{{$parameter.ruleId}}",
              "method": "GET"
            }
          },
          "description": "Get a specific NAT Gateway rule"
        },
        {
          "name": "Get Rules",
          "value": "getRules",
          "action": "Get rules of a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules",
              "method": "GET"
            }
          },
          "description": "Get all NAT Gateway rules"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a NAT gateway",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}",
              "method": "PUT"
            }
          },
          "description": "Update NAT Gateway properties"
        },
        {
          "name": "Update Flow Log",
          "value": "updateFlowLog",
          "action": "Update a flow log of a NAT gateway",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs/{{$parameter.flowLogId}}",
              "method": "PATCH"
            }
          },
          "description": "Update a NAT Gateway flow log"
        },
        {
          "name": "Update Rule",
          "value": "updateRule",
          "action": "Update a rule of a NAT gateway",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules/{{$parameter.ruleId}}",
              "method": "PATCH"
            }
          },
          "description": "Update a NAT Gateway rule"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "natGateway"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a security group",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups",
              "method": "POST"
            }
          },
          "description": "Create a new security group"
        },
        {
          "name": "Create Rule",
          "value": "createRule",
          "action": "Create a security group rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules",
              "method": "POST"
            }
          },
          "description": "Create a new rule in a security group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a security group",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a security group"
        },
        {
          "name": "Delete Rule",
          "value": "deleteRule",
          "action": "Delete a security group rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules/{{$parameter.ruleId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a rule from a security group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a security group",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}?depth=2",
              "method": "GET"
            }
          },
          "description": "Get the properties of a security group"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get security groups",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups?depth=2",
              "method": "GET"
            }
          },
          "description": "Get many security groups within a datacenter"
        },
        {
          "name": "Get Rule",
          "value": "getRule",
          "action": "Get a security group rule",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules/{{$parameter.ruleId}}",
              "method": "GET"
            }
          },
          "description": "Get properties of a specific rule"
        },
        {
          "name": "Get Rules",
          "value": "getRules",
          "action": "Get security group rules",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules",
              "method": "GET"
            }
          },
          "description": "List all rules in a security group"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a security group",
          "routing": {
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}",
              "method": "PUT"
            }
          },
          "description": "Update security group properties"
        },
        {
          "name": "Update Rule",
          "value": "updateRule",
          "action": "Update a security group rule",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules/{{$parameter.ruleId}}",
              "method": "PATCH"
            }
          },
          "description": "Update a rule in a security group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "securityGroup"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get contracts",
      "routing": {
        "request": {
          "url": "/contracts",
          "method": "GET"
        }
      },
      "description": "Get contract information"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a location",
      "routing": {
        "request": {
          "url": "=/locations/{{$parameter.regionId}}/{{$parameter.locationId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of a specific location"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get locations",
      "routing": {
        "request": {
          "url": "/locations?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many available locations"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an image",
      "routing": {
        "request": {
          "url": "=/images/{{$parameter.imageId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of an image"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get images",
      "routing": {
        "request": {
          "url": "/images?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many available images"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an IP block",
      "routing": {
        "request": {
          "url": "/ipblocks",
          "method": "POST"
        }
      },
      "description": "Reserve a new IP block"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an IP block",
      "routing": {
        "request": {
          "url": "=/ipblocks/{{$parameter.ipBlockId}}",
          "method": "DELETE"
        }
      },
      "description": "Release an IP block"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an IP block",
      "routing": {
        "request": {
          "url": "=/ipblocks/{{$parameter.ipBlockId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of an IP block"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get IP blocks",
      "routing": {
        "request": {
          "url": "/ipblocks?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many reserved IP blocks"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a request",
      "routing": {
        "request": {
          "method": "GET"
        }
      },
      "description": "Retrieve a specific request"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many requests",
      "routing": {
        "request": {
          "url": "/requests",
          "method": "GET"
        }
      },
      "description": "List many API requests"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get request status",
      "routing": {
        "request": {
          "method": "GET"
        }
      },
      "description": "Retrieve the status of a request"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a datacenter",
      "routing": {
        "request": {
          "url": "/datacenters",
          "method": "POST"
        }
      },
      "description": "Create a new datacenter"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a datacenter",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a datacenter"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a datacenter",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the data of a single datacenter"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get datacenters",
      "routing": {
        "request": {
          "url": "/datacenters?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many datacenters"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a datacenter",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}",
          "method": "PUT"
        }
      },
      "description": "Update the properties of a datacenter"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a LAN",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/lans",
          "method": "POST"
        }
      },
      "description": "Create a new LAN"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a LAN",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a LAN"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a LAN",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of a LAN"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many lans",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/lans?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many LANs within a datacenter"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a LAN",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}",
          "method": "PUT"
        }
      },
      "description": "Update LAN properties"
    },
    {
      "name": "Attach CDROM",
      "value": "attachCdrom",
      "action": "Attach CDROM to server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms",
          "method": "POST"
        }
      },
      "description": "Attach a CDROM image to server"
    },
    {
      "name": "Attach Volume",
      "value": "attachVolume",
      "action": "Attach volume to server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes",
          "method": "POST"
        }
      },
      "description": "Attach an existing volume to server"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers",
          "method": "POST"
        }
      },
      "description": "Create a new server"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a server"
    },
    {
      "name": "Detach CDROM",
      "value": "detachCdrom",
      "action": "Detach CDROM from server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms/{{$parameter.cdromId}}",
          "method": "DELETE"
        }
      },
      "description": "Detach a CDROM from server"
    },
    {
      "name": "Detach Volume",
      "value": "detachVolume",
      "action": "Detach volume from server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes/{{$parameter.volumeId}}",
          "method": "DELETE"
        }
      },
      "description": "Detach a volume from server"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the data of a single server"
    },
    {
      "name": "Get CDROM",
      "value": "getCdrom",
      "action": "Get attached CDROM",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms/{{$parameter.cdromId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific attached CDROM"
    },
    {
      "name": "Get CDROMs",
      "value": "getCdroms",
      "action": "Get attached cdro ms",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/cdroms",
          "method": "GET"
        }
      },
      "description": "List all CDROMs attached to server"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get servers",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many servers within a specific data center"
    },
    {
      "name": "Get Remote Console",
      "value": "getRemoteConsole",
      "action": "Get remote console URL",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/remoteconsole",
          "method": "GET"
        }
      },
      "description": "Get remote console access URL"
    },
    {
      "name": "Get Token",
      "value": "getToken",
      "action": "Get server token",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/token",
          "method": "GET"
        }
      },
      "description": "Get JSON Web Token for server access"
    },
    {
      "name": "Get Volume",
      "value": "getVolume",
      "action": "Get attached volume",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes/{{$parameter.volumeId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific attached volume"
    },
    {
      "name": "Get Volumes",
      "value": "getVolumes",
      "action": "Get attached volumes",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/volumes",
          "method": "GET"
        }
      },
      "description": "List all volumes attached to server"
    },
    {
      "name": "Reboot",
      "value": "reboot",
      "action": "Reboot a  server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/reboot",
          "method": "POST"
        }
      },
      "description": "Reboot a server"
    },
    {
      "name": "Resume",
      "value": "resume",
      "action": "Resume a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/resume",
          "method": "POST"
        }
      },
      "description": "Resume a suspended Cube server"
    },
    {
      "name": "Start",
      "value": "start",
      "action": "Start a  server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/start",
          "method": "POST"
        }
      },
      "description": "Start a server"
    },
    {
      "name": "Stop",
      "value": "stop",
      "action": "Stop a  server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/stop",
          "method": "POST"
        }
      },
      "description": "Stop a server"
    },
    {
      "name": "Suspend",
      "value": "suspend",
      "action": "Suspend a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/suspend",
          "method": "POST"
        }
      },
      "description": "Suspend a Cube server"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}",
          "method": "PUT"
        }
      },
      "description": "Update a server"
    },
    {
      "name": "Upgrade",
      "value": "upgrade",
      "action": "Upgrade a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/upgrade",
          "method": "POST"
        }
      },
      "description": "Upgrade a server to a newer generation"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a volume",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes",
          "method": "POST"
        }
      },
      "description": "Create a new volume"
    },
    {
      "name": "Create Snapshot",
      "value": "createSnapshot",
      "action": "Create a volume snapshot",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}/create-snapshot",
          "method": "POST"
        }
      },
      "description": "Create a snapshot of a volume"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a volume",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a volume"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a volume",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the data of a single volume"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get volumes",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many volumes within a datacenter"
    },
    {
      "name": "Restore Snapshot",
      "value": "restoreSnapshot",
      "action": "Restore volume from snapshot",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}/restore-snapshot",
          "method": "POST"
        }
      },
      "description": "Restore a volume from a snapshot"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a volume",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}",
          "method": "PUT"
        }
      },
      "description": "Update volume properties"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a snapshot",
      "routing": {
        "request": {
          "url": "=/snapshots/{{$parameter.snapshotId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a snapshot"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a snapshot",
      "routing": {
        "request": {
          "url": "=/snapshots/{{$parameter.snapshotId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the data of a single snapshot"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get snapshots",
      "routing": {
        "request": {
          "url": "/snapshots?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many available snapshots"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a snapshot",
      "routing": {
        "request": {
          "url": "=/snapshots/{{$parameter.snapshotId}}",
          "method": "PUT"
        }
      },
      "description": "Update snapshot properties"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a NIC",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics",
          "method": "POST"
        }
      },
      "description": "Create a new network interface"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a NIC",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a network interface"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a NIC",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of a network interface"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many nics",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many network interfaces of a server"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a NIC",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}",
          "method": "PUT"
        }
      },
      "description": "Update network interface properties"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a firewall rule",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules",
          "method": "POST"
        }
      },
      "description": "Create a new firewall rule"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a firewall rule",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules/{{$parameter.firewallRuleId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a firewall rule"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a firewall rule",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules/{{$parameter.firewallRuleId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of a firewall rule"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get firewall rules",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many firewall rules for a NIC"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a firewall rule",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}/nics/{{$parameter.nicId}}/firewallrules/{{$parameter.firewallRuleId}}",
          "method": "PUT"
        }
      },
      "description": "Update firewall rule properties"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a kubernetes cluster",
      "routing": {
        "request": {
          "url": "/k8s",
          "method": "POST"
        }
      },
      "description": "Create a new Kubernetes cluster"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a kubernetes cluster",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter.k8sClusterId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a Kubernetes cluster"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a kubernetes cluster",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter.k8sClusterId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of a Kubernetes cluster"
    },
    {
      "name": "Get Kubeconfig",
      "value": "getKubeconfig",
      "action": "Get kubernetes configuration",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter.k8sClusterId}}/kubeconfig",
          "method": "GET"
        }
      },
      "description": "Get the kubeconfig file for a cluster"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many kubernetes clusters",
      "routing": {
        "request": {
          "url": "/k8s?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many Kubernetes clusters"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a kubernetes cluster",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter.k8sClusterId}}",
          "method": "PUT"
        }
      },
      "description": "Update Kubernetes cluster properties"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a node pool",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools",
          "method": "POST"
        }
      },
      "description": "Create a node pool"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a node pool",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a node pool"
    },
    {
      "name": "Delete Node",
      "value": "deleteNode",
      "action": "Delete a node from a node pool",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes/{{$parameter[\"nodeId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a node from a node pool"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a node pool",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a node pool"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many node pools",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools",
          "method": "GET"
        }
      },
      "description": "Get many node pools"
    },
    {
      "name": "Get Node",
      "value": "getNode",
      "action": "Get a node in a node pool",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes/{{$parameter[\"nodeId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a specific node in a node pool"
    },
    {
      "name": "Get Nodes",
      "value": "getNodes",
      "action": "Get nodes in a node pool",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes",
          "method": "GET"
        }
      },
      "description": "Get all nodes in a node pool"
    },
    {
      "name": "Replace Node",
      "value": "replaceNode",
      "action": "Replace a node in a node pool",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}/nodes/{{$parameter[\"nodeId\"]}}/replace",
          "method": "POST"
        }
      },
      "description": "Recreate a node in a node pool"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a node pool",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools/{{$parameter[\"nodePoolId\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update a node pool"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a private cross connect",
      "routing": {
        "request": {
          "url": "/pccs",
          "method": "POST"
        }
      },
      "description": "Create a new Private Cross-Connect"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a private cross connect",
      "routing": {
        "request": {
          "url": "=/pccs/{{$parameter.pccId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a Private Cross-Connect"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a private cross connect",
      "routing": {
        "request": {
          "url": "=/pccs/{{$parameter.pccId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of a Private Cross-Connect"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many private cross connects",
      "routing": {
        "request": {
          "url": "/pccs?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many Private Cross-Connects"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a private cross connect",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/pccs/{{$parameter.pccId}}",
          "method": "PATCH"
        }
      },
      "description": "Update Private Cross-Connect properties"
    },
    {
      "name": "Attach NIC",
      "value": "attachNic",
      "action": "Attach NIC to load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics",
          "method": "POST"
        }
      },
      "description": "Attach a NIC to load balancer"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers",
          "method": "POST"
        }
      },
      "description": "Create a Load Balancer"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a Load Balancer"
    },
    {
      "name": "Detach NIC",
      "value": "detachNic",
      "action": "Detach NIC from load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics/{{$parameter[\"nicId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Detach a NIC from load balancer"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a Load Balancer"
    },
    {
      "name": "Get Balanced NIC",
      "value": "getBalancedNic",
      "action": "Get a balanced NIC",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics/{{$parameter[\"nicId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a balanced NIC"
    },
    {
      "name": "Get Balanced NICs",
      "value": "getBalancedNics",
      "action": "Get balanced nics",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}/balancednics",
          "method": "GET"
        }
      },
      "description": "List balanced NICs"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many load balancers",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers",
          "method": "GET"
        }
      },
      "description": "Get many Load Balancers"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers/{{$parameter[\"loadBalancerId\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update a Load Balancer"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers",
          "method": "POST"
        }
      },
      "description": "Create a Network Load Balancer"
    },
    {
      "name": "Create Flow Log",
      "value": "createFlowLog",
      "action": "Create a flow log for a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs",
          "method": "POST"
        }
      },
      "description": "Create a flow log for a Network Load Balancer"
    },
    {
      "name": "Create Forwarding Rule",
      "value": "createForwardingRule",
      "action": "Create a forwarding rule for a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules",
          "method": "POST"
        }
      },
      "description": "Create a forwarding rule for a Network Load Balancer"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a Network Load Balancer"
    },
    {
      "name": "Delete Flow Log",
      "value": "deleteFlowLog",
      "action": "Delete a flow log from a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a flow log from a Network Load Balancer"
    },
    {
      "name": "Delete Forwarding Rule",
      "value": "deleteForwardingRule",
      "action": "Delete a forwarding rule from a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a forwarding rule from a Network Load Balancer"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a Network Load Balancer"
    },
    {
      "name": "Get Flow Log",
      "value": "getFlowLog",
      "action": "Get a flow log of a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a specific flow log of a Network Load Balancer"
    },
    {
      "name": "Get Flow Logs",
      "value": "getFlowLogs",
      "action": "Get flow logs of a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs",
          "method": "GET"
        }
      },
      "description": "Get all flow logs of a Network Load Balancer"
    },
    {
      "name": "Get Forwarding Rule",
      "value": "getForwardingRule",
      "action": "Get a forwarding rule of a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a specific forwarding rule of a Network Load Balancer"
    },
    {
      "name": "Get Forwarding Rules",
      "value": "getForwardingRules",
      "action": "Get forwarding rules of a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules",
          "method": "GET"
        }
      },
      "description": "Get all forwarding rules of a Network Load Balancer"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many network load balancers",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers",
          "method": "GET"
        }
      },
      "description": "Get many Network Load Balancers"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a network load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update a Network Load Balancer"
    },
    {
      "name": "Update Flow Log",
      "value": "updateFlowLog",
      "action": "Update a flow log of a network load balancer",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Update a flow log of a Network Load Balancer"
    },
    {
      "name": "Update Forwarding Rule",
      "value": "updateForwardingRule",
      "action": "Update a forwarding rule of a network load balancer",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/networkloadbalancers/{{$parameter[\"networkLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Update a forwarding rule of a Network Load Balancer"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers",
          "method": "POST"
        }
      },
      "description": "Create an Application Load Balancer"
    },
    {
      "name": "Create Flow Log",
      "value": "createFlowLog",
      "action": "Create a flow log for an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs",
          "method": "POST"
        }
      },
      "description": "Create a flow log for an Application Load Balancer"
    },
    {
      "name": "Create Forwarding Rule",
      "value": "createForwardingRule",
      "action": "Create a forwarding rule for an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules",
          "method": "POST"
        }
      },
      "description": "Create a forwarding rule for an Application Load Balancer"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete an Application Load Balancer"
    },
    {
      "name": "Delete Flow Log",
      "value": "deleteFlowLog",
      "action": "Delete a flow log from an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a flow log from an Application Load Balancer"
    },
    {
      "name": "Delete Forwarding Rule",
      "value": "deleteForwardingRule",
      "action": "Delete a forwarding rule from an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a forwarding rule from an Application Load Balancer"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get an Application Load Balancer"
    },
    {
      "name": "Get Flow Log",
      "value": "getFlowLog",
      "action": "Get a flow log of an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a specific flow log of an Application Load Balancer"
    },
    {
      "name": "Get Flow Logs",
      "value": "getFlowLogs",
      "action": "Get flow logs of an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs",
          "method": "GET"
        }
      },
      "description": "Get all flow logs of an Application Load Balancer"
    },
    {
      "name": "Get Forwarding Rule",
      "value": "getForwardingRule",
      "action": "Get a forwarding rule of an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a specific forwarding rule of an Application Load Balancer"
    },
    {
      "name": "Get Forwarding Rules",
      "value": "getForwardingRules",
      "action": "Get forwarding rules of an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules",
          "method": "GET"
        }
      },
      "description": "Get all forwarding rules of an Application Load Balancer"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many application load balancers",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers",
          "method": "GET"
        }
      },
      "description": "Get many Application Load Balancers"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an application load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update an Application Load Balancer"
    },
    {
      "name": "Update Flow Log",
      "value": "updateFlowLog",
      "action": "Update a flow log of an application load balancer",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/flowlogs/{{$parameter[\"flowLogId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Update a flow log of an Application Load Balancer"
    },
    {
      "name": "Update Forwarding Rule",
      "value": "updateForwardingRule",
      "action": "Update a forwarding rule of an application load balancer",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/applicationloadbalancers/{{$parameter[\"applicationLoadBalancerId\"]}}/forwardingrules/{{$parameter[\"forwardingRuleId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Update a forwarding rule of an Application Load Balancer"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a target group",
      "routing": {
        "request": {
          "url": "=/targetgroups",
          "method": "POST"
        }
      },
      "description": "Create a target group"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a target group",
      "routing": {
        "request": {
          "url": "=/targetgroups/{{$parameter.targetGroupId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a target group"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a target group",
      "routing": {
        "request": {
          "url": "=/targetgroups/{{$parameter.targetGroupId}}",
          "method": "GET"
        }
      },
      "description": "Get a target group"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many target groups",
      "routing": {
        "request": {
          "url": "=/targetgroups",
          "method": "GET"
        }
      },
      "description": "Get many target groups"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a target group",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/targetgroups/{{$parameter.targetGroupId}}",
          "method": "PATCH"
        }
      },
      "description": "Update a target group"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways",
          "method": "POST"
        }
      },
      "description": "Create a new NAT Gateway"
    },
    {
      "name": "Create Flow Log",
      "value": "createFlowLog",
      "action": "Create a flow log for a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs",
          "method": "POST"
        }
      },
      "description": "Create a NAT Gateway flow log"
    },
    {
      "name": "Create Rule",
      "value": "createRule",
      "action": "Create a rule for a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules",
          "method": "POST"
        }
      },
      "description": "Create a NAT Gateway rule"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a NAT Gateway"
    },
    {
      "name": "Delete Flow Log",
      "value": "deleteFlowLog",
      "action": "Delete a flow log from a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs/{{$parameter.flowLogId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a NAT Gateway flow log"
    },
    {
      "name": "Delete Rule",
      "value": "deleteRule",
      "action": "Delete a rule from a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules/{{$parameter.ruleId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a NAT Gateway rule"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of a NAT Gateway"
    },
    {
      "name": "Get Flow Log",
      "value": "getFlowLog",
      "action": "Get a flow log of a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs/{{$parameter.flowLogId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific NAT Gateway flow log"
    },
    {
      "name": "Get Flow Logs",
      "value": "getFlowLogs",
      "action": "Get flow logs of a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs",
          "method": "GET"
        }
      },
      "description": "Get all NAT Gateway flow logs"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many NAT gateways",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many NAT Gateways within a datacenter"
    },
    {
      "name": "Get Rule",
      "value": "getRule",
      "action": "Get a rule of a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules/{{$parameter.ruleId}}",
          "method": "GET"
        }
      },
      "description": "Get a specific NAT Gateway rule"
    },
    {
      "name": "Get Rules",
      "value": "getRules",
      "action": "Get rules of a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules",
          "method": "GET"
        }
      },
      "description": "Get all NAT Gateway rules"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}",
          "method": "PUT"
        }
      },
      "description": "Update NAT Gateway properties"
    },
    {
      "name": "Update Flow Log",
      "value": "updateFlowLog",
      "action": "Update a flow log of a NAT gateway",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/flowlogs/{{$parameter.flowLogId}}",
          "method": "PATCH"
        }
      },
      "description": "Update a NAT Gateway flow log"
    },
    {
      "name": "Update Rule",
      "value": "updateRule",
      "action": "Update a rule of a NAT gateway",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways/{{$parameter.natGatewayId}}/rules/{{$parameter.ruleId}}",
          "method": "PATCH"
        }
      },
      "description": "Update a NAT Gateway rule"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a security group",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups",
          "method": "POST"
        }
      },
      "description": "Create a new security group"
    },
    {
      "name": "Create Rule",
      "value": "createRule",
      "action": "Create a security group rule",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules",
          "method": "POST"
        }
      },
      "description": "Create a new rule in a security group"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a security group",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a security group"
    },
    {
      "name": "Delete Rule",
      "value": "deleteRule",
      "action": "Delete a security group rule",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules/{{$parameter.ruleId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a rule from a security group"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a security group",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}?depth=2",
          "method": "GET"
        }
      },
      "description": "Get the properties of a security group"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get security groups",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many security groups within a datacenter"
    },
    {
      "name": "Get Rule",
      "value": "getRule",
      "action": "Get a security group rule",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules/{{$parameter.ruleId}}",
          "method": "GET"
        }
      },
      "description": "Get properties of a specific rule"
    },
    {
      "name": "Get Rules",
      "value": "getRules",
      "action": "Get security group rules",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules",
          "method": "GET"
        }
      },
      "description": "List all rules in a security group"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a security group",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}",
          "method": "PUT"
        }
      },
      "description": "Update security group properties"
    },
    {
      "name": "Update Rule",
      "value": "updateRule",
      "action": "Update a security group rule",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups/{{$parameter.securityGroupId}}/rules/{{$parameter.ruleId}}",
          "method": "PATCH"
        }
      },
      "description": "Update a rule in a security group"
    }
  ]

npm_readme:
  <div align="center">

  <img src="./credentials/ionos.svg" alt="IONOS Cloud" height="80" />&nbsp;&nbsp;&nbsp;&nbsp;<picture><source media="(prefers-color-scheme: dark)" srcset="https://n8n.io/brandguidelines/logo-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://n8n.io/brandguidelines/logo-dark.svg"><img src="https://n8n.io/brandguidelines/logo-dark.svg" alt="n8n" height="80" /></picture>

  # n8n Nodes for IONOS Cloud

  [![npm version](https://img.shields.io/npm/v/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![License](https://img.shields.io/npm/l/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/blob/master/LICENSE)
  [![npm downloads](https://img.shields.io/npm/dm/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![n8n](https://img.shields.io/badge/n8n-community-blue.svg)](https://n8n.io)
  ![Official](https://img.shields.io/badge/IONOS%20Cloud-Official-00BFFF.svg)

  **Official IONOS Cloud n8n community nodes**

  Automate your cloud infrastructure, DNS, CDN, certificates, and AI workflows with [n8n](https://n8n.io/)

  [Installation](#installation) • [Operations](#operations) • [Credentials](#credentials) • [Usage](#usage) • [Examples](#common-patterns) • [Resources](#resources)

  </div>

  ---

  ## Overview

  This is the **official** n8n community node package for IONOS Cloud, developed and maintained by the IONOS Cloud team. [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  The package provides comprehensive integration with key IONOS Cloud services, enabling you to automate infrastructure provisioning, certificate management, DNS operations, CDN distribution, and AI-powered workflows directly from n8n.

  ## Included Nodes

  This package provides seven separate nodes for different IONOS Cloud services:

  1. **IONOS Cloud (Infrastructure)** - Core infrastructure management
  2. **IONOS Cloud (Certificate Manager)** - SSL/TLS certificate management  
  3. **IONOS Cloud (Cloud DNS)** - Domain name system management
  4. **IONOS Cloud (CDN)** - Content delivery network management
  5. **IONOS Cloud (AI Model Hub)** - AI model inference and RAG capabilities
  6. **IONOS Cloud Chat Model** ⚡ - LangChain sub-node for n8n's AI Agent (language model)
  7. **IONOS Cloud Embeddings** ⚡ - LangChain sub-node for n8n's AI Agent (text embeddings)

  ---

  ## Getting Started

  ### Prerequisites

  Before you begin, you will need:

  1. A [IONOS Cloud account](https://www.ionos.com/enterprise-cloud/signup)
  2. A Cloud API Bearer token ([learn how to generate tokens](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager))
  3. n8n installed (version 2.1.5 or higher)

  ### Installation

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

  #### Quick Installation Steps

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@ionos-cloud/n8n-nodes-ionos-cloud` in **Enter npm package name**
  4. Agree to the risks of using community nodes
  5. Select **Install**

  **Note:** After installation, you may need to restart your n8n instance for the new node to be recognized.

  ## Operations

  ### Overview

  | Node | Resources | Operations | Description |
  |------|-----------|------------|-------------|
  | **Infrastructure** | 21 | 153 | Complete infrastructure management (compute, networking, storage, Kubernetes) |
  | **Certificate Manager** | 3 | 15 | SSL/TLS certificate lifecycle management with ACME support |
  | **Cloud DNS** | 7 | 28 | DNS zones, records (15 types), DNSSEC, zone transfers |
  | **CDN** | 2 | 7 | Content delivery with custom routing and geo-restrictions |
  | **AI Model Hub** | 4 | 20 | Foundation model inference, RAG capabilities, and OpenAI-compatible API |
  | **Chat Model** ⚡ | — | supplyData | LangChain chat model sub-node for n8n AI Agent |
  | **Embeddings** ⚡ | — | supplyData | LangChain embeddings sub-node for n8n AI Agent |

  > ⚡ **Sub-nodes**: The Chat Model and Embeddings nodes are LangChain sub-nodes that plug into n8n's built-in AI nodes (AI Agent, AI Chain, Vector Stores, etc.) rather than operating as standalone workflow nodes.

  > **✨ v1.0.2**: Patch release with enhanced subresource support for load balancers, NAT gateways, security groups, and target groups. Added request monitoring capabilities.


  <details>
  <summary><b>Infrastructure - Detailed Operations</b></summary>

  #### Account & Global Resources (12 operations)
  - **Contract** (1): Get Many
  - **Location** (2): Get, Get Many
  - **Image** (2): Get, Get Many  
  - **IP Block** (4): Create, Delete, Get, Get Many
  - **Request** (3): Get, Get All, Get Status

  #### Core Infrastructure (10 operations)
  - **Datacenter** (5): Create, Delete, Get, Get Many, Update
  - **LAN** (5): Create, Delete, Get, Get Many, Update

  #### Compute Resources (41 operations)
  - **Server** (21): Attach/Detach CDROM/Volume, Create, Delete, Get (+ CDROM/CDROMs/Volume/Volumes/Remote Console/Token), Get Many, Reboot, Resume, Start, Stop, Suspend, Update, Upgrade
  - **Volume** (6): Create, Create Snapshot, Delete, Get, Get Many, Update
  - **Snapshot** (4): Delete, Get, Get Many, Update
  - **NIC** (5): Create, Delete, Get, Get Many, Update
  - **Firewall Rule** (5): Create, Delete, Get, Get Many, Update

  #### Kubernetes (11 operations)
  - **Kubernetes Cluster** (6): Create, Delete, Get, Get Many, Get Kubeconfig, Update
  - **Node Pool** (5): Create, Delete, Get, Get Many, Update

  #### Networking (34 operations)
  - **Private Cross-Connect** (5): Create, Delete, Get, Get Many, Update
  - **Load Balancer** (9): Attach/Detach NIC, Create, Delete, Get (+ Balanced NIC/NICs), Get Many, Update
  - **Network Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources
  - **Application Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources with HTTP rules
  - **Target Group** (5): Create, Delete, Get, Get Many, Update
    - Enhanced with location and protocolVersion properties
  - **NAT Gateway** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Rules subresources

  #### Security (5 operations)
  - **Security Group** (5): Create, Delete, Get, Get Many, Update
    - Full support for Rules subresource with comprehensive rule properties

  </details>

  <details>
  <summary><b>Certificate Manager - Detailed Operations</b></summary>

  #### Certificate Resource (5 operations)
  Upload and manage SSL/TLS certificates manually with full chain and private key support.
  - Create, Delete, Get, Get Many, Update

  #### AutoCertificate Resource (5 operations)
  Configure automatic certificate renewal via ACME providers (Let's Encrypt, etc.).
  - Create, Delete, Get, Get Many, Update
  - **Key Algorithms**: RSA (2048/4096), ECDSA (256/384)
  - **Features**: Subject Alternative Names (SANs), common name, provider selection

  #### Provider Resource (5 operations)
  Configure ACME certificate providers with External Account Binding (EAB) support.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>Cloud DNS - Detailed Operations</b></summary>

  #### Zone Resource (5 operations)
  Manage primary DNS zones.
  - Create, Delete, Get, Get Many, Update

  #### Record Resource (5 operations)
  Manage DNS records with 15 supported types: A, AAAA, ALIAS, CAA, CNAME, DS, HTTPS, MX, NS, SMIMEA, SRV, SSHFP, SVCB, TLSA, TXT
  - Create, Delete, Get, Get Many, Update

  #### SecondaryZone Resource (7 operations)
  Secondary zones with AXFR (zone transfer) support.
  - Create, Delete, Get, Get Many, Update, AXFR Get, AXFR Start

  #### ZoneFile Resource (2 operations)
  Import/export zones in BIND format (RFC 1035).
  - Get (export), Update (import)

  #### Quota Resource (1 operation)
  View DNS resource usage and limits.
  - Get

  #### DNSSEC Resource (3 operations)
  Enable and manage DNSSEC for zones.
  - Create (enable), Delete (disable), Get

  #### ReverseRecord Resource (5 operations)
  Manage reverse DNS (PTR) records for IPv4/IPv6.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>CDN - Detailed Operations</b></summary>

  #### Distribution Resource (5 operations)
  Configure CDN distributions with custom routing rules.
  - Create, Delete, Get, Get Many, Update
  - **Features**: Domain routing, SSL/TLS integration, HTTP/HTTPS schemes, geo-restrictions, upstream origins

  #### Ip Resource (2 operations)
  Get CDN edge server IPs for origin whitelisting.
  - Get, Get Many

  </details>

  <details>
  <summary><b>AI Model Hub - Detailed Operations</b></summary>

  #### Model Resource (2 operations)
  Browse and invoke foundation models for AI inference.
  - Get Many (list available models), Predict (run inference)
  - **Features**: RAG support via collection queries, custom model options, streaming responses

  #### Collection Resource (6 operations)
  Manage vector database collections for document storage and retrieval.
  - Create, Delete, Get, Get Many, Update, Query
  - **Features**: Chunking strategies (sentence/fixed/recursive), embedding models, database types (chromadb/pgvector), semantic search

  #### Document Resource (7 operations)
  Manage documents within collections for RAG applications.
  - Add, Delete, Delete All, Get, Get Many, Get Chunks, Update
  - **Features**: Base64 content encoding, metadata management, chunk retrieval, batch operations

  #### OpenAI Compatible Resource (5 operations)
  Use OpenAI-compatible API endpoints for standardized AI interactions.

  **Chat Completion** - Create chat completions with message history
  - Supports system, user, and assistant message roles
  - Parameters: model, messages (required), temperature, top_p, max_tokens, max_completion_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, response_format, tools, tool_choice, user
  - Compatible with OpenAI chat completion API format

  **Completion** - Simple text completion
  - Parameters: model, prompt (required), temperature, top_p, max_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, user
  - Compatible with OpenAI completion API format

  **Create Embeddings** - Generate vector embeddings from text
  - Parameters: model (default: BAAI/bge-large-en-v1.5), input (single text or comma-separated multiple texts)
  - Returns embedding vectors for semantic search and similarity

  **Generate Image** - Text-to-image generation
  - Parameters: model (default: black-forest-labs/FLUX.1-schnell), prompt (required), n, size (1024x1024, 1024x1792, 1792x1024), response_format (b64_json), user
  - Generates images from text descriptions

  **Get Many** - List available models
  - Returns all models in OpenAI-compatible format
  - Shows model capabilities and availability

  **API Endpoint**: `https://openai.inference.de-txl.ionos.com` (path: `/v1/*`)

  **Features**: Full OpenAI API compatibility, drop-in replacement for OpenAI in existing workflows, comprehensive parameter support

  > **Note:** Model dropdowns are populated dynamically from the IONOS API at runtime (`GET /v1/models`). When models are added or retired, the dropdown lists update automatically without requiring a node update.

  </details>

  ---

  ## Credentials

  All nodes in this package share a single credential type: **IONOS Cloud API**

  Authentication uses the [Cloud API Bearer token](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager).

  The same token works across all IONOS Cloud services (Infrastructure, Certificate Manager, DNS, CDN, and AI Model Hub).

  ## Compatibility

  Tested against n8n version 2.1.5+

  ## Usage

  ### Authentication
  1. Create new credentials in n8n and select "IONOS Cloud API"
  2. Provide your API token (generated from IONOS Cloud Console)
  3. The same credential works for all five nodes

  ### Using the Nodes

  #### Infrastructure
  * Add the "IONOS Cloud (Infrastructure)" node to your workflow
  * Select the resource (e.g., Server, Volume, Datacenter)
  * Choose the operation and configure the required fields

  #### Certificate Manager
  * Add the "IONOS Cloud (Certificate Manager)" node to your workflow
  * Select the resource (Certificate, AutoCertificate, or Provider)
  * Configure certificate properties, domains, and ACME providers

  #### DNS
  * Add the "IONOS Cloud (Cloud DNS)" node to your workflow
  * Select the resource (Zone, Record, SecondaryZone, etc.)
  * Configure DNS zones, records, and DNSSEC settings

  #### CDN
  * Add the "IONOS Cloud (CDN)" node to your workflow
  * Select the resource (Distribution or Ip)
  * Configure CDN distributions with routing rules and upstream origins

  #### AI Model Hub
  * Add the "IONOS Cloud (AI Model Hub)" node to your workflow
  * Select the resource (Model, Collection, Document, or OpenAI Compatible)
  * **Model**: AI inference with native IONOS API
  * **Collection**: Vector database management for RAG
  * **Document**: Manage documents in collections
  * **OpenAI Compatible**: Use OpenAI-compatible endpoints (chat, completions, embeddings, images)

  #### AI Agent Integration (Chat Model & Embeddings Sub-Nodes)

  The **IONOS Cloud Chat Model** and **IONOS Cloud Embeddings** are LangChain sub-nodes that integrate with n8n's built-in AI nodes.

  **Chat Model** — Use IONOS AI Model Hub as the LLM brain for the AI Agent:
  1. Add an **AI Agent** node to your workflow
  2. Click **+** on the AI Agent's **Language Model** input
  3. Select **IONOS Cloud Chat Model**
  4. Choose your credential and pick a model from the auto-populated dropdown
  5. The agent now uses IONOS AI Model Hub for all LLM reasoning

  **Embeddings** — Use IONOS AI Model Hub for text embeddings in RAG pipelines:
  1. Add an **In-Memory Vector Store** (or any vector store node)
  2. Click **+** on the vector store's **Embedding** input
  3. Select **IONOS Cloud Embeddings**
  4. Choose your credential and pick an embedding model

  **Example: AI Agent with RAG**
  ```
  Chat Trigger → AI Agent
                   ├── Language Model: IONOS Cloud Chat Model
                   ├── Memory: Window Buffer Memory
                   └── Tool: Vector Store Tool
                                └── In-Memory Vector Store (Load)
                                         └── Embedding: IONOS Cloud Embeddings
  ```

  > **Note:** The model dropdowns are populated dynamically from the IONOS API at runtime. Both sub-nodes reuse the same **IONOS Cloud API** credential as all other nodes in this package.

  ### Common Patterns

  **Automated SSL Certificate Deployment:**
  1. Use Certificate Manager to create an AutoCertificate
  2. Use CDN node to create a Distribution referencing the certificate ID
  3. Automate certificate renewal with n8n scheduling

  **Infrastructure Provisioning:**
  1. Use Infrastructure node to create Datacenter, Server, and Volume
  2. Use DNS node to create Zone and A/AAAA Records pointing to server IPs
  3. Use Certificate Manager to provision SSL certificates for domains

  **DNS Management:**
  1. Use DNS Zone resource to create zones
  2. Use Record resource to manage DNS records (A, CNAME, MX, TXT, etc.)
  3. Use DNSSEC resource to enable DNSSEC signing
  4. Use ReverseRecord for PTR records

  **AI-Powered Applications with RAG:**
  1. Use AI Model Hub Collection resource to create a vector database
  2. Use Document resource to add knowledge base documents
  3. Use Model Predict operation with collection query for context-aware responses
  4. Automate document updates and model inference in workflows

  **OpenAI-Compatible AI Integration:**
  1. Use OpenAI Compatible Chat Completion for conversational AI
  2. Use Create Embeddings for semantic search and similarity
  3. Use Generate Image for text-to-image generation
  4. Drop-in replacement for OpenAI API in existing n8n workflows

  **AI Agent with IONOS Cloud (native n8n AI integration):**
  1. Use IONOS Cloud Chat Model as the language model for n8n's AI Agent
  2. Use IONOS Cloud Embeddings with Vector Stores for RAG pipelines
  3. Combine with Window Buffer Memory for conversational context
  4. Add Vector Store Tool to give the agent access to your knowledge base
  5. See `examples/ionos-ai-agent-workflow.json` for a ready-to-import workflow

  ### Avoiding Rate Limits

  The IONOS AI Model Hub API enforces rate limits (300 requests/min, 5 requests/sec with a burst of 10). When a node receives multiple input items (e.g., from a preceding "Get All" operation), n8n executes the node once per item, which can trigger `429 Too Many Requests` errors.

  To prevent this, configure **batching** in the node's **Settings** tab:

  1. Open the AI Model Hub node and go to the **Settings** tab
  2. Under **Request Options**, click **Add Option** and select **Batching**
  3. Set **Items per Batch** to `2` (or lower)
  4. Set **Batch Interval (ms)** to `1000` (or higher)

  This ensures n8n processes only a few items at a time with a delay between batches, staying within the API rate limits.

  > **Tip:** If your workflow only needs a single API call (e.g., one Chat Completion), use a **Limit** node before the AI Model Hub node to reduce the input to 1 item.

  ## API Endpoints

  Each node connects to:

  - **Infrastructure**: `https://api.ionos.com/cloudapi/v6/`
  - **Certificate Manager**: `https://certificate-manager.de-fra.ionos.com`
  - **Cloud DNS**: `https://dns.de-fra.ionos.com`
  - **CDN**: `https://cdn.de-fra.ionos.com`
  - **AI Model Hub (Inference API)**: `https://inference.de-txl.ionos.com`
  - **AI Model Hub (OpenAI Compatible API)**: `https://openai.inference.de-txl.ionos.com`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [IONOS Cloud Documentation](https://docs.ionos.com/cloud)
  * [Infrastructure API Documentation](https://api.ionos.com/docs/cloud/v6/)
  * [Certificate Manager API Documentation](https://api.ionos.com/docs/certmanager/v2/)
  * [Cloud DNS API Documentation](https://api.ionos.com/docs/dns/v1/)
  * [CDN API Documentation](https://api.ionos.com/docs/cdn/v1/)
  * [AI Model Hub API Documentation](https://api.ionos.com/docs/inference-modelhub/v1/)
  * [AI Model Hub OpenAI-compatible API Documentation](https://api.ionos.com/docs/inference-openai/v1/)

  ## Contributing

  We welcome contributions! If you find a bug or have a feature request:

  1. Check the [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues) to see if it's already been reported
  2. Open a new issue with a clear description and reproduction steps
  3. For feature requests, explain the use case and expected behavior

  ### Development

  To contribute code:

  1. Fork the repository
  2. Create a feature branch (`git checkout -b feature/amazing-feature`)
  3. Make your changes and test thoroughly
  4. Commit your changes (`git commit -m 'Add amazing feature'`)
  5. Push to the branch (`git push origin feature/amazing-feature`)
  6. Open a Pull Request

  ## License

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

  ## Support

  - 📖 [Documentation](https://docs.ionos.com/cloud)
  - 💬 [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues)
  - 🌐 [IONOS Cloud](https://www.ionos.com/cloud)
  - 📧 [Support](https://docs.ionos.com/cloud/support/general-information/contact-information)

  ---

  <div align="center">

  Made with ❤️ by the IONOS Cloud team

  </div>

ai_documentation_summary:
  {"purpose":"Manages IONOS Cloud infrastructure resources including compute, networking, storage, Kubernetes, DNS, certificates, CDN, and AI models within n8n workflows.","capabilities":["Infrastructure provisioning and management (servers, volumes, snapshots, NICs, firewalls)","Kubernetes cluster and node pool management","IP block and request management","DNS zone and record management with DNSSEC support","SSL/TLS certificate lifecycle management with ACME support","CDN content delivery with custom routing and geo-restrictions","AI model inference and RAG capabilities","LangChain sub-node integration for AI Agent workflows","Load balancer, NAT gateway, and security group management","Request monitoring capabilities"],"authentication":"API key required (Cloud API Bearer token)","commonUseCases":["Automating server provisioning and configuration","Managing SSL certificates for web applications","Configuring DNS zones and records","Setting up CDN for content delivery","Deploying and managing Kubernetes clusters"],"limitations":["Requires n8n version 2.1.5 or higher","Chat Model and Embeddings nodes are LangChain sub-nodes that plug into n8n's built-in AI nodes rather than operating as standalone workflow nodes","Some operations may require instance restart after installation"],"relatedNodes":["IONOS Cloud (Certificate Manager)","IONOS Cloud (Cloud DNS)","IONOS Cloud (CDN)","IONOS Cloud (AI Model Hub)","IONOS Cloud Chat Model"]}


node_type: @smartbooks-ai/n8n-nodes-api.smartbooksApi
package_name: @smartbooks-ai/n8n-nodes-api
display_name: Smartbooks API
description: Interact with Smartbooks API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: alexey-at-smartbooks
author_github_url: https://github.com/smartbooks-ai/n8n-nodes-api.git
npm_package_name: @smartbooks-ai/n8n-nodes-api
npm_version: 0.1.5
community_fetched_at: 2026-03-25T21:19:40.538Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Reporting",
      "options": [
        {
          "name": "Input",
          "value": "Input"
        },
        {
          "name": "Module",
          "value": "Modules"
        },
        {
          "name": "Profile",
          "value": "Profile"
        },
        {
          "name": "Reporting",
          "value": "Reporting"
        },
        {
          "name": "Structure",
          "value": "Structure"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Input Post Batch",
      "options": [
        {
          "name": "Batch Input",
          "value": "Input Post Batch",
          "action": "Batch input",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/input/batch",
              "method": "POST"
            }
          },
          "description": "Batch input for a given year and period. Requires scope input:write."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Input"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Modules Get Item Public",
      "options": [
        {
          "name": "Get Module",
          "value": "Modules Get Item Public",
          "action": "Get module",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/modules/{{$parameter[\"moduleCode\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a module by code. Requires scope modeling:read."
        },
        {
          "name": "Add Account",
          "value": "Modules Post Account",
          "action": "Add account",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/modules/{{$parameter[\"moduleCode\"]}}/subaccountstables/{{$parameter[\"subaccountsTableCode\"]}}/accounts",
              "method": "POST"
            }
          },
          "description": "Add an account to a subaccounts table of a module. Requires scope modeling:write."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Modules"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Reporting Yearly Amounts",
      "options": [
        {
          "name": "Get Outstanding Payables",
          "value": "Outstandingpayablesandreceivables Outstanding Payables",
          "action": "Get outstanding payables",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/reporting/outstanding/payables",
              "method": "GET"
            }
          },
          "description": "Get outstanding payables. Requires scope reporting:read."
        },
        {
          "name": "Get Outstanding Receivables",
          "value": "Outstandingpayablesandreceivables Outstanding Receivables",
          "action": "Get outstanding receivables",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/reporting/outstanding/receivables",
              "method": "GET"
            }
          },
          "description": "Get outstanding receivables. Requires scope reporting:read."
        },
        {
          "name": "Get Yearly Amounts",
          "value": "Reporting Yearly Amounts",
          "action": "Get yearly amounts",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/reporting/amounts/yearly/{{$parameter[\"year\"]}}",
              "method": "GET"
            }
          },
          "description": "Get yearly amounts for a given year. Requires scope reporting:read."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Reporting"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Structure Balance Sheet",
      "options": [
        {
          "name": "Get Balance Sheet Structure",
          "value": "Structure Balance Sheet",
          "action": "Get balance sheet structure",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/balance-sheet",
              "method": "GET"
            }
          },
          "description": "Get balance sheet structure. Requires scope reporting:read."
        },
        {
          "name": "Get Cash Flow Structure",
          "value": "Structure Cash Flow",
          "action": "Get cash flow structure",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/cash-flow",
              "method": "GET"
            }
          },
          "description": "Get cash flow structure. Requires scope reporting:read."
        },
        {
          "name": "Get Metrics Structure",
          "value": "Structure Metrics",
          "action": "Get metrics structure",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/metrics",
              "method": "GET"
            }
          },
          "description": "Get metrics structure. Requires scope reporting:read."
        },
        {
          "name": "Get Profit And Loss Structure",
          "value": "Structure Profit And Loss",
          "action": "Get profit and loss structure",
          "routing": {
            "request": {
              "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/profit-and-loss",
              "method": "GET"
            }
          },
          "description": "Get profit and loss structure. Requires scope reporting:read."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Profile My",
      "options": [
        {
          "name": "Get Profile",
          "value": "Profile My",
          "action": "Get profile",
          "routing": {
            "request": {
              "url": "=/api/v1/profile/my",
              "method": "GET"
            }
          },
          "description": "Get profile details including allowed tenants and companies. Requires scope profile:read."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Profile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /api/v1/c/{companyCode}/input/batch",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Input"
          ],
          "operation": [
            "Input Post Batch"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/modules/{moduleCode}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Modules"
          ],
          "operation": [
            "Modules Get Item Public"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "POST /api/v1/c/{companyCode}/modules/{moduleCode}/subaccountstables/{subaccountsTableCode}/accounts",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Modules"
          ],
          "operation": [
            "Modules Post Account"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/reporting/amounts/yearly/{year}",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Reporting"
          ],
          "operation": [
            "Reporting Yearly Amounts"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/reporting/outstanding/payables",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Reporting"
          ],
          "operation": [
            "Outstandingpayablesandreceivables Outstanding Payables"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/reporting/outstanding/receivables",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Reporting"
          ],
          "operation": [
            "Outstandingpayablesandreceivables Outstanding Receivables"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/structure/balance-sheet",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ],
          "operation": [
            "Structure Balance Sheet"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/structure/cash-flow",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ],
          "operation": [
            "Structure Cash Flow"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/structure/metrics",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ],
          "operation": [
            "Structure Metrics"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/c/{companyCode}/structure/profit-and-loss",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Structure"
          ],
          "operation": [
            "Structure Profit And Loss"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "notice",
      "default": "",
      "displayName": "GET /api/v1/profile/my",
      "typeOptions": {
        "theme": "info"
      },
      "displayOptions": {
        "show": {
          "resource": [
            "Profile"
          ],
          "operation": [
            "Profile My"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "Batch Input",
      "value": "Input Post Batch",
      "action": "Batch input",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/input/batch",
          "method": "POST"
        }
      },
      "description": "Batch input for a given year and period. Requires scope input:write."
    },
    {
      "name": "Get Module",
      "value": "Modules Get Item Public",
      "action": "Get module",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/modules/{{$parameter[\"moduleCode\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a module by code. Requires scope modeling:read."
    },
    {
      "name": "Add Account",
      "value": "Modules Post Account",
      "action": "Add account",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/modules/{{$parameter[\"moduleCode\"]}}/subaccountstables/{{$parameter[\"subaccountsTableCode\"]}}/accounts",
          "method": "POST"
        }
      },
      "description": "Add an account to a subaccounts table of a module. Requires scope modeling:write."
    },
    {
      "name": "Get Outstanding Payables",
      "value": "Outstandingpayablesandreceivables Outstanding Payables",
      "action": "Get outstanding payables",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/reporting/outstanding/payables",
          "method": "GET"
        }
      },
      "description": "Get outstanding payables. Requires scope reporting:read."
    },
    {
      "name": "Get Outstanding Receivables",
      "value": "Outstandingpayablesandreceivables Outstanding Receivables",
      "action": "Get outstanding receivables",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/reporting/outstanding/receivables",
          "method": "GET"
        }
      },
      "description": "Get outstanding receivables. Requires scope reporting:read."
    },
    {
      "name": "Get Yearly Amounts",
      "value": "Reporting Yearly Amounts",
      "action": "Get yearly amounts",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/reporting/amounts/yearly/{{$parameter[\"year\"]}}",
          "method": "GET"
        }
      },
      "description": "Get yearly amounts for a given year. Requires scope reporting:read."
    },
    {
      "name": "Get Balance Sheet Structure",
      "value": "Structure Balance Sheet",
      "action": "Get balance sheet structure",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/balance-sheet",
          "method": "GET"
        }
      },
      "description": "Get balance sheet structure. Requires scope reporting:read."
    },
    {
      "name": "Get Cash Flow Structure",
      "value": "Structure Cash Flow",
      "action": "Get cash flow structure",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/cash-flow",
          "method": "GET"
        }
      },
      "description": "Get cash flow structure. Requires scope reporting:read."
    },
    {
      "name": "Get Metrics Structure",
      "value": "Structure Metrics",
      "action": "Get metrics structure",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/metrics",
          "method": "GET"
        }
      },
      "description": "Get metrics structure. Requires scope reporting:read."
    },
    {
      "name": "Get Profit And Loss Structure",
      "value": "Structure Profit And Loss",
      "action": "Get profit and loss structure",
      "routing": {
        "request": {
          "url": "=/api/v1/c/{{$parameter[\"companyCode\"]}}/structure/profit-and-loss",
          "method": "GET"
        }
      },
      "description": "Get profit and loss structure. Requires scope reporting:read."
    },
    {
      "name": "Get Profile",
      "value": "Profile My",
      "action": "Get profile",
      "routing": {
        "request": {
          "url": "=/api/v1/profile/my",
          "method": "GET"
        }
      },
      "description": "Get profile details including allowed tenants and companies. Requires scope profile:read."
    }
  ]

npm_readme:
  # Smartbooks API – n8n Node

  [n8n](https://n8n.io) community node for the [Smartbooks API](https://smartbooks.ai). Use it in n8n workflows to interact with Smartbooks (reporting, input, intercompany matching, modules, and more).

  ## Installation

  In n8n:

  1. Open **Settings** → **Community nodes** → **Install**.
  2. Enter: `@smartbooks-ai/n8n-nodes-api`
  3. Install and restart n8n if prompted.

  Or install via CLI in your n8n project:

  ```bash
  npm install @smartbooks-ai/n8n-nodes-api
  ```

  ## Credentials

  The node uses **Smartbooks OAuth2 API** credentials.

  1. Add a **Smartbooks API** credential in n8n.
  2. Use your Smartbooks OAuth2 client ID and client secret.
  3. Authorize; the node will use this credential for all requests.

  ## Resources & operations

  The node supports these Smartbooks resources and their operations:

  - **Input** – e.g. batch input (by year and period)
  - **Module** – module operations
  - **Profile** – profile operations
  - **Reporting** – reporting operations
  - **Structure** – structure operations

  Choose **Resource** and **Operation** in the node; required parameters (e.g. company code, IDs) will appear as needed.

  ## License

  MIT © [smartbooks](https://smartbooks.ai)

ai_documentation_summary:
  {"purpose":"A community n8n node that enables interaction with the Smartbooks API for accounting operations including reporting, input, intercompany matching, and module management.","capabilities":["Batch input by year and period","Module operations","Profile operations","Reporting operations","Structure operations","Intercompany matching","Company code management","ID-based resource queries"],"authentication":"OAuth2 (Smartbooks OAuth2 API credentials with client ID and client secret)","commonUseCases":["Automated financial reporting generation","Batch data entry for accounting periods","Intercompany transaction matching","Module configuration and updates","Company structure management"],"limitations":["Community node (may lack official support)","Requires prior setup of Smartbooks OAuth2 credentials in n8n","Specific parameters depend on selected resource and operation types"],"relatedNodes":["Smartbooks API Credential","General API nodes","OAuth2 authentication nodes"]}


node_type: n8n-nodes-dumplingai.dumplingAi
package_name: n8n-nodes-dumplingai
display_name: Dumpling AI
description: Interact with Dumpling AI APIs (data, web scraping, document conversion, AI, etc.)
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: dumplingai
author_github_url: https://github.com/dumplingai/
npm_package_name: n8n-nodes-dumplingai
npm_version: 0.1.1
community_fetched_at: 2026-03-25T21:19:40.538Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "dataApi",
      "options": [
        {
          "name": "Data API",
          "value": "dataApi"
        },
        {
          "name": "Web Scraping",
          "value": "webScraping"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getYouTubeTranscript",
      "options": [
        {
          "name": "Get Google Reviews",
          "value": "getGoogleReviews",
          "action": "Get Google Reviews",
          "routing": {
            "request": {
              "url": "/get-google-reviews",
              "body": {
                "cid": "={{ $parameter.inputType === \"cid\" ? $parameter.cid : undefined }}",
                "sortBy": "={{ $parameter.sortBy }}",
                "keyword": "={{ $parameter.inputType === \"keyword\" ? $parameter.keyword : undefined }}",
                "placeId": "={{ $parameter.inputType === \"placeId\" ? $parameter.placeId : undefined }}",
                "reviews": "={{ $parameter.reviews }}",
                "language": "={{ $parameter.language }}",
                "location": "={{ $parameter.location || undefined }}"
              },
              "method": "POST"
            }
          },
          "description": "Get Google Reviews for a place or business"
        },
        {
          "name": "Get TikTok Transcript",
          "value": "getTikTokTranscript",
          "action": "Get TikTok Transcript",
          "routing": {
            "request": {
              "url": "/get-tiktok-transcript",
              "body": {
                "videoUrl": "={{ $parameter.videoUrl }}",
                "preferredLanguage": "={{ $parameter.preferredLanguage }}"
              },
              "method": "POST"
            }
          },
          "description": "Retrieve the transcript from a TikTok video"
        },
        {
          "name": "Get YouTube Transcript",
          "value": "getYouTubeTranscript",
          "action": "Get YouTube Transcript",
          "routing": {
            "request": {
              "url": "/get-youtube-transcript",
              "body": {
                "videoUrl": "={{ $parameter.videoUrl }}",
                "includeTimestamps": "={{ $parameter.includeTimestamps }}",
                "preferredLanguage": "={{ $parameter.preferredLanguage }}",
                "timestampsToCombine": "={{ $parameter.timestampsToCombine }}"
              },
              "method": "POST"
            }
          },
          "description": "Extract the transcript from a specified YouTube video URL"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search Google",
          "routing": {
            "request": {
              "url": "/search",
              "body": {
                "page": "={{ $parameter.page }}",
                "query": "={{ $parameter.query }}",
                "country": "={{ $parameter.country }}",
                "language": "={{ $parameter.language }}",
                "location": "={{ $parameter.location }}",
                "dateRange": "={{ $parameter.dateRange }}",
                "scrapeOptions": {
                  "format": "={{ $parameter.scrapeFormat }}",
                  "cleaned": "={{ $parameter.scrapeCleaned }}"
                },
                "scrapeResults": "={{ $parameter.scrapeResults }}",
                "numResultsToScrape": "={{ $parameter.numResultsToScrape }}"
              },
              "method": "POST"
            }
          },
          "description": "Perform a Google web search with optional content scraping"
        },
        {
          "name": "Search News",
          "value": "searchNews",
          "action": "Search News",
          "routing": {
            "request": {
              "url": "/search-news",
              "body": {
                "page": "={{ $parameter.page }}",
                "query": "={{ $parameter.query }}",
                "country": "={{ $parameter.country }}",
                "language": "={{ $parameter.language }}",
                "location": "={{ $parameter.location }}",
                "dateRange": "={{ $parameter.dateRange }}"
              },
              "method": "POST"
            }
          },
          "description": "Search Google News for articles"
        },
        {
          "name": "Search Places",
          "value": "searchPlaces",
          "action": "Search Places",
          "routing": {
            "request": {
              "url": "/search-places",
              "body": {
                "page": "={{ $parameter.page }}",
                "query": "={{ $parameter.query }}",
                "country": "={{ $parameter.country }}",
                "language": "={{ $parameter.language }}",
                "location": "={{ $parameter.location }}"
              },
              "method": "POST"
            }
          },
          "description": "Search Google Places for businesses and locations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dataApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scrapeUrl",
      "options": [
        {
          "name": "Scrape URL",
          "value": "scrapeUrl",
          "action": "Scrape URL",
          "routing": {
            "request": {
              "url": "/scrape",
              "body": {
                "url": "={{ $parameter.url }}",
                "format": "={{ $parameter.format }}",
                "cleaned": "={{ $parameter.cleaned }}",
                "renderJs": "={{ $parameter.renderJs }}"
              },
              "method": "POST"
            }
          },
          "description": "Scrape data from a specified URL with formatting options"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webScraping"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Google Reviews",
      "value": "getGoogleReviews",
      "action": "Get Google Reviews",
      "routing": {
        "request": {
          "url": "/get-google-reviews",
          "body": {
            "cid": "={{ $parameter.inputType === \"cid\" ? $parameter.cid : undefined }}",
            "sortBy": "={{ $parameter.sortBy }}",
            "keyword": "={{ $parameter.inputType === \"keyword\" ? $parameter.keyword : undefined }}",
            "placeId": "={{ $parameter.inputType === \"placeId\" ? $parameter.placeId : undefined }}",
            "reviews": "={{ $parameter.reviews }}",
            "language": "={{ $parameter.language }}",
            "location": "={{ $parameter.location || undefined }}"
          },
          "method": "POST"
        }
      },
      "description": "Get Google Reviews for a place or business"
    },
    {
      "name": "Get TikTok Transcript",
      "value": "getTikTokTranscript",
      "action": "Get TikTok Transcript",
      "routing": {
        "request": {
          "url": "/get-tiktok-transcript",
          "body": {
            "videoUrl": "={{ $parameter.videoUrl }}",
            "preferredLanguage": "={{ $parameter.preferredLanguage }}"
          },
          "method": "POST"
        }
      },
      "description": "Retrieve the transcript from a TikTok video"
    },
    {
      "name": "Get YouTube Transcript",
      "value": "getYouTubeTranscript",
      "action": "Get YouTube Transcript",
      "routing": {
        "request": {
          "url": "/get-youtube-transcript",
          "body": {
            "videoUrl": "={{ $parameter.videoUrl }}",
            "includeTimestamps": "={{ $parameter.includeTimestamps }}",
            "preferredLanguage": "={{ $parameter.preferredLanguage }}",
            "timestampsToCombine": "={{ $parameter.timestampsToCombine }}"
          },
          "method": "POST"
        }
      },
      "description": "Extract the transcript from a specified YouTube video URL"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search Google",
      "routing": {
        "request": {
          "url": "/search",
          "body": {
            "page": "={{ $parameter.page }}",
            "query": "={{ $parameter.query }}",
            "country": "={{ $parameter.country }}",
            "language": "={{ $parameter.language }}",
            "location": "={{ $parameter.location }}",
            "dateRange": "={{ $parameter.dateRange }}",
            "scrapeOptions": {
              "format": "={{ $parameter.scrapeFormat }}",
              "cleaned": "={{ $parameter.scrapeCleaned }}"
            },
            "scrapeResults": "={{ $parameter.scrapeResults }}",
            "numResultsToScrape": "={{ $parameter.numResultsToScrape }}"
          },
          "method": "POST"
        }
      },
      "description": "Perform a Google web search with optional content scraping"
    },
    {
      "name": "Search News",
      "value": "searchNews",
      "action": "Search News",
      "routing": {
        "request": {
          "url": "/search-news",
          "body": {
            "page": "={{ $parameter.page }}",
            "query": "={{ $parameter.query }}",
            "country": "={{ $parameter.country }}",
            "language": "={{ $parameter.language }}",
            "location": "={{ $parameter.location }}",
            "dateRange": "={{ $parameter.dateRange }}"
          },
          "method": "POST"
        }
      },
      "description": "Search Google News for articles"
    },
    {
      "name": "Search Places",
      "value": "searchPlaces",
      "action": "Search Places",
      "routing": {
        "request": {
          "url": "/search-places",
          "body": {
            "page": "={{ $parameter.page }}",
            "query": "={{ $parameter.query }}",
            "country": "={{ $parameter.country }}",
            "language": "={{ $parameter.language }}",
            "location": "={{ $parameter.location }}"
          },
          "method": "POST"
        }
      },
      "description": "Search Google Places for businesses and locations"
    },
    {
      "name": "Scrape URL",
      "value": "scrapeUrl",
      "action": "Scrape URL",
      "routing": {
        "request": {
          "url": "/scrape",
          "body": {
            "url": "={{ $parameter.url }}",
            "format": "={{ $parameter.format }}",
            "cleaned": "={{ $parameter.cleaned }}",
            "renderJs": "={{ $parameter.renderJs }}"
          },
          "method": "POST"
        }
      },
      "description": "Scrape data from a specified URL with formatting options"
    }
  ]

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

  # n8n-nodes-dumplingai

  This is an n8n community node that provides integration with [Dumpling AI](https://dumplingai.com) APIs for data extraction, web scraping, document conversion, and AI-powered operations.

  [Dumpling AI](https://dumplingai.com) is a comprehensive API platform that provides various data extraction and AI services including YouTube transcript extraction, TikTok data scraping, web scraping, document conversion, and more.

  ## Installation

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

  ## Credentials

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

  https://app.dumplingai.com/register

  Once registered, you can find your API key here:

  https://app.dumplingai.com/api-keys

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

  ## Usage

  Add Dumpling AI to a workflow and configure your operation.

  ### Available Operations

  This node currently supports:

  #### Data API Operations
  - **Get YouTube Transcript** - Extract transcripts from YouTube videos with timestamps and language options
  - **Get TikTok Transcript** - Extract transcripts/captions from TikTok videos
  - **Search (Google Web)** - Perform Google web searches with optional content scraping
  - **Search Places** - Search Google Places for businesses and locations
  - **Search News** - Search Google News for articles
  - **Get Google Reviews** - Extract Google Reviews for businesses using keywords, CID, or Place ID

  #### Web Scraping Operations
  - **Scrape URL** - Extract content from web pages with formatting options

  Additional operations will be added in future releases.

  #### Get YouTube Transcript

  Extract transcripts from YouTube videos with optional timestamps and language preferences.

  ```json
  {
    "videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "includeTimestamps": true,
    "timestampsToCombine": 5,
    "preferredLanguage": "en"
  }
  ```

  #### Get TikTok Transcript

  Extract transcripts/captions from TikTok videos with language preferences.

  ```json
  {
    "videoUrl": "https://www.tiktok.com/@username/video/1234567890",
    "preferredLanguage": "en"
  }
  ```

  #### Search (Google Web)

  Perform Google web searches with optional content scraping of results.

  ```json
  {
    "query": "artificial intelligence trends 2024",
    "country": "US",
    "language": "en",
    "scrapeResults": true,
    "numResultsToScrape": 3,
    "scrapeFormat": "markdown"
  }
  ```

  #### Search Places

  Search Google Places for businesses and locations.

  ```json
  {
    "query": "coffee shops near me",
    "location": "New York, NY",
    "language": "en"
  }
  ```

  #### Search News

  Search Google News for articles and news content.

  ```json
  {
    "query": "climate change",
    "dateRange": "past_week",
    "language": "en"
  }
  ```

  #### Get Google Reviews

  Extract Google Reviews for businesses using different identification methods.

  ```json
  {
    "inputType": "keyword",
    "keyword": "Starbucks Times Square",
    "reviews": 20,
    "sortBy": "newest"
  }
  ```

  #### Scrape URL

  Extract content from web pages with customizable formatting and processing options.

  ```json
  {
    "url": "https://example.com",
    "format": "markdown",
    "cleaned": true,
    "renderJs": true
  }
  ```

  **Output Formats:**
  - **HTML** - Raw HTML content
  - **Markdown** - Clean markdown format  
  - **Screenshot** - Screenshot of the page

  ## API Resources

  This node currently supports the most popular Dumpling AI APIs. If there's an API missing that you would like to use, please let us know at admin@dumplingai.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 requests.

  ### Coming Soon

  - Document Conversion (PDF, Word, Excel, etc.)
  - AI Operations (Agent completions, Knowledge base search, Image generation)
  - Developer Tools (JavaScript/Python code execution)
  - Additional Data APIs (Social media profiles, advanced scraping)

  ## Related Resources

  Dumpling AI's complete API documentation is available here:

  https://docs.dumplingai.com/api-reference/introduction

  You can also find additional tutorials and resources here:

  https://docs.dumplingai.com/guides

  ## Development

  ### Release Flow

  After merging PRs into main, follow these steps to publish a new version:

  ```bash
  # Switch to main branch and ensure it's up to date
  git checkout main
  git pull origin main

  # Bump version (patch, minor, or major)
  npm version patch         # or minor / major

  # Push changes and tags
  git push origin main
  git push origin v$(node -p "require('./package.json').version")
  ```

  The tag push will automatically trigger the GitHub Actions workflow, which will:
  1. Build the package
  2. Check if the version already exists on npm
  3. Publish to npm if it's a new version

  You'll see a ✅ job in the Actions tab and the new version will appear on npm within a minute.

  ## License

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with Dumpling AI APIs to perform data extraction, web scraping, document conversion, and AI-powered operations.","capabilities":["Extract YouTube transcripts with timestamps","Extract TikTok transcripts/captions","Perform Google web searches with optional content scraping","Search Google Places for businesses and locations","Search Google News for articles","Extract Google Reviews for businesses","Scrape arbitrary URLs with customizable formatting","Output results in HTML, Markdown, or Screenshot formats"],"authentication":"API key required (configured via n8n credentials)","commonUseCases":["Extracting video content from YouTube and TikTok","Gathering business information and reviews","Web scraping with content cleaning options","Performing targeted Google searches with scraping"],"limitations":["Document conversion (PDF, Word, Excel) not yet available","AI operations (Agent completions, Knowledge base search, Image generation) not yet available","Developer Tools (JavaScript/Python code execution) not yet available","Additional social media profiles and advanced scraping features not yet available","Generic HTTP Request node can be used as a workaround for missing APIs"],"relatedNodes":["n8n-nodes-base.httprequest"]}


node_type: @ionos-cloud/n8n-nodes-ionos-cloud.ionosCloudCdn
package_name: @ionos-cloud/n8n-nodes-ionos-cloud
display_name: IONOS Cloud (CDN)
description: Interact with IONOS Cloud CDN API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: rijeshharidas
author_github_url: https://github.com/ionos-cloud/n8n-nodes-ionos-cloud.git
npm_package_name: @ionos-cloud/n8n-nodes-ionos-cloud
npm_version: 1.0.8
community_fetched_at: 2026-03-25T21:19:40.539Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "distribution",
      "options": [
        {
          "name": "Distribution",
          "value": "distribution"
        },
        {
          "name": "Ip",
          "value": "ips"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create distribution",
          "routing": {
            "request": {
              "url": "/distributions",
              "method": "POST"
            }
          },
          "description": "Create a new distribution"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete distribution",
          "routing": {
            "request": {
              "url": "=/distributions/{{$parameter.distributionId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a distribution"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get distribution",
          "routing": {
            "request": {
              "url": "=/distributions/{{$parameter.distributionId}}",
              "method": "GET"
            }
          },
          "description": "Get a distribution by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many distributions",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "/distributions",
              "method": "GET"
            }
          },
          "description": "Retrieve many distributions"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update distribution",
          "routing": {
            "request": {
              "url": "=/distributions/{{$parameter.distributionId}}",
              "method": "PUT"
            }
          },
          "description": "Update a distribution"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "distribution"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get edge server IP info",
          "routing": {
            "request": {
              "url": "=/ips/{{$parameter.ipId}}",
              "method": "GET"
            }
          },
          "description": "Get edge server IP information by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many edge server i ps",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "/ips",
              "method": "GET"
            }
          },
          "description": "Retrieve many edge server IPs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ips"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create distribution",
      "routing": {
        "request": {
          "url": "/distributions",
          "method": "POST"
        }
      },
      "description": "Create a new distribution"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete distribution",
      "routing": {
        "request": {
          "url": "=/distributions/{{$parameter.distributionId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a distribution"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get distribution",
      "routing": {
        "request": {
          "url": "=/distributions/{{$parameter.distributionId}}",
          "method": "GET"
        }
      },
      "description": "Get a distribution by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many distributions",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "/distributions",
          "method": "GET"
        }
      },
      "description": "Retrieve many distributions"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update distribution",
      "routing": {
        "request": {
          "url": "=/distributions/{{$parameter.distributionId}}",
          "method": "PUT"
        }
      },
      "description": "Update a distribution"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get edge server IP info",
      "routing": {
        "request": {
          "url": "=/ips/{{$parameter.ipId}}",
          "method": "GET"
        }
      },
      "description": "Get edge server IP information by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many edge server i ps",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "/ips",
          "method": "GET"
        }
      },
      "description": "Retrieve many edge server IPs"
    }
  ]

npm_readme:
  <div align="center">

  <img src="./credentials/ionos.svg" alt="IONOS Cloud" height="80" />&nbsp;&nbsp;&nbsp;&nbsp;<picture><source media="(prefers-color-scheme: dark)" srcset="https://n8n.io/brandguidelines/logo-white.svg"><source media="(prefers-color-scheme: light)" srcset="https://n8n.io/brandguidelines/logo-dark.svg"><img src="https://n8n.io/brandguidelines/logo-dark.svg" alt="n8n" height="80" /></picture>

  # n8n Nodes for IONOS Cloud

  [![npm version](https://img.shields.io/npm/v/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![License](https://img.shields.io/npm/l/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/blob/master/LICENSE)
  [![npm downloads](https://img.shields.io/npm/dm/@ionos-cloud/n8n-nodes-ionos-cloud.svg)](https://www.npmjs.com/package/@ionos-cloud/n8n-nodes-ionos-cloud)
  [![n8n](https://img.shields.io/badge/n8n-community-blue.svg)](https://n8n.io)
  ![Official](https://img.shields.io/badge/IONOS%20Cloud-Official-00BFFF.svg)

  **Official IONOS Cloud n8n community nodes**

  Automate your cloud infrastructure, DNS, CDN, certificates, and AI workflows with [n8n](https://n8n.io/)

  [Installation](#installation) • [Operations](#operations) • [Credentials](#credentials) • [Usage](#usage) • [Examples](#common-patterns) • [Resources](#resources)

  </div>

  ---

  ## Overview

  This is the **official** n8n community node package for IONOS Cloud, developed and maintained by the IONOS Cloud team. [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  The package provides comprehensive integration with key IONOS Cloud services, enabling you to automate infrastructure provisioning, certificate management, DNS operations, CDN distribution, and AI-powered workflows directly from n8n.

  ## Included Nodes

  This package provides seven separate nodes for different IONOS Cloud services:

  1. **IONOS Cloud (Infrastructure)** - Core infrastructure management
  2. **IONOS Cloud (Certificate Manager)** - SSL/TLS certificate management  
  3. **IONOS Cloud (Cloud DNS)** - Domain name system management
  4. **IONOS Cloud (CDN)** - Content delivery network management
  5. **IONOS Cloud (AI Model Hub)** - AI model inference and RAG capabilities
  6. **IONOS Cloud Chat Model** ⚡ - LangChain sub-node for n8n's AI Agent (language model)
  7. **IONOS Cloud Embeddings** ⚡ - LangChain sub-node for n8n's AI Agent (text embeddings)

  ---

  ## Getting Started

  ### Prerequisites

  Before you begin, you will need:

  1. A [IONOS Cloud account](https://www.ionos.com/enterprise-cloud/signup)
  2. A Cloud API Bearer token ([learn how to generate tokens](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager))
  3. n8n installed (version 2.1.5 or higher)

  ### Installation

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

  #### Quick Installation Steps

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@ionos-cloud/n8n-nodes-ionos-cloud` in **Enter npm package name**
  4. Agree to the risks of using community nodes
  5. Select **Install**

  **Note:** After installation, you may need to restart your n8n instance for the new node to be recognized.

  ## Operations

  ### Overview

  | Node | Resources | Operations | Description |
  |------|-----------|------------|-------------|
  | **Infrastructure** | 21 | 153 | Complete infrastructure management (compute, networking, storage, Kubernetes) |
  | **Certificate Manager** | 3 | 15 | SSL/TLS certificate lifecycle management with ACME support |
  | **Cloud DNS** | 7 | 28 | DNS zones, records (15 types), DNSSEC, zone transfers |
  | **CDN** | 2 | 7 | Content delivery with custom routing and geo-restrictions |
  | **AI Model Hub** | 4 | 20 | Foundation model inference, RAG capabilities, and OpenAI-compatible API |
  | **Chat Model** ⚡ | — | supplyData | LangChain chat model sub-node for n8n AI Agent |
  | **Embeddings** ⚡ | — | supplyData | LangChain embeddings sub-node for n8n AI Agent |

  > ⚡ **Sub-nodes**: The Chat Model and Embeddings nodes are LangChain sub-nodes that plug into n8n's built-in AI nodes (AI Agent, AI Chain, Vector Stores, etc.) rather than operating as standalone workflow nodes.

  > **✨ v1.0.2**: Patch release with enhanced subresource support for load balancers, NAT gateways, security groups, and target groups. Added request monitoring capabilities.


  <details>
  <summary><b>Infrastructure - Detailed Operations</b></summary>

  #### Account & Global Resources (12 operations)
  - **Contract** (1): Get Many
  - **Location** (2): Get, Get Many
  - **Image** (2): Get, Get Many  
  - **IP Block** (4): Create, Delete, Get, Get Many
  - **Request** (3): Get, Get All, Get Status

  #### Core Infrastructure (10 operations)
  - **Datacenter** (5): Create, Delete, Get, Get Many, Update
  - **LAN** (5): Create, Delete, Get, Get Many, Update

  #### Compute Resources (41 operations)
  - **Server** (21): Attach/Detach CDROM/Volume, Create, Delete, Get (+ CDROM/CDROMs/Volume/Volumes/Remote Console/Token), Get Many, Reboot, Resume, Start, Stop, Suspend, Update, Upgrade
  - **Volume** (6): Create, Create Snapshot, Delete, Get, Get Many, Update
  - **Snapshot** (4): Delete, Get, Get Many, Update
  - **NIC** (5): Create, Delete, Get, Get Many, Update
  - **Firewall Rule** (5): Create, Delete, Get, Get Many, Update

  #### Kubernetes (11 operations)
  - **Kubernetes Cluster** (6): Create, Delete, Get, Get Many, Get Kubeconfig, Update
  - **Node Pool** (5): Create, Delete, Get, Get Many, Update

  #### Networking (34 operations)
  - **Private Cross-Connect** (5): Create, Delete, Get, Get Many, Update
  - **Load Balancer** (9): Attach/Detach NIC, Create, Delete, Get (+ Balanced NIC/NICs), Get Many, Update
  - **Network Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources
  - **Application Load Balancer** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Forwarding Rules subresources with HTTP rules
  - **Target Group** (5): Create, Delete, Get, Get Many, Update
    - Enhanced with location and protocolVersion properties
  - **NAT Gateway** (5): Create, Delete, Get, Get Many, Update
    - Full support for Flow Logs and Rules subresources

  #### Security (5 operations)
  - **Security Group** (5): Create, Delete, Get, Get Many, Update
    - Full support for Rules subresource with comprehensive rule properties

  </details>

  <details>
  <summary><b>Certificate Manager - Detailed Operations</b></summary>

  #### Certificate Resource (5 operations)
  Upload and manage SSL/TLS certificates manually with full chain and private key support.
  - Create, Delete, Get, Get Many, Update

  #### AutoCertificate Resource (5 operations)
  Configure automatic certificate renewal via ACME providers (Let's Encrypt, etc.).
  - Create, Delete, Get, Get Many, Update
  - **Key Algorithms**: RSA (2048/4096), ECDSA (256/384)
  - **Features**: Subject Alternative Names (SANs), common name, provider selection

  #### Provider Resource (5 operations)
  Configure ACME certificate providers with External Account Binding (EAB) support.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>Cloud DNS - Detailed Operations</b></summary>

  #### Zone Resource (5 operations)
  Manage primary DNS zones.
  - Create, Delete, Get, Get Many, Update

  #### Record Resource (5 operations)
  Manage DNS records with 15 supported types: A, AAAA, ALIAS, CAA, CNAME, DS, HTTPS, MX, NS, SMIMEA, SRV, SSHFP, SVCB, TLSA, TXT
  - Create, Delete, Get, Get Many, Update

  #### SecondaryZone Resource (7 operations)
  Secondary zones with AXFR (zone transfer) support.
  - Create, Delete, Get, Get Many, Update, AXFR Get, AXFR Start

  #### ZoneFile Resource (2 operations)
  Import/export zones in BIND format (RFC 1035).
  - Get (export), Update (import)

  #### Quota Resource (1 operation)
  View DNS resource usage and limits.
  - Get

  #### DNSSEC Resource (3 operations)
  Enable and manage DNSSEC for zones.
  - Create (enable), Delete (disable), Get

  #### ReverseRecord Resource (5 operations)
  Manage reverse DNS (PTR) records for IPv4/IPv6.
  - Create, Delete, Get, Get Many, Update

  </details>

  <details>
  <summary><b>CDN - Detailed Operations</b></summary>

  #### Distribution Resource (5 operations)
  Configure CDN distributions with custom routing rules.
  - Create, Delete, Get, Get Many, Update
  - **Features**: Domain routing, SSL/TLS integration, HTTP/HTTPS schemes, geo-restrictions, upstream origins

  #### Ip Resource (2 operations)
  Get CDN edge server IPs for origin whitelisting.
  - Get, Get Many

  </details>

  <details>
  <summary><b>AI Model Hub - Detailed Operations</b></summary>

  #### Model Resource (2 operations)
  Browse and invoke foundation models for AI inference.
  - Get Many (list available models), Predict (run inference)
  - **Features**: RAG support via collection queries, custom model options, streaming responses

  #### Collection Resource (6 operations)
  Manage vector database collections for document storage and retrieval.
  - Create, Delete, Get, Get Many, Update, Query
  - **Features**: Chunking strategies (sentence/fixed/recursive), embedding models, database types (chromadb/pgvector), semantic search

  #### Document Resource (7 operations)
  Manage documents within collections for RAG applications.
  - Add, Delete, Delete All, Get, Get Many, Get Chunks, Update
  - **Features**: Base64 content encoding, metadata management, chunk retrieval, batch operations

  #### OpenAI Compatible Resource (5 operations)
  Use OpenAI-compatible API endpoints for standardized AI interactions.

  **Chat Completion** - Create chat completions with message history
  - Supports system, user, and assistant message roles
  - Parameters: model, messages (required), temperature, top_p, max_tokens, max_completion_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, response_format, tools, tool_choice, user
  - Compatible with OpenAI chat completion API format

  **Completion** - Simple text completion
  - Parameters: model, prompt (required), temperature, top_p, max_tokens, n, stream, stop, presence_penalty, frequency_penalty, logit_bias, user
  - Compatible with OpenAI completion API format

  **Create Embeddings** - Generate vector embeddings from text
  - Parameters: model (default: BAAI/bge-large-en-v1.5), input (single text or comma-separated multiple texts)
  - Returns embedding vectors for semantic search and similarity

  **Generate Image** - Text-to-image generation
  - Parameters: model (default: black-forest-labs/FLUX.1-schnell), prompt (required), n, size (1024x1024, 1024x1792, 1792x1024), response_format (b64_json), user
  - Generates images from text descriptions

  **Get Many** - List available models
  - Returns all models in OpenAI-compatible format
  - Shows model capabilities and availability

  **API Endpoint**: `https://openai.inference.de-txl.ionos.com` (path: `/v1/*`)

  **Features**: Full OpenAI API compatibility, drop-in replacement for OpenAI in existing workflows, comprehensive parameter support

  > **Note:** Model dropdowns are populated dynamically from the IONOS API at runtime (`GET /v1/models`). When models are added or retired, the dropdown lists update automatically without requiring a node update.

  </details>

  ---

  ## Credentials

  All nodes in this package share a single credential type: **IONOS Cloud API**

  Authentication uses the [Cloud API Bearer token](https://docs.ionos.com/cloud/set-up-ionos-cloud/management/identity-access-management/token-manager).

  The same token works across all IONOS Cloud services (Infrastructure, Certificate Manager, DNS, CDN, and AI Model Hub).

  ## Compatibility

  Tested against n8n version 2.1.5+

  ## Usage

  ### Authentication
  1. Create new credentials in n8n and select "IONOS Cloud API"
  2. Provide your API token (generated from IONOS Cloud Console)
  3. The same credential works for all five nodes

  ### Using the Nodes

  #### Infrastructure
  * Add the "IONOS Cloud (Infrastructure)" node to your workflow
  * Select the resource (e.g., Server, Volume, Datacenter)
  * Choose the operation and configure the required fields

  #### Certificate Manager
  * Add the "IONOS Cloud (Certificate Manager)" node to your workflow
  * Select the resource (Certificate, AutoCertificate, or Provider)
  * Configure certificate properties, domains, and ACME providers

  #### DNS
  * Add the "IONOS Cloud (Cloud DNS)" node to your workflow
  * Select the resource (Zone, Record, SecondaryZone, etc.)
  * Configure DNS zones, records, and DNSSEC settings

  #### CDN
  * Add the "IONOS Cloud (CDN)" node to your workflow
  * Select the resource (Distribution or Ip)
  * Configure CDN distributions with routing rules and upstream origins

  #### AI Model Hub
  * Add the "IONOS Cloud (AI Model Hub)" node to your workflow
  * Select the resource (Model, Collection, Document, or OpenAI Compatible)
  * **Model**: AI inference with native IONOS API
  * **Collection**: Vector database management for RAG
  * **Document**: Manage documents in collections
  * **OpenAI Compatible**: Use OpenAI-compatible endpoints (chat, completions, embeddings, images)

  #### AI Agent Integration (Chat Model & Embeddings Sub-Nodes)

  The **IONOS Cloud Chat Model** and **IONOS Cloud Embeddings** are LangChain sub-nodes that integrate with n8n's built-in AI nodes.

  **Chat Model** — Use IONOS AI Model Hub as the LLM brain for the AI Agent:
  1. Add an **AI Agent** node to your workflow
  2. Click **+** on the AI Agent's **Language Model** input
  3. Select **IONOS Cloud Chat Model**
  4. Choose your credential and pick a model from the auto-populated dropdown
  5. The agent now uses IONOS AI Model Hub for all LLM reasoning

  **Embeddings** — Use IONOS AI Model Hub for text embeddings in RAG pipelines:
  1. Add an **In-Memory Vector Store** (or any vector store node)
  2. Click **+** on the vector store's **Embedding** input
  3. Select **IONOS Cloud Embeddings**
  4. Choose your credential and pick an embedding model

  **Example: AI Agent with RAG**
  ```
  Chat Trigger → AI Agent
                   ├── Language Model: IONOS Cloud Chat Model
                   ├── Memory: Window Buffer Memory
                   └── Tool: Vector Store Tool
                                └── In-Memory Vector Store (Load)
                                         └── Embedding: IONOS Cloud Embeddings
  ```

  > **Note:** The model dropdowns are populated dynamically from the IONOS API at runtime. Both sub-nodes reuse the same **IONOS Cloud API** credential as all other nodes in this package.

  ### Common Patterns

  **Automated SSL Certificate Deployment:**
  1. Use Certificate Manager to create an AutoCertificate
  2. Use CDN node to create a Distribution referencing the certificate ID
  3. Automate certificate renewal with n8n scheduling

  **Infrastructure Provisioning:**
  1. Use Infrastructure node to create Datacenter, Server, and Volume
  2. Use DNS node to create Zone and A/AAAA Records pointing to server IPs
  3. Use Certificate Manager to provision SSL certificates for domains

  **DNS Management:**
  1. Use DNS Zone resource to create zones
  2. Use Record resource to manage DNS records (A, CNAME, MX, TXT, etc.)
  3. Use DNSSEC resource to enable DNSSEC signing
  4. Use ReverseRecord for PTR records

  **AI-Powered Applications with RAG:**
  1. Use AI Model Hub Collection resource to create a vector database
  2. Use Document resource to add knowledge base documents
  3. Use Model Predict operation with collection query for context-aware responses
  4. Automate document updates and model inference in workflows

  **OpenAI-Compatible AI Integration:**
  1. Use OpenAI Compatible Chat Completion for conversational AI
  2. Use Create Embeddings for semantic search and similarity
  3. Use Generate Image for text-to-image generation
  4. Drop-in replacement for OpenAI API in existing n8n workflows

  **AI Agent with IONOS Cloud (native n8n AI integration):**
  1. Use IONOS Cloud Chat Model as the language model for n8n's AI Agent
  2. Use IONOS Cloud Embeddings with Vector Stores for RAG pipelines
  3. Combine with Window Buffer Memory for conversational context
  4. Add Vector Store Tool to give the agent access to your knowledge base
  5. See `examples/ionos-ai-agent-workflow.json` for a ready-to-import workflow

  ### Avoiding Rate Limits

  The IONOS AI Model Hub API enforces rate limits (300 requests/min, 5 requests/sec with a burst of 10). When a node receives multiple input items (e.g., from a preceding "Get All" operation), n8n executes the node once per item, which can trigger `429 Too Many Requests` errors.

  To prevent this, configure **batching** in the node's **Settings** tab:

  1. Open the AI Model Hub node and go to the **Settings** tab
  2. Under **Request Options**, click **Add Option** and select **Batching**
  3. Set **Items per Batch** to `2` (or lower)
  4. Set **Batch Interval (ms)** to `1000` (or higher)

  This ensures n8n processes only a few items at a time with a delay between batches, staying within the API rate limits.

  > **Tip:** If your workflow only needs a single API call (e.g., one Chat Completion), use a **Limit** node before the AI Model Hub node to reduce the input to 1 item.

  ## API Endpoints

  Each node connects to:

  - **Infrastructure**: `https://api.ionos.com/cloudapi/v6/`
  - **Certificate Manager**: `https://certificate-manager.de-fra.ionos.com`
  - **Cloud DNS**: `https://dns.de-fra.ionos.com`
  - **CDN**: `https://cdn.de-fra.ionos.com`
  - **AI Model Hub (Inference API)**: `https://inference.de-txl.ionos.com`
  - **AI Model Hub (OpenAI Compatible API)**: `https://openai.inference.de-txl.ionos.com`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [IONOS Cloud Documentation](https://docs.ionos.com/cloud)
  * [Infrastructure API Documentation](https://api.ionos.com/docs/cloud/v6/)
  * [Certificate Manager API Documentation](https://api.ionos.com/docs/certmanager/v2/)
  * [Cloud DNS API Documentation](https://api.ionos.com/docs/dns/v1/)
  * [CDN API Documentation](https://api.ionos.com/docs/cdn/v1/)
  * [AI Model Hub API Documentation](https://api.ionos.com/docs/inference-modelhub/v1/)
  * [AI Model Hub OpenAI-compatible API Documentation](https://api.ionos.com/docs/inference-openai/v1/)

  ## Contributing

  We welcome contributions! If you find a bug or have a feature request:

  1. Check the [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues) to see if it's already been reported
  2. Open a new issue with a clear description and reproduction steps
  3. For feature requests, explain the use case and expected behavior

  ### Development

  To contribute code:

  1. Fork the repository
  2. Create a feature branch (`git checkout -b feature/amazing-feature`)
  3. Make your changes and test thoroughly
  4. Commit your changes (`git commit -m 'Add amazing feature'`)
  5. Push to the branch (`git push origin feature/amazing-feature`)
  6. Open a Pull Request

  ## License

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

  ## Support

  - 📖 [Documentation](https://docs.ionos.com/cloud)
  - 💬 [GitHub Issues](https://github.com/ionos-cloud/n8n-nodes-ionos-cloud/issues)
  - 🌐 [IONOS Cloud](https://www.ionos.com/cloud)
  - 📧 [Support](https://docs.ionos.com/cloud/support/general-information/contact-information)

  ---

  <div align="center">

  Made with ❤️ by the IONOS Cloud team

  </div>

ai_documentation_summary:
  {"purpose":"This node enables interaction with the IONOS Cloud CDN API to manage content delivery network resources within n8n workflows.","capabilities":["Content delivery network configuration","Custom routing setup","Geo-restriction management","CDN resource monitoring","CDN status checks"],"authentication":"API key required (Cloud API Bearer token)","commonUseCases":["Automating CDN configuration for web applications","Managing geo-based content delivery restrictions","Monitoring CDN performance and status"],"limitations":["Limited to 2 resources and 7 operations as specified in the overview table"],"relatedNodes":["IONOS Cloud (Infrastructure)","IONOS Cloud (Certificate Manager)","IONOS Cloud (Cloud DNS)","IONOS Cloud (AI Model Hub)","IONOS Cloud Chat Model"]}


node_type: n8n-nodes-straker-verify.strakerVerify
package_name: n8n-nodes-straker-verify
display_name: Straker Verify
description: Interact with Straker Verify API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: strakergroup
author_github_url: https://github.com/strakergroup/int-n8n-verify.git
npm_package_name: n8n-nodes-straker-verify
npm_version: 0.1.31
community_fetched_at: 2026-03-25T21:19:40.540Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "project",
      "options": [
        {
          "name": "Project",
          "value": "project"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new project",
          "description": "Create a new Verify project"
        },
        {
          "name": "Download Files",
          "value": "downloadFiles",
          "action": "Download translated files",
          "description": "Download translated files for a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new project",
      "description": "Create a new Verify project"
    },
    {
      "name": "Download Files",
      "value": "downloadFiles",
      "action": "Download translated files",
      "description": "Download translated files for a project"
    }
  ]

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

  # n8n-nodes-straker-verify

  This is an n8n community node. It lets you use the Straker Verify API 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)  
  [Resources](#resources)  

  ## Installation

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

  ### Quick Installation

  1. Open your n8n instance
  2. Go to **Settings > Community Nodes**
  3. Select **Install**
  4. Enter `n8n-nodes-straker-verify` in **Enter npm package name**
  5. Agree to the risks of using community nodes: select **I understand the risks of installing unverified code from a third party**
  6. Select **Install**

  ## Operations

  ### Project Resource

  * **Create**: Create a new project with files for translation
  * **Download Files**: Download translated files for a completed project

  ## Credentials

  To use this node, you'll need to create an API key from the Straker Verify platform.

  1. Log in to your Straker Verify account
  2. Navigate to API Keys section
  3. Create a new API key
  4. Use the generated key in your n8n credentials for this node

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Straker Verify API Documentation](https://api-verify.straker.ai/docs#/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Straker Verify API to manage translation projects, including creating new projects and downloading translated files.","capabilities":["Create new translation projects","Download translated files from completed projects","Interact with Straker Verify API endpoints"],"authentication":"API key required (generated from Straker Verify platform)","commonUseCases":["Automating translation project workflows","Retrieving translated documents in n8n","Integrating Straker Verify services into business processes"],"limitations":["Community node (unverified code from third party)","Requires manual API key creation outside of n8n"],"relatedNodes":["n8n-nodes-http.request","n8n-nodes-straker-strakerVerify"]}


node_type: @mookielianhd/n8n-nodes-instagram.instagramTrigger
package_name: @mookielianhd/n8n-nodes-instagram
display_name: Instagram Trigger
category: Community
development_style: declarative
version: 2
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-25 21:19:40
author_name: mookielian
author_github_url: https://github.com/MookieLian/n8n-nodes-instagram.git
npm_package_name: @mookielianhd/n8n-nodes-instagram
npm_version: 3.4.0
community_fetched_at: 2026-03-25T21:19:40.541Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  Instagram trigger to receive real-time webhook events from Meta and start a workflow when an event is received.

npm_readme:
  ![Banner image](assets/banner_instagram_node.jpeg)

  # @mookielianhd/n8n-nodes-instagram

  This package’s Instagram nodes for n8n let you publish and manage content, moderate comments, send DMs, and react to real-time events (comments, messages, mentions, story insights, etc.) on Instagram Business and Creator accounts via the Facebook/Instagram Graph API.

  All functionality is built on the Facebook/Instagram Graph API, including media publishing (images, Reels, Stories, carousels), comment moderation, private replies, messaging, hashtag search, IG User/Page helpers, and webhook-based triggers for Business and Creator accounts.

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

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

  ## Installation

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

  ## Operations

  The node exposes several resources:

  | Resource | Description |
  | --- | --- |
  | `Image` | Publish a single image with an optional caption. Uses the two-step container → publish flow. Supports alt text, location, user tags, and product tags. |
  | `Reels` | Publish a reel video. Handles container polling until the video is processed before publishing. Supports product tags and **Trial Reels** via `trial_params`. |
  | `Stories` | Publish a story video using the same logic as reels with `media_type=STORIES`. |
  | `Carousel` | Publish a carousel (album) post with up to 10 images and/or videos. The node creates child containers, builds a carousel container, waits for it to be ready, then publishes it. Includes detailed per-item error reporting and progress messages. |
  | `Comments` | List comments on media, hide/unhide or delete individual comments, disable/enable comments on media, and send **private replies** to commenters. |
  | `IG User` | Read basic profile data for an Instagram Business/Creator account and list its media using the IG User Graph API. |
  | `IG Hashtag` | Search for hashtags by name and fetch top or recent media for a hashtag with paging and limit/return-all support. |
  | `Messaging` | Send direct messages (DMs) to Instagram users via the Instagram Messaging API. |
  | `Page` | Given a Facebook Page ID, fetch the connected Instagram Business/Creator account (`instagram_business_account`). |
  | `Auth` | Exchange short-lived Instagram User tokens for long-lived tokens, refresh long-lived tokens, and call the Graph API `/me` endpoint. |
  | **Instagram Trigger** | **Trigger:** receive real-time webhook events from Meta (comments, messages, mentions, story insights, etc.) and run a workflow for each event. Requires a separate **Instagram Webhook** credential (App Secret) and Meta App Dashboard webhook configuration. |

  ## Credentials

  Create an **Instagram API** credential that stores a long-lived Facebook Graph API user access token with at least:

  * `instagram_basic`
  * `pages_show_list`
  * `instagram_content_publish`
  * `pages_read_engagement`
  * `instagram_manage_comments` (or `instagram_business_manage_comments` if using Instagram Login)
  Steps:

  1. Make sure the Instagram account is a Business/Creator account connected to a Facebook Page.  
  2. Use Meta’s Graph Explorer or your own app to generate an access token that includes the scopes listed above.  
  3. Convert it to a long-lived token and paste it into the credential’s **Access Token** field.  
  4. The built-in credential test hits `https://graph.facebook.com/v22.0/me` to confirm the token works.

  ### Instagram Webhook Trigger credentials

  For the **Instagram Trigger** node you need a separate **Instagram Webhook** credential that stores your Meta **App Secret** (from App Dashboard → Settings → Basic). The App Secret is used to verify the `X-Hub-Signature-256` header on incoming webhook POSTs from Meta. The **Verify Token** is set in the node parameters (see below) and must match the value you enter in the Meta App Dashboard when configuring the webhook URL.

  ## Instagram Webhook Trigger

  This package’s Instagram nodes for n8n let you publish and manage content, moderate comments, send DMs, and react to real-time events (comments, messages, mentions, story insights, etc.) on Instagram Business and Creator accounts via the Facebook/Instagram Graph API.

  The **Instagram Trigger** node listens for real-time webhook events from Meta and starts a workflow when an event is received.

  ### Setup

  1. **Create the credential**  
     Add an **Instagram Webhook** credential and enter your Meta **App Secret** (from your app’s Settings → Basic in the Meta App Dashboard).

  2. **Add the trigger to your workflow**  
     Add the **Instagram Trigger** node. Set **Verify Token** to any string you will use in the Meta Dashboard (e.g. a random secret). Copy the **Webhook URL** shown in the node (Production or Test URL).

  3. **Configure Webhooks in Meta App Dashboard**  
     - In [Meta for Developers](https://developers.facebook.com/), open your app and go to **Webhooks** (or add the Webhooks product).  
     - For **Instagram**, set:  
       - **Callback URL**: paste the n8n Webhook URL from the trigger node.  
       - **Verify Token**: the same string you set in the node’s **Verify Token** parameter.  
     - Subscribe to the Instagram fields you need (e.g. `comments`, `messages`, `mentions`, `story_insights`).  
     - Save. Meta will send a GET request to your URL; the node responds with the challenge so verification succeeds.

  4. **Optional: filter events**  
     Use **Events to Include** on the node to pass only selected event types (e.g. only `messages` and `mentions`) to the workflow. If left empty, all received events are output.

  Each event is output as an item with `object`, `field`, `value`, `id`, `time` and the raw change payload, so you can use the **Instagram** node (e.g. Messaging, Comments) in the same workflow to reply or moderate. To return a custom response to the caller instead of the default 200 OK, add a **Respond to Webhook** node after the trigger.

  ## Compatibility

  - Built and tested against **n8n 2.6.x–2.8.x**.  
  - Declares a peer dependency on **`n8n-workflow >=2.6.1`** (the first secure stream-enabled version suggested by Snyk).  
  - Requires n8n with community nodes enabled (recommended `>=2.x`).  
  - Uses only built-in n8n dependencies, so it is Cloud-compatible.

  ## Usage

  ### Publishing media (Image / Reels / Stories)

  1. Add the **Instagram** node to your workflow and select one of the resources (`Image` / `Reels` / `Stories`).  
  2. Provide the Instagram Business Account ID (the `Node` parameter), media URL and caption.  
  3. The node first creates the media container, polls Graph API until processing completes, then triggers `media_publish`.  
  4. For long-running uploads (large videos), the node uses robust polling and retry logic and surfaces progress via the n8n execution logs (for example, when publishing Reels or Trial Reels).  
  5. Handle any errors returned by the API (rate limits, permissions, validation) via the node’s error output or `Continue On Fail`.

  ### Publishing carousel posts (Carousel)

  1. Add the **Instagram** node and set **Resource** to `Carousel`, **Operation** to `Publish`.  
  2. Provide:
     - `Node` – the IG User ID to publish from.  
     - `Graph API Version` – for example `v24.0`.  
     - `Caption` – the carousel caption.  
     - `Carousel Media` – 2–10 items, each with:
       - `Media Type` – `Image` or `Video`.  
       - `Image URL` or `Video URL` – public URLs Meta can fetch.  
  3. The node:
     - Creates one child container per image/video (`is_carousel_item=true` for each).  
     - Waits for each child container to become ready.  
     - Creates a carousel container (`media_type=CAROUSEL`, `children=<child_ids>`) with the caption.  
     - Waits for the carousel container to be ready, then calls `/{ig-user-id}/media_publish`.  
  4. Errors during any step are annotated with **which child item failed** (for example, “Carousel item 3 (video)…”), making it easier to debug problematic URLs.

  ### Comment moderation and private replies (Comments)

  1. Add the **Instagram** node and set **Resource** to `Comments`.  
  2. Choose an **Operation**:
     - `List` – fetch comments for a given media ID.  
     - `Hide` / `Unhide` / `Delete` – moderate a specific comment by its comment ID.  
     - `Disable Comments` / `Enable Comments` – toggle comments on a media object by its media ID.  
     - `Send Private Reply` – send a private reply message to a commenter using their comment ID.  
  3. Provide the required IDs:
     - `Media ID` for listing comments or enabling/disabling comments.  
     - `Comment ID` for hide/unhide/delete/private reply operations.  
  4. For **Send Private Reply**, also fill in:
     - `Node` – the Instagram professional account ID that owns the commented media.  
     - `Message` – the private reply text that will be sent to the commenter’s inbox/request folder (subject to the 7‑day and messaging window rules defined by Meta).  

  ### Reading IG User profile and media (IG User)

  1. Add the **Instagram** node and set **Resource** to `IG User`.  
  2. Choose an **Operation**:
     - `Get` – fetch basic profile information for an Instagram Business/Creator account (username, name, bio, website, media_count, followers/follows, profile picture URL).  
     - `Get Media` – list media owned by that account, including media type, URLs, caption, permalink, timestamp and username.  
  3. Provide:
     - `Node` – the IG User ID of the professional account you want to read (or `me` if your credential token belongs to that account).  
     - `Graph API Version` – the Graph version to use (for example `v24.0`).  

  ### Searching hashtags and fetching hashtag media (IG Hashtag)

  1. Add the **Instagram** node and set **Resource** to `IG Hashtag`.  
  2. Choose an **Operation**:
     - `Search` – look up a hashtag by name and get its global hashtag ID.  
     - `Get Recent Media` – get the most recently published media tagged with a hashtag.  
     - `Get Top Media` – get the most popular media tagged with a hashtag.  
  3. For **Search**, provide:
     - `Node` – the IG User ID performing the query.  
     - `Hashtag Name` – the hashtag name, without `#`.  
  4. For **Get Recent Media** / **Get Top Media**, provide:
     - `Node` – the IG User ID performing the query.  
     - `Hashtag ID` – the ID returned from the search operation.  
     - `Return All` / `Limit` – choose whether to fetch all available media (within a safety cap) or only up to a limit.  

  ### Sending direct messages (Messaging)

  1. Add the **Instagram** node and set **Resource** to `Messaging`.  
  2. Choose **Operation** `Send Message`.  
  3. Provide:
     - `Node` – the IG professional account ID that will send the message.  
     - `Graph API Version` – the Graph version to use (for example `v24.0`).  
     - `Recipient IG User ID` – the Instagram-scoped user ID (IGSID) of the recipient, typically obtained from Messaging webhook events.  
     - `Message Text` – the text body of the direct message.  

  ### Token exchange, refresh and `/me` (Auth)

  1. Add the **Instagram** node and set **Resource** to `Auth`.  
  2. Choose an **Operation**:
     - `Exchange Access Token` – exchange a **short-lived** Instagram User access token for a **long-lived** token.  
     - `Refresh Access Token` – refresh an existing long-lived token using the Instagram Platform refresh endpoint.  
     - `Get Me` – call the Graph API `/me` endpoint using the `instagramApi` credential’s access token.  
  3. For **Exchange Access Token**, provide:
     - `Short-Lived Access Token` – the short-lived token from your login flow.  
     - `App Secret` – the Instagram App Secret from your Meta App Dashboard.  
  4. For **Refresh Access Token**, optionally provide:
     - `Access Token` – the long-lived token to refresh. Leave empty to use the token from the credential.  
  5. For **Get Me**, the node uses a fixed, versioned `/me` URL under the hood and does **not** depend on any UI parameters, so older workflows remain compatible.

  ### Getting the Instagram account for a Facebook Page (Page)

  1. Add the **Instagram** node and set **Resource** to `Page`, **Operation** to `Get Instagram Account`.  
  2. Provide:
     - `Graph API Version` – for example `v24.0`.  
     - `Page ID` – the Facebook Page ID that is linked to your Instagram professional account.  
  3. The node calls:
     - `GET /{page-id}?fields=instagram_business_account`
     and returns the `instagram_business_account` object (including the Instagram User ID) so you can feed it into other resources (Image/Reels/Stories/Carousel/IG User).

  ### Trial Reels (Reels with `trial_params`)

  1. Add the **Instagram** node and set **Resource** to `Reels`, **Operation** to `Publish`.  
  2. Under **Additional Fields**, set **Trial Reel – Graduation Strategy**:
     - `MANUAL` – you will decide in the Instagram app when (or if) to graduate the trial reel.  
     - `SS_PERFORMANCE` – Instagram will automatically graduate the trial reel if it performs well.  
  3. The node sends a `trial_params` JSON object in the create-container request, as documented in the IG User Media reference.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)  
  * [Instagram Graph API - Publishing](https://developers.facebook.com/docs/instagram-api/reference/ig-user/media)  
  * [Video/Reels publishing guide](https://developers.facebook.com/docs/instagram-api/guides/content-publishing/reels/)  
  * [Comment Moderation](https://developers.facebook.com/docs/instagram-platform/comment-moderation)  
  * [Private Replies](https://developers.facebook.com/docs/instagram-platform/private-replies)  
  * [IG User](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-user)  
  * [IG Hashtag Search](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-hashtag-search/)  
  * [IG Hashtag Recent Media](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-hashtag/recent-media/)  
  * [IG Hashtag Top Media](https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-hashtag/top-media/)  
  * [Instagram Messaging API](https://developers.facebook.com/docs/messenger-platform/instagram/features/)  
  * [Instagram Platform Access Token](https://developers.facebook.com/docs/instagram-platform/reference/access_token/)  
  * [Instagram Platform Refresh Access Token](https://developers.facebook.com/docs/instagram-platform/reference/refresh_access_token/)  
  * [Instagram Platform /me](https://developers.facebook.com/docs/instagram-platform/reference/me/)  
  * [Webhooks from Meta (getting started)](https://developers.facebook.com/docs/graph-api/webhooks/getting-started)  
  * [Instagram webhook reference](https://developers.facebook.com/docs/graph-api/webhooks/reference/instagram)

  ## Version history

  | Version | Notes |
  | --- | --- |
  | 3.1.1 | Fixes overlapping description text in the node UI; documentation/layout-only cleanup with no runtime behavior changes. |
  | 3.1.0 | Sets `skipSignatureVerification` to `true` by default for the Instagram Trigger node and ensures webhook executions are correctly registered. |
  | 3.0.0 | Introduces the Instagram Trigger node for webhook-based events (comments, messages, mentions, story insights) and updates underlying dependencies. |
  | 2.6.2 | Documentation-only release. Adds or updates `CONTRIBUTING.md` contributor guidance and refreshes this README to reflect recent changes; does not modify runtime behavior or node functionality. |
  | 2.6.1 | Patch release that keeps all execution-time, polling and error-reporting improvements from 2.6.0 and updates docs/readme to reflect the current behavior and supported resources. |
  | 2.6.0 | Shortens polling intervals across resources, adds general execution time optimizations, introduces URL validation before making Graph API calls, and adds more detailed error messages to make debugging easier. |
  | 2.5.4 | Further shortens the container health polling interval in the **Reels** resource to reduce average execution time when publishing videos. |
  | 2.5.3 | Adds `CODE_OF_CONDUCT.md` and `LICENSE`. This is a documentation/compliance update and does not change runtime behavior. |
  | 2.5.2 | Bumps the required `n8n-workflow` peer dependency to `>=2.6.1` to address security advisories (arbitrary file upload, RCE, prototype pollution, etc.) and updates the README to describe the latest features. |
  | 2.5.1 | Introduces the `Page` resource to retrieve the connected Instagram Business/Creator account for a Facebook Page and adds the **Trial Reel – Graduation Strategy** option for Reels (via `trial_params`), alongside the first stable release of Carousel publishing, extended tagging options, and streaming-style progress messages. |
  | 2.4.0 | Adds `IG Hashtag` (search, recent media, top media), `Messaging` (send DMs), and `Auth` helpers for token exchange/refresh and `/me`. |
  | 2.3.0 | Adds `Comments` resource with comment moderation (list/hide/unhide/delete, enable/disable comments) and **Private Replies** support, and an `IG User` resource for reading profile data and listing media. |
  | 2.2.0 | Improves publishing UX and adds alt text, location ID, user tags, and product tags support for media publishing. |
  | 2.1.0 | Stable release of Instagram publishing (Image/Reels/Stories) using the container → publish flow with robust polling and error handling. |
  | 0.1.0 | Initial release with Image, Reels and Stories publishing & built-in container polling. |

ai_documentation_summary:
  {"purpose":"The Instagram Trigger node listens for real-time webhook events from Meta (such as comments, messages, mentions, and story insights) on Instagram Business and Creator accounts to automatically initiate n8n workflows.","capabilities":["Receive real-time webhook events from Meta","Filter specific event types (comments, messages, mentions, story insights)","Start n8n workflows upon event receipt","Support both Production and Test webhook URLs","Verify webhook signatures using App Secret"],"authentication":"App Secret required (stored in separate Instagram Webhook credential); Verify Token configured in node parameters","commonUseCases":["Automated comment moderation and replies","Direct message handling and customer support automation","Story insights monitoring and reporting","Mention tracking and social media management","Real-time engagement alerts"],"limitations":["Requires a separate Instagram Webhook credential with App Secret","Webhook URL must be configured in Meta App Dashboard","Requires Instagram Business or Creator account","Requires proper Meta Graph API permissions (instagram_manage_comments, etc.)"],"relatedNodes":["Instagram Publish Image","Instagram Publish Reels","Instagram Publish Stories","Instagram Publish Carousel","Instagram Comments"]}


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

updated_at: 2026-03-25 21:19:40
author_name: actaport.integration
author_github_url: https://github.com/actaport/n8n-nodes-actaport.git
npm_package_name: @actaport/n8n-nodes-actaport
npm_version: 0.3.0
community_fetched_at: 2026-03-25T21:19:40.542Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Additional Information Category",
          "value": "additionalInformationCategory"
        },
        {
          "name": "Case File",
          "value": "caseFile"
        },
        {
          "name": "Collision",
          "value": "collision"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Deadline",
          "value": "deadline"
        },
        {
          "name": "Department",
          "value": "department"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Document Template",
          "value": "documentTemplate"
        },
        {
          "name": "Expense",
          "value": "expense"
        },
        {
          "name": "Folder",
          "value": "folder"
        },
        {
          "name": "Invoice",
          "value": "invoice"
        },
        {
          "name": "Note",
          "value": "note"
        },
        {
          "name": "Resubmission",
          "value": "resubmission"
        },
        {
          "name": "RVG Fee",
          "value": "rvg"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "Third Party Cost",
          "value": "thirdPartyCost"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get additional information category",
          "routing": {
            "request": {
              "url": "=/v1/zusatzinformation/kategorien/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get additional information categories",
          "routing": {
            "request": {
              "url": "=/v1/zusatzinformation/kategorien",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "additionalInformationCategory"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get case files",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/akten",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve case files"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get case file",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve case file"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create case file",
          "routing": {
            "send": {
              "preSend": []
            },
            "request": {
              "url": "=/v1/akten",
              "method": "POST"
            }
          },
          "description": "Create new case file"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update case file",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update case"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "caseFile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get collision check",
          "routing": {
            "request": {
              "url": "=/v1/kollisionspruefung",
              "method": "GET"
            }
          },
          "description": "Check for collisions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "collision"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "routing": {
            "request": {
              "url": "=/v1/kontakte",
              "method": "POST"
            }
          },
          "description": "Creates a new contact with the given data"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact",
          "routing": {
            "request": {
              "url": "=/v1/kontakte/{{$parameter.id}}",
              "method": "GET"
            }
          },
          "description": "Retrieves the metadata of a contact"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many contacts",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/kontakte",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieves multiple contacts"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search contacts",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 20 : $parameter['size'] }}"
              },
              "url": "=/v1/kontakte/suche",
              "method": "GET"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 20 }}",
                      "suchbegriff": "={{ $request.qs.suchbegriff }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Search contacts with a search term. The search will be performed on certain fields of the contact."
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact",
          "routing": {
            "request": {
              "url": "=/v1/kontakte/{{$parameter.id}}",
              "method": "PUT"
            }
          },
          "description": "Updates the data of a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create deadline",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen",
              "method": "POST"
            }
          },
          "description": "Create a new deadline"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get deadline",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single deadline"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get deadlines",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/fristen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many deadlines"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update deadline",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing deadline"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update deadline status",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen/{{$parameter[\"id\"]}}/status/{{$parameter[\"status\"]}}",
              "method": "PUT"
            }
          },
          "description": "Change the status of a deadline"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deadline"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get department",
          "routing": {
            "request": {
              "url": "=/v1/info/kanzlei/dezernate/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieves a department by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get departments",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/info/kanzlei/dezernate",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieves many departments"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "department"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create document",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/dokumente/neu",
              "method": "POST"
            }
          },
          "description": "Create a new document with template if supported. If no template is specified, a blank document will be created."
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download document",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/v1/documents/{{$parameter[\"id\"]}}",
              "method": "GET",
              "encoding": "arraybuffer",
              "returnFullResponse": true
            }
          },
          "description": "Download a single document"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get document",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/dokumente/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a single document"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get documents",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/dokumente/uebersicht",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many documents"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search documents",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 20 : $parameter['size'] }}"
              },
              "url": "=/v1/documents/search",
              "method": "GET"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 20 }}",
                      "aktennummer": "={{ $request.qs?.aktennummer }}",
                      "suchbegriff": "={{ $request.qs.suchbegriff }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Search documents with a search term. The search will be performed on the document attributes and content."
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update document",
          "routing": {
            "request": {
              "url": "=/v1/documents/{{$parameter[\"id\"]}}/metadata",
              "method": "PUT"
            }
          },
          "description": "Update a single document"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload document",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/v1/akten/{{$parameter.laufendeNummer}}/{{$parameter.bezugsJahr}}/dokumente",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              }
            }
          },
          "description": "Upload a document to a case"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get document template",
          "routing": {
            "request": {
              "url": "=/v1/vorlagen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a single document template"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get document templates",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/vorlagen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many document templates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "documentTemplate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create expense",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen",
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete expense",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen/{{$parameter[\"id\"]}}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get expense",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get expenses",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update expense",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create folder",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/ordner",
              "method": "POST"
            }
          },
          "description": "Create a new folder in a case file"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get folder",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/ordner/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a single folder"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get folders",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/ordner",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve folder structure of a case file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get invoices",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
              },
              "url": "=/v1/rechnungen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 50 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many invoices"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get invoice",
          "routing": {
            "request": {
              "url": "=/v1/rechnungen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single invoice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create note",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen",
              "method": "POST"
            }
          },
          "description": "Create a new note"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get note",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single note"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get notes",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many notes"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update note",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing note"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create resubmission",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen",
              "method": "POST"
            }
          },
          "description": "Create a new resubmission"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get resubmission",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single resubmission"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get resubmissions",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/wiedervorlagen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many resubmissions"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update resubmission",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing resubmission"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update resubmission status",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen/{{$parameter[\"id\"]}}/status/{{$parameter[\"status\"]}}",
              "method": "PUT"
            }
          },
          "description": "Change the status of a resubmission"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "resubmission"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create rvg fee",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg",
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete rvg fee",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg/{{$parameter[\"id\"]}}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get rvg fee",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get rvg fees",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update rvg fee",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rvg"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create task",
          "routing": {
            "request": {
              "url": "=/v1/aufgaben",
              "method": "POST"
            }
          },
          "description": "Create a new task"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get task",
          "routing": {
            "request": {
              "url": "=/v1/aufgaben/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single task"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get tasks",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/aufgaben",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Retrieve many tasks"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update task",
          "routing": {
            "request": {
              "url": "=/v1/aufgaben/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          },
          "description": "Update an existing task"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update task status",
          "routing": {
            "request": {
              "url": "=/v1/aufgaben/{{$parameter[\"id\"]}}/status/{{$parameter[\"status\"]}}",
              "method": "PUT"
            }
          },
          "description": "Change the status of a task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create third party cost",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen",
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete third party cost",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen/{{$parameter[\"id\"]}}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get third party cost",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen/{{$parameter[\"id\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get third party costs",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update third party cost",
          "routing": {
            "request": {
              "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen/{{$parameter[\"id\"]}}",
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "thirdPartyCost"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCurrent",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "routing": {
            "request": {
              "url": "=/v1/benutzer/{{$parameter.userId}}",
              "method": "GET"
            }
          },
          "description": "Get the data of a single user"
        },
        {
          "name": "Get Me",
          "value": "getCurrent",
          "action": "Get me",
          "routing": {
            "request": {
              "url": "=/v1/info/me",
              "method": "GET"
            }
          },
          "description": "Get the data of the current authenticated user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users",
          "routing": {
            "send": {
              "paginate": "={{ $parameter['returnAll'] }}"
            },
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "content"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
              },
              "url": "=/v1/benutzer",
              "method": "GET",
              "arrayFormat": "repeat"
            },
            "operations": {
              "pagination": {
                "type": "generic",
                "properties": {
                  "request": {
                    "qs": {
                      "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                      "size": "={{ $response.body?.size ?? 100 }}",
                      "sort": "={{ $request.qs?.sort }}",
                      "filter": "={{ $request.qs?.filter }}"
                    }
                  },
                  "continue": "={{ !$response.body?.last }}"
                }
              }
            }
          },
          "description": "Get the data of multiple users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get additional information category",
      "routing": {
        "request": {
          "url": "=/v1/zusatzinformation/kategorien/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get additional information categories",
      "routing": {
        "request": {
          "url": "=/v1/zusatzinformation/kategorien",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get case files",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
          },
          "url": "=/v1/akten",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 50 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieve case files"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get case file",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}",
          "method": "GET"
        }
      },
      "description": "Retrieve case file"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create case file",
      "routing": {
        "send": {
          "preSend": []
        },
        "request": {
          "url": "=/v1/akten",
          "method": "POST"
        }
      },
      "description": "Create new case file"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update case file",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update case"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get collision check",
      "routing": {
        "request": {
          "url": "=/v1/kollisionspruefung",
          "method": "GET"
        }
      },
      "description": "Check for collisions"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "routing": {
        "request": {
          "url": "=/v1/kontakte",
          "method": "POST"
        }
      },
      "description": "Creates a new contact with the given data"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact",
      "routing": {
        "request": {
          "url": "=/v1/kontakte/{{$parameter.id}}",
          "method": "GET"
        }
      },
      "description": "Retrieves the metadata of a contact"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many contacts",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
          },
          "url": "=/v1/kontakte",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieves multiple contacts"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search contacts",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 20 : $parameter['size'] }}"
          },
          "url": "=/v1/kontakte/suche",
          "method": "GET"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 20 }}",
                  "suchbegriff": "={{ $request.qs.suchbegriff }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Search contacts with a search term. The search will be performed on certain fields of the contact."
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact",
      "routing": {
        "request": {
          "url": "=/v1/kontakte/{{$parameter.id}}",
          "method": "PUT"
        }
      },
      "description": "Updates the data of a contact"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create deadline",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen",
          "method": "POST"
        }
      },
      "description": "Create a new deadline"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get deadline",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a single deadline"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get deadlines",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
          },
          "url": "=/v1/fristen",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieve many deadlines"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update deadline",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen/{{$parameter[\"id\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update an existing deadline"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update deadline status",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/fristen/{{$parameter[\"id\"]}}/status/{{$parameter[\"status\"]}}",
          "method": "PUT"
        }
      },
      "description": "Change the status of a deadline"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get department",
      "routing": {
        "request": {
          "url": "=/v1/info/kanzlei/dezernate/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Retrieves a department by ID"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get departments",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
          },
          "url": "=/v1/info/kanzlei/dezernate",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieves many departments"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create document",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/dokumente/neu",
          "method": "POST"
        }
      },
      "description": "Create a new document with template if supported. If no template is specified, a blank document will be created."
    },
    {
      "name": "Download",
      "value": "download",
      "action": "Download document",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/v1/documents/{{$parameter[\"id\"]}}",
          "method": "GET",
          "encoding": "arraybuffer",
          "returnFullResponse": true
        }
      },
      "description": "Download a single document"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get document",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/dokumente/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a single document"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get documents",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
          },
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/dokumente/uebersicht",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieve many documents"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search documents",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 20 : $parameter['size'] }}"
          },
          "url": "=/v1/documents/search",
          "method": "GET"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 20 }}",
                  "aktennummer": "={{ $request.qs?.aktennummer }}",
                  "suchbegriff": "={{ $request.qs.suchbegriff }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Search documents with a search term. The search will be performed on the document attributes and content."
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update document",
      "routing": {
        "request": {
          "url": "=/v1/documents/{{$parameter[\"id\"]}}/metadata",
          "method": "PUT"
        }
      },
      "description": "Update a single document"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload document",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/v1/akten/{{$parameter.laufendeNummer}}/{{$parameter.bezugsJahr}}/dokumente",
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          }
        }
      },
      "description": "Upload a document to a case"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get document template",
      "routing": {
        "request": {
          "url": "=/v1/vorlagen/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a single document template"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get document templates",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
          },
          "url": "=/v1/vorlagen",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 50 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieve many document templates"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create expense",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen",
          "method": "POST"
        }
      }
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete expense",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen/{{$parameter[\"id\"]}}",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get expense",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get expenses",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
          },
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 50 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      }
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update expense",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/eigene-auslagen/{{$parameter[\"id\"]}}",
          "method": "PUT"
        }
      }
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create folder",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/ordner",
          "method": "POST"
        }
      },
      "description": "Create a new folder in a case file"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get folder",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/ordner/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a single folder"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get folders",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
          },
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/ordner",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 50 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieve folder structure of a case file"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get invoices",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 50 : $parameter['size'] }}"
          },
          "url": "=/v1/rechnungen",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 50 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieve many invoices"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get invoice",
      "routing": {
        "request": {
          "url": "=/v1/rechnungen/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a single invoice"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create note",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen",
          "method": "POST"
        }
      },
      "description": "Create a new note"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get note",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a single note"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get notes",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
          },
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieve many notes"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update note",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/notizen/{{$parameter[\"id\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update an existing note"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create resubmission",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen",
          "method": "POST"
        }
      },
      "description": "Create a new resubmission"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get resubmission",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a single resubmission"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get resubmissions",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
          },
          "url": "=/v1/wiedervorlagen",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieve many resubmissions"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update resubmission",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen/{{$parameter[\"id\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update an existing resubmission"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update resubmission status",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/wiedervorlagen/{{$parameter[\"id\"]}}/status/{{$parameter[\"status\"]}}",
          "method": "PUT"
        }
      },
      "description": "Change the status of a resubmission"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create rvg fee",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg",
          "method": "POST"
        }
      }
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete rvg fee",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg/{{$parameter[\"id\"]}}",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get rvg fee",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get rvg fees",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
          },
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      }
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update rvg fee",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/rvg/{{$parameter[\"id\"]}}",
          "method": "PUT"
        }
      }
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create task",
      "routing": {
        "request": {
          "url": "=/v1/aufgaben",
          "method": "POST"
        }
      },
      "description": "Create a new task"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get task",
      "routing": {
        "request": {
          "url": "=/v1/aufgaben/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a single task"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get tasks",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
          },
          "url": "=/v1/aufgaben",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Retrieve many tasks"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update task",
      "routing": {
        "request": {
          "url": "=/v1/aufgaben/{{$parameter[\"id\"]}}",
          "method": "PUT"
        }
      },
      "description": "Update an existing task"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update task status",
      "routing": {
        "request": {
          "url": "=/v1/aufgaben/{{$parameter[\"id\"]}}/status/{{$parameter[\"status\"]}}",
          "method": "PUT"
        }
      },
      "description": "Change the status of a task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create third party cost",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen",
          "method": "POST"
        }
      }
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete third party cost",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen/{{$parameter[\"id\"]}}",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get third party cost",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen/{{$parameter[\"id\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get third party costs",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
          },
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      }
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update third party cost",
      "routing": {
        "request": {
          "url": "=/v1/akten/{{$parameter[\"laufendeNummer\"]}}/{{$parameter[\"bezugsJahr\"]}}/verguetungspositionen/fremde-auslagen/{{$parameter[\"id\"]}}",
          "method": "PUT"
        }
      }
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "routing": {
        "request": {
          "url": "=/v1/benutzer/{{$parameter.userId}}",
          "method": "GET"
        }
      },
      "description": "Get the data of a single user"
    },
    {
      "name": "Get Me",
      "value": "getCurrent",
      "action": "Get me",
      "routing": {
        "request": {
          "url": "=/v1/info/me",
          "method": "GET"
        }
      },
      "description": "Get the data of the current authenticated user"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many users",
      "routing": {
        "send": {
          "paginate": "={{ $parameter['returnAll'] }}"
        },
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "content"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "size": "={{ $parameter['returnAll'] ? 100 : $parameter['size'] }}"
          },
          "url": "=/v1/benutzer",
          "method": "GET",
          "arrayFormat": "repeat"
        },
        "operations": {
          "pagination": {
            "type": "generic",
            "properties": {
              "request": {
                "qs": {
                  "page": "={{ ($response.body?.number ?? -1) + 1 }}",
                  "size": "={{ $response.body?.size ?? 100 }}",
                  "sort": "={{ $request.qs?.sort }}",
                  "filter": "={{ $request.qs?.filter }}"
                }
              },
              "continue": "={{ !$response.body?.last }}"
            }
          }
        }
      },
      "description": "Get the data of multiple users"
    }
  ]

npm_readme:
  # n8n-nodes-actaport

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

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

  Actaport is a cloud-based legal management platform that helps law firms streamline their daily work.

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

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

  ## Installation

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

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

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

  ## Operations

  | Resource                              | Supported Operations                          |
  |---------------------------------------|-----------------------------------------------|
  | **Additional Information Categories** | get, getAll                                   |
  | **Case File**                         | get, getAll, create, update                   |
  | **Collision Check**                   | get                                           |
  | **Contact**                           | get, getAll, create, update, search           |
  | **Deadline**                          | get, getAll, create, update, updateStatus     |
  | **Department**                        | get, getAll                                   |
  | **Document**                          | get, getAll, update, download, create, search |
  | **Document Template**                 | get, getAll                                   |
  | **Expense**                           | get, getAll, create, update, delete           |
  | **Folder**                            | get, getAll, create                           |
  | **Invoice**                           | get, getAll                                   |
  | **Note**                              | get, getAll, create, update                   |
  | **Resubmission**                      | get, getAll, create, update, updateStatus     |
  | **RVG Fee**                           | get, getAll, create, update, delete           |
  | **Task**                              | get, getAll, create, update, updateStatus     |
  | **Third Party Cost**                  | get, getAll, create, update, delete           |
  | **User**                              | get, getMe, getAll                            |

  ## Credentials

  ### Prerequisites
  1. An active Actaport account. If you don't have one, sign up at [Actaport](https://www.actaport.de/).
  2. API access enabled for your Actaport account. Contact [Actaport support](https://actaport.zendesk.com/hc/de/requests/new) if you need assistance with this step.

  ### Setting up Actaport credentials in n8n
  1. In n8n, locate the **Credentials** section and click on **Create credential**.
  2. Select **Actaport OAuth2 API** from the list.
  3. Fill in your realm once prompted and click on **Connect my account**.
  4. Once redirected to the Actaport login page, enter your Actaport credentials to authorize n8n.
  5. After successful authentication, n8n will store the access token securely for future API requests

  ![img.png](assets/add_credentials.png)
  ![img_1.png](assets/login_prompt.png)
  ![img_2.png](assets/successful_login.png)
  ## Compatibility

  * n8n Nodes API version: 1
  * Node.js: >= 20.15


  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Actaport Homepage](https://www.actaport.de/)
  * [Actaport Developer Documentation](https://api.actaport.de/api-docs)
  * [Actaport REST API Reference](https://api.actaport.de/api-docs/rest-api/reference/public)
  * [Actaport Technical Support](https://www.actaport.de/kontakt/api-anfrage)

  # Version history
  * 0.1.0 - Initial release of the n8n Actaport node, supporting multiple resources and operations (see [Operations
    section](#operations) for details).

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by interacting with the Actaport cloud-based legal management platform API.","capabilities":["Retrieve additional information categories","Manage case files (get, create, update)","Perform collision checks","Search and manage contacts","Handle deadlines (get, create, update, update status)","Manage departments","Retrieve and download documents","Manage document templates","Process expenses (create, update, delete)","Manage folders"],"authentication":"OAuth2","commonUseCases":["Automating legal case management workflows","Syncing contact information between systems","Processing deadline updates and status changes","Downloading and managing legal documents","Tracking expenses and third-party costs"],"limitations":["Requires an active Actaport account with API access enabled","Node.js version 20.15 or higher is required","Requires manual setup of credentials in n8n before use"],"relatedNodes":["n8n HTTP Request node","n8n Webhook node","n8n Code node"]}


