Danger
he/him 🎲 Boardgames and role-play addicted 📸 Love snapping pictures 🪴 Plant dad 👨💻 Software Engineer made in Italy
Templates by Danger
Search and download torrents using transmission-daemon
Ok google download "movie name" I develop this automation to improve my quality of life in handling torrents in my media-center. Goal Automate the search operations of a movie based on its name and trigger a download using your transmission-daemon. Setup Prerequisite Transmission daemon up and running and its authentication method N8N configured self-hosted or with the possibility to add npm package better with docker-compose.yaml Telegram bot credential [optional] Configuration Create a folder where your docker-compose.yaml belongs n8n_dir and proceed in installing the node package. bash cd ~/n8n_dir npm i torrent-search-api Configuring your docker-compose.yaml file this way. You must include all the dependencies of torrent-search-api. This will let you run the new torrent search node presented in this workflow. version: '3.3' services: n8n: container_name: n8n ports: '5678:5678' restart: always volumes: '~/n8n_dir/.n8n:/home/node/.n8n' '~/n8ndir/nodemodules/@tootallnate:/usr/local/lib/node_modules/@tootallnate' '~/n8ndir/nodemodules/accepts:/usr/local/lib/node_modules/accepts' '~/n8ndir/nodemodules/agent-base:/usr/local/lib/node_modules/agent-base' '~/n8ndir/nodemodules/ajv:/usr/local/lib/node_modules/ajv' '~/n8ndir/nodemodules/ansi-styles:/usr/local/lib/node_modules/ansi-styles' '~/n8ndir/nodemodules/asn1:/usr/local/lib/node_modules/asn1' '~/n8ndir/nodemodules/assert:/usr/local/lib/node_modules/assert' '~/n8ndir/nodemodules/assert-plus:/usr/local/lib/node_modules/assert-plus' '~/n8ndir/nodemodules/ast-types:/usr/local/lib/node_modules/ast-types' '~/n8ndir/nodemodules/asynckit:/usr/local/lib/node_modules/asynckit' '~/n8ndir/nodemodules/aws-sign2:/usr/local/lib/node_modules/aws-sign2' '~/n8ndir/nodemodules/aws4:/usr/local/lib/node_modules/aws4' '~/n8ndir/nodemodules/base64-js:/usr/local/lib/node_modules/base64-js' '~/n8ndir/nodemodules/batch:/usr/local/lib/node_modules/batch' '~/n8ndir/nodemodules/bcrypt-pbkdf:/usr/local/lib/node_modules/bcrypt-pbkdf' '~/n8ndir/nodemodules/bluebird:/usr/local/lib/node_modules/bluebird' '~/n8ndir/nodemodules/boolbase:/usr/local/lib/node_modules/boolbase' '~/n8ndir/nodemodules/brotli:/usr/local/lib/node_modules/brotli' '~/n8ndir/nodemodules/bytes:/usr/local/lib/node_modules/bytes' '~/n8ndir/nodemodules/caseless:/usr/local/lib/node_modules/caseless' '~/n8ndir/nodemodules/chalk:/usr/local/lib/node_modules/chalk' '~/n8ndir/nodemodules/cheerio:/usr/local/lib/node_modules/cheerio' '~/n8ndir/nodemodules/cloudscraper:/usr/local/lib/node_modules/cloudscraper' '~/n8ndir/nodemodules/co:/usr/local/lib/node_modules/co' '~/n8ndir/nodemodules/color-convert:/usr/local/lib/node_modules/color-convert' '~/n8ndir/nodemodules/color-name:/usr/local/lib/node_modules/color-name' '~/n8ndir/nodemodules/combined-stream:/usr/local/lib/node_modules/combined-stream' '~/n8ndir/nodemodules/component-emitter:/usr/local/lib/node_modules/component-emitter' '~/n8ndir/nodemodules/content-disposition:/usr/local/lib/node_modules/content-disposition' '~/n8ndir/nodemodules/content-type:/usr/local/lib/node_modules/content-type' '~/n8ndir/nodemodules/cookiejar:/usr/local/lib/node_modules/cookiejar' '~/n8ndir/nodemodules/core-util-is:/usr/local/lib/node_modules/core-util-is' '~/n8ndir/nodemodules/css-select:/usr/local/lib/node_modules/css-select' '~/n8ndir/nodemodules/css-what:/usr/local/lib/node_modules/css-what' '~/n8ndir/nodemodules/dashdash:/usr/local/lib/node_modules/dashdash' '~/n8ndir/nodemodules/data-uri-to-buffer:/usr/local/lib/node_modules/data-uri-to-buffer' '~/n8ndir/nodemodules/debug:/usr/local/lib/node_modules/debug' '~/n8ndir/nodemodules/deep-is:/usr/local/lib/node_modules/deep-is' '~/n8ndir/nodemodules/degenerator:/usr/local/lib/node_modules/degenerator' '~/n8ndir/nodemodules/delayed-stream:/usr/local/lib/node_modules/delayed-stream' '~/n8ndir/nodemodules/delegates:/usr/local/lib/node_modules/delegates' '~/n8ndir/nodemodules/depd:/usr/local/lib/node_modules/depd' '~/n8ndir/nodemodules/destroy:/usr/local/lib/node_modules/destroy' '~/n8ndir/nodemodules/dom-serializer:/usr/local/lib/node_modules/dom-serializer' '~/n8ndir/nodemodules/domelementtype:/usr/local/lib/node_modules/domelementtype' '~/n8ndir/nodemodules/domhandler:/usr/local/lib/node_modules/domhandler' '~/n8ndir/nodemodules/domutils:/usr/local/lib/node_modules/domutils' '~/n8ndir/nodemodules/ecc-jsbn:/usr/local/lib/node_modules/ecc-jsbn' '~/n8ndir/nodemodules/ee-first:/usr/local/lib/node_modules/ee-first' '~/n8ndir/nodemodules/emitter-component:/usr/local/lib/node_modules/emitter-component' '~/n8ndir/nodemodules/enqueue:/usr/local/lib/node_modules/enqueue' '~/n8ndir/nodemodules/enstore:/usr/local/lib/node_modules/enstore' '~/n8ndir/nodemodules/entities:/usr/local/lib/node_modules/entities' '~/n8ndir/nodemodules/error-inject:/usr/local/lib/node_modules/error-inject' '~/n8ndir/nodemodules/escape-html:/usr/local/lib/node_modules/escape-html' '~/n8ndir/nodemodules/escape-string-regexp:/usr/local/lib/node_modules/escape-string-regexp' '~/n8ndir/nodemodules/escodegen:/usr/local/lib/node_modules/escodegen' '~/n8ndir/nodemodules/esprima:/usr/local/lib/node_modules/esprima' '~/n8ndir/nodemodules/estraverse:/usr/local/lib/node_modules/estraverse' '~/n8ndir/nodemodules/esutils:/usr/local/lib/node_modules/esutils' '~/n8ndir/nodemodules/extend:/usr/local/lib/node_modules/extend' '~/n8ndir/nodemodules/extsprintf:/usr/local/lib/node_modules/extsprintf' '~/n8ndir/nodemodules/fast-deep-equal:/usr/local/lib/node_modules/fast-deep-equal' '~/n8ndir/nodemodules/fast-json-stable-stringify:/usr/local/lib/node_modules/fast-json-stable-stringify' '~/n8ndir/nodemodules/fast-levenshtein:/usr/local/lib/node_modules/fast-levenshtein' '~/n8ndir/nodemodules/file-uri-to-path:/usr/local/lib/node_modules/file-uri-to-path' '~/n8ndir/nodemodules/forever-agent:/usr/local/lib/node_modules/forever-agent' '~/n8ndir/nodemodules/form-data:/usr/local/lib/node_modules/form-data' '~/n8ndir/nodemodules/format-parser:/usr/local/lib/node_modules/format-parser' '~/n8ndir/nodemodules/formidable:/usr/local/lib/node_modules/formidable' '~/n8ndir/nodemodules/fs-extra:/usr/local/lib/node_modules/fs-extra' '~/n8ndir/nodemodules/ftp:/usr/local/lib/node_modules/ftp' '~/n8ndir/nodemodules/get-uri:/usr/local/lib/node_modules/get-uri' '~/n8ndir/nodemodules/getpass:/usr/local/lib/node_modules/getpass' '~/n8ndir/nodemodules/graceful-fs:/usr/local/lib/node_modules/graceful-fs' '~/n8ndir/nodemodules/har-schema:/usr/local/lib/node_modules/har-schema' '~/n8ndir/nodemodules/har-validator:/usr/local/lib/node_modules/har-validator' '~/n8ndir/nodemodules/has-flag:/usr/local/lib/node_modules/has-flag' '~/n8ndir/nodemodules/htmlparser2:/usr/local/lib/node_modules/htmlparser2' '~/n8ndir/nodemodules/http-context:/usr/local/lib/node_modules/http-context' '~/n8ndir/nodemodules/http-errors:/usr/local/lib/node_modules/http-errors' '~/n8ndir/nodemodules/http-incoming:/usr/local/lib/node_modules/http-incoming' '~/n8ndir/nodemodules/http-outgoing:/usr/local/lib/node_modules/http-outgoing' '~/n8ndir/nodemodules/http-proxy-agent:/usr/local/lib/node_modules/http-proxy-agent' '~/n8ndir/nodemodules/http-signature:/usr/local/lib/node_modules/http-signature' '~/n8ndir/nodemodules/https-proxy-agent:/usr/local/lib/node_modules/https-proxy-agent' '~/n8ndir/nodemodules/iconv-lite:/usr/local/lib/node_modules/iconv-lite' '~/n8ndir/nodemodules/inherits:/usr/local/lib/node_modules/inherits' '~/n8ndir/nodemodules/ip:/usr/local/lib/node_modules/ip' '~/n8ndir/nodemodules/is-browser:/usr/local/lib/node_modules/is-browser' '~/n8ndir/nodemodules/is-typedarray:/usr/local/lib/node_modules/is-typedarray' '~/n8ndir/nodemodules/is-url:/usr/local/lib/node_modules/is-url' '~/n8ndir/nodemodules/isarray:/usr/local/lib/node_modules/isarray' '~/n8ndir/nodemodules/isobject:/usr/local/lib/node_modules/isobject' '~/n8ndir/nodemodules/isstream:/usr/local/lib/node_modules/isstream' '~/n8ndir/nodemodules/jsbn:/usr/local/lib/node_modules/jsbn' '~/n8ndir/nodemodules/json-schema:/usr/local/lib/node_modules/json-schema' '~/n8ndir/nodemodules/json-schema-traverse:/usr/local/lib/node_modules/json-schema-traverse' '~/n8ndir/nodemodules/json-stringify-safe:/usr/local/lib/node_modules/json-stringify-safe' '~/n8ndir/nodemodules/jsonfile:/usr/local/lib/node_modules/jsonfile' '~/n8ndir/nodemodules/jsprim:/usr/local/lib/node_modules/jsprim' '~/n8ndir/nodemodules/koa-is-json:/usr/local/lib/node_modules/koa-is-json' '~/n8ndir/nodemodules/levn:/usr/local/lib/node_modules/levn' '~/n8ndir/nodemodules/lodash:/usr/local/lib/node_modules/lodash' '~/n8ndir/nodemodules/lodash.assignin:/usr/local/lib/node_modules/lodash.assignin' '~/n8ndir/nodemodules/lodash.bind:/usr/local/lib/node_modules/lodash.bind' '~/n8ndir/nodemodules/lodash.defaults:/usr/local/lib/node_modules/lodash.defaults' '~/n8ndir/nodemodules/lodash.filter:/usr/local/lib/node_modules/lodash.filter' '~/n8ndir/nodemodules/lodash.flatten:/usr/local/lib/node_modules/lodash.flatten' '~/n8ndir/nodemodules/lodash.foreach:/usr/local/lib/node_modules/lodash.foreach' '~/n8ndir/nodemodules/lodash.map:/usr/local/lib/node_modules/lodash.map' '~/n8ndir/nodemodules/lodash.merge:/usr/local/lib/node_modules/lodash.merge' '~/n8ndir/nodemodules/lodash.pick:/usr/local/lib/node_modules/lodash.pick' '~/n8ndir/nodemodules/lodash.reduce:/usr/local/lib/node_modules/lodash.reduce' '~/n8ndir/nodemodules/lodash.reject:/usr/local/lib/node_modules/lodash.reject' '~/n8ndir/nodemodules/lodash.some:/usr/local/lib/node_modules/lodash.some' '~/n8ndir/nodemodules/lru-cache:/usr/local/lib/node_modules/lru-cache' '~/n8ndir/nodemodules/media-typer:/usr/local/lib/node_modules/media-typer' '~/n8ndir/nodemodules/methods:/usr/local/lib/node_modules/methods' '~/n8ndir/nodemodules/mime:/usr/local/lib/node_modules/mime' '~/n8ndir/nodemodules/mime-db:/usr/local/lib/node_modules/mime-db' '~/n8ndir/nodemodules/mime-types:/usr/local/lib/node_modules/mime-types' '~/n8ndir/nodemodules/monotonic-timestamp:/usr/local/lib/node_modules/monotonic-timestamp' '~/n8ndir/nodemodules/ms:/usr/local/lib/node_modules/ms' '~/n8ndir/nodemodules/negotiator:/usr/local/lib/node_modules/negotiator' '~/n8ndir/nodemodules/netmask:/usr/local/lib/node_modules/netmask' '~/n8ndir/nodemodules/nth-check:/usr/local/lib/node_modules/nth-check' '~/n8ndir/nodemodules/oauth-sign:/usr/local/lib/node_modules/oauth-sign' '~/n8ndir/nodemodules/object-assign:/usr/local/lib/node_modules/object-assign' '~/n8ndir/nodemodules/on-finished:/usr/local/lib/node_modules/on-finished' '~/n8ndir/nodemodules/optionator:/usr/local/lib/node_modules/optionator' '~/n8ndir/nodemodules/pac-proxy-agent:/usr/local/lib/node_modules/pac-proxy-agent' '~/n8ndir/nodemodules/pac-resolver:/usr/local/lib/node_modules/pac-resolver' '~/n8ndir/nodemodules/parseurl:/usr/local/lib/node_modules/parseurl' '~/n8ndir/nodemodules/performance-now:/usr/local/lib/node_modules/performance-now' '~/n8ndir/nodemodules/prelude-ls:/usr/local/lib/node_modules/prelude-ls' '~/n8ndir/nodemodules/process-nextick-args:/usr/local/lib/node_modules/process-nextick-args' '~/n8ndir/nodemodules/promise-polyfill:/usr/local/lib/node_modules/promise-polyfill' '~/n8ndir/nodemodules/proxy-agent:/usr/local/lib/node_modules/proxy-agent' '~/n8ndir/nodemodules/proxy-from-env:/usr/local/lib/node_modules/proxy-from-env' '~/n8ndir/nodemodules/psl:/usr/local/lib/node_modules/psl' '~/n8ndir/nodemodules/punycode:/usr/local/lib/node_modules/punycode' '~/n8ndir/nodemodules/qs:/usr/local/lib/node_modules/qs' '~/n8ndir/nodemodules/querystring:/usr/local/lib/node_modules/querystring' '~/n8ndir/nodemodules/raw-body:/usr/local/lib/node_modules/raw-body' '~/n8ndir/nodemodules/readable-stream:/usr/local/lib/node_modules/readable-stream' '~/n8ndir/nodemodules/request:/usr/local/lib/node_modules/request' '~/n8ndir/nodemodules/request-promise:/usr/local/lib/node_modules/request-promise' '~/n8ndir/nodemodules/request-promise-core:/usr/local/lib/node_modules/request-promise-core' '~/n8ndir/nodemodules/request-x-ray:/usr/local/lib/node_modules/request-x-ray' '~/n8ndir/nodemodules/safe-buffer:/usr/local/lib/node_modules/safe-buffer' '~/n8ndir/nodemodules/safer-buffer:/usr/local/lib/node_modules/safer-buffer' '~/n8ndir/nodemodules/selectn:/usr/local/lib/node_modules/selectn' '~/n8ndir/nodemodules/setprototypeof:/usr/local/lib/node_modules/setprototypeof' '~/n8ndir/nodemodules/sliced:/usr/local/lib/node_modules/sliced' '~/n8ndir/nodemodules/smart-buffer:/usr/local/lib/node_modules/smart-buffer' '~/n8ndir/nodemodules/socks:/usr/local/lib/node_modules/socks' '~/n8ndir/nodemodules/socks-proxy-agent:/usr/local/lib/node_modules/socks-proxy-agent' '~/n8ndir/nodemodules/source-map:/usr/local/lib/node_modules/source-map' '~/n8ndir/nodemodules/sshpk:/usr/local/lib/node_modules/sshpk' '~/n8ndir/nodemodules/statuses:/usr/local/lib/node_modules/statuses' '~/n8ndir/nodemodules/stealthy-require:/usr/local/lib/node_modules/stealthy-require' '~/n8ndir/nodemodules/stream-to-string:/usr/local/lib/node_modules/stream-to-string' '~/n8ndir/nodemodules/string-format:/usr/local/lib/node_modules/string-format' '~/n8ndir/nodemodules/stringdecoder:/usr/local/lib/nodemodules/string_decoder' '~/n8ndir/nodemodules/superagent:/usr/local/lib/node_modules/superagent' '~/n8ndir/nodemodules/superagent-proxy:/usr/local/lib/node_modules/superagent-proxy' '~/n8ndir/nodemodules/supports-color:/usr/local/lib/node_modules/supports-color' '~/n8ndir/nodemodules/toidentifier:/usr/local/lib/node_modules/toidentifier' '~/n8ndir/nodemodules/torrent-search-api:/usr/local/lib/node_modules/torrent-search-api' '~/n8ndir/nodemodules/tough-cookie:/usr/local/lib/node_modules/tough-cookie' '~/n8ndir/nodemodules/tslib:/usr/local/lib/node_modules/tslib' '~/n8ndir/nodemodules/tunnel-agent:/usr/local/lib/node_modules/tunnel-agent' '~/n8ndir/nodemodules/tweetnacl:/usr/local/lib/node_modules/tweetnacl' '~/n8ndir/nodemodules/type-check:/usr/local/lib/node_modules/type-check' '~/n8ndir/nodemodules/type-is:/usr/local/lib/node_modules/type-is' '~/n8ndir/nodemodules/universalify:/usr/local/lib/node_modules/universalify' '~/n8ndir/nodemodules/unpipe:/usr/local/lib/node_modules/unpipe' '~/n8ndir/nodemodules/uri-js:/usr/local/lib/node_modules/uri-js' '~/n8ndir/nodemodules/util:/usr/local/lib/node_modules/util' '~/n8ndir/nodemodules/util-deprecate:/usr/local/lib/node_modules/util-deprecate' '~/n8ndir/nodemodules/uuid:/usr/local/lib/node_modules/uuid' '~/n8ndir/nodemodules/vary:/usr/local/lib/node_modules/vary' '~/n8ndir/nodemodules/verror:/usr/local/lib/node_modules/verror' '~/n8ndir/nodemodules/word-wrap:/usr/local/lib/node_modules/word-wrap' '~/n8ndir/nodemodules/wrap-fn:/usr/local/lib/node_modules/wrap-fn' '~/n8ndir/nodemodules/x-ray:/usr/local/lib/node_modules/x-ray' '~/n8ndir/nodemodules/x-ray-crawler:/usr/local/lib/node_modules/x-ray-crawler' '~/n8ndir/nodemodules/x-ray-parse:/usr/local/lib/node_modules/x-ray-parse' '~/n8ndir/nodemodules/x-ray-scraper:/usr/local/lib/node_modules/x-ray-scraper' '~/n8ndir/nodemodules/xregexp:/usr/local/lib/node_modules/xregexp' '~/n8ndir/nodemodules/yallist:/usr/local/lib/node_modules/yallist' '~/n8ndir/nodemodules/yieldly:/usr/local/lib/node_modules/yieldly' image: 'n8nio/n8n:latest-rpi' environment: N8NBASICAUTH_ACTIVE=true N8NBASICAUTH_USER=username N8NBASICAUTHPASSWORD=yoursecretn8npassword EXECUTIONSDATAPRUNE=true EXECUTIONSDATAMAX_AGE=120 EXECUTIONS_TIMEOUT=300 EXECUTIONSTIMEOUTMAX=500 GENERIC_TIMEZONE=Europe/Berlin NODEFUNCTIONALLOW_EXTERNAL=torrent-search-api Once configured this way run n8n and create a new workflow coping the one proposed. Configure workflow Transmission In order to send command to transmission you must validate the Basic Auth. To do so: open the Start download node and edit the Credentials. Perform the same operation choosing the new credentials also in node Start download new token. In this automation we call transmission twice due to a security protocol in transmission system that prevents single click commands to be triggered, performing the request twice bypasses this security mechanism. https://en.wikipedia.org/wiki/Cross-siterequestforgery We use the X-Transmission-Session-Id provided by the first request to authenticate the second request. Telegram In order to make the workflow work as expected you must create a telegram bot and configure the nodes (Torrent not found and Telegram1) to send your message once the workflow is complete. Here's an easy guide to follow https://docs.n8n.io/nodes/n8n-nodes-base.telegram/ In those nodes you also should configure the Chat ID, you may use your telegram username or use a bot to retrieve your id. You may chat with useridinfobot that sends you your id. Ok google automation Since right now we do not have a n8n client for mobile that can trigger automation using google assistant I decided to use an IFTTT automation to trigger the webhook. I connect my IFTTT account with google assistant and pick the trigger. Say a phrase with a text ingredient as in the picture below. And configure the trigger this way. scarica $ -> download $ or metti in download $ -> put in download $ or some other trigger you may want. Then configure your server to trigger the webhook of n8n. Conclusion In conclusion we provide a fully working automation that integrates in n8n a node library and provides an easy trigger to perform a complex operation. Security concern Giving the ability to trigger a download may be problematic for potential unwanted torrent malware download, so you may decide to authenticate the webhook request passing in the body another field with a shared token between the two endpoints. Moreover the torrent-search-api library and its dependencies have some vulnerability that you may want to avoid on your own media-center, this will hopefully be patched soon in a further release of the library. This is just an interesting proof of concept. Quality of the download You may want to introduce another block between torrent search and webhook trigger to search for a movie based on the words detected by google assistant, sometimes it misinterprets something and you may end up downloading potential copyrighted material. Please use this automation only for free and open source movies and music.
Automatically prune n8n execution history
Automated Execution Pruning This workflow is designed to help you manage and optimize your n8n instance by automatically pruning old workflow executions, ensuring a cleaner environment and improved performance. You can customize the retention period to suit your needs. --- Key Features: Configurable Retention Period: The workflow is preconfigured to delete workflow executions older than 10 days. You can easily adjust this duration by modifying the condition in the If node. Daily Automation: Using the Schedule Trigger, the workflow runs daily at the specified time (default: 4:44 AM), retrieving all workflow executions and identifying those that are older than the defined retention period. On-Demand Testing: The Manual Trigger allows you to test the workflow at any time, ensuring everything is working as expected. Decision Making: The If node evaluates each execution based on its start date and determines whether it should be deleted or retained. Execution Pruning: Delete Action: Executions meeting the criteria are removed via the Delete Execution node. No-Operation: Executions that don't meet the criteria remain untouched. --- Workflow Nodes: Manual Trigger: Enables on-demand testing of the workflow. Schedule Trigger: Runs the workflow daily at the configured time. n8n List Execution: Fetches all executions in your n8n instance. If Node: Compares the execution's start date with the configured retention period. Delete Execution: Deletes executions older than the specified retention period. No Operation: Serves as a placeholder for executions that don't meet the pruning criteria. --- How to Customize: Retention Period: Update the If node's condition to modify the retention period. For instance, change 10 24 60 60 1000 to the desired number of days in milliseconds. Schedule: Adjust the timing of the Schedule Trigger to match your preferred automation schedule. This workflow ensures your instance remains efficient by keeping only the relevant execution logs. Use it to maintain a streamlined and clutter-free environment effortlessly.
WebhookDocs: generate swagger preview of your active workflows
How it Works This meta-workflow is designed to intelligently scan all your active workflows in n8n, identify those that contain Webhook nodes, and automatically generate a Swagger (OpenAPI) specification based on them. The output Swagger document reflects all accessible endpoints from your Webhook nodes, making it easier to: Visualize your API structure Share your endpoints Integrate with tools like Postman or Swagger UI Enhanced Parameter Support If you want the Swagger to reflect request parameters (e.g., query or body fields), you can annotate your Webhook nodes using the Note section. When configured properly, these annotations enrich your Swagger documentation with parameter names, types, and descriptions. Setup Steps Add the WebhookDocs to n8n Import the WebhookDocs JSON file into your n8n instance. Activate the WebhookDocs (you can also use the test-endpoint) Annotate Webhook Nodes (Optional but Recommended) To enable parameter documentation, open the Note section of each Webhook node and add annotations in the following format: //@body field_name string description //@query field_name string description Open the page https://n8n.youristance.com/webhook/swagger