# nodes

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

updated_at: 2026-07-14 14:40:33
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-07-14T14:40:33.556Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "zone",
      "options": [
        {
          "name": "DNSSEC",
          "value": "dnssec",
          "description": "Manage DNSSEC keys"
        },
        {
          "name": "Quota",
          "value": "quota",
          "description": "Get quota information"
        },
        {
          "name": "Record",
          "value": "record",
          "description": "Manage DNS records"
        },
        {
          "name": "Reverse Record",
          "value": "reverseRecord",
          "description": "Manage reverse DNS records"
        },
        {
          "name": "Secondary Zone",
          "value": "secondaryZone",
          "description": "Manage secondary DNS zones"
        },
        {
          "name": "Zone",
          "value": "zone",
          "description": "Manage primary DNS zones"
        },
        {
          "name": "Zone File",
          "value": "zoneFile",
          "description": "Import/export zone files in BIND format"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a zone",
          "routing": {
            "request": {
              "url": "",
              "method": "POST"
            }
          },
          "description": "Create a DNS zone"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a zone",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/{{$parameter.zoneId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a DNS zone"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a zone",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}",
              "method": "GET"
            }
          },
          "description": "Get a DNS zone"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many zones",
          "routing": {
            "request": {
              "url": "",
              "method": "GET"
            }
          },
          "description": "Get many DNS zones"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a zone",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}",
              "method": "PUT"
            }
          },
          "description": "Update a DNS zone"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "zone"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a record",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/records",
              "method": "POST"
            }
          },
          "description": "Create a DNS record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a record",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a DNS record"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a record",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
              "method": "GET"
            }
          },
          "description": "Get a DNS record"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many records",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "={{ $parameter.zoneId ? \"/\" + $parameter.zoneId + \"/records\" : \"/records\" }}",
              "method": "GET"
            }
          },
          "description": "Get many DNS records"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a record",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
              "method": "PUT"
            }
          },
          "description": "Update a DNS record"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "record"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a secondary zone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/secondaryzones",
              "method": "POST"
            }
          },
          "description": "Create a secondary zone"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a secondary zone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a secondary zone"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a secondary zone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
              "method": "GET"
            }
          },
          "description": "Get a secondary zone"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many secondary zones",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/secondaryzones",
              "method": "GET"
            }
          },
          "description": "Get many secondary zones"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a secondary zone",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
              "method": "PUT"
            }
          },
          "description": "Update a secondary zone"
        },
        {
          "name": "AXFR Get",
          "value": "axfrGet",
          "action": "Get AXFR status",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}/axfr",
              "method": "GET"
            }
          },
          "description": "Get AXFR status for a secondary zone"
        },
        {
          "name": "AXFR Start",
          "value": "axfrStart",
          "action": "Start AXFR transfer",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}/axfr",
              "method": "PUT"
            }
          },
          "description": "Trigger AXFR transfer for a secondary zone"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "secondaryZone"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a zone file",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/zonefile",
              "method": "GET"
            }
          },
          "description": "Export a zone file in BIND format"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a zone file",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/{{$parameter.zoneId}}/zonefile",
              "method": "PUT",
              "headers": {
                "Content-Type": "text/plain"
              }
            }
          },
          "description": "Import a zone file in BIND format"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "zoneFile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get quota",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/quota",
              "method": "GET"
            }
          },
          "description": "Get quota information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "quota"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create DNSSEC keys",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/keys",
              "method": "POST"
            }
          },
          "description": "Create DNSSEC keys for a zone"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete DNSSEC keys",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/{{$parameter.zoneId}}/keys",
              "method": "DELETE"
            }
          },
          "description": "Delete DNSSEC keys for a zone"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get DNSSEC keys",
          "routing": {
            "request": {
              "url": "=/{{$parameter.zoneId}}/keys",
              "method": "GET"
            }
          },
          "description": "Get DNSSEC keys for a zone"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dnssec"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a reverse record",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/reverserecords",
              "method": "POST"
            }
          },
          "description": "Create a reverse DNS record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a reverse record",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                {
                  "type": "set",
                  "properties": {
                    "value": "={{ { \"success\": true } }}"
                  }
                }
              ]
            },
            "request": {
              "url": "=/reverserecords/{{$parameter.reverserecordId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a reverse DNS record"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a reverse record",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/reverserecords/{{$parameter.reverserecordId}}",
              "method": "GET"
            }
          },
          "description": "Get a reverse DNS record"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many reverse records",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/reverserecords",
              "method": "GET"
            }
          },
          "description": "Get many reverse DNS records"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a reverse record",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "=/reverserecords/{{$parameter.reverserecordId}}",
              "method": "PUT"
            }
          },
          "description": "Update a reverse DNS record"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reverseRecord"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a zone",
      "routing": {
        "request": {
          "url": "",
          "method": "POST"
        }
      },
      "description": "Create a DNS zone",
      "resource": "zone"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a zone",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/{{$parameter.zoneId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a DNS zone",
      "resource": "zone"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a zone",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}",
          "method": "GET"
        }
      },
      "description": "Get a DNS zone",
      "resource": "zone"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many zones",
      "routing": {
        "request": {
          "url": "",
          "method": "GET"
        }
      },
      "description": "Get many DNS zones",
      "resource": "zone"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a zone",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}",
          "method": "PUT"
        }
      },
      "description": "Update a DNS zone",
      "resource": "zone"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a record",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/records",
          "method": "POST"
        }
      },
      "description": "Create a DNS record",
      "resource": "record"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a record",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a DNS record",
      "resource": "record"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a record",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
          "method": "GET"
        }
      },
      "description": "Get a DNS record",
      "resource": "record"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many records",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "={{ $parameter.zoneId ? \"/\" + $parameter.zoneId + \"/records\" : \"/records\" }}",
          "method": "GET"
        }
      },
      "description": "Get many DNS records",
      "resource": "record"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a record",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/records/{{$parameter.recordId}}",
          "method": "PUT"
        }
      },
      "description": "Update a DNS record",
      "resource": "record"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a secondary zone",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/secondaryzones",
          "method": "POST"
        }
      },
      "description": "Create a secondary zone",
      "resource": "secondaryZone"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a secondary zone",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a secondary zone",
      "resource": "secondaryZone"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a secondary zone",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
          "method": "GET"
        }
      },
      "description": "Get a secondary zone",
      "resource": "secondaryZone"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many secondary zones",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/secondaryzones",
          "method": "GET"
        }
      },
      "description": "Get many secondary zones",
      "resource": "secondaryZone"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a secondary zone",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}",
          "method": "PUT"
        }
      },
      "description": "Update a secondary zone",
      "resource": "secondaryZone"
    },
    {
      "name": "AXFR Get",
      "value": "axfrGet",
      "action": "Get AXFR status",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}/axfr",
          "method": "GET"
        }
      },
      "description": "Get AXFR status for a secondary zone",
      "resource": "secondaryZone"
    },
    {
      "name": "AXFR Start",
      "value": "axfrStart",
      "action": "Start AXFR transfer",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/secondaryzones/{{$parameter.secondaryZoneId}}/axfr",
          "method": "PUT"
        }
      },
      "description": "Trigger AXFR transfer for a secondary zone",
      "resource": "secondaryZone"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a zone file",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/zonefile",
          "method": "GET"
        }
      },
      "description": "Export a zone file in BIND format",
      "resource": "zoneFile"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a zone file",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/{{$parameter.zoneId}}/zonefile",
          "method": "PUT",
          "headers": {
            "Content-Type": "text/plain"
          }
        }
      },
      "description": "Import a zone file in BIND format",
      "resource": "zoneFile"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get quota",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/quota",
          "method": "GET"
        }
      },
      "description": "Get quota information",
      "resource": "quota"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create DNSSEC keys",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/keys",
          "method": "POST"
        }
      },
      "description": "Create DNSSEC keys for a zone",
      "resource": "dnssec"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete DNSSEC keys",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/{{$parameter.zoneId}}/keys",
          "method": "DELETE"
        }
      },
      "description": "Delete DNSSEC keys for a zone",
      "resource": "dnssec"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get DNSSEC keys",
      "routing": {
        "request": {
          "url": "=/{{$parameter.zoneId}}/keys",
          "method": "GET"
        }
      },
      "description": "Get DNSSEC keys for a zone",
      "resource": "dnssec"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a reverse record",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/reverserecords",
          "method": "POST"
        }
      },
      "description": "Create a reverse DNS record",
      "resource": "reverseRecord"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a reverse record",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            {
              "type": "set",
              "properties": {
                "value": "={{ { \"success\": true } }}"
              }
            }
          ]
        },
        "request": {
          "url": "=/reverserecords/{{$parameter.reverserecordId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a reverse DNS record",
      "resource": "reverseRecord"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a reverse record",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/reverserecords/{{$parameter.reverserecordId}}",
          "method": "GET"
        }
      },
      "description": "Get a reverse DNS record",
      "resource": "reverseRecord"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many reverse records",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/reverserecords",
          "method": "GET"
        }
      },
      "description": "Get many reverse DNS records",
      "resource": "reverseRecord"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a reverse record",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "=/reverserecords/{{$parameter.reverserecordId}}",
          "method": "PUT"
        }
      },
      "description": "Update a reverse DNS record",
      "resource": "reverseRecord"
    }
  ]

npm_readme:
[cell repeats an earlier one in this file: 19360 characters]

ai_documentation_summary:
  {"purpose":"This node enables interaction with the IONOS Cloud DNS API v1 to manage DNS zones, records, DNSSEC, and zone transfers within n8n workflows.","capabilities":["Manage DNS zones","Create and update DNS records (15 types)","Manage DNSSEC","Handle zone transfers","Query DNS records","Delete DNS records"],"authentication":"API key required (Cloud API Bearer token)","commonUseCases":["Automating DNS record updates for new domain deployments","Managing DNS configurations for multi-domain setups","Enabling DNSSEC for security","Syncing DNS changes across environments"],"limitations":["Limited to DNS-specific operations (unlike other IONOS nodes that cover infrastructure, certificates, CDN, and AI)"],"relatedNodes":["IONOS Cloud (Infrastructure)","IONOS Cloud (Certificate Manager)","IONOS Cloud (CDN)","IONOS Cloud (AI Model Hub)","IONOS Cloud Chat Model"]}


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-07-14 14:40:33
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-07-14T14:40:33.557Z
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",
      "resource": "contract"
    },
    {
      "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",
      "resource": "location"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get locations",
      "routing": {
        "request": {
          "url": "/locations?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many available locations",
      "resource": "location"
    },
    {
      "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",
      "resource": "image"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get images",
      "routing": {
        "request": {
          "url": "/images?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many available images",
      "resource": "image"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an IP block",
      "routing": {
        "request": {
          "url": "/ipblocks",
          "method": "POST"
        }
      },
      "description": "Reserve a new IP block",
      "resource": "ipBlock"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an IP block",
      "routing": {
        "request": {
          "url": "=/ipblocks/{{$parameter.ipBlockId}}",
          "method": "DELETE"
        }
      },
      "description": "Release an IP block",
      "resource": "ipBlock"
    },
    {
      "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",
      "resource": "ipBlock"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get IP blocks",
      "routing": {
        "request": {
          "url": "/ipblocks?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many reserved IP blocks",
      "resource": "ipBlock"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a request",
      "routing": {
        "request": {
          "method": "GET"
        }
      },
      "description": "Retrieve a specific request",
      "resource": "request"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many requests",
      "routing": {
        "request": {
          "url": "/requests",
          "method": "GET"
        }
      },
      "description": "List many API requests",
      "resource": "request"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get request status",
      "routing": {
        "request": {
          "method": "GET"
        }
      },
      "description": "Retrieve the status of a request",
      "resource": "request"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a datacenter",
      "routing": {
        "request": {
          "url": "/datacenters",
          "method": "POST"
        }
      },
      "description": "Create a new datacenter",
      "resource": "datacenter"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a datacenter",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a datacenter",
      "resource": "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",
      "resource": "datacenter"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get datacenters",
      "routing": {
        "request": {
          "url": "/datacenters?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many datacenters",
      "resource": "datacenter"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a datacenter",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}",
          "method": "PUT"
        }
      },
      "description": "Update the properties of a datacenter",
      "resource": "datacenter"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a LAN",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/lans",
          "method": "POST"
        }
      },
      "description": "Create a new LAN",
      "resource": "lan"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a LAN",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a LAN",
      "resource": "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",
      "resource": "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",
      "resource": "lan"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a LAN",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/lans/{{$parameter.lanId}}",
          "method": "PUT"
        }
      },
      "description": "Update LAN properties",
      "resource": "lan"
    },
    {
      "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",
      "resource": "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",
      "resource": "server"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers",
          "method": "POST"
        }
      },
      "description": "Create a new server",
      "resource": "server"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a server",
      "resource": "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",
      "resource": "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",
      "resource": "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",
      "resource": "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",
      "resource": "server"
    },
    {
      "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",
      "resource": "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",
      "resource": "server"
    },
    {
      "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",
      "resource": "server"
    },
    {
      "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",
      "resource": "server"
    },
    {
      "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",
      "resource": "server"
    },
    {
      "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",
      "resource": "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",
      "resource": "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",
      "resource": "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",
      "resource": "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",
      "resource": "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",
      "resource": "server"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a server",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/servers/{{$parameter.serverId}}",
          "method": "PUT"
        }
      },
      "description": "Update a server",
      "resource": "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",
      "resource": "server"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a volume",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes",
          "method": "POST"
        }
      },
      "description": "Create a new volume",
      "resource": "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",
      "resource": "volume"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a volume",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a volume",
      "resource": "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",
      "resource": "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",
      "resource": "volume"
    },
    {
      "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",
      "resource": "volume"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a volume",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/volumes/{{$parameter.volumeId}}",
          "method": "PUT"
        }
      },
      "description": "Update volume properties",
      "resource": "volume"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a snapshot",
      "routing": {
        "request": {
          "url": "=/snapshots/{{$parameter.snapshotId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a snapshot",
      "resource": "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",
      "resource": "snapshot"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get snapshots",
      "routing": {
        "request": {
          "url": "/snapshots?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many available snapshots",
      "resource": "snapshot"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a snapshot",
      "routing": {
        "request": {
          "url": "=/snapshots/{{$parameter.snapshotId}}",
          "method": "PUT"
        }
      },
      "description": "Update snapshot properties",
      "resource": "snapshot"
    },
    {
      "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",
      "resource": "nic"
    },
    {
      "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",
      "resource": "nic"
    },
    {
      "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",
      "resource": "nic"
    },
    {
      "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",
      "resource": "nic"
    },
    {
      "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",
      "resource": "nic"
    },
    {
      "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",
      "resource": "firewallRule"
    },
    {
      "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",
      "resource": "firewallRule"
    },
    {
      "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",
      "resource": "firewallRule"
    },
    {
      "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",
      "resource": "firewallRule"
    },
    {
      "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",
      "resource": "firewallRule"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a kubernetes cluster",
      "routing": {
        "request": {
          "url": "/k8s",
          "method": "POST"
        }
      },
      "description": "Create a new Kubernetes cluster",
      "resource": "k8s"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a kubernetes cluster",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter.k8sClusterId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a Kubernetes cluster",
      "resource": "k8s"
    },
    {
      "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",
      "resource": "k8s"
    },
    {
      "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",
      "resource": "k8s"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many kubernetes clusters",
      "routing": {
        "request": {
          "url": "/k8s?depth=2",
          "method": "GET"
        }
      },
      "description": "Get many Kubernetes clusters",
      "resource": "k8s"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a kubernetes cluster",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter.k8sClusterId}}",
          "method": "PUT"
        }
      },
      "description": "Update Kubernetes cluster properties",
      "resource": "k8s"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a node pool",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools",
          "method": "POST"
        }
      },
      "description": "Create a node pool",
      "resource": "nodePool"
    },
    {
      "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",
      "resource": "nodePool"
    },
    {
      "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",
      "resource": "nodePool"
    },
    {
      "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",
      "resource": "nodePool"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many node pools",
      "routing": {
        "request": {
          "url": "=/k8s/{{$parameter[\"k8sClusterId\"]}}/nodepools",
          "method": "GET"
        }
      },
      "description": "Get many node pools",
      "resource": "nodePool"
    },
    {
      "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",
      "resource": "nodePool"
    },
    {
      "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",
      "resource": "nodePool"
    },
    {
      "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",
      "resource": "nodePool"
    },
    {
      "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",
      "resource": "nodePool"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a private cross connect",
      "routing": {
        "request": {
          "url": "/pccs",
          "method": "POST"
        }
      },
      "description": "Create a new Private Cross-Connect",
      "resource": "pcc"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a private cross connect",
      "routing": {
        "request": {
          "url": "=/pccs/{{$parameter.pccId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a Private Cross-Connect",
      "resource": "pcc"
    },
    {
      "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",
      "resource": "pcc"
    },
    {
      "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",
      "resource": "pcc"
    },
    {
      "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",
      "resource": "pcc"
    },
    {
      "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",
      "resource": "loadBalancer"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a load balancer",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers",
          "method": "POST"
        }
      },
      "description": "Create a Load Balancer",
      "resource": "loadBalancer"
    },
    {
      "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",
      "resource": "loadBalancer"
    },
    {
      "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",
      "resource": "loadBalancer"
    },
    {
      "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",
      "resource": "loadBalancer"
    },
    {
      "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",
      "resource": "loadBalancer"
    },
    {
      "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",
      "resource": "loadBalancer"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many load balancers",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter[\"datacenterId\"]}}/loadbalancers",
          "method": "GET"
        }
      },
      "description": "Get many Load Balancers",
      "resource": "loadBalancer"
    },
    {
      "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",
      "resource": "loadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "networkLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "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",
      "resource": "applicationLoadBalancer"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a target group",
      "routing": {
        "request": {
          "url": "=/targetgroups",
          "method": "POST"
        }
      },
      "description": "Create a target group",
      "resource": "targetGroup"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a target group",
      "routing": {
        "request": {
          "url": "=/targetgroups/{{$parameter.targetGroupId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a target group",
      "resource": "targetGroup"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a target group",
      "routing": {
        "request": {
          "url": "=/targetgroups/{{$parameter.targetGroupId}}",
          "method": "GET"
        }
      },
      "description": "Get a target group",
      "resource": "targetGroup"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many target groups",
      "routing": {
        "request": {
          "url": "=/targetgroups",
          "method": "GET"
        }
      },
      "description": "Get many target groups",
      "resource": "targetGroup"
    },
    {
      "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",
      "resource": "targetGroup"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a NAT gateway",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/natgateways",
          "method": "POST"
        }
      },
      "description": "Create a new NAT Gateway",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "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",
      "resource": "natGateway"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a security group",
      "routing": {
        "request": {
          "url": "=/datacenters/{{$parameter.datacenterId}}/securitygroups",
          "method": "POST"
        }
      },
      "description": "Create a new security group",
      "resource": "securityGroup"
    },
    {
      "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",
      "resource": "securityGroup"
    },
    {
      "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",
      "resource": "securityGroup"
    },
    {
      "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",
      "resource": "securityGroup"
    },
    {
      "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",
      "resource": "securityGroup"
    },
    {
      "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",
      "resource": "securityGroup"
    },
    {
      "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",
      "resource": "securityGroup"
    },
    {
      "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",
      "resource": "securityGroup"
    },
    {
      "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",
      "resource": "securityGroup"
    },
    {
      "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",
      "resource": "securityGroup"
    }
  ]

npm_readme:
[cell repeats an earlier one in this file: 19360 characters]

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: @restream/n8n-nodes-restream.restream
package_name: @restream/n8n-nodes-restream
display_name: Restream
description: Access Restream Events, Recordings, and Clips using the Restream API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: mturusov
author_github_url: https://github.com/restreamio/n8n-nodes-restream.git
npm_package_name: @restream/n8n-nodes-restream
npm_version: 0.2.0
community_fetched_at: 2026-07-14T14:40:33.559Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "clipProject",
      "options": [
        {
          "name": "Event",
          "value": "event"
        },
        {
          "name": "Event Recording",
          "value": "eventRecording"
        },
        {
          "name": "Clip Project",
          "value": "clipProject"
        },
        {
          "name": "Clip",
          "value": "clip"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getHistory",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an event",
          "routing": {
            "request": {
              "url": "=/v2/user/events/{{$parameter.eventId}}",
              "method": "GET"
            }
          },
          "description": "Get a single event by ID"
        },
        {
          "name": "Get History",
          "value": "getHistory",
          "action": "Get event history",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "/v2/user/events/history",
              "method": "GET"
            }
          },
          "description": "Get a list of finished and missed events"
        },
        {
          "name": "Get In Progress",
          "value": "getInProgress",
          "action": "Get in progress events",
          "routing": {
            "request": {
              "url": "/v2/user/events/in-progress",
              "method": "GET"
            }
          },
          "description": "Get a list of currently in-progress events"
        },
        {
          "name": "Get Upcoming",
          "value": "getUpcoming",
          "action": "Get upcoming events",
          "routing": {
            "request": {
              "url": "/v2/user/events/upcoming",
              "method": "GET"
            }
          },
          "description": "Get a list of upcoming events"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "event"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get recordings for an event",
          "routing": {
            "request": {
              "url": "=/v2/user/events/{{$parameter.eventId}}/recordings",
              "method": "GET"
            }
          },
          "description": "Get many recordings (video and audio) for a specific event"
        },
        {
          "name": "Get Download URL",
          "value": "getDownloadUrl",
          "action": "Get a download URL for a recording",
          "routing": {
            "request": {
              "url": "=/v2/user/events/{{$parameter.eventId}}/recordings/download-url",
              "method": "POST"
            }
          },
          "description": "Generate a temporary download URL for a specific recording file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "eventRecording"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many clip projects",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "projects"
                  }
                }
              ]
            },
            "request": {
              "url": "/v2/user/clips/projects",
              "method": "GET"
            }
          },
          "description": "Get a list of many clip projects for the authenticated user"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a clip project",
          "routing": {
            "request": {
              "url": "=/v2/user/clips/projects/{{$parameter.projectId}}",
              "method": "GET"
            }
          },
          "description": "Get a single clip project with its clips and posted clips"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clipProject"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "download",
      "options": [
        {
          "name": "Get Download URL",
          "value": "download",
          "action": "Get a download URL for a clip",
          "routing": {
            "request": {
              "url": "=/v2/user/clips/{{$parameter.clipId}}/download",
              "method": "GET"
            }
          },
          "description": "Get a temporary download URL for a specific clip"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clip"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get an event",
      "routing": {
        "request": {
          "url": "=/v2/user/events/{{$parameter.eventId}}",
          "method": "GET"
        }
      },
      "description": "Get a single event by ID",
      "resource": "event"
    },
    {
      "name": "Get History",
      "value": "getHistory",
      "action": "Get event history",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "/v2/user/events/history",
          "method": "GET"
        }
      },
      "description": "Get a list of finished and missed events",
      "resource": "event"
    },
    {
      "name": "Get In Progress",
      "value": "getInProgress",
      "action": "Get in progress events",
      "routing": {
        "request": {
          "url": "/v2/user/events/in-progress",
          "method": "GET"
        }
      },
      "description": "Get a list of currently in-progress events",
      "resource": "event"
    },
    {
      "name": "Get Upcoming",
      "value": "getUpcoming",
      "action": "Get upcoming events",
      "routing": {
        "request": {
          "url": "/v2/user/events/upcoming",
          "method": "GET"
        }
      },
      "description": "Get a list of upcoming events",
      "resource": "event"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get recordings for an event",
      "routing": {
        "request": {
          "url": "=/v2/user/events/{{$parameter.eventId}}/recordings",
          "method": "GET"
        }
      },
      "description": "Get many recordings (video and audio) for a specific event",
      "resource": "eventRecording"
    },
    {
      "name": "Get Download URL",
      "value": "getDownloadUrl",
      "action": "Get a download URL for a recording",
      "routing": {
        "request": {
          "url": "=/v2/user/events/{{$parameter.eventId}}/recordings/download-url",
          "method": "POST"
        }
      },
      "description": "Generate a temporary download URL for a specific recording file",
      "resource": "eventRecording"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many clip projects",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "projects"
              }
            }
          ]
        },
        "request": {
          "url": "/v2/user/clips/projects",
          "method": "GET"
        }
      },
      "description": "Get a list of many clip projects for the authenticated user",
      "resource": "clipProject"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a clip project",
      "routing": {
        "request": {
          "url": "=/v2/user/clips/projects/{{$parameter.projectId}}",
          "method": "GET"
        }
      },
      "description": "Get a single clip project with its clips and posted clips",
      "resource": "clipProject"
    },
    {
      "name": "Get Download URL",
      "value": "download",
      "action": "Get a download URL for a clip",
      "routing": {
        "request": {
          "url": "=/v2/user/clips/{{$parameter.clipId}}/download",
          "method": "GET"
        }
      },
      "description": "Get a temporary download URL for a specific clip",
      "resource": "clip"
    }
  ]

npm_readme:
  # @restream/n8n-nodes-restream

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

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

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

  ## Installation

  Go to your **n8n** > **Settings** > **Community nodes** and install:

  ```
  @restream/n8n-nodes-restream
  ```

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

  ## Operations

  - Event
      - Get an event by ID
      - Get event history (finished and missed events)
      - Get in-progress events
      - Get upcoming events
  - Event Recording
      - Get recordings for an event
      - Get a download URL for a recording
  - Clip Project
      - Get many clip projects
      - Get a clip project
  - Clip
      - Get a download URL for a clip

  ## Credentials

  This node uses OAuth2 authentication.

  1. Go to the [Restream Developer Portal](https://developers.restream.io/) and create a new application.
  2. Copy the **Client ID** and **Client Secret** into your n8n Restream OAuth2 credential.
  3. From n8n, copy the **OAuth Redirect URL** and paste it into your Restream application's redirect URI settings.

  ## Compatibility

  Tested with n8n@2.7.4.

  ## Upgrading

  ### v0.2.0 — Event and Recording endpoints

  This version adds new OAuth2 scopes (`stream.default.read` and `storage.default.read`) required for the new Event and Event Recording operations. **Existing users must reconnect their Restream OAuth2 credentials** to grant these new permissions:

  1. Open your n8n credentials page.
  2. Find your Restream OAuth2 credential.
  3. Click **Reconnect** to re-authorize with the updated scopes.

  Existing Clip and Clip Project operations are unaffected and will continue to work without reconnecting.

  ## Resources

  * [Restream API documentation](https://developers.restream.io/docs)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of Restream platform features by allowing access to events, recordings, clips, and clip projects via the Restream API.","capabilities":["Get an event by ID","Get event history (finished and missed events)","Get in-progress events","Get upcoming events","Get recordings for an event","Get a download URL for a recording","Get many clip projects","Get a clip project","Get a download URL for a clip"],"authentication":"OAuth2 (requires Client ID, Client Secret, and OAuth Redirect URL configuration)","commonUseCases":["Automating event monitoring and retrieval","Scheduling and managing live streaming clips","Automating content archiving and download workflows","Integrating Restream data into broader n8n automation pipelines"],"limitations":["Requires reconnection of OAuth2 credentials after upgrading to v0.2.0 to grant new scopes","Limited to read-only operations (no creation, deletion, or modification of events/clips)"],"relatedNodes":["n8n HTTP Request node","n8n Webhook node","n8n Code node"]}


node_type: @zohosign/n8n-nodes-sign.zohoSignTrigger
package_name: @zohosign/n8n-nodes-sign
display_name: Zoho Sign Trigger
description: Triggers on incoming events
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: zohosign
author_github_url: https://github.com/ZohoSign-integ/n8n-nodes-zohosign.git
npm_package_name: @zohosign/n8n-nodes-sign
npm_version: 1.0.3
community_fetched_at: 2026-07-14T14:40:33.560Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # Zoho Sign integration with n8n

  Zoho Sign is a secure digital signature and workflow automation platform for businesses. Use this node to automate Zoho Sign operations directly from n8n workflows.

  To learn more about Zoho Sign, visit our homepage, or contact sales with any questions.

  - [Prerequisites](#prerequisites)
  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Operations](#operations)
  - [Compatibility](#compatibility)

  ## Prerequisites

  - A Zoho Sign account
  - n8n
  - Access to OAuth 2.0 credentials (client ID and client secret)

  ## Installation

  Follow the n8n community nodes installation guide to install the Zoho Sign node.

  If you use n8n as a self-hosted user, you can install this node even if it doesn't appear in the default node list. Follow [GUI installation guide](https://docs.n8n.io/integrations/community-nodes/installation/gui-install/).

  **Package name: @zohosign/n8n-nodes-sign**

  ## Credentials

  To use the Zoho Sign node, you will need to authenticate via Zoho OAuth 2.0.

  ### Setting up OAuth 2.0

  1. Visit [Zoho OAuth 2.0](https://www.zoho.com/accounts/protocol/oauth.html) and follow the instructions to generate a client ID and client secret. Select **Server-based Applications** as the client type.

  2. Make sure to select the correct `Authorization URL` and `Access Token URL` depending on your Zoho Sign domain.

  3. Enter the client ID and client secret in the credential page of the n8n node and click **Connect my account**.

  4. Once connected, your Zoho Sign account is ready to use in workflows.

  ## Operations

  The Zoho Sign node supports a range of document and template operations. Each operation listed below includes a link to its specific API documentation.

  See all Zoho Sign [API documentation](https://www.zoho.com/sign/api/).

  ### Document operations

  #### Get Many

  Get all document requests in your account.

  #### Get

  Get a specific document request. 

  Requires `Request ID` (found via Get Documents List operation or in the Zoho Sign UI URL for the specific request).

  Optional boolean `Format Actions` helps to transform the request actions array for use in request `Update` operation by providing a generalized structure with placeholders.

  #### Get Form Data

  See form data from a completed document.

  Requires `Request ID`.

  #### Get Folder List

  See all folders in your account.

  #### Get Field Types

  See all field types supported by Zoho Sign.

  #### Get Document Types

  See all document types in your account.

  #### Download PDF

  Download a request's data.

  Requires `Request ID`.

  #### Download Particular PDF File

  Download a specific PDF file in the request data.

  Requires `Request ID` and `Document ID`.

  #### Download Completion Certificate

  Download the completion certificate for a completed request.

  Requires `Request ID`.

  #### Recall

  Recall a signing request.

  Requires `Request ID`, `Reason (optional)`.

  #### Remind Recipient

  Send out a reminder email to recipients about a signing request.

  Requries `Request ID`.

  #### Create a New Folder

  Create a new folder in your account.

  Requires `Folder Name`.

  #### Create New Document Type

  Create a new document type for your account.

  Requires `Document Type Name` and `Document Type Description (optional)`.

  #### Update Document Type

  Update the name and description of a document type.

  Requires `Request Type ID`, `Document Category Name`, and `Document Category Description (optional)`.

  #### Correct

  Put a signing request in "CORRECTION" state so the admin can update it. Recipients cannot sign while the request is in this state. After making corrections, submit the request again to enable signing.

  Requires `Request ID`.

  #### Upload

  Create a new request by uploading documents, or upload documents to a drafted request.

  Requires `Request ID`.

  #### Submit

  Submit a document for signatures. This operation sends an email to all recipients to start the signing process. It will mark the document as "In progress" and prevent further editing unless the Correct Document operation is invoked with the request ID.

  Requires `Request ID`.

  #### Delete

  Delete a request.

  For a sent request, set `In Progress = true` to delete it. If not properly set, the request won't be deleted.

  Requires `Request IDs to Delete` (a list of request IDs) and `In Progress` (Boolean field to indicate what type of document to delete).

  ```
  {
  	"data": ["38002000000070097", ...]
  }
  ```

  #### Extend

  Change the expiration date for the signing request.

  Requires `Request ID` and `Expire By`.

  #### Update

  Update the information regarding a signing request.

  ### Template Operations

  #### Get Many

  Get all templates in your account.

  #### Get

  Get information regarding a particular template.

  Requires `Template ID`.

  Optional boolean `Format Actions & Prefill fields` helps you to format the output for use in `Send For Signatures` operation by providing a generalized structure with placeholders.

  #### Upload

  Create a new template by uploading a document or upload documents to an existing template.

  Requires `Template ID` (optional; will upload the document to the corresponding template).

  #### Send For Signatures

  Send a signing request using a template as a base.

  Requires `Template ID`, `Is QuickSend` (Boolean that determines whether quick send or new document request draft), and `Prefill Fields` (optional; required if prefill fields are present in the document and you're using quick send).

  #### Delete

  Deletes a template.

  Requires `Template ID`.

  ## Compatibility

  This node is generally tested against and is compatible with the latest stable version of **n8n**. A minimum n8n version of **1.113.0** or higher is recommended.

ai_documentation_summary:
  {"purpose":"The Zoho Sign Trigger node automates Zoho Sign operations within n8n workflows by triggering on incoming events and supporting various document and template management actions.","capabilities":["Get all document requests","Get specific document request by Request ID","Get form data from completed documents","Get folder list","Get field types","Get document types","Download PDF data","Download specific PDF file","Download completion certificate","Recall signing request"],"authentication":"OAuth 2.0 (Client ID and Client Secret required)","commonUseCases":["Automating document collection and submission workflows","Managing digital signature expiration dates","Recalling or correcting failed signature requests","Sending reminders to recipients","Template-based document generation and signing"],"limitations":["Requires a Zoho Sign account with OAuth 2.0 credentials","Minimum n8n version 1.113.0 recommended","Delete operation requires setting 'In Progress' to true for sent requests"],"relatedNodes":["Zoho Sign Create","Zoho Sign Update","Zoho Sign Delete","Zoho Sign Get","Zoho Sign Send For Signatures"]}


node_type: @heygenofficial/n8n-nodes-heygen-official.heygenTrigger
package_name: @heygenofficial/n8n-nodes-heygen-official
display_name: HeyGen Trigger
description: Starts a workflow when HeyGen sends a webhook event
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: demianheygen
author_github_url: https://github.com/heygen-com/n8n-integration-heygen-node.git
npm_package_name: @heygenofficial/n8n-nodes-heygen-official
npm_version: 0.1.8
community_fetched_at: 2026-07-14T14:40:33.561Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # Local development

  If n8n-nodes-heygen-official in some folder "/home/username/projects/n8n-heygen-node" after changing code of this node, we need:

  1. In this folder run `npm run build && npm link`
  2. Go to global n8n folder and sub-folder "custom" (for example: ~/.n8n/custom) and from this folder run `npm link n8n-nodes-heygen-official` where "n8n-nodes-heygen-official" is name of this package (in package.json)
  3. Run `n8n start` to start local n8n server
  4. Now we should be able to find HeyGen node
  5. Link operations need to be done only one time, then after changes in code, just run `npm run build` and then `n8n start` to see changes

  # Lint

  6. Run `npm run lint` to check for errors or `npm run lintfix` to automatically fix errors when possible.

  Important: Some of lint errors do not follow logic, so we can skip them.

  # Publish

  7. [Publish](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry) your package to npm.

  ## More information

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

ai_documentation_summary:
  {"purpose":"This n8n node listens for HeyGen webhook events and automatically triggers a workflow when HeyGen sends them.","capabilities":["Starts workflows on HeyGen webhook events","Supports HeyGen official API integration"],"authentication":"API key required (implied by HeyGen integration)","commonUseCases":["Automate video generation workflows based on HeyGen events","Trigger downstream tasks when HeyGen completes a video task"],"limitations":["Requires local development setup with npm linking for custom code changes","No detailed error handling or retry logic mentioned in README"],"relatedNodes":["HeyGen Official node","Webhook node","Workflow trigger node"]}


node_type: n8n-nodes-byteplus.bytePlus
package_name: n8n-nodes-byteplus
display_name: BytePlus
description: BytePlus AI Services - Image Generation, Video Generation, and Text Generation
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: wilsonhfwong
author_github_url: https://github.com/bytedance-agent-architect/
npm_package_name: n8n-nodes-byteplus
npm_version: 0.2.1
community_fetched_at: 2026-07-14T14:40:33.562Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "text",
      "options": [
        {
          "name": "Image",
          "value": "image",
          "description": "Generate an image"
        },
        {
          "name": "Video",
          "value": "video",
          "description": "Generate a video"
        },
        {
          "name": "Text",
          "value": "text",
          "description": "Message a model"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateImage",
      "options": [
        {
          "name": "Generate Image",
          "value": "generateImage",
          "action": "Generate an image",
          "description": "Generate an image from a text prompt using Seedream"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "image"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "answerQuestion",
      "options": [
        {
          "name": "Answer Question",
          "value": "answerQuestion",
          "action": "Message a model",
          "description": "Send message to a model"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "text"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateVideo",
      "options": [
        {
          "name": "Generate Video",
          "value": "generateVideo",
          "action": "Generate a video",
          "description": "Generate a video from text and reference image using Seedance"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "video"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate Image",
      "value": "generateImage",
      "action": "Generate an image",
      "description": "Generate an image from a text prompt using Seedream",
      "resource": "image"
    },
    {
      "name": "Answer Question",
      "value": "answerQuestion",
      "action": "Message a model",
      "description": "Send message to a model",
      "resource": "text"
    },
    {
      "name": "Generate Video",
      "value": "generateVideo",
      "action": "Generate a video",
      "description": "Generate a video from text and reference image using Seedance",
      "resource": "video"
    }
  ]

npm_readme:
  # n8n-nodes-byteplus

  **n8n community node for BytePlus AI services** - Image Generation, Video Generation, and Text Generation.

  ## Features

  | Service | Capabilities |
  |---------|-------------|
  | **Image Generation** | Generate images using Seedream models (2K, 1080p, 720p, 1024x1024) |
  | **Video Generation** | Create videos from text + reference images using Seedance |
  | **Text Generation** | Generate text responses using Seed LLM |

  ## Installation

  ### Option 1: Community Node (Recommended)

  1. In your n8n instance, go to **Settings > Community Nodes**
  2. Click **Install**
  3. Enter `n8n-nodes-byteplus`
  4. Agree to the risks and click **Install**

  ### Option 2: Manual Installation

  ```bash
  npm install n8n-nodes-byteplus
  ```

  ## Setup

  ### 1. Get BytePlus API Credentials

  1. Sign up at [BytePlus](https://www.byteplus.com/)
  2. Navigate to the ARK console
  3. Generate an API key

  ### 2. Configure Credentials in n8n

  1. In n8n, go to **Credentials**
  2. Click **New Credential**
  3. Search for **BytePlus API**
  4. Enter your API key and configure endpoints if needed

  ## Usage

  ### Image Generation

  Generate images from text prompts using Seedream models.

  **Parameters:**
  - **Prompt** (required): Text description of the image
  - **Model**: Seedream 4.0 (default), Seedream 3.0, or Custom
  - **Size**: 2K, 1080p, 720p, or 1024x1024
  - **Watermark**: Add watermark (default: true)

  **Output:** Images are displayed directly in n8n output panel with download URLs.

  ### Video Generation

  Create videos from text descriptions and reference images using Seedance.

  **Parameters:**
  - **Prompt** (required): Text description of the video
  - **Reference Image URL** (required): Public https:// URL of reference image
  - **Model**: Seedance 1.0 Lite I2V (default) or Custom
  - **Max Wait Time**: Polling timeout in seconds (default: 300)

  ### Text Generation

  Generate text responses using Seed LLM.

  **Parameters:**
  - **Prompt** (required): Question or prompt text
  - **Model**: Model ID for specific Seed LLM models

  ## Local Development

  ### Prerequisites

  - Node.js >=18.0.0
  - n8n installed locally (`npm install -g n8n` or use `npx`)

  ### Quick Start

  1. **Clone and install dependencies:**
     ```bash
     git clone <your-repo-url>
     cd n8n-nodes-byteplus
     npm install
     ```

  2. **Build the node:**
     ```bash
     npm run build
     ```

  3. **Start n8n with the custom node:**
     ```bash
     N8N_CUSTOM_EXTENSIONS="/path/to/n8n-nodes-byteplus" npx n8n start
     ```
     > **Note:** `npm run dev` only runs the TypeScript compiler in watch mode — it does not start n8n. You need to run n8n separately.

  4. **Access n8n:**
     - Open http://localhost:5678
     - Create your workflow
     - Add BytePlus node from the nodes panel
     - Configure your BytePlus API credentials

  > **Port note:** n8n defaults to port 5678 for the editor UI. Port 5679 is used internally by the Task Broker — do not set `N8N_PORT=5679` as it will conflict.

  ### Development Commands

  ```bash
  # Build the node
  npm run build

  # Watch mode for development
  npm run dev

  # Lint code
  npm run lint

  # Fix linting issues
  npm run lintfix

  # Format code
  npm run format

  # Type checking
  npm run typecheck
  ```

  ### Project Structure

  ```
  n8n-nodes-byteplus/
  ├── credentials/
  │   └── BytePlusApi.credentials.ts    # API credential configuration
  ├── nodes/
  │   └── BytePlus/
  │       ├── BytePlus.node.ts          # Main node definition
  │       ├── byteplus.svg              # Node icon
  │       └── actions/
  │           ├── Image/                # Image generation operations
  │           ├── Video/                # Video generation operations
  │           └── Text/                 # Text generation operations
  ├── dist/                             # Built files (auto-generated)
  ├── package.json                      # Dependencies and scripts
  └── tsconfig.json                     # TypeScript configuration
  ```

  ## Security

  - **No credentials are hardcoded in this repo** (only field definitions)
  - **Secure your n8n instance before exposing it** (auth + access controls), especially if using tunnels for OAuth redirects
  - **Keep TLS verification enabled** (avoid `NODE_TLS_REJECT_UNAUTHORIZED=0` unless you fully understand the MITM risk)

  ## API Reference

  | Operation | Endpoint |
  |-----------|----------|
  | Image Generation | `/api/v3/images/generations` |
  | Video Generation | `/api/v3/contents/generations/tasks` |
  | Text Generation | `/api/v3/chat/completions` |

  ## Troubleshooting

  ### Common Issues

  **Node not appearing in n8n:**
  - Ensure you built the project (`npm run build`)
  - Verify `N8N_CUSTOM_EXTENSIONS` points to the correct path
  - Restart n8n after rebuilding

  **API authentication errors:**
  - Verify your BytePlus API key is correct
  - Check the base URL is set properly
  - Ensure your BytePlus account has necessary permissions

  **Build errors:**
  - Run `npm install` to ensure all dependencies are installed
  - Check Node.js version (>=18.0.0 required)

  ## License

  MIT

  ## Links

  - [BytePlus Documentation](https://www.byteplus.com/en/docs)
  - [BytePlus ARK Console](https://console.byteplus.com/ark)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"A community node for n8n that integrates BytePlus AI services to generate images, videos, and text responses.","capabilities":["Image generation using Seedream models (2K, 1080p, 720p, 1024x1024)","Video generation from text and reference images using Seedance","Text generation using Seed LLM models","Support for custom model selection","Watermarking options for image generation","Polling timeout configuration for video generation tasks"],"authentication":"API key required","commonUseCases":["Creating AI-generated images from text prompts","Producing video content from text descriptions and reference images","Generating text responses or chat completions via Seed LLM"],"limitations":["Video generation requires a public HTTPS URL for reference images","Community node requires manual installation or community node marketplace access","Requires Node.js >=18.0.0 for local development"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-capsolver.capSolver
package_name: n8n-nodes-capsolver
display_name: CapSolver
description: Captcha solving service - Supports reCAPTCHA, Turnstile, DataDome, etc
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: capsolver.com
author_github_url: https://github.com/capsolver/
npm_package_name: n8n-nodes-capsolver
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:33.562Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "Token",
      "options": [
        {
          "name": "Token",
          "value": "Token"
        },
        {
          "name": "Recognition",
          "value": "Recognition"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "reCAPTCHA v2",
      "options": [
        {
          "name": "reCAPTCHA v2",
          "value": "reCAPTCHA v2",
          "action": "reCAPTCHA v2"
        },
        {
          "name": "reCAPTCHA v3",
          "value": "reCAPTCHA v3",
          "action": "reCAPTCHA v3"
        },
        {
          "name": "Cloudflare Turnstile",
          "value": "Cloudflare Turnstile",
          "action": "Cloudflare Turnstile"
        },
        {
          "name": "Cloudflare Challenge",
          "value": "Cloudflare Challenge",
          "action": "Cloudflare Challenge"
        },
        {
          "name": "GeeTest V3",
          "value": "GeeTest V3",
          "action": "GeeTest V3"
        },
        {
          "name": "GeeTest V4",
          "value": "GeeTest V4",
          "action": "GeeTest V4"
        },
        {
          "name": "DataDome",
          "value": "DataDome",
          "action": "DataDome"
        },
        {
          "name": "AWS WAF",
          "value": "AWS WAF",
          "action": "AWS WAF"
        },
        {
          "name": "MTCaptcha",
          "value": "MTCaptcha",
          "action": "MTCaptcha"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Token"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Image To Text",
      "options": [
        {
          "name": "Image To Text",
          "value": "Image To Text",
          "action": "Image To Text"
        },
        {
          "name": "reCAPTCHA v2",
          "value": "reCAPTCHA v2",
          "action": "reCAPTCHA v2"
        },
        {
          "name": "AWS WAF",
          "value": "AWS WAF",
          "action": "AWS WAF"
        },
        {
          "name": "Vision Engine",
          "value": "Vision Engine",
          "action": "Vision Engine"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Recognition"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "reCAPTCHA v2",
      "value": "reCAPTCHA v2",
      "action": "reCAPTCHA v2",
      "resource": "Token"
    },
    {
      "name": "reCAPTCHA v3",
      "value": "reCAPTCHA v3",
      "action": "reCAPTCHA v3",
      "resource": "Token"
    },
    {
      "name": "Cloudflare Turnstile",
      "value": "Cloudflare Turnstile",
      "action": "Cloudflare Turnstile",
      "resource": "Token"
    },
    {
      "name": "Cloudflare Challenge",
      "value": "Cloudflare Challenge",
      "action": "Cloudflare Challenge",
      "resource": "Token"
    },
    {
      "name": "GeeTest V3",
      "value": "GeeTest V3",
      "action": "GeeTest V3",
      "resource": "Token"
    },
    {
      "name": "GeeTest V4",
      "value": "GeeTest V4",
      "action": "GeeTest V4",
      "resource": "Token"
    },
    {
      "name": "DataDome",
      "value": "DataDome",
      "action": "DataDome",
      "resource": "Token"
    },
    {
      "name": "AWS WAF",
      "value": "AWS WAF",
      "action": "AWS WAF",
      "resource": "Token"
    },
    {
      "name": "MTCaptcha",
      "value": "MTCaptcha",
      "action": "MTCaptcha",
      "resource": "Token"
    },
    {
      "name": "Image To Text",
      "value": "Image To Text",
      "action": "Image To Text",
      "resource": "Recognition"
    },
    {
      "name": "reCAPTCHA v2",
      "value": "reCAPTCHA v2",
      "action": "reCAPTCHA v2",
      "resource": "Recognition"
    },
    {
      "name": "AWS WAF",
      "value": "AWS WAF",
      "action": "AWS WAF",
      "resource": "Recognition"
    },
    {
      "name": "Vision Engine",
      "value": "Vision Engine",
      "action": "Vision Engine",
      "resource": "Recognition"
    }
  ]

npm_readme:
  # n8n-nodes-capsolver

  This repo contains CapSolver's community node for n8n.

  ## Installation

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

  ## Credentials

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

  https://dashboard.capsolver.com/passport/register

  Once registered, you can find your API key here:

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

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


  ## 🎯 Captcha Type

  The following captcha types are supported by this node:

  Task(Recognition)
  1. ImageToText
  2. reCAPTCHA v2
  3. AWS WAF
  4. VisionEngine

  Task(Token)
  1. Geetest V3
  2. Geetest V4
  3. reCAPTCHA v2
  4. reCAPTCHA v3
  5. Cloudflare Turnstile
  6. Cloudflare Challenge
  7. DataDome
  8. AWS WAF
  9. MTCaptcha

  ## 📖 Usage

  Add the CapSolver node to your workflow.

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

  Configure the corresponding parameters, and then click "Execute step".

  ![Execute](images/execute.png)

  ## 📝 Resources

  - [CapSolver](https://www.capsolver.com/)
  - [CapSolver Docs](https://docs.capsolver.com/)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"A community n8n node that solves various types of CAPTCHAs (including reCAPTCHA, Turnstile, DataDome, and AWS WAF) to enable automated tasks that require human verification.","capabilities":["ImageToText recognition","reCAPTCHA v2 solving","reCAPTCHA v3 solving","Cloudflare Turnstile solving","Cloudflare Challenge solving","DataDome solving","AWS WAF solving","Geetest V3 solving","Geetest V4 solving","VisionEngine solving"],"authentication":"API key required (CapSolver API key)","commonUseCases":["Automating form submissions with CAPTCHA protection","Web scraping sites with CAPTCHA challenges","Automated account registration","Bot verification bypassing"],"limitations":["Requires a separate CapSolver account and API key","Free tier availability may have rate limits or usage restrictions (not explicitly detailed in README)"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.webhook","n8n-nodes-base.code"]}


node_type: n8n-nodes-carsxe.carsXe
package_name: n8n-nodes-carsxe
display_name: CarsXE
description: Interact with CarsXE API for vehicle data
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: omar_walied
author_github_url: https://github.com/carsxe/
npm_package_name: n8n-nodes-carsxe
npm_version: 1.2.0
community_fetched_at: 2026-07-14T14:40:33.563Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "vin",
      "options": [
        {
          "name": "Diagnostic",
          "value": "diagnostic"
        },
        {
          "name": "License Plate",
          "value": "plate"
        },
        {
          "name": "Vehicle Data",
          "value": "vehicle"
        },
        {
          "name": "VIN",
          "value": "vin"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "specs",
      "options": [
        {
          "name": "Check Liens and Theft Records",
          "value": "lienTheft",
          "action": "Check liens and theft records",
          "description": "Check for active liens and theft records on a vehicle"
        },
        {
          "name": "Get a Vehicle History Report",
          "value": "history",
          "action": "Get a vehicle history report",
          "description": "Retrieve vehicle history"
        },
        {
          "name": "Get a Vehicle Market Value",
          "value": "marketValue",
          "action": "Get a vehicle market value",
          "description": "Estimate vehicle market value based on VIN"
        },
        {
          "name": "Get International VIN Specs",
          "value": "intVinDecoder",
          "action": "Get international VIN specs",
          "description": "Decode VIN with worldwide support"
        },
        {
          "name": "Get Vehicle Safety Recalls",
          "value": "recalls",
          "action": "Get vehicle safety recalls",
          "description": "Get safety recall data for a VIN"
        },
        {
          "name": "Get VIN Specs",
          "value": "specs",
          "action": "Get VIN specs",
          "description": "Decode VIN and get full vehicle specifications"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "plateDecoder",
      "options": [
        {
          "name": "Get a License Plate From Image",
          "value": "plateImageRecognition",
          "action": "Get a license plate from image",
          "description": "Read and decode plates from images"
        },
        {
          "name": "Get License Plate Specs",
          "value": "plateDecoder",
          "action": "Get license plate specs",
          "description": "Decode license plate info (plate, country)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "plate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "images",
      "options": [
        {
          "name": "Get Vehicle Images",
          "value": "images",
          "action": "Get vehicle images",
          "description": "Fetch images by make, model, year, trim"
        },
        {
          "name": "Get Vehicle Specs by Year/Make/Model",
          "value": "yearMakeModel",
          "action": "Get vehicle specs by year make and model",
          "description": "Query vehicle by year, make, model and trim (optional)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vehicle"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "obdCodesDecoder",
      "options": [
        {
          "name": "Get a VIN From Image",
          "value": "vinOcr",
          "action": "Get a VIN from image",
          "description": "Extract VINs from images using OCR"
        },
        {
          "name": "Get OBD Code Specs",
          "value": "obdCodesDecoder",
          "action": "Get OBD code specs",
          "description": "Decode OBD error/diagnostic codes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "diagnostic"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Check Liens and Theft Records",
      "value": "lienTheft",
      "action": "Check liens and theft records",
      "description": "Check for active liens and theft records on a vehicle",
      "resource": "vin"
    },
    {
      "name": "Get a Vehicle History Report",
      "value": "history",
      "action": "Get a vehicle history report",
      "description": "Retrieve vehicle history",
      "resource": "vin"
    },
    {
      "name": "Get a Vehicle Market Value",
      "value": "marketValue",
      "action": "Get a vehicle market value",
      "description": "Estimate vehicle market value based on VIN",
      "resource": "vin"
    },
    {
      "name": "Get International VIN Specs",
      "value": "intVinDecoder",
      "action": "Get international VIN specs",
      "description": "Decode VIN with worldwide support",
      "resource": "vin"
    },
    {
      "name": "Get Vehicle Safety Recalls",
      "value": "recalls",
      "action": "Get vehicle safety recalls",
      "description": "Get safety recall data for a VIN",
      "resource": "vin"
    },
    {
      "name": "Get VIN Specs",
      "value": "specs",
      "action": "Get VIN specs",
      "description": "Decode VIN and get full vehicle specifications",
      "resource": "vin"
    },
    {
      "name": "Get a License Plate From Image",
      "value": "plateImageRecognition",
      "action": "Get a license plate from image",
      "description": "Read and decode plates from images",
      "resource": "plate"
    },
    {
      "name": "Get License Plate Specs",
      "value": "plateDecoder",
      "action": "Get license plate specs",
      "description": "Decode license plate info (plate, country)",
      "resource": "plate"
    },
    {
      "name": "Get Vehicle Images",
      "value": "images",
      "action": "Get vehicle images",
      "description": "Fetch images by make, model, year, trim",
      "resource": "vehicle"
    },
    {
      "name": "Get Vehicle Specs by Year/Make/Model",
      "value": "yearMakeModel",
      "action": "Get vehicle specs by year make and model",
      "description": "Query vehicle by year, make, model and trim (optional)",
      "resource": "vehicle"
    },
    {
      "name": "Get a VIN From Image",
      "value": "vinOcr",
      "action": "Get a VIN from image",
      "description": "Extract VINs from images using OCR",
      "resource": "diagnostic"
    },
    {
      "name": "Get OBD Code Specs",
      "value": "obdCodesDecoder",
      "action": "Get OBD code specs",
      "description": "Decode OBD error/diagnostic codes",
      "resource": "diagnostic"
    }
  ]

npm_readme:
  # n8n-nodes-carsxe

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

  **Comprehensive vehicle data integration for [n8n](https://n8n.io)** - VIN decoding, license plate lookup, vehicle history, market values, and more using the [CarsXE API](https://www.carsxe.com).

  ---

  ## 🚗 Features

  - **VIN Decoding** - Decode US & International VINs with full specifications
  - **License Plate Lookup** - Multi-country plate decoder (US, CA, AU, UK, PK)
  - **Vehicle History** - Ownership records and accident history
  - **Market Values** - Real-time vehicle valuations with optional state, mileage, and condition adjustments
  - **Safety Recalls** - Check manufacturer recalls
  - **Vehicle Images** - Fetch professional vehicle photos
  - **OBD Codes** - Decode diagnostic trouble codes
  - **OCR Recognition** - Extract VINs and plates from images

  ---

  ## 📦 Installation

  ### Via Community Nodes (Recommended)

  1. Go to **Settings** → **Community Nodes**
  2. Click **Install a community node**
  3. Enter: `n8n-nodes-carsxe`
  4. Click **Install**

  ### Via npm

  ```bash
  # Global installation
  npm install -g n8n-nodes-carsxe

  # Local installation
  npm install n8n-nodes-carsxe

  # Restart n8n
  n8n start
  ```

  ### Via Docker

  ```bash
  docker run -d \
    --name n8n \
    -p 5678:5678 \
    -e N8N_COMMUNITY_PACKAGES=n8n-nodes-carsxe \
    -v n8n_data:/home/node/.n8n \
    n8nio/n8n
  ```

  ---

  ## 🔑 Credentials

  1. Get your API key from [CarsXE.com](https://www.carsxe.com/signup)
  2. In n8n: **Credentials** → **New** → **CarsXE API**
  3. Paste your API key and save

  ---

  ## 🎯 Operations

  ### VIN Operations

  - **Decode VIN** - Full vehicle specifications
  - **Decode International VIN** - Worldwide VIN support
  - **Get History Report** - Ownership & accident history
  - **Get Market Value** - Current market valuation (optional: state, mileage, condition)
  - **Get Safety Recalls** - Manufacturer recalls

  ### License Plate Operations

  - **Decode License Plate** - Vehicle info from plate
  - **Recognize Plate From Image** - OCR plate extraction

  ### Vehicle Data Operations

  - **Get Images** - Professional vehicle photos
  - **Query by Year/Make/Model** - Search by attributes

  ### Diagnostic Operations

  - **Decode OBD Code** - Interpret diagnostic codes
  - **Extract VIN From Image** - OCR VIN extraction

  ---

  ## 📖 Quick Examples

  ### Example 1: Decode VIN

  ```javascript
  // Configuration
  Resource: VIN
  Operation: Decode VIN
  VIN: WBAFR7C57CC811956

  // Response
  {
    "success": true,
    "vin": "WBAFR7C57CC811956",
    "year": "2012",
    "make": "BMW",
    "model": "7 Series",
    "trim": "750i",
    "engine": "4.4L V8 Turbocharged"
  }
  ```

  ### Example 2: License Plate Lookup

  ```javascript
  // Configuration
  Resource: License Plate
  Operation: Decode License Plate
  Plate: 7XER187
  Country: US
  State: CA (in Additional Options)

  // Response
  {
    "success": true,
    "plate": "7XER187",
    "state": "CA",
    "make": "BMW",
    "model": "750Li"
  }
  ```

  ### Example 3: Get Vehicle Images

  ```javascript
  // Configuration
  Resource: Vehicle Data
  Operation: Get Images
  Make: BMW
  Model: X5
  Year: 2019 (in Additional Options)

  // Response
  {
    "success": true,
    "images": [
      {
        "angle": "front",
        "url": "https://cdn.carsxe.com/..."
      }
    ]
  }
  ```

  ---

  ## 🔄 Common Workflows

  **VIN Decoder API**

  ```
  [Webhook] → [CarsXE: Decode VIN] → [HTTP Response]
  ```

  **License Plate Scanner**

  ```
  [Webhook] → [CarsXE: Recognize Plate] → [Database]
  ```

  **Daily Recall Checker**

  ```
  [Schedule] → [CarsXE: Get Recalls] → [Email/Slack]
  ```

  ---

  ## 🐛 Troubleshooting

  **Error: "Request failed with status code 401"**

  - Check your API key in Credentials
  - Get a new key from [CarsXE Dashboard](https://www.carsxe.com/dashboard)

  **Error: "Invalid VIN format"**

  - VIN must be exactly 17 characters
  - Example: `WBAFR7C57CC811956`

  **Node not appearing after installation**

  - Refresh your browser
  - Clear cache: `rm -rf ~/.n8n/cache`
  - Restart n8n

  ---

  ## 📊 Response Format

  ### Success

  ```json
  {
  	"success": true
  	// ... operation data
  }
  ```

  ### Error

  ```json
  {
  	"success": false,
  	"statusCode": 401,
  	"error": "Invalid API key",
  	"error_description": "Please check your credentials"
  }
  ```

  ---

  ## 📄 License

  MIT License - Copyright (c) 2025 CarsXE

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the CarsXE API to retrieve comprehensive vehicle data including VIN decoding, license plate lookups, vehicle history, market values, recalls, images, and OBD codes.","capabilities":["Decode US and International VINs","Perform multi-country license plate lookups (US, CA, AU, UK, PK)","Retrieve vehicle ownership and accident history","Get real-time market valuations","Check manufacturer safety recalls","Fetch professional vehicle images","Decode OBD diagnostic trouble codes","Extract VINs and license plates from images using OCR"],"authentication":"API key required","commonUseCases":["Automated VIN decoding for vehicle identification","License plate recognition and vehicle lookup","Vehicle history and recall monitoring workflows","Market value estimation for vehicles"],"limitations":["VIN must be exactly 17 characters for decoding","License plate lookup limited to specific countries (US, CA, AU, UK, PK)","OCR functionality depends on image quality and clarity"],"relatedNodes":["HTTP Request","Webhook","Schedule Trigger","Email","Slack"]}


node_type: n8n-nodes-databar.databar
package_name: n8n-nodes-databar
display_name: Databar
description: Interact with Databar.ai API for data enrichment and table management
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: databar-nocode
author_github_url: https://github.com/databar-ai/
npm_package_name: n8n-nodes-databar
npm_version: 0.2.1
community_fetched_at: 2026-07-14T14:40:33.565Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "enrichment",
      "options": [
        {
          "name": "Enrichment",
          "value": "enrichment"
        },
        {
          "name": "Table",
          "value": "table"
        },
        {
          "name": "Waterfall",
          "value": "waterfall"
        },
        {
          "name": "Other",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMe",
      "options": [
        {
          "name": "Get Account Info",
          "value": "getMe",
          "action": "Get account info",
          "description": "Get information about your current account"
        },
        {
          "name": "Get Task",
          "value": "getTask",
          "action": "Get task result",
          "description": "Retrieve the status and results of a previously run enrichment or waterfall task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "run",
      "options": [
        {
          "name": "Run",
          "value": "run",
          "action": "Run enrichment",
          "description": "Run an enrichment task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "enrichment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "insertRows",
      "options": [
        {
          "name": "Insert Rows",
          "value": "insertRows",
          "action": "Insert rows into table",
          "description": "Insert one or more rows into a table"
        },
        {
          "name": "Upsert Rows",
          "value": "upsertRows",
          "action": "Upsert rows in table",
          "description": "Update rows by key or create new ones if no match is found"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "table"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "run",
      "options": [
        {
          "name": "Run",
          "value": "run",
          "action": "Run waterfall",
          "description": "Run a waterfall task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "waterfall"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Account Info",
      "value": "getMe",
      "action": "Get account info",
      "description": "Get information about your current account",
      "resource": "user"
    },
    {
      "name": "Get Task",
      "value": "getTask",
      "action": "Get task result",
      "description": "Retrieve the status and results of a previously run enrichment or waterfall task",
      "resource": "user"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run enrichment",
      "description": "Run an enrichment task",
      "resource": "enrichment"
    },
    {
      "name": "Insert Rows",
      "value": "insertRows",
      "action": "Insert rows into table",
      "description": "Insert one or more rows into a table",
      "resource": "table"
    },
    {
      "name": "Upsert Rows",
      "value": "upsertRows",
      "action": "Upsert rows in table",
      "description": "Update rows by key or create new ones if no match is found",
      "resource": "table"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run waterfall",
      "description": "Run a waterfall task",
      "resource": "waterfall"
    }
  ]

npm_readme:
  # n8n-nodes-databar

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

  Databar.ai provides powerful data enrichment and table management capabilities for your automation workflows — enrich contacts, companies, and more with data from multiple providers, and manage structured data in Databar tables.

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

  [Installation](#installation) · [Configuration](#configuration) · [Operations](#operations) · [Examples](#usage-examples) · [Support](#support)

  ## Installation

  ### Community Nodes (Recommended)

  **For n8n Cloud:**
  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-databar`
  4. Agree to the risks of using community nodes
  5. Select **Install**

  **For Self-Hosted n8n:**
  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-databar`
  4. Select **Install**
  5. Restart your n8n instance

  ### npm Installation

  ```bash
  npm install n8n-nodes-databar
  ```

  Then restart your n8n instance.

  ## Prerequisites

  You need a Databar.ai account and API key:

  1. Sign up at [Databar.ai](https://databar.ai)
  2. Navigate to **Integrations** in your workspace
  3. Copy your API key

  ## Configuration

  ### Setting up Credentials

  1. In n8n, go to **Credentials > New**
  2. Search for **Databar API**
  3. Enter your API Key
  4. Click **Save**

  The credentials are tested automatically to ensure they work.

  ## Operations

  ### User
  - **Get Account Info**: Retrieve your account information, balance, and plan details

  ### Enrichment
  - **Run**: Execute a single enrichment task
    - Browse enrichments from a searchable dropdown with descriptions and pricing
    - Dynamic parameter form generated from enrichment requirements
    - Automatic polling for results (configurable interval and timeout)

  ### Table
  - **Insert Rows**: Insert one or more rows into a Databar table
    - Select table from a searchable dropdown
    - Dynamic column form generated from the table schema
    - Options for deduplication and auto-creating new columns
  - **Upsert Rows**: Update existing rows by key, or insert new ones if no match is found
    - Select match column and value
    - Dynamic column form for fields to update

  ### Waterfall
  - **Run**: Execute a waterfall with multiple data providers
    - Select which data providers to use
    - Dynamic parameter form generated from waterfall requirements
    - Automatic fallback between providers
    - Configurable polling and timeouts

  ## Usage Examples

  ### Example 1: Enrich a Contact

  1. Add a Databar node to your workflow
  2. Select Resource: **Enrichment**, Operation: **Run**
  3. Select an enrichment from the dropdown (e.g., "Get people data from email")
  4. Fill in the required parameters (e.g., email address)
  5. Execute — returns enriched contact data

  ### Example 2: Waterfall with Multiple Providers

  1. Add a Databar node
  2. Resource: **Waterfall**, Operation: **Run**
  3. Select your waterfall from the dropdown
  4. Fill in the parameters (e.g., company domain)
  5. Select data providers to use
  6. Execute — returns data from the first successful provider

  ### Example 3: Insert Data into a Table

  1. Add a Databar node
  2. Resource: **Table**, Operation: **Insert Rows**
  3. Select a table from the dropdown
  4. Fill in column values using the generated form
  5. Execute — row is inserted into the table

  ### Example 4: Workflow Integration

  ```
  Webhook > Databar (Enrich) > Filter > Send Email

  1. Webhook receives a new lead
  2. Databar enriches with company data
  3. Filter checks if company size > 100
  4. Send personalized email to qualified leads
  ```

  ## Troubleshooting

  ### Node Not Appearing

  If the Databar node doesn't appear after installation:
  1. Restart your n8n instance
  2. Clear your browser cache
  3. Check n8n logs for any installation errors

  ### Authentication Errors

  If you see authentication errors:
  - Verify your API key is correct in credentials
  - Check that your Databar account is active
  - Ensure you have sufficient credits

  ### Task Timeout

  If enrichment or waterfall tasks timeout:
  - Increase the timeout in Additional Options
  - Consider disabling "Wait for Completion" and checking status separately

  ## Resources

  - [Databar.ai](https://databar.ai) — Main website
  - [Databar API Documentation](https://databar.ai/docs/api) — API reference
  - [n8n Documentation](https://docs.n8n.io/) — n8n platform docs
  - [GitHub Repository](https://github.com/databar-ai/n8n-nodes-databar) — Source code

  ## Support

  **For Databar API issues:**
  - Email: info@databar.ai
  - Visit: [Databar.ai](https://databar.ai)

  **For node issues:**
  - GitHub Issues: [n8n-nodes-databar/issues](https://github.com/databar-ai/n8n-nodes-databar/issues)

  ## Version History

  ### 0.2.0
  - Added Table resource with Insert Rows and Upsert Rows operations
  - Dynamic column forms via resource mapper for table and all operations
  - Simplified UX: removed selection mode dropdowns, parameter mode switchers
  - Hidden Bulk Run (available in a future release)
  - Removed waterfall List and Get operations (embedded in Run)
  - Filtered enrichment-generated columns from table field forms
  - Cleaned up emoji and stale references per n8n guidelines

  ### 0.1.1
  - Improved documentation
  - Removed internal development scaffolding

  ### 0.1.0
  - Initial release
  - Dynamic enrichment and waterfall selection
  - Guided fields and JSON input modes
  - Automatic async task polling

  ## Contributing

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

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community n8n node that enables data enrichment and table management by interacting with the Databar.ai API.","capabilities":["Retrieve account information, balance, and plan details","Execute single enrichment tasks with automatic polling for results","Insert rows into Databar tables with deduplication options","Upsert rows into tables by matching existing keys","Run waterfall operations with multiple data providers and automatic fallback","Dynamic parameter forms generated from enrichment requirements and table schemas"],"authentication":"API Key required (entered in n8n Credentials > Databar API)","commonUseCases":["Enriching contacts and companies with data from multiple providers","Managing structured data in Databar tables","Automated lead qualification workflows","Data aggregation using waterfall operations"],"limitations":["Requires an active Databar.ai account with sufficient credits","Tasks may timeout if configured intervals are too long","Bulk Run operation is hidden and not yet available","List and Get waterfall operations were removed and are now embedded in Run"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-filter","n8n-nodes-send-email"]}


node_type: n8n-nodes-trackingtime.trackingtimeTrigger
package_name: n8n-nodes-trackingtime
display_name: TrackingTime Trigger
description: Handle TrackingTime events via webhooks
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: jflores-tt
author_github_url: https://github.com/TrackingTime/
npm_package_name: n8n-nodes-trackingtime
npm_version: 1.0.2
community_fetched_at: 2026-07-14T14:40:33.566Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-trackingtime

  This is an n8n community node that connects your workflows with [TrackingTime](https://trackingtime.co/), the cloud platform for tracking projects, tasks, and billable hours.

  TrackingTime centralizes time tracking so teams can monitor productivity, collaborate on schedules, and export accurate timesheets for billing or payroll.

  [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

  - Add Time Entry – create a new time entry for a TrackingTime account.
  - Search Time Entry – query existing entries using flexible filters.
  - Update Time Entry – modify the details of an existing time entry.

  ## Credentials

  - Generate an **App Password** from your TrackingTime user profile (Settings → Integrations).
  - In n8n, create a new **TrackingTime** credential and paste the password; the node authenticates via Basic auth with a fixed username of `API_TOKEN`.
  - Ensure the TrackingTime user has access to the teams and projects whose time entries you plan to manage.

  ## Compatibility

  - Requires n8n v1.0.0 or higher.
  - Developed and tested against n8n 1.50+, which includes the resource mapper used by the search operation.

  ## Usage

  - Drop the **TrackingTime** node into your workflow and choose the `Time Entry` resource.
  - Select the operation (add, search, or update) and supply the required account, project, and time details.
  - For searches, use the **Search Fields** mapper to set the same filters you would pass to the API (e.g. project ID, date range).
  - Execute the node to sync your time data with TrackingTime without leaving n8n.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [TrackingTime API overview](https://support.trackingtime.co/en/articles/6329119-apps-integrations)
  - [TrackingTime product site](https://trackingtime.co/)

  ## Version history

  - 0.1.21 – Initial release with add, search, and update time entry operations.

ai_documentation_summary:
  {"purpose":"A community n8n node that connects workflows to TrackingTime to manage time entries through add, search, and update operations.","capabilities":["Create new time entries","Query existing time entries with flexible filters","Modify details of existing time entries","Sync time data with TrackingTime platform"],"authentication":"Basic auth with a fixed username 'API_TOKEN' and a TrackingTime App Password","commonUseCases":["Automating time entry creation from other workflow triggers","Syncing project hours for billing or payroll purposes","Querying historical time data for reporting"],"limitations":["Requires n8n v1.0.0 or higher (tested on 1.50+)","Uses a fixed username for authentication rather than standard OAuth2","Requires user access to specific teams and projects"],"relatedNodes":["n8n-nodes-trackingtime.trackingTime","n8n-nodes-trackingtime.trackingTimeWebhook"]}


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

updated_at: 2026-07-14 14:40:33
author_name: darragh-noloco
author_github_url: https://github.com/noloco-io/n8n-nodes-noloco.git
npm_package_name: @noloco/n8n-nodes-noloco
npm_version: 1.0.3
community_fetched_at: 2026-07-14T14:40:33.567Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "record",
      "options": [
        {
          "name": "Record",
          "value": "record"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a record",
          "description": "Create a new record in a collection"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a record",
          "description": "Delete an existing record from a collection"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a record",
          "description": "Get a single record by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many records",
          "description": "Get many records from a collection"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search records",
          "description": "Search for records by field values"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a record",
          "description": "Update an existing record in a collection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "record"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a record",
      "description": "Create a new record in a collection",
      "resource": "record"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a record",
      "description": "Delete an existing record from a collection",
      "resource": "record"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a record",
      "description": "Get a single record by ID",
      "resource": "record"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many records",
      "description": "Get many records from a collection",
      "resource": "record"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search records",
      "description": "Search for records by field values",
      "resource": "record"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a record",
      "description": "Update an existing record in a collection",
      "resource": "record"
    }
  ]

npm_readme:
  # @noloco/n8n-nodes-noloco

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

  [Noloco](https://noloco.io) is a no-code platform for building internal tools and client portals. Connect your data sources and build custom applications without writing code.

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

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

  ## Installation

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

  ## Operations

  This package includes two nodes:

  ### Noloco (Action Node)

  Perform operations on Noloco records:

  - **Create**: Create a new record in a collection
  - **Delete**: Delete an existing record from a collection
  - **Get**: Get a single record by ID
  - **Get Many**: Get many records from a collection with optional filtering, sorting, and pagination
  - **Search**: Search for records by field values
  - **Update**: Update an existing record in a collection

  ### Noloco Trigger (Polling Trigger)

  Start workflows when records change:

  - **Record Created**: Triggers when a new record is created in a table
  - **Record Updated**: Triggers when an existing record is updated in a table

  ## Credentials

  To use this node, you need to configure Noloco API credentials with two API keys:

  ### Prerequisites

  1. You must have access to a Noloco app
  2. You need to generate API keys from your app's settings

  ### Setting Up Credentials

  1. In your Noloco app, go to **Settings** > **Integrations & API Keys**
  2. Copy the **Account API Key** - this authenticates your Noloco account
  3. Copy the **App API Key** - this authenticates access to the specific app
  4. In n8n, create new Noloco API credentials and paste both keys

  For more details, see the [Noloco API Keys Guide](https://guides.noloco.io/settings/integrations-and-api-keys#api-keys).

  ## Compatibility

  - Tested with n8n version 1.0+
  - Requires Noloco REST API v1

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Noloco Documentation](https://guides.noloco.io/)
  - [Noloco API Keys Guide](https://guides.noloco.io/settings/integrations-and-api-keys#api-keys)
  - [Noloco Website](https://noloco.io)

ai_documentation_summary:
  {"purpose":"An n8n community node that enables interaction with Noloco records through CRUD operations and triggers on data changes.","capabilities":["Create new records in a collection","Delete existing records from a collection","Retrieve a single record by ID","Retrieve multiple records with filtering, sorting, and pagination","Search records by field values","Update existing records in a collection","Trigger workflows on record creation","Trigger workflows on record updates"],"authentication":"API key required (two keys: Account API Key and App API Key)","commonUseCases":["Automating internal tool data synchronization","Building client portal integrations","Real-time workflow triggers based on Noloco data changes","Syncing Noloco records with external systems"],"limitations":["Requires Noloco REST API v1","Requires access to a Noloco app and generation of API keys","Limited to n8n version 1.0+"],"relatedNodes":["Noloco Trigger","Noloco Action","Community Nodes"]}


node_type: n8n-nodes-templatefox.templateFox
package_name: n8n-nodes-templatefox
display_name: TemplateFox
description: Generate PDFs from templates and manipulate PDFs using the TemplateFox API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: vincentventalon
author_github_url: https://github.com/TemplateFoxPDF/
npm_package_name: n8n-nodes-templatefox
npm_version: 1.2.1
community_fetched_at: 2026-07-14T14:40:33.568Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "generatePdf",
      "options": [
        {
          "name": "Generate PDF",
          "value": "generatePdf",
          "action": "Generate a PDF from a template",
          "description": "Generate a PDF from a template (synchronous)"
        },
        {
          "name": "Generate PDF (Async)",
          "value": "generatePdfAsync",
          "action": "Queue an async PDF generation job",
          "description": "Queue a PDF generation job and receive a job ID"
        },
        {
          "name": "Get PDF Job",
          "value": "getPdfJob",
          "action": "Get an async PDF job status",
          "description": "Get the status of an async PDF generation job"
        },
        {
          "name": "List PDF Jobs",
          "value": "listPdfJobs",
          "action": "List async PDF jobs",
          "description": "List async PDF generation jobs"
        },
        {
          "name": "Merge PDFs",
          "value": "mergePdfs",
          "action": "Merge multiple PDFs",
          "description": "Concatenate two or more PDFs into a single file"
        },
        {
          "name": "Extract PDF Pages",
          "value": "extractPdfPages",
          "action": "Extract pages from a PDF",
          "description": "Extract or reorder pages from a PDF"
        },
        {
          "name": "Rotate PDF",
          "value": "rotatePdf",
          "action": "Rotate a PDF",
          "description": "Rotate pages of a PDF by 90, 180 or 270 degrees"
        },
        {
          "name": "Get Account",
          "value": "getAccount",
          "action": "Get account information",
          "description": "Get account information including remaining credits"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate PDF",
      "value": "generatePdf",
      "action": "Generate a PDF from a template",
      "description": "Generate a PDF from a template (synchronous)"
    },
    {
      "name": "Generate PDF (Async)",
      "value": "generatePdfAsync",
      "action": "Queue an async PDF generation job",
      "description": "Queue a PDF generation job and receive a job ID"
    },
    {
      "name": "Get PDF Job",
      "value": "getPdfJob",
      "action": "Get an async PDF job status",
      "description": "Get the status of an async PDF generation job"
    },
    {
      "name": "List PDF Jobs",
      "value": "listPdfJobs",
      "action": "List async PDF jobs",
      "description": "List async PDF generation jobs"
    },
    {
      "name": "Merge PDFs",
      "value": "mergePdfs",
      "action": "Merge multiple PDFs",
      "description": "Concatenate two or more PDFs into a single file"
    },
    {
      "name": "Extract PDF Pages",
      "value": "extractPdfPages",
      "action": "Extract pages from a PDF",
      "description": "Extract or reorder pages from a PDF"
    },
    {
      "name": "Rotate PDF",
      "value": "rotatePdf",
      "action": "Rotate a PDF",
      "description": "Rotate pages of a PDF by 90, 180 or 270 degrees"
    },
    {
      "name": "Get Account",
      "value": "getAccount",
      "action": "Get account information",
      "description": "Get account information including remaining credits"
    }
  ]

npm_readme:
  # n8n-nodes-templatefox

  This is an n8n community node for [TemplateFox](https://templatefox.com) - a PDF generation API that lets you create professional PDFs from templates.

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

  **npm:**
  ```bash
  npm install n8n-nodes-templatefox
  ```

  **n8n Desktop/Cloud:**
  1. Go to **Settings** > **Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-templatefox`
  4. Agree to the risks and click **Install**

  ## Operations

  ### Generate PDF (sync)

  Generate a PDF from a template with your data — the main operation. Returns a signed URL or a binary file.

  **Features:**
  - **Template dropdown** — pick from your saved templates
  - **Template version dropdown** — pin to a tagged version, or use the live draft
  - **Dynamic fields** — auto-populated from the selected template
  - **JSON mode** — raw JSON input for arrays and nested data
  - **PDF/A variant** — generate `pdf/a-1b`, `pdf/a-2b`, or `pdf/a-3b` archival PDFs
  - **Custom filename / URL expiration / S3 upload** options

  ### Generate PDF (Async)

  Same inputs as Generate PDF, but queues a job and returns a `job_id` immediately. Best for large documents, batches, or when you don't want to hold an HTTP connection open. Pair with **Get PDF Job** (or a webhook) to retrieve the result.

  ### PDF tools (no template needed)

  - **Merge PDFs** — concatenate 2+ PDFs (URL or base64) into a single document
  - **Extract PDF Pages** — pull selected pages using a `1-3, 5, 7-9` syntax
  - **Rotate PDF** — rotate every page by a single angle, or apply a per-page rotation map

  ### Read-only operations

  - **Get PDF Job** — look up an async job by ID
  - **List PDF Jobs** — list recent jobs, optionally filtered by status
  - **Get Account** — returns remaining credits and account email

  The node is also `usableAsTool: true`, so any of these operations can be exposed to an n8n AI Agent.

  ## Credentials

  To use this node, you need a TemplateFox API key:

  1. Sign up at [templatefox.com](https://templatefox.com)
  2. Go to your [API Dashboard](https://templatefox.com/dashboard/api)
  3. Copy your API key
  4. In n8n, create new **TemplateFox API** credentials and paste your key

  ## Usage

  ### Basic Example

  1. Add the **TemplateFox** node to your workflow
  2. Configure your TemplateFox API credentials
  3. Select a template from the dropdown
  4. Fill in the template fields with your data
  5. Execute the workflow to generate a PDF

  ### Using JSON Mode

  For complex data structures (arrays, nested objects):

  1. Select **JSON** as the Data Input Mode
  2. Enter your data as JSON:
  ```json
  {
    "customer_name": "John Doe",
    "invoice_number": "INV-001",
    "items": [
      {"description": "Widget A", "quantity": 2, "price": 10.00},
      {"description": "Widget B", "quantity": 1, "price": 25.00}
    ]
  }
  ```

  ### Output

  The node returns:
  - `url`: Direct URL to download the PDF
  - `filename`: The PDF filename
  - `credits_remaining`: Your remaining API credits
  - `expires_in`: Seconds until the URL expires

  ## Resources

  - [TemplateFox Documentation](https://templatefox.com/docs)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [TemplateFox API Reference](https://templatefox.com/docs/api)

  ## Support

  - **TemplateFox Support**: support@templatefox.com
  - **GitHub Issues**: [Report bugs or request features](https://github.com/TemplateFoxPDF/n8n-nodes-templatefox/issues)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Generates professional PDF documents from TemplateFox templates by sending data to the TemplateFox API and returning a downloadable URL.","capabilities":["Generate PDFs from saved templates","Support dynamic fields based on template selection","JSON mode for advanced data structures (arrays, nested objects)","Custom filename configuration","URL expiration time configuration","Return remaining API credits and expiration time"],"authentication":"API key required","commonUseCases":["Generating invoice PDFs from customer data","Creating personalized marketing materials","Producing contract documents with variable fields","Batch generating reports with complex data structures"],"limitations":["Requires external TemplateFox account and API key","URLs have expiration time limits","Credits are consumed per generation"],"relatedNodes":["HTTP Request","Code","PDF"]}


node_type: n8n-nodes-screenshotone.screenshotOne
package_name: n8n-nodes-screenshotone
display_name: ScreenshotOne
description: Render PDFs, screenshots, scrolling screenshots, and short videos using ScreenshotOne
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: screenshotonedev
author_github_url: https://github.com/screenshotone/
npm_package_name: n8n-nodes-screenshotone
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:33.569Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "screenshot",
      "options": [
        {
          "name": "Full Page Screenshot",
          "value": "full_page"
        },
        {
          "name": "PDF",
          "value": "pdf"
        },
        {
          "name": "Record Short Video",
          "value": "short_video"
        },
        {
          "name": "Screenshot",
          "value": "screenshot"
        },
        {
          "name": "Scrolling Screenshot",
          "value": "scrolling_screenshot"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Full Page Screenshot",
      "value": "full_page"
    },
    {
      "name": "PDF",
      "value": "pdf"
    },
    {
      "name": "Record Short Video",
      "value": "short_video"
    },
    {
      "name": "Screenshot",
      "value": "screenshot"
    },
    {
      "name": "Scrolling Screenshot",
      "value": "scrolling_screenshot"
    }
  ]

npm_readme:
  # n8n-nodes-screenshotone

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

  `n8n-nodes-screenshotone` is an n8n community node. It lets you use [ScreenshotOne](https://screenshotone.com/) in your n8n workflows.

  ScreenshotOne is a service that allows you to take screenshots of web pages, generate PDFs, convert HTML or Markdown to images and more.

  [![testimonials](./assets/testimonials.png)](https://screenshotone.com/customers/)

  Check out what [ScreenshotOne customers say about the API](https://screenshotone.com/customers/) and why it is considered one of the best screenshot APIs.

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

  - [Installation](#installation)
  - [Operations](#operations)
  - [Credentials](#credentials)
  - [Compatibility](#compatibility)
  - [Usage](#usage)
  - [Resources](#resources)
  - [Development](#development)
  - [Version history](#version-history)
  - [ScreenshotOne](#screenshotone)
    - [Use cases](#use-cases)
    - [Customers](#customers)
  - [License](#license)

  ## Installation

  ### Community Nodes

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

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

  ![Install](./assets/install.png)

  ## Operations

  1. **Screenshot** any website, HTML or Markdown. Returns result as image.
  2. **Full Page Screenshot** is the same as **Screenshot**, but returns the full page as an image.
  3. **PDF** from rendering PDFs from URLs, HTML or Markdown. Returns result as PDF.
  4. **Scrolling Screenshot** it is a [scrolling screenshot feature from ScreenshotOne](https://screenshotone.com/scrolling-screenshots/). Results as video or GIF.
  5. **Record Short Video** is to record a short video of a website, HTML or Markdown. Results as video or GIF.

  For scrolling screenshots and video check out the [ScreenshotOne documentation](https://screenshotone.com/docs/animated-screenshots/).

  ## Credentials

  To use ScreenshotOne node, you will need to authenticate with the ScreenshotOne API.

  1. [Sign up for or sign in to a ScreenshotOne account](https://dash.screenshotone.com/).
  2. [Create if needed and copy the API (access) key](https://dash.screenshotone.com/access).
  3. Create new credentials in n8n:
     3.1. Add and use the ScreenshotOne node in your workflow.
     3.2. Under "Credential to connect with", click "Create New Credential".
     3.3. Paste the API (access) key you copied in step 2.

  Test the credentials and make sure it works:

  ![Credentials](./assets/credentials.png)

  ## Compatibility

  The node was created and tested with n8n version `1.98.2`. But there is no reason it won't work with older and newer versions.

  ## Usage

  If you use n8n for the first time, check out the ["try it out" documentation ](https://docs.n8n.io/try-it-out/) to get started.

  ### Response types

  ScreenshotOne may return the response in different formats based on the request options:

  - `json` - for JSON responses, e.g. for PDF or screenshot with URLs.
  - `text` - for text responses, e.g. raw HTML.
  - `base64` - for image responses.

  Examples:

  ```json
  {
  	"content_type": "application/json",
  	"type": "json",
  	"response": {
  		"cache_url": "https://<URL of the screenshot in cache>"
  	}
  }
  ```

  Or:

  ```json
  {
  	"content_type": "text/html",
  	"type": "text",
  	"response": "<HTML body>"
  }
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [ScreenshotOne API documentation](https://screenshotone.com/docs/)
  - [ScreenshotOne](https://screenshotone.com/)
  - [ScreenshotOne Dashboard](https://dash.screenshotone.com/)

  ## Version history

  - 0.1.2 - Initial release of the ScreenshotOne node for n8n 🥳

  ## Development

  Check out [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/) for detailed information on building and developing the node.

  0. Install dependencies:

  ```bash
  npm install
  ```

  1. Build the node

  ```bash
  npm run build
  ```

  2. Link the node to n8n from the node directory

  ```bash
  npm link
  ```

  3. In your `~/.n8n/nodes` directory, link the node:

  ```bash
  npm link n8n-nodes-screenshotone
  ```

  4. Run n8n:

  ```bash
  n8n start
  ```

  Once the node is linked, you need to only rebuild and restart n8n to see the changes.

  ## ScreenshotOne

  ### Use cases

  You can find [all the use cases on the ScreenshotOne official website](https://screenshotone.com/use-cases/), including but not limited to:

  - [Automating Open Graph image generation](https://screenshotone.com/use-cases/open-graph-images/)
  - [Generating personalized videos](https://screenshotone.com/use-cases/automate-personalized-videos/)
  - [Generating marketing content](https://screenshotone.com/use-cases/generate-advertising-content/)

  And [many more](https://screenshotone.com/use-cases/).

  ### Customers

  [![testimonials](./assets/testimonials.png)](https://screenshotone.com/customers/)

  Check out what [ScreenshotOne customers say about the API](https://screenshotone.com/customers/) and why it is considered one of the best screenshot APIs.

  ## License

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

  ## License

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

ai_documentation_summary:
  {"purpose":"A n8n community node that integrates with ScreenshotOne to render PDFs, capture website screenshots (including full-page and scrolling), and generate short videos from web content.","capabilities":["Take screenshots of websites, HTML, or Markdown","Capture full-page screenshots","Generate PDFs from URLs, HTML, or Markdown","Create scrolling screenshots (results as video or GIF)","Record short videos of websites, HTML, or Markdown","Convert HTML or Markdown to images","Return responses in JSON, text, or base64 formats"],"authentication":"API key required (ScreenshotOne access key)","commonUseCases":["Automating Open Graph image generation","Generating personalized videos","Creating marketing and advertising content","Capturing full-page website layouts","Creating animated scrolling videos or GIFs"],"limitations":["Community node (requires accepting risks of using community nodes)","Requires external ScreenshotOne account and API key","Response formats depend on request options (JSON, text, or base64)"],"relatedNodes":["HTTP Request","Code","PDF","Image"]}


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

updated_at: 2026-07-14 14:40:33
author_name: fyointegraciones
author_github_url: https://github.com/fyo-tech/
npm_package_name: n8n-nodes-fyo
npm_version: 0.6.3
community_fetched_at: 2026-07-14T14:40:33.570Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "granos",
      "options": [
        {
          "name": "Grains",
          "value": "granos"
        },
        {
          "name": "Finance",
          "value": "finanzas"
        },
        {
          "name": "ARCA",
          "value": "afip"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getContratos",
      "options": [
        {
          "name": "Get Contracts",
          "value": "getContratos",
          "action": "Get contracts",
          "description": "Retrieve grain contracts"
        },
        {
          "name": "Get Settlements",
          "value": "getLiquidaciones",
          "action": "Get settlements",
          "description": "Retrieve grain settlements"
        },
        {
          "name": "Get Invoices",
          "value": "getFacturas",
          "action": "Get invoices",
          "description": "Retrieve grain invoices"
        },
        {
          "name": "Get Applications",
          "value": "getAplicaciones",
          "action": "Get applications",
          "description": "Retrieve grain applications"
        },
        {
          "name": "Get Fixings",
          "value": "getFijaciones",
          "action": "Get fixings",
          "description": "Retrieve grain fixings"
        },
        {
          "name": "Get Unloads",
          "value": "getDescargas",
          "action": "Get unloads",
          "description": "Retrieve grain unloads"
        },
        {
          "name": "Get Withholdings",
          "value": "getRetenciones",
          "action": "Get withholdings",
          "description": "Retrieve grain withholdings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "granos"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMovimientos",
      "options": [
        {
          "name": "Get Receipt Types",
          "value": "getTiposComprobante",
          "action": "Get receipt types",
          "description": "Retrieve receipt types"
        },
        {
          "name": "Get Receipt Details",
          "value": "getDetallesComprobante",
          "action": "Get receipt details",
          "description": "Retrieve receipt details"
        },
        {
          "name": "Get Transactions",
          "value": "getMovimientos",
          "action": "Get transactions",
          "description": "Retrieve financial transactions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "finanzas"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCartaPorte",
      "options": [
        {
          "name": "Get Waybills",
          "value": "getCartaPorte",
          "action": "Get waybills",
          "description": "Retrieve ARCA waybills (Carta de Porte)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "afip"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Contracts",
      "value": "getContratos",
      "action": "Get contracts",
      "description": "Retrieve grain contracts",
      "resource": "granos"
    },
    {
      "name": "Get Settlements",
      "value": "getLiquidaciones",
      "action": "Get settlements",
      "description": "Retrieve grain settlements",
      "resource": "granos"
    },
    {
      "name": "Get Invoices",
      "value": "getFacturas",
      "action": "Get invoices",
      "description": "Retrieve grain invoices",
      "resource": "granos"
    },
    {
      "name": "Get Applications",
      "value": "getAplicaciones",
      "action": "Get applications",
      "description": "Retrieve grain applications",
      "resource": "granos"
    },
    {
      "name": "Get Fixings",
      "value": "getFijaciones",
      "action": "Get fixings",
      "description": "Retrieve grain fixings",
      "resource": "granos"
    },
    {
      "name": "Get Unloads",
      "value": "getDescargas",
      "action": "Get unloads",
      "description": "Retrieve grain unloads",
      "resource": "granos"
    },
    {
      "name": "Get Withholdings",
      "value": "getRetenciones",
      "action": "Get withholdings",
      "description": "Retrieve grain withholdings",
      "resource": "granos"
    },
    {
      "name": "Get Receipt Types",
      "value": "getTiposComprobante",
      "action": "Get receipt types",
      "description": "Retrieve receipt types",
      "resource": "finanzas"
    },
    {
      "name": "Get Receipt Details",
      "value": "getDetallesComprobante",
      "action": "Get receipt details",
      "description": "Retrieve receipt details",
      "resource": "finanzas"
    },
    {
      "name": "Get Transactions",
      "value": "getMovimientos",
      "action": "Get transactions",
      "description": "Retrieve financial transactions",
      "resource": "finanzas"
    },
    {
      "name": "Get Waybills",
      "value": "getCartaPorte",
      "action": "Get waybills",
      "description": "Retrieve ARCA waybills (Carta de Porte)",
      "resource": "afip"
    }
  ]

npm_readme:
  # n8n-nodes-fyo

  This is an n8n community node for integrating with the [FYO API](https://www.fyo.com). It provides access to grain trading operations, financial transactions, and ARCA (Argentine tax authority) documentation.

  [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-fyo` in the **Enter npm package name** field
  4. Agree to the risks and select **Install**

  ### Manual Installation

  To install this node manually in a self-hosted n8n instance:

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

  Then restart n8n.

  ## Credentials

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

  | Field | Description |
  |-------|-------------|
  | **Client ID** | Your FYO API client identifier |
  | **Username** | Your FYO username or email |
  | **Password** | Your FYO account password |
  | **Scope** | OAuth2 scope to request (provided by FYO) |
  | **Environment** | Production, Demo, or Custom URL |

  ### Setting up credentials

  1. In n8n, go to **Credentials > New**
  2. Search for **FYO API**
  3. Fill in your credentials provided by FYO
  4. Click **Test** to verify the connection
  5. Click **Save**

  ## Operations

  ### Grains Resource

  Operations for grain trading management.

  #### Get Contracts
  Retrieve grain contracts.

  | Search By | Parameters |
  |-----------|------------|
  | Date Range | Date From (required), Date To (optional) |
  | Broker Contract Number | Broker Contract Number |

  #### Get Settlements
  Retrieve grain settlements.

  | Search By | Parameters |
  |-----------|------------|
  | Date Range | Date From (required), Date To (optional) |
  | Broker Contract Number | Broker Contract Number |
  | Receipt Number | Receipt Number |

  #### Get Invoices
  Retrieve grain invoices.

  | Search By | Parameters |
  |-----------|------------|
  | Date Range | Date From (required), Date To (optional) |
  | Broker Contract Number | Broker Contract Number |
  | Receipt Number | Receipt Number |

  #### Get Applications
  Retrieve grain applications.

  | Search By | Parameters |
  |-----------|------------|
  | Date Range | Date From (required), Date To (optional) |
  | Broker Contract Number | Broker Contract Number |
  | CTG Number | CTG Number |

  #### Get Fixings
  Retrieve grain price fixings.

  | Search By | Parameters |
  |-----------|------------|
  | Date Range | Date From (required), Date To (optional) |
  | Broker Contract Number | Broker Contract Number |
  | Fixing Number | Fixing Number |

  #### Get Unloads
  Retrieve grain unloads.

  | Search By | Parameters |
  |-----------|------------|
  | Date Range | Date From (required), Date To (optional) |
  | CTG Number | CTG Number |

  #### Get Withholdings
  Retrieve tax withholdings.

  | Search By | Parameters |
  |-----------|------------|
  | Date Range | Date From (required), Date To (optional) |
  | Receipt Number | Receipt Number |
  | Payment Slip Number | Payment Slip Number |

  ### Finance Resource

  Operations for financial transactions.

  #### Get Receipt Types
  Retrieve available receipt types. This is a GET request with no parameters.

  #### Get Receipt Details
  Retrieve details for a specific receipt.

  | Parameter | Description |
  |-----------|-------------|
  | Receipt Number | Receipt number (required) |

  #### Get Transactions
  Retrieve financial transactions.

  | Parameter | Description |
  |-----------|-------------|
  | Date From | Start date (required) |
  | Date To | End date (required) |

  ### ARCA Resource

  Operations for ARCA (Argentine Federal Administration of Public Revenue) documentation.

  #### Get Waybills
  Retrieve ARCA waybills (Carta de Porte - transport documents).

  | Search By | Parameters |
  |-----------|------------|
  | Date Range | Date From (required), Date To (optional) |
  | CTG Number | CTG Number |

  ## Validation

  The node includes built-in validation:

  - **Date validation**: Dates cannot be in the future and must be valid calendar dates
  - **Date range**: Maximum range is 31 days (1 month) when both dates are provided
  - **Numeric fields**: Required numeric fields (CTG Number, Broker Contract Number, etc.) must be greater than 0

  ## Authentication

  This node uses OAuth2 Password Grant flow for authentication. The access token is automatically obtained using your credentials and cached to optimize API calls.

  The authentication flow:
  1. On first request, the node obtains an access token from the `/token` endpoint
  2. The token is cached in memory with a 60-second buffer before expiry
  3. All API requests include the token in the `Authorization: Bearer` header
  4. When the token expires, a new one is automatically requested

  ## Compatibility

  - **n8n version**: 1.0.0 or later
  - **Node.js version**: 20.0.0 or later

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [FYO Website](https://www.fyo.com)

  ## Support

  If you have questions or encounter issues:

  - Open an issue on [GitHub](https://github.com/fyo-tech/n8n-nodes-fyo/issues)
  - Contact FYO support at integracion@fyo.com

  ## License

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

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of grain trading, financial transactions, and ARCA documentation operations by interfacing with the FYO API.","capabilities":["Retrieve grain contracts","Retrieve grain settlements","Retrieve grain invoices","Retrieve grain applications","Retrieve grain price fixings","Retrieve grain unloads","Retrieve tax withholdings","Retrieve available receipt types","Retrieve receipt details","Retrieve financial transactions"],"authentication":"OAuth2 Password Grant (Client ID, Username, Password, Scope, Environment)","commonUseCases":["Automating grain trading contract retrieval and tracking","Processing financial transactions and receipts","Managing ARCA tax documentation and waybills","Generating reports on grain settlements and invoices"],"limitations":["Date range is limited to a maximum of 31 days when both start and end dates are provided","Required numeric fields must be greater than 0","Dates cannot be in the future","Requires manual installation via npm for self-hosted instances"],"relatedNodes":["n8n-nodes-core.credentialManager","n8n-nodes-core.httpRequest","n8n-nodes-core.date"]}


node_type: n8n-nodes-influencersclub.influencersClub
package_name: n8n-nodes-influencersclub
display_name: Influencers Club
description: Interact with Influencers Club API for creator enrichment and discovery
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: influencers.club
author_github_url: https://github.com/Influencers-Club/
npm_package_name: n8n-nodes-influencersclub
npm_version: 1.1.6
community_fetched_at: 2026-07-14T14:40:33.571Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "creator",
      "options": [
        {
          "name": "Creator",
          "value": "creator",
          "description": "Enrich creators or find similar ones"
        },
        {
          "name": "Discovery",
          "value": "discovery",
          "description": "Search and discover creators by filters"
        },
        {
          "name": "Batch Enrichment",
          "value": "batchEnrichment",
          "description": "Create, check status, download, or resume batch enrichment jobs"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "enrichByEmail",
      "options": [
        {
          "name": "Enrich by Email",
          "value": "enrichByEmail",
          "action": "Enrich by Email",
          "description": "Enrich a creator using their email address"
        },
        {
          "name": "Enrich by Handle (Full)",
          "value": "enrichByHandle",
          "action": "Enrich by Handle (Full)",
          "description": "Enrich a creator using their handle/username (full profile)"
        },
        {
          "name": "Enrich by Handle (Raw)",
          "value": "enrichByHandleRaw",
          "action": "Enrich by Handle (Raw)",
          "description": "Enrich a creator using their handle/username (raw data)"
        },
        {
          "name": "Find Similar Creators",
          "value": "findLookalikes",
          "action": "Find Similar Creators",
          "description": "This endpoint helps identify creators who are similar to a given influencer based on their social media presence, niche, engagement patterns, and audience characteristics. It allows businesses to discover new potential partners, expand outreach efforts, and optimize influencer marketing campaigns by targeting lookalike creators."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "creator"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "discovery",
      "options": [
        {
          "name": "Discovery",
          "value": "discovery",
          "action": "Discovery",
          "description": "The Discovery API allows you to filter creators based on the filters available on the dashboard, you can use the AI seach and lookalikes search to find profiles relevant to your targeting."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "discovery"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createBatch",
      "options": [
        {
          "name": "Create Batch Enrichment",
          "value": "createBatch",
          "action": "Create Batch Enrichment",
          "description": "Start a new batch enrichment job with a list of emails. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/create-batch-enrichment"
        },
        {
          "name": "Get Batch Enrichment Status",
          "value": "getBatchStatus",
          "action": "Get Batch Enrichment Status",
          "description": "Check the status of an existing batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/get-batch-enrichment-status"
        },
        {
          "name": "Download Batch Enrichment Results",
          "value": "downloadBatchResults",
          "action": "Download Batch Enrichment Results",
          "description": "Download the results of a completed batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/download-batch-enrichment-results"
        },
        {
          "name": "Resume Batch Enrichment",
          "value": "resumeBatch",
          "action": "Resume Batch Enrichment",
          "description": "Resume a failed or paused batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/resume-batch-enrichment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "batchEnrichment"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Enrich by Email",
      "value": "enrichByEmail",
      "action": "Enrich by Email",
      "description": "Enrich a creator using their email address",
      "resource": "creator"
    },
    {
      "name": "Enrich by Handle (Full)",
      "value": "enrichByHandle",
      "action": "Enrich by Handle (Full)",
      "description": "Enrich a creator using their handle/username (full profile)",
      "resource": "creator"
    },
    {
      "name": "Enrich by Handle (Raw)",
      "value": "enrichByHandleRaw",
      "action": "Enrich by Handle (Raw)",
      "description": "Enrich a creator using their handle/username (raw data)",
      "resource": "creator"
    },
    {
      "name": "Find Similar Creators",
      "value": "findLookalikes",
      "action": "Find Similar Creators",
      "description": "This endpoint helps identify creators who are similar to a given influencer based on their social media presence, niche, engagement patterns, and audience characteristics. It allows businesses to discover new potential partners, expand outreach efforts, and optimize influencer marketing campaigns by targeting lookalike creators.",
      "resource": "creator"
    },
    {
      "name": "Discovery",
      "value": "discovery",
      "action": "Discovery",
      "description": "The Discovery API allows you to filter creators based on the filters available on the dashboard, you can use the AI seach and lookalikes search to find profiles relevant to your targeting.",
      "resource": "discovery"
    },
    {
      "name": "Create Batch Enrichment",
      "value": "createBatch",
      "action": "Create Batch Enrichment",
      "description": "Start a new batch enrichment job with a list of emails. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/create-batch-enrichment",
      "resource": "batchEnrichment"
    },
    {
      "name": "Get Batch Enrichment Status",
      "value": "getBatchStatus",
      "action": "Get Batch Enrichment Status",
      "description": "Check the status of an existing batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/get-batch-enrichment-status",
      "resource": "batchEnrichment"
    },
    {
      "name": "Download Batch Enrichment Results",
      "value": "downloadBatchResults",
      "action": "Download Batch Enrichment Results",
      "description": "Download the results of a completed batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/download-batch-enrichment-results",
      "resource": "batchEnrichment"
    },
    {
      "name": "Resume Batch Enrichment",
      "value": "resumeBatch",
      "action": "Resume Batch Enrichment",
      "description": "Resume a failed or paused batch job. Docs: https://app.theneo.io/influencers-club/influencers-public-api/public-v1-enrichment/public/resume-batch-enrichment",
      "resource": "batchEnrichment"
    }
  ]

npm_readme:
  # n8n-nodes-influencersclub

  Official n8n node for [Influencers Club enrichment and discovery API](https://influencers.club/influencer-api/).

  ## 🚀 Overview

  This repository provides an official n8n node for Influencers Club with four operations:

  - **Enrich by Email**: Takes an email address and enriches it with public social data, including possible usernames, followers, profile links, bio, and other social metrics. This is useful if you have a list of customer or subscriber emails and want to find their social presence and additional profile information.

  - **Enrich by Handle**: Takes a social media handle (username) and platform, and enriches it with email (if available), followers, bio, links, and additional social metrics. This is useful if you have scraped or collected social handles and want to obtain verified emails or extra data.

  - **Discovery**: Search for creators using advanced filters such as keyword, platform, audience country, follower range, engagement rate, and more. The node provides full flexibility and matches the official API documentation.

  - **Find Lookalikes**: Find similar creators to a given handle on a specified platform. This is useful for building lookalike lists for outreach or audience expansion.

  These operations help marketing and growth teams enrich leads, segment audiences, sync to CRM systems, or prepare personalized outreach workflows.

  ---

  ## 🔑 How to get your API Key

  To use this node, you need an **API Key** from your Influencers Club account.

  ### Steps

  1. **Register** at [Influencers Club Dashboard](https://dashboard.influencers.club/register).
  2. After logging in, open the [API page](https://dashboard.influencers.club/api).
  3. Copy your **API Key** displayed there.

  **All requests require a Bearer token:**

  Paste this key into the "Influencers Club API" credentials in your n8n workflow.

  ---

  ## ⚡ Example workflows

  - Import a list of email addresses from Google Sheets ➜ Influencers Club (Enrich by Email) ➜ Push to CRM or Airtable.
  - Import a list of Instagram handles ➜ Influencers Club (Enrich by Handle) ➜ Get emails ➜ Send personalized outreach via Gmail node.
  - Search for creators in your niche ➜ Influencers Club (Discovery) ➜ Filter and export to spreadsheet.
  - Find similar creators ➜ Influencers Club (Find Lookalikes) ➜ Build outreach lists.

  ---

  ## 🛠️ Installation

  Install via npm:

  ```bash
  npm install n8n-nodes-influencersclub
  ```

  Then, add to your n8n instance as a custom node package.

  ---

  ## 📄 License

  MIT

  ---

  ## 💬 Support

  For questions, contact [Influencers Club Support](https://dashboard.influencers.club) or [open an issue](https://github.com/Influencers-Club/n8n-nodes-influencersclub/issues).

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the Influencers Club API to enrich creator data, discover new creators, and find lookalike profiles for marketing and growth workflows.","capabilities":["Enrich email addresses with social media data (username, followers, bio, profile links)","Enrich social media handles with email addresses and social metrics","Search and discover creators using advanced filters (keywords, platform, audience country, follower range, engagement rate)","Find lookalike creators based on a given handle and platform"],"authentication":"API Key (Bearer token required, stored in 'Influencers Club API' credentials)","commonUseCases":["Lead enrichment for customer or subscriber emails","Audience expansion by finding similar creators","Syncing creator data to CRM systems","Preparing personalized outreach lists"],"limitations":["Requires a paid API Key from Influencers Club","Email enrichment only returns email if available for the given handle"],"relatedNodes":["Gmail","Airtable","Google Sheets","Spreadsheet"]}


node_type: @picsart/n8n-nodes-picsart-creative-apis.picsartGeneration
package_name: @picsart/n8n-nodes-picsart-creative-apis
display_name: Picsart Generative AI-Hub
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: romiksar
author_github_url: https://github.com/PicsArt/n8n-plugin.git
npm_package_name: @picsart/n8n-nodes-picsart-creative-apis
npm_version: 5.4.8
community_fetched_at: 2026-07-14T14:40:33.572Z
ai_summary_generated_at: 2026-03-25 22:51:43
description:
  Generate and edit media with Picsart GenAI API: images, stickers, sound, video, and prompt-based image editing.

properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "text2Image",
      "options": [
        {
          "name": "Edit Image With Prompt",
          "value": "Edit Image with Prompt",
          "action": "Edit an image using a text prompt",
          "description": "Edit or transform a source image with an AI model using a text prompt"
        },
        {
          "name": "Generate Images from Prompt",
          "value": "text2Image",
          "action": "Generate an image from text prompt",
          "description": "Generate an image from a text prompt using AI"
        },
        {
          "name": "Generate Music/Sound from Prompt",
          "value": "Generate Music/Sound from Prompt",
          "action": "Generate music or sound from a text prompt",
          "description": "Generate music or sound effects from a text prompt using AI"
        },
        {
          "name": "Generate Speech from Prompt",
          "value": "Generate Speech from Prompt",
          "action": "Generate speech audio from text",
          "description": "Generate spoken audio from input text using AI text-to-speech"
        },
        {
          "name": "Generate Stickers from Prompt",
          "value": "text2Sticker",
          "action": "Generate a sticker from text prompt",
          "description": "Generate a sticker from a text prompt using AI"
        },
        {
          "name": "Generate Video from Prompt",
          "value": "Generate Video from Prompt",
          "action": "Generate a video from a text prompt",
          "description": "Generate one video per request from a text prompt only. Output duration, resolution, and audio depend on the selected model."
        },
        {
          "name": "Generate Video from Prompt and Image",
          "value": "Generate Video from Prompt and Image",
          "action": "Generate a video from an image and text prompt",
          "description": "Generate one video per request from a source image and prompt. Output duration, resolution, and audio depend on the selected model."
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Edit Image With Prompt",
      "value": "Edit Image with Prompt",
      "action": "Edit an image using a text prompt",
      "description": "Edit or transform a source image with an AI model using a text prompt"
    },
    {
      "name": "Generate Images from Prompt",
      "value": "text2Image",
      "action": "Generate an image from text prompt",
      "description": "Generate an image from a text prompt using AI"
    },
    {
      "name": "Generate Music/Sound from Prompt",
      "value": "Generate Music/Sound from Prompt",
      "action": "Generate music or sound from a text prompt",
      "description": "Generate music or sound effects from a text prompt using AI"
    },
    {
      "name": "Generate Speech from Prompt",
      "value": "Generate Speech from Prompt",
      "action": "Generate speech audio from text",
      "description": "Generate spoken audio from input text using AI text-to-speech"
    },
    {
      "name": "Generate Stickers from Prompt",
      "value": "text2Sticker",
      "action": "Generate a sticker from text prompt",
      "description": "Generate a sticker from a text prompt using AI"
    },
    {
      "name": "Generate Video from Prompt",
      "value": "Generate Video from Prompt",
      "action": "Generate a video from a text prompt",
      "description": "Generate one video per request from a text prompt only. Output duration, resolution, and audio depend on the selected model."
    },
    {
      "name": "Generate Video from Prompt and Image",
      "value": "Generate Video from Prompt and Image",
      "action": "Generate a video from an image and text prompt",
      "description": "Generate one video per request from a source image and prompt. Output duration, resolution, and audio depend on the selected model."
    }
  ]

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

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

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

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

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

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

  ## 🚀 Release

  Use the automated release script:

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

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

  CI/CD will automatically publish to npm.

  ## 📖 Resources

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

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

  **For Self-hosted:**

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

  Then restart n8n.

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


  ## 📚 Nodes

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

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

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

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

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

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

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

  ### Picsart Remove Background

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

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

ai_documentation_summary:
  {"purpose":"A community n8n node package that enables image generation and manipulation using Picsart's creative APIs, including text-to-image generation, image enhancement, and background removal.","capabilities":["Generate images from text prompts (Text2Image)","Upscale and enhance images (Enhance)","Remove image backgrounds (Remove Background)","Support for JPG, PNG, and WEBP formats","Variable image dimensions for generation","Multiple upscale factors (2x to 16x)","Customizable background options (color, image URL, transparent)"],"authentication":"API Key required (obtained from Picsart Console)","commonUseCases":["Creating images from descriptive text prompts for content generation","Upscaling low-resolution images for high-quality output","Removing backgrounds from product photos or illustrations","Batch processing image enhancements in automated workflows"],"limitations":["Text2Image generation is limited to 1024x1024 pixel dimensions","Enhance and Remove Background nodes require input image URLs","Background removal supports limited effect types (blur, stroke, shadow)","No specific rate limits mentioned in documentation"],"relatedNodes":["Picsart Text2Image","Picsart Enhance","Picsart Remove Background","n8n Binary Node","n8n HTTP Request Node"]}


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

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

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

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

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

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

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

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

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

  ## 🚀 Release

  Use the automated release script:

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

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

  CI/CD will automatically publish to npm.

  ## 📖 Resources

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

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

  **For Self-hosted:**

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

  Then restart n8n.

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


  ## 📚 Nodes

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

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

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

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

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

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

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

  ### Picsart Remove Background

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

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

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


node_type: @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-07-14 14:40:33
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-07-14T14:40:33.573Z
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: @fellow/n8n-nodes-fellow.fellowTrigger
package_name: @fellow/n8n-nodes-fellow
display_name: Fellow Trigger
description: Triggers workflow when Fellow events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: sciyoshi
author_github_url: https://github.com/fellowapp/n8n-nodes-fellow.git
npm_package_name: @fellow/n8n-nodes-fellow
npm_version: 1.0.3
community_fetched_at: 2026-07-14T14:40:33.575Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-fellow

  This is an n8n community node that lets you integrate [Fellow](https://fellow.ai) into your n8n workflows.

  Fellow is the top-rated AI meeting assistant that records, transcribes, and summarizes meetings. This node allows you to automate workflows triggered by meeting events and interact with Fellow's meeting notes and action items.

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

  ## Credentials

  To use this node, you need a Fellow API key:

  1. Log in to [Fellow](https://fellow.ai)
  2. Navigate to your user settings
  3. Generate an API key from the API, MCP & Webhooks section
  4. Use your workspace subdomain and API key to configure the credentials in n8n

  ## Operations

  ### Fellow Node

  **Action Items**
  - **Get**: Retrieve an action item by ID
  - **Get Many**: List action items with optional filters (scope, completed, archived, AI-detected)
  - **Complete**: Mark an action item as complete

  **Notes**
  - **Get**: Retrieve an AI-generated meeting note by ID
  - **Get Many**: List notes with optional filters (title, event, channel, date ranges, attendees)

  ### Fellow Trigger

  Trigger workflows when Fellow events occur:

  - **AI Note Generated**: Triggers when an AI note is generated after a meeting
  - **AI Note Shared to Channel**: Triggers when an AI note is shared to a Fellow channel
  - **Action Item Assigned To Me**: Triggers when an action item is assigned to you
  - **Action Item Completed**: Triggers when an action item is marked as complete

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Fellow](https://fellow.ai)
  - [Fellow Help Center](https://help.fellow.ai)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows automatically when specific events occur in Fellow, such as AI-generated meeting notes, notes shared to channels, or action item assignments/completions.","capabilities":["Trigger on AI note generation","Trigger on AI note sharing to channel","Trigger on action item assignment to user","Trigger on action item completion","Retrieve action items by ID","List action items with filters (scope, completed, archived, AI-detected)","Mark action items as complete","Retrieve meeting notes by ID","List meeting notes with filters (title, event, channel, date ranges, attendees)"],"authentication":"API key required (Fellow API key from user settings)","commonUseCases":["Automate follow-up tasks when meeting notes are generated","Create workflows to track action items assigned to users","Integrate meeting summaries into other systems","Automate reminders when action items are completed"],"limitations":["Requires a valid Fellow API key and workspace subdomain","Limited to events and data available through Fellow's API"],"relatedNodes":["HTTP Request","Function","Wait Until","Code"]}


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

updated_at: 2026-07-14 14:40:33
author_name: pkpio
author_github_url: https://github.com/transcript-lol/
npm_package_name: n8n-nodes-transcript-lol
npm_version: 0.3.3
community_fetched_at: 2026-07-14T14:40:33.575Z
ai_summary_generated_at: 2026-03-25 22:47:20
npm_readme:
  # n8n-nodes-transcript-lol

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

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

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

  ## Installation

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

  ## Operations

  ### Transcript.lol Node

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

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

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

  ### Transcript.lol Trigger Node

  Listen for events from Transcript.lol:

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

  ## Credentials

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

  ### Setup

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

  ### How It Works

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

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

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

  ## Compatibility

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

  ## Resources

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

  ## License

  [MIT](LICENSE)

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


node_type: n8n-nodes-transcript-lol.transcriptLol
package_name: n8n-nodes-transcript-lol
display_name: Transcript LOL
description: Create recordings and get transcripts from Transcript LOL
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: pkpio
author_github_url: https://github.com/transcript-lol/
npm_package_name: n8n-nodes-transcript-lol
npm_version: 0.3.3
community_fetched_at: 2026-07-14T14:40:33.576Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "recording",
      "options": [
        {
          "name": "Recording",
          "value": "recording"
        },
        {
          "name": "Transcript",
          "value": "transcript"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a recording",
          "description": "Create a new recording for transcription"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a recording",
          "description": "Get a recording by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many recordings",
          "description": "Get many recordings from a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "recording"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a transcript",
          "description": "Get transcript for a recording"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many workspaces",
          "description": "Get all workspaces"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a recording",
      "description": "Create a new recording for transcription",
      "resource": "recording"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a recording",
      "description": "Get a recording by ID",
      "resource": "recording"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many recordings",
      "description": "Get many recordings from a workspace",
      "resource": "recording"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a transcript",
      "description": "Get transcript for a recording",
      "resource": "transcript"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many workspaces",
      "description": "Get all workspaces",
      "resource": "workspace"
    }
  ]

npm_readme:
  # n8n-nodes-transcript-lol

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

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

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

  ## Installation

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

  ## Operations

  ### Transcript.lol Node

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

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

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

  ### Transcript.lol Trigger Node

  Listen for events from Transcript.lol:

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

  ## Credentials

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

  ### Setup

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

  ### How It Works

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

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

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

  ## Compatibility

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

  ## Resources

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

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation for Transcript.lol, an AI-powered audio and video transcription service, allowing users to create recordings, retrieve transcripts, and listen for completion events.","capabilities":["Create new recordings for transcription","Retrieve a single recording by ID","Retrieve multiple recordings from a workspace","Get transcripts in multiple formats (JSON, Plain Text, CSV, Word, SRT, VTT)","List all accessible workspaces","Trigger on new transcript completion","Trigger on transcript failure","Trigger on new AI insights generation","Trigger on translation completion"],"authentication":"OAuth2 with PKCE (Proof Key for Code Exchange)","commonUseCases":["Automated meeting note generation from audio/video files","Workflow triggers for processing completed transcriptions","Batch processing of multiple recordings from a workspace","Integration with translation workflows for multilingual content"],"limitations":["Requires Transcript.lol Unlimited Plan subscription","Requires Node.js v22 or higher","Compatible only with n8n version 1.0.0 and above"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


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

updated_at: 2026-07-14 14:40:33
author_name: mhelmich-mittwald
author_github_url: https://github.com/mittwald/n8n-nodes.git
npm_package_name: n8n-nodes-mittwald
npm_version: 1.9.1
community_fetched_at: 2026-07-14T14:40:33.577Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Project",
          "value": "Project"
        },
        {
          "name": "App",
          "value": "App"
        },
        {
          "name": "Server",
          "value": "Server"
        },
        {
          "name": "Support",
          "value": "Support"
        },
        {
          "name": "Contributor",
          "value": "Contributor"
        },
        {
          "name": "Organisation",
          "value": "Organisation"
        },
        {
          "name": "Domain",
          "value": "Domain"
        },
        {
          "name": "Database",
          "value": "Database"
        },
        {
          "name": "Contract",
          "value": "Contract"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create",
      "options": [
        {
          "name": "Create",
          "value": "Create",
          "action": "Create a project on a server",
          "description": "Create a new project on a server"
        },
        {
          "name": "Create SFTP User",
          "value": "Create SFTP User",
          "action": "Create an SFTP user",
          "description": "Create an SFTP user for a project"
        },
        {
          "name": "Create SSH User",
          "value": "Create SSH User",
          "action": "Create an SSH user",
          "description": "Create an SSH user for a project"
        },
        {
          "name": "Delete SFTP User",
          "value": "Delete SFTP User",
          "action": "Delete an SFTP user",
          "description": "Delete an SFTP user by ID"
        },
        {
          "name": "Delete SSH User",
          "value": "Delete SSH User",
          "action": "Delete an SSH user",
          "description": "Delete an SSH user by ID"
        },
        {
          "name": "Delete",
          "value": "Delete",
          "action": "Delete a project",
          "description": "Delete an existing project"
        },
        {
          "name": "Get",
          "value": "Get",
          "action": "Get a project",
          "description": "Get details of a specific project"
        },
        {
          "name": "Get SFTP User",
          "value": "Get SFTP User",
          "action": "Get an SFTP user",
          "description": "Get details of a specific SFTP user"
        },
        {
          "name": "Get SSH User",
          "value": "Get SSH User",
          "action": "Get an SSH user",
          "description": "Get details of a specific SSH user"
        },
        {
          "name": "Get Storage Statistics",
          "value": "Get Storage Statistics",
          "action": "Get storage statistics",
          "description": "Get storage usage statistics for a project"
        },
        {
          "name": "List memberships",
          "value": "List memberships",
          "action": "List all memberships",
          "description": "Get a list of all project memberships"
        },
        {
          "name": "List SFTP Users",
          "value": "List SFTP Users",
          "action": "List all SFTP users",
          "description": "Get a list of all SFTP users in a project"
        },
        {
          "name": "List SSH Users",
          "value": "List SSH Users",
          "action": "List all SSH users",
          "description": "Get a list of all SSH users in a project"
        },
        {
          "name": "List",
          "value": "List",
          "action": "List all projects",
          "description": "Get a list of all projects"
        },
        {
          "name": "List Invites",
          "value": "List Invites",
          "action": "List all invites",
          "description": "Get a list of all project invitations"
        },
        {
          "name": "Delete Membership",
          "value": "Delete Membership",
          "action": "Delete a project membership",
          "description": "Remove a member from a project"
        },
        {
          "name": "Get Membership",
          "value": "Get Membership",
          "action": "Get a project membership",
          "description": "Get details of a specific project membership"
        },
        {
          "name": "Accept Invite",
          "value": "Accept Invite",
          "action": "Accept an invite to a project",
          "description": "Accept a project invitation using an invitation token"
        },
        {
          "name": "Create Invite",
          "value": "Create Invite",
          "action": "Create an invite to a project",
          "description": "Create a project invitation"
        },
        {
          "name": "Update Storage Notification Threshold",
          "value": "Update Storage Notification Threshold",
          "action": "Update storage notification threshold",
          "description": "Update the storage notification threshold of a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Install",
      "options": [
        {
          "name": "Install",
          "value": "Install",
          "action": "Install an app",
          "description": "Install an app on a project"
        },
        {
          "name": "Uninstall",
          "value": "Uninstall",
          "action": "Uninstall an app",
          "description": "Remove an app installation"
        },
        {
          "name": "List",
          "value": "List",
          "action": "List all installed apps",
          "description": "Get a list of all installed apps"
        },
        {
          "name": "Update Installation Versions",
          "value": "Update Installation Versions",
          "action": "Update software versions",
          "description": "Update the app or system software versions of an installation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "App"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get",
      "options": [
        {
          "name": "Get",
          "value": "Get",
          "action": "Get a server",
          "description": "Get details of a specific server"
        },
        {
          "name": "Get Storage Statistics",
          "value": "Get Storage Statistics",
          "action": "Get storage statistics",
          "description": "Get storage usage statistics for a server"
        },
        {
          "name": "List",
          "value": "List",
          "action": "List all servers",
          "description": "Get a list of all servers"
        },
        {
          "name": "Update Storage Notification Threshold",
          "value": "Update Storage Notification Threshold",
          "action": "Update storage notification threshold",
          "description": "Update the storage notification threshold of a server"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Server"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create",
      "options": [
        {
          "name": "Create",
          "value": "Create",
          "action": "Create a ticket",
          "description": "Create a support ticket in a conversation category"
        },
        {
          "name": "Create Message",
          "value": "Create Message",
          "action": "Send a message",
          "description": "Send a new message in a conversation"
        },
        {
          "name": "Get",
          "value": "Get",
          "action": "Get a conversation",
          "description": "Get details of a specific conversation"
        },
        {
          "name": "List",
          "value": "List",
          "action": "List conversations",
          "description": "Get all conversations the authenticated user has created or has access to"
        },
        {
          "name": "List Messages",
          "value": "List Messages",
          "action": "List conversation messages",
          "description": "Get all messages of a conversation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Support"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "List Contract Partners",
      "options": [
        {
          "name": "List Contract Partners",
          "value": "List Contract Partners",
          "action": "List contract partners of a contributor",
          "description": "Get a list of contract partners associated with a contributor"
        },
        {
          "name": "List Incoming Invoices",
          "value": "List Incoming Invoices",
          "action": "List incoming invoices",
          "description": "Get a list of incoming invoices for an organisation"
        },
        {
          "name": "List Outgoing Invoices",
          "value": "List Outgoing Invoices",
          "action": "List outgoing invoices",
          "description": "Get a list of outgoing invoices for an organisation"
        },
        {
          "name": "List Own Extensions",
          "value": "List Own Extensions",
          "action": "List own extensions",
          "description": "Get a list of extensions owned by an organisation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Contributor"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create Invite",
      "options": [
        {
          "name": "Create Invite",
          "value": "Create Invite",
          "action": "Create an organisation invite",
          "description": "Invite a user to an organisation"
        },
        {
          "name": "Delete Membership",
          "value": "Delete Membership",
          "action": "Delete an organisation membership",
          "description": "Remove a member from an organisation"
        },
        {
          "name": "List",
          "value": "List",
          "action": "List organisations",
          "description": "Get all organisations the authenticated user has access to"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Organisation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Create",
      "options": [
        {
          "name": "Create",
          "value": "Create",
          "action": "Create and link subdomain",
          "description": "Create a subdomain and link it to an app installation"
        },
        {
          "name": "Check If Registrable",
          "value": "Check If Registrable",
          "action": "Check if domain is registrable",
          "description": "Check whether a domain name is available for registration"
        },
        {
          "name": "Set Target",
          "value": "Set Target",
          "action": "Set target installation for domain",
          "description": "Set the target app installation for a domain"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Domain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Copy MySQL Database",
      "options": [
        {
          "name": "Copy MySQL Database",
          "value": "Copy MySQL Database",
          "action": "Copy a MySQL database",
          "description": "Copy a MySQL database into a new database with its own user"
        },
        {
          "name": "Create MySQL Database",
          "value": "Create MySQL Database",
          "action": "Create a MySQL database",
          "description": "Create a new MySQL database with an initial user in a project"
        },
        {
          "name": "Delete MySQL Database",
          "value": "Delete MySQL Database",
          "action": "Delete a MySQL database",
          "description": "Delete an existing MySQL database"
        },
        {
          "name": "Get MySQL Database",
          "value": "Get MySQL Database",
          "action": "Get a MySQL database",
          "description": "Get details of a specific MySQL database"
        },
        {
          "name": "List MySQL Databases",
          "value": "List MySQL Databases",
          "action": "List all MySQL databases",
          "description": "Get a list of all MySQL databases in a project"
        },
        {
          "name": "List MySQL Versions",
          "value": "List MySQL Versions",
          "action": "List MySQL versions",
          "description": "Get a list of available MySQL versions"
        },
        {
          "name": "Create Redis Database",
          "value": "Create Redis Database",
          "action": "Create Redis database",
          "description": "Create a new Redis database in a project"
        },
        {
          "name": "Delete Redis Database",
          "value": "Delete Redis Database",
          "action": "Delete Redis database",
          "description": "Delete an existing Redis database"
        },
        {
          "name": "Get Redis Database",
          "value": "Get Redis Database",
          "action": "Get a Redis database",
          "description": "Get details of a specific Redis database"
        },
        {
          "name": "List Redis Databases",
          "value": "List Redis Databases",
          "action": "List all Redis databases",
          "description": "Get a list of all Redis databases in a project"
        },
        {
          "name": "List Redis Versions",
          "value": "List Redis Versions",
          "action": "List Redis versions",
          "description": "Get a list of available Redis versions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Database"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Terminate",
      "options": [
        {
          "name": "Terminate",
          "value": "Terminate",
          "action": "Schedule the termination of a contract",
          "description": "Schedule the termination of a contract"
        },
        {
          "name": "Terminate Item",
          "value": "Terminate Item",
          "action": "Schedule the termination of a contract item",
          "description": "Schedule the termination of a contract item"
        },
        {
          "name": "Get Invoice",
          "value": "Get Invoice",
          "action": "Get an invoice",
          "description": "Get details of an invoice"
        },
        {
          "name": "List Invoices",
          "value": "List Invoices",
          "action": "List invoices",
          "description": "Get a list of invoices for an organisation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "Contract"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "Create",
      "action": "Create a project on a server",
      "description": "Create a new project on a server",
      "resource": "Project"
    },
    {
      "name": "Create SFTP User",
      "value": "Create SFTP User",
      "action": "Create an SFTP user",
      "description": "Create an SFTP user for a project",
      "resource": "Project"
    },
    {
      "name": "Create SSH User",
      "value": "Create SSH User",
      "action": "Create an SSH user",
      "description": "Create an SSH user for a project",
      "resource": "Project"
    },
    {
      "name": "Delete SFTP User",
      "value": "Delete SFTP User",
      "action": "Delete an SFTP user",
      "description": "Delete an SFTP user by ID",
      "resource": "Project"
    },
    {
      "name": "Delete SSH User",
      "value": "Delete SSH User",
      "action": "Delete an SSH user",
      "description": "Delete an SSH user by ID",
      "resource": "Project"
    },
    {
      "name": "Delete",
      "value": "Delete",
      "action": "Delete a project",
      "description": "Delete an existing project",
      "resource": "Project"
    },
    {
      "name": "Get",
      "value": "Get",
      "action": "Get a project",
      "description": "Get details of a specific project",
      "resource": "Project"
    },
    {
      "name": "Get SFTP User",
      "value": "Get SFTP User",
      "action": "Get an SFTP user",
      "description": "Get details of a specific SFTP user",
      "resource": "Project"
    },
    {
      "name": "Get SSH User",
      "value": "Get SSH User",
      "action": "Get an SSH user",
      "description": "Get details of a specific SSH user",
      "resource": "Project"
    },
    {
      "name": "Get Storage Statistics",
      "value": "Get Storage Statistics",
      "action": "Get storage statistics",
      "description": "Get storage usage statistics for a project",
      "resource": "Project"
    },
    {
      "name": "List memberships",
      "value": "List memberships",
      "action": "List all memberships",
      "description": "Get a list of all project memberships",
      "resource": "Project"
    },
    {
      "name": "List SFTP Users",
      "value": "List SFTP Users",
      "action": "List all SFTP users",
      "description": "Get a list of all SFTP users in a project",
      "resource": "Project"
    },
    {
      "name": "List SSH Users",
      "value": "List SSH Users",
      "action": "List all SSH users",
      "description": "Get a list of all SSH users in a project",
      "resource": "Project"
    },
    {
      "name": "List",
      "value": "List",
      "action": "List all projects",
      "description": "Get a list of all projects",
      "resource": "Project"
    },
    {
      "name": "List Invites",
      "value": "List Invites",
      "action": "List all invites",
      "description": "Get a list of all project invitations",
      "resource": "Project"
    },
    {
      "name": "Delete Membership",
      "value": "Delete Membership",
      "action": "Delete a project membership",
      "description": "Remove a member from a project",
      "resource": "Project"
    },
    {
      "name": "Get Membership",
      "value": "Get Membership",
      "action": "Get a project membership",
      "description": "Get details of a specific project membership",
      "resource": "Project"
    },
    {
      "name": "Accept Invite",
      "value": "Accept Invite",
      "action": "Accept an invite to a project",
      "description": "Accept a project invitation using an invitation token",
      "resource": "Project"
    },
    {
      "name": "Create Invite",
      "value": "Create Invite",
      "action": "Create an invite to a project",
      "description": "Create a project invitation",
      "resource": "Project"
    },
    {
      "name": "Update Storage Notification Threshold",
      "value": "Update Storage Notification Threshold",
      "action": "Update storage notification threshold",
      "description": "Update the storage notification threshold of a project",
      "resource": "Project"
    },
    {
      "name": "Install",
      "value": "Install",
      "action": "Install an app",
      "description": "Install an app on a project",
      "resource": "App"
    },
    {
      "name": "Uninstall",
      "value": "Uninstall",
      "action": "Uninstall an app",
      "description": "Remove an app installation",
      "resource": "App"
    },
    {
      "name": "List",
      "value": "List",
      "action": "List all installed apps",
      "description": "Get a list of all installed apps",
      "resource": "App"
    },
    {
      "name": "Update Installation Versions",
      "value": "Update Installation Versions",
      "action": "Update software versions",
      "description": "Update the app or system software versions of an installation",
      "resource": "App"
    },
    {
      "name": "Get",
      "value": "Get",
      "action": "Get a server",
      "description": "Get details of a specific server",
      "resource": "Server"
    },
    {
      "name": "Get Storage Statistics",
      "value": "Get Storage Statistics",
      "action": "Get storage statistics",
      "description": "Get storage usage statistics for a server",
      "resource": "Server"
    },
    {
      "name": "List",
      "value": "List",
      "action": "List all servers",
      "description": "Get a list of all servers",
      "resource": "Server"
    },
    {
      "name": "Update Storage Notification Threshold",
      "value": "Update Storage Notification Threshold",
      "action": "Update storage notification threshold",
      "description": "Update the storage notification threshold of a server",
      "resource": "Server"
    },
    {
      "name": "Create",
      "value": "Create",
      "action": "Create a ticket",
      "description": "Create a support ticket in a conversation category",
      "resource": "Support"
    },
    {
      "name": "Create Message",
      "value": "Create Message",
      "action": "Send a message",
      "description": "Send a new message in a conversation",
      "resource": "Support"
    },
    {
      "name": "Get",
      "value": "Get",
      "action": "Get a conversation",
      "description": "Get details of a specific conversation",
      "resource": "Support"
    },
    {
      "name": "List",
      "value": "List",
      "action": "List conversations",
      "description": "Get all conversations the authenticated user has created or has access to",
      "resource": "Support"
    },
    {
      "name": "List Messages",
      "value": "List Messages",
      "action": "List conversation messages",
      "description": "Get all messages of a conversation",
      "resource": "Support"
    },
    {
      "name": "List Contract Partners",
      "value": "List Contract Partners",
      "action": "List contract partners of a contributor",
      "description": "Get a list of contract partners associated with a contributor",
      "resource": "Contributor"
    },
    {
      "name": "List Incoming Invoices",
      "value": "List Incoming Invoices",
      "action": "List incoming invoices",
      "description": "Get a list of incoming invoices for an organisation",
      "resource": "Contributor"
    },
    {
      "name": "List Outgoing Invoices",
      "value": "List Outgoing Invoices",
      "action": "List outgoing invoices",
      "description": "Get a list of outgoing invoices for an organisation",
      "resource": "Contributor"
    },
    {
      "name": "List Own Extensions",
      "value": "List Own Extensions",
      "action": "List own extensions",
      "description": "Get a list of extensions owned by an organisation",
      "resource": "Contributor"
    },
    {
      "name": "Create Invite",
      "value": "Create Invite",
      "action": "Create an organisation invite",
      "description": "Invite a user to an organisation",
      "resource": "Organisation"
    },
    {
      "name": "Delete Membership",
      "value": "Delete Membership",
      "action": "Delete an organisation membership",
      "description": "Remove a member from an organisation",
      "resource": "Organisation"
    },
    {
      "name": "List",
      "value": "List",
      "action": "List organisations",
      "description": "Get all organisations the authenticated user has access to",
      "resource": "Organisation"
    },
    {
      "name": "Create",
      "value": "Create",
      "action": "Create and link subdomain",
      "description": "Create a subdomain and link it to an app installation",
      "resource": "Domain"
    },
    {
      "name": "Check If Registrable",
      "value": "Check If Registrable",
      "action": "Check if domain is registrable",
      "description": "Check whether a domain name is available for registration",
      "resource": "Domain"
    },
    {
      "name": "Set Target",
      "value": "Set Target",
      "action": "Set target installation for domain",
      "description": "Set the target app installation for a domain",
      "resource": "Domain"
    },
    {
      "name": "Copy MySQL Database",
      "value": "Copy MySQL Database",
      "action": "Copy a MySQL database",
      "description": "Copy a MySQL database into a new database with its own user",
      "resource": "Database"
    },
    {
      "name": "Create MySQL Database",
      "value": "Create MySQL Database",
      "action": "Create a MySQL database",
      "description": "Create a new MySQL database with an initial user in a project",
      "resource": "Database"
    },
    {
      "name": "Delete MySQL Database",
      "value": "Delete MySQL Database",
      "action": "Delete a MySQL database",
      "description": "Delete an existing MySQL database",
      "resource": "Database"
    },
    {
      "name": "Get MySQL Database",
      "value": "Get MySQL Database",
      "action": "Get a MySQL database",
      "description": "Get details of a specific MySQL database",
      "resource": "Database"
    },
    {
      "name": "List MySQL Databases",
      "value": "List MySQL Databases",
      "action": "List all MySQL databases",
      "description": "Get a list of all MySQL databases in a project",
      "resource": "Database"
    },
    {
      "name": "List MySQL Versions",
      "value": "List MySQL Versions",
      "action": "List MySQL versions",
      "description": "Get a list of available MySQL versions",
      "resource": "Database"
    },
    {
      "name": "Create Redis Database",
      "value": "Create Redis Database",
      "action": "Create Redis database",
      "description": "Create a new Redis database in a project",
      "resource": "Database"
    },
    {
      "name": "Delete Redis Database",
      "value": "Delete Redis Database",
      "action": "Delete Redis database",
      "description": "Delete an existing Redis database",
      "resource": "Database"
    },
    {
      "name": "Get Redis Database",
      "value": "Get Redis Database",
      "action": "Get a Redis database",
      "description": "Get details of a specific Redis database",
      "resource": "Database"
    },
    {
      "name": "List Redis Databases",
      "value": "List Redis Databases",
      "action": "List all Redis databases",
      "description": "Get a list of all Redis databases in a project",
      "resource": "Database"
    },
    {
      "name": "List Redis Versions",
      "value": "List Redis Versions",
      "action": "List Redis versions",
      "description": "Get a list of available Redis versions",
      "resource": "Database"
    },
    {
      "name": "Terminate",
      "value": "Terminate",
      "action": "Schedule the termination of a contract",
      "description": "Schedule the termination of a contract",
      "resource": "Contract"
    },
    {
      "name": "Terminate Item",
      "value": "Terminate Item",
      "action": "Schedule the termination of a contract item",
      "description": "Schedule the termination of a contract item",
      "resource": "Contract"
    },
    {
      "name": "Get Invoice",
      "value": "Get Invoice",
      "action": "Get an invoice",
      "description": "Get details of an invoice",
      "resource": "Contract"
    },
    {
      "name": "List Invoices",
      "value": "List Invoices",
      "action": "List invoices",
      "description": "Get a list of invoices for an organisation",
      "resource": "Contract"
    }
  ]

npm_readme:
  # n8n-nodes-mittwald

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

  [mittwald](https://www.mittwald.de/) is a German hosting and cloud service provider. This node allows you to automate interactions with mittwald resources such as projects, Redis databases, applications, and more.

  [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

  This node provides integration with the [mittwald API v2](https://developer.mittwald.de/). The following resources and operations are available:

  ### AI Hosting

  - **Create a project key**: Create a new AI hosting API key scoped to a project (parameters: Project, Name, optional Create Web UI Container)
  - **Delete a project key**: Delete an AI hosting key from a project (parameters: Project, Key ID)
  - **Get project usage**: Get the AI hosting plan and usage details of a project (parameter: Project)
  - **Create a customer key**: Create a new AI hosting API key scoped to a customer (parameters: Customer ID, Name, optional Project ID, optional Create Web UI Container)
  - **Delete a customer key**: Delete an AI hosting key from a customer (parameters: Customer ID, Key ID)
  - **Get customer usage**: Get the AI hosting plan and usage details of a customer (parameter: Customer ID)

  ### App

  - **Install an app**: Install an app on a project
  - **List all installed apps**: Get a list of all installed apps
  - **Uninstall an app**: Remove an app installation
  - **Update software versions**: Update the app or system software versions of an installation
  - **List all available apps**: Get a list of all available apps
  - **Get an app**: Get details of a specific app (parameter: App)
  - **List app versions**: Get a list of available versions for an app (parameter: App)
  - **Get an app version**: Get details of a specific app version (parameters: App, App Version)
  - **Get an app installation**: Get details of a specific app installation (parameter: App Installation)
  - **List app installations of a project**: Get a list of app installations belonging to a project (parameter: Project)
  - **Copy an app installation**: Request a copy of an app installation into another project (parameters: App Installation, target Project, Name, optional Installation Path)
  - **List system softwares**: Get a list of available system software packages
  - **Get a system software**: Get details of a specific system software (parameter: searchable System Software selector)
  - **List system software versions**: Get a list of versions for a system software (parameter: searchable System Software selector)
  - **Get a system software version**: Get details of a specific system software version (parameters: searchable System Software selector, System Software Version ID)

  ### Backup

  - **Create**: Create a manual backup of a project (parameters: Project, Description, Expiration Time)
  - **List**: Get a list of backups belonging to a project (parameter: Project)
  - **Get**: Get details of a specific backup (parameter: Backup ID)
  - **Create export**: Request an export download for a backup (parameters: Backup ID, Format)

  ### Contributor

  - **List incoming invoices**: Get a list of incoming invoices for an organisation
  - **List outgoing invoices**: Get a list of outgoing invoices for an organisation
  - **List own extensions**: Get a list of extensions owned by an organisation
  - **List contract partners**: Get a list of contract partners associated with a contributor

  ### Organisation

  - **List organisations**: Get all organisations the authenticated user has access to
  - **Create an invite**: Invite a user to an organisation (parameters: Organisation, Email Address, Role, optional Message)
  - **Delete a membership**: Remove a member from an organisation (parameter: Membership ID)

  ### Contract

  - **Terminate a contract**: Schedule the termination of a contract (parameters: Contract ID, optional Target Date, optional Reason)
  - **Terminate a contract item**: Schedule the termination of a contract item (parameters: Contract ID, Contract Item ID, optional Target Date, optional Reason)
  - **Get an invoice**: Get details of an invoice (parameter: Invoice ID)
  - **List invoices**: Get a list of invoices for a customer (parameter: Customer ID)

  ### Container

  - **Create service**: Create a service in a project (parameters: Project, Service Name, Image, Description)
  - **Update service**: Update a service in a project (parameters: Project, Service Name)
  - **Delete service**: Delete a service from a project (parameters: Project, Service Name)
  - **Service action**: Run an action on a service (parameters: Project, Service ID, Action)
  - **Get service logs**: Get logs of a service (parameters: Project, Service ID, optional Tail)
  - **List services**: Get a list of services in a project (parameter: Project)
  - **List volumes**: Get a list of volumes in a project (parameter: Project)
  - **List registries**: Get a list of container registries in a project (parameter: Project)
  - **Create registry**: Create a container registry (parameters: Project, Hostname / URI, Description)
  - **Update registry**: Update a container registry (parameters: Project, Registry)
  - **Delete registry**: Delete a container registry (parameters: Project, Registry)

  ### Conversation

  - **Create a ticket**: Create a support ticket in a conversation category
  - **List**: Get all conversations the authenticated user has created or has access to
  - **Get**: Get details of a specific conversation
  - **List messages**: Get all messages of a conversation (parameter: Conversation)
  - **Create a message**: Send a new message in a conversation (parameters: Conversation, Message)

  ### Cronjob

  - **Create a cronjob**: Create a new cronjob in a project (parameters: Project, App Installation, Description, Interval, Active, Timeout, Email, Destination)
  - **List all cronjobs**: Get a list of all cronjobs in a project
  - **Get a cronjob**: Get details of a specific cronjob
  - **Delete a cronjob**: Delete an existing cronjob
  - **Trigger a cronjob**: Manually trigger an execution of a cronjob
  - **List cronjob executions**: Get a list of executions for a cronjob
  - **Get a cronjob execution**: Get details of a specific cronjob execution

  ### Project

  - **Create a project on a server**: Create a new project on a server
  - **Create an SSH user**: Create an SSH user for a project (parameters: Project, Name, Password, optional Expires At)
  - **Create an SFTP user**: Create an SFTP user for a project (parameters: Project, Name, Password, Access Level, Directories, optional Expires At)
  - **Delete an SSH user**: Delete an SSH user from a project (parameter: SSH User ID)
  - **Delete an SFTP user**: Delete an SFTP user from a project (parameter: SFTP User ID)
  - **Get an SSH user**: Get details of a specific SSH user (parameter: SSH User ID)
  - **Get an SFTP user**: Get details of a specific SFTP user (parameter: SFTP User ID)
  - **Delete a project**: Delete an existing project
  - **Get a project**: Get details of a specific project
  - **Get storage statistics**: Get storage usage statistics for a project
  - **Update storage notification threshold**: Update the storage notification threshold of a project
  - **List all SSH users**: Get a list of all SSH users in a project (parameter: Project)
  - **List all SFTP users**: Get a list of all SFTP users in a project (parameter: Project)
  - **List all invites**: Get a list of all project invitations (parameter: Project)
  - **List all projects**: Get a list of all projects
  - **Accept an invite to a project**: Accept a project invitation using an invitation token
  - **Create an invite to a project**: Create a project invitation
  - **Get a project membership**: Get details of a specific project membership
  - **Delete a project membership**: Remove a member from a project

  ### Database

  - **List all Redis databases**: Get a list of all Redis databases in a project
  - **Create Redis database**: Create a new Redis database in a project
  - **Delete Redis database**: Delete an existing Redis database
  - **Get a Redis database**: Get details of a specific Redis database
  - **List all MySQL databases**: Get a list of all MySQL databases in a project (parameter: Project)
  - **Create MySQL database**: Create a new MySQL database with an initial user in a project (parameters: Project, Name, Version, Character Set, Collation, User Password, User Access Level, optional User External Access, optional User Description)
  - **Get a MySQL database**: Get details of a specific MySQL database (parameter: MySQL Database ID)
  - **Delete MySQL database**: Delete an existing MySQL database (parameter: MySQL Database ID)
  - **Copy MySQL database**: Copy a MySQL database with its own initial user (parameters: source MySQL Database ID, Name, User Password, optional User External Access; the copied user is created with full access)
  - **List MySQL versions**: Get a list of available MySQL versions
  - **List Redis versions**: Get a list of available Redis versions

  ### Server

  - **Get a server**: Get details of a specific server
  - **Get storage statistics**: Get storage usage statistics for a server
  - **List all servers**: Get a list of all servers
  - **Update storage notification threshold**: Update the storage notification threshold of a server

  ### Domain

  - **Create and link subdomain**: Create a subdomain and link it to an app installation
  - **Check if domain is registrable**: Check whether a domain name is available for registration
  - **Set target installation for domain**: Set the target app installation for a domain
  - **List domains**: Get a list of all domains
  - **Get a domain**: Get details of a specific domain (parameter: Domain ID)
  - **Delete a domain**: Delete a domain (parameter: Domain ID)
  - **Update nameservers**: Update the nameservers of a domain (parameters: Domain ID, Nameservers)
  - **Update a contact**: Update one of the four domain contacts (parameters: Domain ID, Contact role, Contact body JSON)
  - **Schedule a deletion**: Schedule a domain for deletion at a target date (parameters: Domain ID, Deletion Date)
  - **Check transferability**: Check whether a domain can be transferred (parameter: Domain)
  - **Create an auth code**: Create an auth code for a domain transfer (parameter: Domain ID)
  - **Create a DNS zone**: Create a subordinate DNS zone under an existing parent zone (parameters: Name, Parent Zone ID)
  - **Get a DNS zone**: Get details of a specific DNS zone (parameter: DNS Zone ID)
  - **List DNS zones**: Get a list of DNS zones in a project (parameter: Project)
  - **Delete a DNS zone**: Delete a DNS zone (parameter: DNS Zone ID)
  - **Update a DNS record set**: Update a record set on a DNS zone (parameters: DNS Zone ID, Record Set type, Record Set body JSON)
  - **List ingresses**: Get a list of all ingresses
  - **Get an ingress**: Get details of a specific ingress (parameter: Ingress ID)
  - **Delete an ingress**: Delete an ingress (parameter: Ingress ID)
  - **Verify ingress ownership**: Trigger ownership verification for an ingress (parameter: Ingress ID)

  ### Mail

  - **Create a mail address**: Create a new mail address in a project (parameters: Project, Address, optional Password, optional Quota, optional Forward Addresses, optional Catch-All, optional Spam Protection, optional Auto Responder)
  - **List mail addresses by project**: Get a list of mail addresses in a project (parameter: Project)
  - **List mail addresses**: Get a list of all mail addresses the user has access to
  - **Get a mail address**: Get details of a specific mail address (parameter: Mail Address ID)
  - **Delete a mail address**: Delete a mail address (parameter: Mail Address ID)
  - **Update a mail address**: Update the local part of a mail address (parameters: Mail Address ID, Address)
  - **Update mail address autoresponder**: Update the auto responder of a mail address (parameters: Mail Address ID, Active, optional Message, optional Starts At, optional Expires At)
  - **Create a delivery box**: Create a delivery box in a project (parameters: Project, Description, Password)
  - **List delivery boxes**: Get a list of delivery boxes in a project (parameter: Project)
  - **Get a delivery box**: Get details of a specific delivery box (parameter: Delivery Box ID)
  - **Delete a delivery box**: Delete a delivery box (parameter: Delivery Box ID)

  ## Credentials

  To use this node, you need to authenticate with the mittwald API using an API key.

  ### Prerequisites

  - A mittwald account
  - An API key generated from your mittwald account settings

  ### Setting up credentials

  1. Log in to your mittwald account
  2. Navigate to your account settings
  3. Generate an API key
  4. In n8n, create new credentials of type "Mittwald API"
  5. Enter your API key

  ## Compatibility

  This node is tested with n8n Version 2.7.4.

  ## Usage

  1. Add the "Mittwald API" node to your workflow
  2. Set up credentials using your mittwald API key (API keys can be generated in the studio [here](https://studio.mittwald.de/app/profile/api-tokens))
  3. Select the desired resource and operation
  4. Configure the required parameters for the operation
  5. Execute the workflow to interact with the mittwald API and automate your tasks

  If you aren't familiar with n8n and creating workflows, you can find help here: [Try it out](https://docs.n8n.io/try-it-out/)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [mittwald API documentation](https://developer.mittwald.de/)
  - [mittwald API v2 Reference](https://developer.mittwald.de/docs/v2/api/intro/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of interactions with the Mittwald hosting and cloud service provider API v2, allowing management of projects, servers, databases, applications, and user accounts.","capabilities":["Install, list, and uninstall applications on projects","Update software versions for app or system installations","Manage incoming and outgoing invoices for organizations","List extensions owned by an organization","Create and manage support tickets in conversation categories","Create, list, delete, and get details of projects","Create, list, delete, and get details of SSH and SFTP users","Manage project memberships and invitations","Create, list, and delete Redis databases in projects","Get details and list servers"],"authentication":"API key required","commonUseCases":["Automating server provisioning and user management for hosting clients","Managing Redis database instances in cloud environments","Handling application deployments and version updates","Managing billing and invoice data for hosting organizations","Automating domain management and subdomain linking"],"limitations":["Requires a valid Mittwald account and API key","Only supports Mittwald API v2","Currently tested with n8n Version 2.7.4","Limited to Mittwald-specific resources (German hosting provider)"],"relatedNodes":["n8n-nodes-core.httpRequest","n8n-nodes-core.credentials"]}


node_type: n8n-nodes-wati.watiTrigger
package_name: n8n-nodes-wati
display_name: Wati Trigger
description: Trigger workflows on WhatsApp events via Wati — incoming messages, delivery updates, and more.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: nick-wati
author_github_url: https://github.com/nick-wati/
npm_package_name: n8n-nodes-wati
npm_version: 0.3.7
community_fetched_at: 2026-07-14T14:40:33.579Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-wati

  This is an [n8n](https://n8n.io/) community node for [Wati](https://www.wati.io/) (WhatsApp Team Inbox). It lets you automate WhatsApp messaging workflows using the Wati API.

  [Wati](https://www.wati.io/) is a WhatsApp Business API solution that enables businesses to communicate with customers at scale through WhatsApp.

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

  1. Go to **Settings → Community Nodes** in your n8n instance.
  2. Click **Install a community node**.
  3. Enter `n8n-nodes-wati` and click **Install**.

  ## Credentials

  You need a Wati account to use this node. To set up credentials:

  1. Log in to your [Wati Dashboard](https://app.wati.io/).
  2. Go to **API Docs** to find your **API Endpoint URL** and **Access Token**.
  3. In n8n, create a new **Wati API** credential and enter these values.

  ## Supported Operations

  ### Wati Node

  #### Message
  - **Send Text Message** — Send a text message to an active WhatsApp conversation (within 24h window)
  - **Send Button Message** — Send a message with interactive buttons
  - **Send List Message** — Send a message with a selectable list
  - **Get Messages** — Retrieve messages for a conversation by conversation ID
  - **Get Media** — Download a media file (image, video, document, audio, etc.) by message ID

  #### Template Message
  - **Send Template Message** — Send a template message (works outside the 24h window)
  - **Get Templates** — Get a list of available message templates

  #### Contact
  - **Get Contacts** — Get a list of contacts
  - **Get Contact Detail** — Get details of a specific contact by phone number
  - **Add Contact** — Add a new contact

  ### Wati Trigger

  - **Webhook Trigger** — Receive incoming messages and status updates via webhook

  ## Resources

  - [Sign up for Wati](https://auth.wati.io/register/?utm_source=n8n&utm_medium=referral&utm_campaign=n8n)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Automates WhatsApp messaging workflows by triggering on incoming events and enabling sending of various message types via the Wati API.","capabilities":["Send text messages (within 24h window)","Send button messages","Send list messages","Send template messages (outside 24h window)","Retrieve conversation messages","Download media files","Get available message templates","Manage contacts (add, retrieve details)","Webhook trigger for incoming messages and status updates"],"authentication":"API key required (Access Token and API Endpoint URL from Wati Dashboard)","commonUseCases":["Automated customer support responses on WhatsApp","Order status notifications via WhatsApp","Two-factor authentication verification messages","Marketing campaigns using interactive buttons or templates","Automated media delivery (images, documents)"],"limitations":["Text messages can only be sent within a 24-hour window of the conversation creation","Template messages are required for sending outside the 24-hour window"],"relatedNodes":["n8n-nodes-whatsapp.whatsappTrigger","n8n-nodes-whatsapp.whatsappSendTextMessage","n8n-nodes-whatsapp.whatsappSendTemplateMessage"]}


node_type: n8n-nodes-mercury.mercuryTrigger
package_name: n8n-nodes-mercury
display_name: Mercury Trigger
description: Starts the workflow when Mercury events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: cobrien704
author_github_url: https://github.com/MercuryTechnologies/
npm_package_name: n8n-nodes-mercury
npm_version: 0.1.2
community_fetched_at: 2026-07-14T14:40:33.579Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-mercury

  This is an n8n community node that provides webhook-based triggers for [Mercury](https://mercury.com) banking events. It lets you automatically start n8n workflows when transactions or account balances change.

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

  [Installation](#installation) |
  [Credentials](#credentials) |
  [Trigger Events](#trigger-events) |
  [Usage](#usage) |
  [Architecture](#architecture) |
  [Compatibility](#compatibility) |
  [Resources](#resources)

  ## Installation

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

  ## Credentials

  1. In Mercury, go to [Settings > API Tokens](https://app.mercury.com/settings/tokens).
  2. Click **Create token** and give it a name (e.g., "n8n").
  3. Copy the token — it's only shown once.
  4. In n8n, go to **Credentials > Add Credential** and search for **Mercury API**.
  5. Paste the token into the **API Token** field and save.

  ## Trigger Events

  The **Mercury** node starts your workflow when one of the following events occurs:

  | Trigger Type | Description |
  |---|---|
  | **Transaction Created** | A new transaction is created on any account |
  | **Transaction Settled** | A transaction status changes to `settled` |
  | **Transaction Failed** | A transaction status changes to `failed` |
  | **Transaction Cancelled** | A transaction status changes to `cancelled` |
  | **Transaction Updated** | Any update to a transaction (all status and metadata changes) |
  | **Account Balance Updated** | A checking or savings account balance changes |

  ## Usage

  1. In n8n, create a new workflow.
  2. Add the **Mercury** node (search for "Mercury" in the nodes panel).
  3. Select your **Mercury API** credential.
  4. Choose a **Trigger Type** from the dropdown (e.g., "Transaction Created").
  5. Connect any downstream nodes to process the data (e.g., send a Slack message, update a spreadsheet).
  6. **Activate** the workflow.

  Once active, the workflow runs automatically whenever the selected event occurs in Mercury. The trigger outputs the full resource — for transaction events, this is the complete [transaction object](https://docs.mercury.com/reference/gettransaction); for balance events, the complete [account object](https://docs.mercury.com/reference/getaccount).

  To stop receiving events, deactivate the workflow. The webhook is cleaned up automatically.

  ## Architecture

  This node uses Mercury's [webhook API](https://docs.mercury.com/reference/createwebhook) with automatic lifecycle management:

  - **Activate workflow** — n8n registers a webhook with Mercury for the selected event type.
  - **Receive event** — Mercury sends a webhook notification. The node verifies the HMAC-SHA256 signature, then fetches the full resource (transaction or account) from the Mercury API.
  - **Deactivate workflow** — n8n deregisters the webhook from Mercury.

  You don't need to create or manage webhooks manually. The node handles registration and cleanup.

  All incoming webhooks are verified using HMAC-SHA256 signatures (`Mercury-Signature` header). Webhooks with missing, invalid, or expired (>5 minutes) signatures are rejected.

  ## Compatibility

  Requires **n8n >= 1.60.0**.

  ## Resources

  - [Mercury API Documentation](https://docs.mercury.com/reference/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Community Nodes Installation Guide](https://docs.n8n.io/integrations/community-nodes/installation/)

ai_documentation_summary:
  {"purpose":"Automatically triggers n8n workflows when specific banking events occur in Mercury, such as transaction status changes or account balance updates.","capabilities":["Monitor for Transaction Created events","Monitor for Transaction Settled events","Monitor for Transaction Failed events","Monitor for Transaction Cancelled events","Monitor for Transaction Updated events","Monitor for Account Balance Updated events","Automatic HMAC-SHA256 signature verification","Automatic webhook registration and deregistration","Output full transaction or account resource objects"],"authentication":"API Token (Mercury API Token)","commonUseCases":["Automated expense tracking and categorization","Real-time balance monitoring alerts","Automated bookkeeping entry creation","Spending limit breach notifications"],"limitations":["Requires n8n version 1.60.0 or higher","Webhook signatures expire after 5 minutes if not verified","Manual webhook management is not required but the node depends on Mercury's webhook API"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-mercury.mercuryWebhook"]}


node_type: @crowdin/n8n-nodes-crowdin.crowdinFileBasedTrigger
package_name: @crowdin/n8n-nodes-crowdin
display_name: Crowdin (File-Based) Trigger
description: Starts the workflow when crowdin.com file-based project events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: taras.prosvirov
author_github_url: https://github.com/crowdin/n8n-nodes-crowdin.git
npm_package_name: @crowdin/n8n-nodes-crowdin
npm_version: 0.18.0
community_fetched_at: 2026-07-14T14:40:33.581Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # @crowdin/n8n-nodes-crowdin

  [![npm](https://img.shields.io/npm/v/@crowdin/n8n-nodes-crowdin?logo=npm&cacheSeconds=1800)](https://www.npmjs.com/package/@crowdin/n8n-nodes-crowdin)
  [![npm](https://img.shields.io/npm/dt/@crowdin/n8n-nodes-crowdin?logo=npm&cacheSeconds=1800)](https://www.npmjs.com/package/@crowdin/n8n-nodes-crowdin)
  [![License](https://img.shields.io/github/license/crowdin/n8n-nodes-crowdin?cacheSeconds=3600)](https://github.com/crowdin/n8n-nodes-crowdin/blob/main/LICENSE)

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

  Crowdin is an AI-powered localization software designed for teams and businesses. It's a cloud-based solution that streamlines localization management for your product. With 700+ apps and integrations, Crowdin automates the translation process. Its AI translator provides accurate, context-aware translations that continuously improve based on your resources and feedback. Crowdin supports 300+ languages and enables continuous localization for software, mobile apps, websites, marketing content, and help centers.

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

  [Installation](#installation)  
  [Nodes](#nodes)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Workflow Templates](#workflow-templates)  
  [Resources](#resources)  

  ## Installation

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

  ## Nodes

  This package includes the following nodes:

  ### Action Nodes

  | Node | Description |
  |------|-------------|
  | **Crowdin (File-Based)** | Interact with Crowdin file-based projects on crowdin.com |
  | **Crowdin (String-Based)** | Interact with Crowdin string-based projects on crowdin.com |
  | **Crowdin Enterprise (File-Based)** | Interact with Crowdin Enterprise file-based projects |
  | **Crowdin Enterprise (String-Based)** | Interact with Crowdin Enterprise string-based projects |

  ### Trigger Nodes

  | Node | Description |
  |------|-------------|
  | **Crowdin (File-Based) Trigger** | Start workflows on file-based project events |
  | **Crowdin (String-Based) Trigger** | Start workflows on string-based project events |
  | **Crowdin Enterprise (File-Based) Trigger** | Start workflows on Enterprise file-based project events |
  | **Crowdin Enterprise (String-Based) Trigger** | Start workflows on Enterprise string-based project events |

  ## Operations

  ### Common Resources

  | Resource | Description |
  |----------|-------------|
  | **AI** | AI-powered features for translation assistance |
  | **Storage** | Upload files for localization, screenshots, glossaries, and TMs |
  | **Languages** | Access 300+ supported languages and their details |
  | **Source Files** | Manage source files, folders, and branches |
  | **Source Strings** | Manage text units for translation |
  | **String/Asset Translations** | Add, remove, and manage translations and approvals |
  | **String/Asset Comments** | Manage comments and issues on strings |
  | **Screenshots** | Provide visual context for translators |
  | **Glossaries** | Maintain terminology consistency |
  | **Translation Memory** | Reuse previous translations |
  | **Machine Translation Engines** | Configure MT providers (Google, DeepL, etc.) |
  | **Translation Status** | Track localization progress |
  | **Reports** | Generate cost estimates and translation reports |
  | **Users** | Get user profile information |
  | **Webhooks** | Configure project-level webhooks |
  | **Organization Webhooks** | Configure account-level webhooks |
  | **Applications** | Manage Crowdin App integrations |
  | **Bundles** | Group files for export |
  | **Dictionaries** | Manage spell-checker word lists |
  | **Distributions** | Configure content delivery |
  | **Labels** | Organize strings with labels |
  | **Notifications** | Manage notification settings |
  | **Security Logs** | Access audit logs |
  | **Tasks** | Create and manage translation tasks |

  ### Crowdin-Specific Resources

  | Resource | Description |
  |----------|-------------|
  | **Projects** | Manage localization projects |
  | **Translations** | Pre-translate and download translations |

  ### Crowdin Enterprise-Specific Resources

  | Resource | Description |
  |----------|-------------|
  | **Projects and Groups** | Manage projects and organizational groups |
  | **Workflows** | Configure translation workflow templates |
  | **Teams** | Manage team members and permissions |
  | **Vendors** | Manage translation vendor relationships |
  | **Clients** | Manage client organizations |
  | **Fields** | Configure custom fields |
  | **Organization** | Manage organization settings |
  | **External QA Checks** | Configure external quality assurance |
  | **Custom Spellcheckers** | Manage custom spell-check dictionaries |
  | **String Corrections** | Manage string correction suggestions |

  ### Trigger Events

  The trigger nodes support the following webhook events. For detailed payload structures, see the [Crowdin Webhooks Documentation](https://support.crowdin.com/developer/webhooks/#events).

  #### Account/Organization Events

  | Event | Crowdin | Enterprise | Description |
  |-------|:-------:|:----------:|-------------|
  | Project created | ✅ | ✅ | A project is created |
  | Project deleted | ✅ | ✅ | A project is deleted |
  | Group created | — | ✅ | A group is created |
  | Group deleted | — | ✅ | A group is deleted |

  #### Project Events

  | Event | Description |
  |-------|-------------|
  | Project fully translated | All files are translated into one of the target languages |
  | Project fully reviewed | Translations in all files are approved for one of the target languages |
  | Project successfully built | A project is built successfully |
  | Project QA check finished | QA check for all strings in the project is finished |
  | Exported translation updated | Final translation of a string is updated |

  #### File Events (File-Based Projects Only)

  | Event | Description |
  |-------|-------------|
  | File added | A new file is added to the project |
  | File updated | A file is updated |
  | File deleted | A file is deleted |
  | File reverted | A file is reverted to the previous revision |
  | File fully translated | A file is translated into one of the target languages |
  | File fully reviewed | Translations in a file are approved for one of the target languages |
  | File QA check finished | QA check for all strings in a file is finished |

  #### Source String Events

  | Event | Description |
  |-------|-------------|
  | Source string added | A new string is added to the project |
  | Source string updated | A string in the project is updated |
  | Source string deleted | A string is deleted |

  #### String Comment/Issue Events

  | Event | Description |
  |-------|-------------|
  | String comment/issue created | A comment or issue is added to the string |
  | String comment/issue updated | A comment or issue is updated |
  | String comment/issue deleted | A comment or issue is deleted |
  | String comment/issue restored | A comment or issue is restored |

  #### Suggested Translation Events

  | Event | Description |
  |-------|-------------|
  | Suggested translation added | A string in the project is translated |
  | Suggested translation updated | A translation for a string in the project is updated |
  | Suggested translation deleted | One of the translations is deleted |
  | Suggested translation approved | A translation for a string is approved |
  | Suggested translation disapproved | Approval for a previously added translation is removed |

  #### Task Events

  | Event | Description |
  |-------|-------------|
  | Task added | A task is added to the project |
  | Task status changed | A task status is changed |
  | Task updated | A task is updated |
  | Task deleted | A task is deleted |

  ## Credentials

  This node supports two authentication methods:

  ### OAuth2 (Recommended)

  1. Go to your [Crowdin OAuth Apps](https://crowdin.com/settings#oauth-apps) or [Crowdin Enterprise OAuth Apps](https://{your-organization}.crowdin.com/u/system-settings/oauth-apps)
  2. Create a new OAuth application
  3. Configure the redirect URI as provided by n8n
  4. Use the Client ID and Client Secret in n8n credentials
  5. Set the required scopes (e.g., `project`, `tm`, `glossary`)

  ### Personal Access Token

  1. Go to your [Crowdin API Settings](https://crowdin.com/settings#api-key) or [Crowdin Enterprise Access Tokens](https://{your-organization}.crowdin.com/u/user_settings/access-tokens)
  2. Create a new Personal Access Token
  3. Grant only the minimum required scopes for your workflow
  4. Copy the token and paste it into n8n credentials

  > 🔐 **Security Best Practice:** Follow the principle of least privilege - grant only the minimum scopes required for your workflow.

  ## Compatibility

  - **Minimum n8n version:** 1.0.0
  - **Tested with:** n8n 2.4.4

  ## Usage

  ### File-Based vs String-Based Projects

  Crowdin supports two types of projects:

  - **File-Based Projects:** Traditional localization workflow where you upload source files (JSON, XLIFF, Android XML, etc.) and download translated versions
  - **String-Based Projects:** Content is managed as individual strings without file structure, ideal for web applications and dynamic content

  Choose the appropriate node based on your project type.

  ### Crowdin vs Crowdin Enterprise

  - **Crowdin (crowdin.com):** For individuals and teams using the standard Crowdin platform
  - **Crowdin Enterprise:** For organizations with dedicated Crowdin Enterprise instances (custom domain: `{organization}.crowdin.com`)

  ### Example Workflow: Sync Translations

  1. Add a **Crowdin Trigger** node to listen for `file.translated` events
  2. Use the **Crowdin** node to build and download translations
  3. Connect to your deployment pipeline or storage

  ### Using with AI Agents

  All nodes in this package have `usableAsTool: true`, making them compatible with n8n's AI Agent nodes. You can use them as tools for AI-powered automation workflows.

  ## Workflow Templates

  This package includes ready-to-use workflow templates:

  | Template | Description |
  |----------|-------------|
  | **Crowdin AI Translation Slack Bot** | AI-powered translation assistant in Slack |
  | **Crowdin AI Translation Teams Bot** | AI-powered translation assistant in Microsoft Teams |
  | **Crowdin to JIRA** | Sync Crowdin issues to JIRA tickets |
  | **Crowdin to Linear** | Sync Crowdin issues to Linear issues |
  | **JIRA to Crowdin** | Create Crowdin tasks from JIRA tickets |
  | **Linear to Crowdin** | Create Crowdin tasks from Linear issues |

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Crowdin API documentation](https://support.crowdin.com/api/v2/)
  - [Crowdin Enterprise API documentation](https://support.crowdin.com/enterprise/api/)
  - [Crowdin Developer Portal](https://developer.crowdin.com/)
  - [Crowdin Help Center](https://support.crowdin.com/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"The Crowdin (File-Based) Trigger node starts an n8n workflow automatically when specific file-based project events occur in a Crowdin.com localization project.","capabilities":["Monitors Crowdin file-based projects for events","Triggers workflow execution on project creation","Triggers workflow execution on project deletion","Triggers workflow execution on full project translation completion","Triggers workflow execution on full project review/approval","Triggers workflow execution on successful project build","Triggers workflow execution on completed QA checks","Triggers workflow execution on exported translation updates","Supports both Crowdin and Crowdin Enterprise environments"],"authentication":"OAuth2 (via Crowdin credentials)","commonUseCases":["Automatically start translation workflows when new files are added to a project","Notify team members when a project reaches 100% translation status","Initiate deployment pipelines after QA checks pass","Trigger notifications when projects are created or deleted","Start automated reporting when translations are finalized"],"limitations":["Only supports file-based projects (not string-based projects)","Does not support Crowdin Enterprise string-based projects","Requires valid OAuth2 credentials configured in n8n"],"relatedNodes":["Crowdin (File-Based)","Crowdin (String-Based)","Crowdin Enterprise (File-Based)","Crowdin Enterprise (String-Based)","Crowdin (File-Based) Trigger"]}


