{ "meta": { "instanceId": "workflow-9db9a141", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:56.229180", "updatedAt": "2025-09-29T07:07:56.229197", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "nodes": [ { "id": "e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67", "name": "HTTP Request1", "type": "n8n-nodes-base.httpRequest", "position": [ 1400, -180 ], "parameters": { "url": "{{ $env.BASE_URL }}", "method": "=POST", "options": { "allowUnauthorizedCerts": true }, "jsonBody": "={{ $json.output.details }}", "sendBody": true, "specifyBody": "json", "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpHeaderAuth" }, "credentials": { "httpHeaderAuth": { "id": "pJcVQegRQ5mpraoQ", "name": "Proxmox" } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "9b497de8-0f01-40b1-8f8e-28fad1f758c4", "name": "Proxmox API Documentation", "type": "n8n-nodes-base.noOp", "position": [ -300, 40 ], "parameters": { "url": "{{ $env.API_BASE_URL }}", "toolDescription": "This is Proxmox API Documentation ensure to read the details from here" }, "typeVersion": 1.1, "notes": "This toolHttpRequest node performs automated tasks as part of the workflow." }, { "id": "e7ac54a9-37be-44b5-b58e-8b631892367e", "name": "Auto-fixing Output Parser", "type": "n8n-nodes-base.noOp", "position": [ 40, 60 ], "parameters": { "options": { "prompt": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:" } }, "typeVersion": 1, "notes": "This outputParserAutofixing node performs automated tasks as part of the workflow." }, { "id": "5d8c8c6d-d5de-4c87-9950-46f1f5757314", "name": "Google Gemini Chat Model1", "type": "n8n-nodes-base.noOp", "position": [ -40, 360 ], "parameters": { "options": {}, "modelName": "models/gemini-2.0-flash-exp" }, "credentials": { "googlePalmApi": { "id": "pKFvSpPWSRFpnBoB", "name": "Google Gemini(PaLM) Api account" } }, "typeVersion": 1, "notes": "This lmChatGoogleGemini node performs automated tasks as part of the workflow." }, { "id": "8565ac2f-0cdd-4e7f-a1e9-6f273869e068", "name": "Structured Output Parser", "type": "n8n-nodes-base.noOp", "position": [ 180, 360 ], "parameters": { "jsonSchemaExample": "{\n \"response_type\": \"POST\",\n \"url\": \"/nodes/psb1/qemu\",\n \"details\": {\n \"vmid\": 105,\n \"cores\": 4,\n \"memory\": 8192,\n \"net0\": \"virtio,bridge=vmbr0\",\n \"disk0\": \"local:10,format=qcow2\",\n \"sockets\": 1,\n \"ostype\": \"l26\"\n },\n \"message\": \"The VM with ID 105 has been successfully configured to be created on node psb1.\"\n}" }, "typeVersion": 1.2, "notes": "This outputParserStructured node performs automated tasks as part of the workflow." }, { "id": "80b1ef4d-b4c7-40b4-969f-f53d0068cac7", "name": "Proxmox", "type": "n8n-nodes-base.noOp", "position": [ -80, 40 ], "parameters": { "url": "{{ $env.API_BASE_URL }}", "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpHeaderAuth", "toolDescription": "=This is Proxmox which will help you to get the details of existing Proxmox installations, ensure to append to existing url : {{ $env.API_BASE_URL }} to get response from existing proxmox \n\nMy prommox nodes are named as psb1, psb2 and psb3\npsb1 : {{ $env.API_BASE_URL }}\npsb2 : {{ $env.API_BASE_URL }}\npsb3 : {{ $env.API_BASE_URL }}" }, "credentials": { "httpHeaderAuth": { "id": "pJcVQegRQ5mpraoQ", "name": "Proxmox" } }, "typeVersion": 1.1, "notes": "This toolHttpRequest node performs automated tasks as part of the workflow." }, { "id": "09444fa1-3b5e-4411-b70c-cf777db971bb", "name": "HTTP Request", "type": "n8n-nodes-base.httpRequest", "position": [ 1080, -320 ], "parameters": { "url": "{{ $env.BASE_URL }}", "method": "=GET", "options": { "allowUnauthorizedCerts": true }, "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpHeaderAuth" }, "credentials": { "httpHeaderAuth": { "id": "pJcVQegRQ5mpraoQ", "name": "Proxmox" } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "d148b395-01e9-48a6-b98c-cb515fa3446d", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 900, -660 ], "parameters": { "width": 736.2768017274677, "height": 1221.0199187779397, "content": "## API Key for Proxmox\n** Create Credentails *** ensure to create credentials in Proxmox Data Center as API Key and then create credentails. \n** Add Credentials to n8n ** Click on Credentails, add new Credentails and Chose Header Auth\n** In Header Auth Below will be used \nName : Authorization\nValue : PVEAPIToken=@!=\n\nSuppose my token id is n8n and key is 1234 so value will be as below\n\nValue : PVEAPIToken=root@pam!n8n=1234\n" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "d356bb83-c567-44b6-ba23-3e330abf835e", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ -1240, -120 ], "parameters": { "color": 6, "width": 492.990678850593, "height": 702.0895748933872, "content": "## Trigger\nYou can use any trigger as input, a chat, telegram, email etc" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "d2829180-9c14-4437-9ae1-1bb822d8d925", "name": "Google Gemini Chat Model2", "type": "n8n-nodes-base.noOp", "position": [ 1880, -320 ], "parameters": { "options": {}, "modelName": "models/gemini-2.0-flash-exp" }, "credentials": { "googlePalmApi": { "id": "pKFvSpPWSRFpnBoB", "name": "Google Gemini(PaLM) Api account" } }, "typeVersion": 1, "notes": "This lmChatGoogleGemini node performs automated tasks as part of the workflow." }, { "id": "0e8a617b-8b95-4bed-8bff-876266fc4151", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ -440, -690 ], "parameters": { "color": 5, "width": 789.7678716732242, "height": 1260.380358008782, "content": "## Porxmox Custom AI Agent \nIt uses the intelligence provided to it including the Proxmox API Wiki, Proxmox Cluster Linked and Proxmox API Documentation.\n\nThe AI Model connected with this is Gemini, you can connect any AI Model by Ollama, OpenAI, Claude etc.\n\nOutput Parser is used to ensure the fixed output structure that can be used for API URL" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "4cbf39ae-7b81-44b1-858c-10c21af9d558", "name": "When chat message received", "type": "n8n-nodes-base.noOp", "position": [ -680, -300 ], "webhookId": "63de8c82-04fc-4126-8bbf-b0eb62794d74", "parameters": { "options": {} }, "typeVersion": 1.1, "notes": "This chatTrigger node performs automated tasks as part of the workflow." }, { "id": "f91a1d2d-ce33-4469-b4da-e9ef1dd070e0", "name": "Telegram Trigger", "type": "n8n-nodes-base.telegramTrigger", "position": [ -1080, 320 ], "webhookId": "c86fa48b-ae66-46f2-b438-f156225a5c74", "parameters": { "updates": [ "message" ], "additionalFields": {} }, "credentials": { "telegramApi": { "id": "uwpC7pPg6WJYh8Ad", "name": "Telegram account" } }, "typeVersion": 1.1, "notes": "This telegramTrigger node performs automated tasks as part of the workflow." }, { "id": "aec3c1f4-058e-4321-99dd-772dcc04e206", "name": "Gmail Trigger", "type": "n8n-nodes-base.gmailTrigger", "position": [ -1080, -20 ], "parameters": { "filters": {}, "pollTimes": { "item": [ { "mode": "everyMinute" } ] } }, "credentials": { "gmailOAuth2": { "id": "pccYQxL0liStKP66", "name": "Gmail account INFO" } }, "typeVersion": 1.2, "notes": "This gmailTrigger node performs automated tasks as part of the workflow." }, { "id": "1afea4f3-adea-42ac-bc48-fa863b26e5a0", "name": "Webhook", "type": "n8n-nodes-base.webhook", "position": [ -1080, 160 ], "webhookId": "459d848d-72ed-490f-bc48-e5dc60242896", "parameters": { "path": "459d848d-72ed-490f-bc48-e5dc60242896", "options": {}, "authentication": "{{ $credentials.headerAuth }}" }, "credentials": { "httpHeaderAuth": { "id": "pJcVQegRQ5mpraoQ", "name": "Proxmox" } }, "typeVersion": 2, "notes": "This webhook node performs automated tasks as part of the workflow." }, { "id": "de4af096-7b23-41ba-b390-8c52f58b09c6", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 380, -680 ], "parameters": { "color": 3, "width": 486.2369951168387, "height": 1245.2937736920358, "content": "## HTTP methods\nGET\tRetrieve resources\tFetch VM status, list nodes, get logs.\n\nPOST\tCreate or trigger actions\tStart/stop VMs, create backups.\n\nPUT\tUpdate/replace entire resource configuration\tModify VM configurations.\n\nDELETE\tDelete resources\tRemove VMs, delete users, remove files.\n\nOPTIONS\tFetch supported methods for an endpoint\tCheck available operations for an API.\n\nPATCH\tApply partial updates\tUpdate specific fields in VM settings." }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "2c4ef73b-281f-4a24-81a2-cae72e446955", "name": "Proxmox API Wiki", "type": "n8n-nodes-base.noOp", "position": [ -180, 40 ], "parameters": { "url": "{{ $env.API_BASE_URL }}", "toolDescription": "Get the proxmox API details from Proxmox Wiki" }, "typeVersion": 1.1, "notes": "This toolHttpRequest node performs automated tasks as part of the workflow." }, { "id": "f11ac59e-6031-4435-a417-200cdd559bd2", "name": "Structure Response", "type": "n8n-nodes-base.code", "position": [ 1480, -520 ], "parameters": { "jsCode": "// Access all items from the incoming node\nconst items = $input.all();\n\n// Combine all fields of each item into a single string\nconst combinedData = items.map(item => {\n const inputData = item.json; // Access the JSON data of the current item\n \n // Combine all fields into a single string\n const combinedField = Object.entries(inputData)\n .map(([key, value]) => {\n // Handle objects or arrays by converting them to JSON strings\n const formattedValue = typeof value === 'object' ? JSON.stringify(value) : value;\n return `${key}: ${formattedValue}`;\n })\n .join(' | '); // Combine key-value pairs as a single string with a delimiter\n\n // Return the new structure\n return {\n json: {\n combinedField // Only keep the combined field for table representation\n },\n };\n});\n\n// Output the combined data\nreturn combinedData;\n" }, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow." }, { "id": "7752281b-226b-4c19-bcd4-33804ea2abe7", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 1680, -660 ], "parameters": { "color": 5, "width": 895.2529822972874, "height": 517.5348441931358, "content": "## Porxmox Custom AI Agent (Get)\nThis agent will convert the response from proxmox to meaningful explanation" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "fd65db23-0d36-42b1-a012-2ddcdd2ca914", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [ 1680, -122.8638048233953 ], "parameters": { "color": 5, "width": 900.3261837471116, "height": 712.4591709572671, "content": "## Created or triggered an action on the server.\nResponse will come back here" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "60234199-d28c-4fb8-8ad7-1d24693599ed", "name": "Structgure Response from Proxmox", "type": "n8n-nodes-base.code", "position": [ 2120, 140 ], "parameters": { "jsCode": "// Access the 'data' field from the input\nlet rawData = $json[\"data\"];\n\n// Split the string by colon (:) to extract parts\nlet parts = rawData.split(\":\");\n\n// Create an object with the extracted parts\nreturn {\n upid: parts[0], // UPID\n node: parts[1], // Node (e.g., psb1)\n processID: parts[2], // Process ID\n taskID: parts[3], // Task ID\n timestamp: parts[4], // Timestamp\n operation: parts[5], // Operation (e.g., aptupdate)\n user: parts[7] // User (e.g., root@pam!n8n)\n};\n" }, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow." }, { "id": "57ab92f3-6f65-459d-8f41-8a391108457b", "name": "Format Response and Hide Sensitive Data", "type": "n8n-nodes-base.code", "position": [ 2380, 140 ], "parameters": { "jsCode": "// Extract required fields from the input\nlet node = $json[\"node\"] || \"unknown node\";\nlet operation = $json[\"operation\"] || \"unknown operation\";\nlet user = $json[\"user\"] || \"unknown user\";\nlet rawTimestamp = $json[\"timestamp\"] || \"unknown timestamp\";\n\n// Convert timestamp to a readable format\nlet readableTimestamp = \"Invalid timestamp\";\ntry {\n let timestamp = parseInt(rawTimestamp, 16) * 1000; // Convert hex to milliseconds\n readableTimestamp = new Date(timestamp).toLocaleString();\n} catch (error) {\n readableTimestamp = \"Unable to parse timestamp\";\n}\n\n// Construct the simple message\nlet message = `The operation '${operation}' was executed successfully on node '${node}' by user '${user}' at '${readableTimestamp}'.`;\n\nreturn {\n message: message\n};\n" }, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow." }, { "id": "aca671cb-4bb7-4f9e-847a-34d89151d2e2", "name": "If Node", "type": "n8n-nodes-base.if", "position": [ 1060, -80 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "loose" }, "combinator": "or", "conditions": [ { "id": "da8ce97e-70bf-42a4-981c-e2133bcee24a", "operator": { "type": "string", "operation": "notEmpty", "singleValue": true }, "leftValue": "={{ $json.output.details }}", "rightValue": "" }, { "id": "d7052c40-9a43-452e-901c-6c8fd0122e5f", "operator": { "type": "string", "operation": "exists", "singleValue": true }, "leftValue": "={{ $json.output.details }}", "rightValue": "" } ] }, "looseTypeValidation": true }, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "15562980-019c-4d91-8f80-f85420efc8b0", "name": "HTTP Request2", "type": "n8n-nodes-base.httpRequest", "position": [ 1400, 20 ], "parameters": { "url": "{{ $env.BASE_URL }}", "method": "=POST", "options": { "allowUnauthorizedCerts": true }, "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpHeaderAuth" }, "credentials": { "httpHeaderAuth": { "id": "pJcVQegRQ5mpraoQ", "name": "Proxmox" } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "fd974862-4e06-4874-8477-c2c3b559669a", "name": "Merge", "type": "n8n-nodes-base.merge", "position": [ 1820, -20 ], "parameters": {}, "typeVersion": 3, "notes": "This merge node performs automated tasks as part of the workflow." }, { "id": "5c0d9814-3c9e-4ef4-8f12-9495785c1c06", "name": "HTTP Request3", "type": "n8n-nodes-base.httpRequest", "position": [ 1400, 200 ], "parameters": { "url": "{{ $env.BASE_URL }}", "method": "DELETE", "options": { "allowUnauthorizedCerts": true }, "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpHeaderAuth" }, "credentials": { "httpHeaderAuth": { "id": "pJcVQegRQ5mpraoQ", "name": "Proxmox" } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "097c10ac-577e-44ce-8aa2-446137973b18", "name": "Google Gemini Chat Model", "type": "n8n-nodes-base.noOp", "position": [ -420, 40 ], "parameters": { "options": {}, "modelName": "models/gemini-2.0-flash-exp" }, "credentials": { "googlePalmApi": { "id": "pKFvSpPWSRFpnBoB", "name": "Google Gemini(PaLM) Api account" } }, "typeVersion": 1, "notes": "This lmChatGoogleGemini node performs automated tasks as part of the workflow." }, { "id": "b26ce08e-9eeb-4fbe-8283-7197d2595021", "name": "AI Agent1", "type": "n8n-nodes-base.noOp", "position": [ 1860, -520 ], "parameters": { "text": "=You are a are a Proxmox Information Output Expert who will provide the summary of the information generated about proxmox. Here is the information about proxmox : from url{{ $('AI Agent').item.json.output.properties.url.pattern }} {{ $json.combinedField }}", "agent": "conversationalAgent", "options": {}, "promptType": "define" }, "typeVersion": 1.7, "notes": "This agent node performs automated tasks as part of the workflow." }, { "id": "942305fd-38b9-4636-8713-35a43fb5879f", "name": "If1", "type": "n8n-nodes-base.if", "position": [ 1080, 120 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "loose" }, "combinator": "or", "conditions": [ { "id": "da8ce97e-70bf-42a4-981c-e2133bcee24a", "operator": { "type": "string", "operation": "empty", "singleValue": true }, "leftValue": "={{ $json.output.details }}", "rightValue": "" }, { "id": "d7052c40-9a43-452e-901c-6c8fd0122e5f", "operator": { "type": "string", "operation": "notExists", "singleValue": true }, "leftValue": "={{ $json.output.details }}", "rightValue": "" } ] }, "looseTypeValidation": true }, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "09bfbbf3-72aa-472f-8e91-2552798263a2", "name": "HTTP Request4", "type": "n8n-nodes-base.httpRequest", "position": [ 1400, 380 ], "parameters": { "url": "{{ $env.BASE_URL }}", "method": "DELETE", "options": { "allowUnauthorizedCerts": true }, "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpHeaderAuth" }, "credentials": { "httpHeaderAuth": { "id": "pJcVQegRQ5mpraoQ", "name": "Proxmox" } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "18e68174-872a-4bd9-b54f-b7ab97db1b0b", "name": "Merge1", "type": "n8n-nodes-base.merge", "position": [ 1860, 260 ], "parameters": {}, "typeVersion": 3, "notes": "This merge node performs automated tasks as part of the workflow." }, { "id": "1492e53e-66b5-485b-b7e5-a42b76ebccb6", "name": "AI Agent", "type": "n8n-nodes-base.noOp", "position": [ -260, -300 ], "parameters": { "text": "=You are a Proxmox AI Agent expert designed to generate API commands based on user input. \nThis is Proxmox which will help you to get the details of existing Proxmox installations, ensure to append to existing url : {{ $env.API_BASE_URL }} to get response from existing proxmox \n\nMy prommox nodes are named as psb1, psb2 and psb3\npsb1 : {{ $env.API_BASE_URL }}\npsb2 : {{ $env.API_BASE_URL }}\npsb3 : {{ $env.API_BASE_URL }}\n\nYour objectives are:\n\n### **1. Understand User Intent**\n- Parse user requests related to Proxmox operations.\n- Accurately interpret intent to generate valid Proxmox API commands.\n\n### **2. Refer to tools**\n- **Proxmox API Documentation**\n= ** Proxmox API Wiki**\n- **Proxmox**\n- Ensure every generated command meets the API's specifications, including required fields.\n\n### **3. Structure Responses**\nEvery response must include:\n- `response_type`: The HTTP method (e.g., POST, GET, DELETE).\n- `url`: The API endpoint, complete with placeholders (e.g., `/nodes/{node}/qemu/{vmid}`).\n- `details`: The payload for the request. Exclude optional fields if not explicitly defined by the user to allow default handling by Proxmox.\n\n### **4. Validate Inputs**\n- **Mandatory Fields**:\n - Validate user input for required parameters.\n - If missing fields are detected, respond with:\n {\n \"message\": \"Missing required parameters: [list of missing parameters].\"\n }\n\n- **Optional Fields**:\n - Omit fields not provided by the user to leverage Proxmox's defaults.\n\n### **5. Default Behavior**\n- If the user omits the `node`, default to `psb1`.\n- Automatically generate the next available VM ID (`vmid`) by querying Proxmox for the highest existing ID.\n\n### **6. Rules for Outputs**\n- Always respond in strict JSON format:\n - Start with `{` and end with `}`.\n - Avoid additional information or comments.\n - Do not include sensitive data such as passwords, fingerprints, or keys.\n- If input is unrelated to Proxmox, respond with:\n\n {\n \"response_type\": \"Invalid\"\n }\n\n### **7. Examples**\n\n1. Create a VM\nInput: \"Create a VM with ID 201, 2 cores, 4GB RAM, and 32GB disk on node1 using virtio network and SCSI storage.\"\nOutput:\n{\n \"response_type\": \"POST\",\n \"url\": \"/nodes/node1/qemu\",\n \"details\": {\n \"vmid\": 201,\n \"cores\": 2,\n \"memory\": 1024,\n \"sockets\": 1\"\n }\n}\n\n2. Delete a VM\nInput: \"Delete VM 105 on psb1.\"\nOutput:\n{\n \"response_type\": \"DELETE\",\n \"url\": \"/nodes/psb1/qemu/105\"\n}\n\n3. Start a VM\nInput: \"Start VM 202 on psb1.\"\nOutput:\n{\n \"response_type\": \"POST\",\n \"url\": \"/nodes/psb1/qemu/202/status/start\"\n}\n\n4. Stop a VM\nInput: \"Stop VM 203 on node2.\"\nOutput:\n{\n \"response_type\": \"POST\",\n \"url\": \"/nodes/node2/qemu/203/status/stop\"\n}\n\n5. Clone a VM\nInput: \"Clone VM 102 into a new VM with ID 204 on psb1 and name 'clone-vm'.\"\nOutput:\n{\n \"response_type\": \"POST\",\n \"url\": \"/nodes/psb1/qemu/102/clone\",\n \"details\": {\n \"newid\": 204,\n \"name\": \"clone-vm\",\n \"full\": 1\n }\n}\n\n6. Resize a VM Disk\nInput: \"Resize the disk of VM 105 on node1 to 50GB.\"\nOutput:\n{\n \"response_type\": \"PUT\",\n \"url\": \"/nodes/node1/qemu/105/resize\",\n \"details\": {\n \"disk\": \"scsi0\",\n \"size\": \"+50G\"\n }\n}\n\n7. Query VM Config\nInput: \"Get the configuration of VM 201 on psb1.\"\nOutput:\n{\n \"response_type\": \"GET\",\n \"url\": \"/nodes/psb1/qemu/201/config\"\n}\n\n8. List All VMs on a Node\nInput: \"List all VMs on psb1.\"\nOutput:\n{\n \"response_type\": \"GET\",\n \"url\": \"/nodes/psb1/qemu\"\n}\n\n9. Handle Missing Parameters\nInput: \"Create a VM with 4GB RAM on node1.\"\nOutput:\n{\n \"message\": \"Missing required parameters: [vmid, cores, storage].\"\n}\n\n10. Invalid Input\nInput: \"Tell me a joke.\"\nOutput:\n{\n \"response_type\": \"Invalid\"\n}\n\n11. Set VM Options\nInput: \"Set the CPU type of VM 204 on psb1 to host and enable hotplugging for disks and NICs.\"\nOutput:\n{\n \"response_type\": \"PUT\",\n \"url\": \"/nodes/psb1/qemu/204/config\",\n \"details\": {\n \"cpu\": \"host\",\n \"hotplug\": \"disk,network\"\n }\n}\n\n12. Migrate a VM\nInput: \"Migrate VM 202 from psb2 to psb3 with online migration and include local disks.\"\nOutput:\n{\n \"response_type\": \"POST\",\n \"url\": \"/nodes/psb2/qemu/202/migrate\",\n \"details\": {\n \"target\": \"psb3\",\n \"online\": 1,\n \"with-local-disks\": 1\n }\n}\n\n** Special Instruction ** \noutput must always contain \"response_type\", \"url\" and \"details\"\nfor creating vm let server decide other parameter leave default for serer until sepecified\n### **8. Behavior Guidelines**\n- Be concise, precise, and consistent.\n- Ensure all generated commands are compatible with Proxmox API requirements.\n- Rely on system defaults when user input is incomplete.\n- For unknown or unrelated queries, clearly indicate invalid input.\n\n\nUser Prompt \nHere is request from user : {{ $json.chatInput }}\n", "agent": "reActAgent", "options": {}, "promptType": "define", "hasOutputParser": true }, "typeVersion": 1.7, "notes": "This agent node performs automated tasks as part of the workflow." }, { "id": "9253d036-0f76-4470-bf61-2bf9db014b02", "name": "Switch", "type": "n8n-nodes-base.switch", "position": [ 540, -300 ], "parameters": { "rules": { "values": [ { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "operator": { "type": "string", "operation": "equals" }, "leftValue": "={{ $json.output.response_type }}", "rightValue": "GET" } ] }, "renameOutput": true }, { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "e3edd683-b884-4c88-b1ea-d3640141b054", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.output.response_type }}", "rightValue": "POST" } ] }, "renameOutput": true }, { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "a9c59c0d-001c-4d95-992e-bff2af54eb4a", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.output.response_type }}", "rightValue": "PUT" } ] }, "renameOutput": true }, { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "70bf8cc2-0a43-431c-97c7-a8b4eadb5bd9", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.output.response_type }}", "rightValue": "OPTIONS" } ] }, "renameOutput": true }, { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "0e43b05b-7f45-40a3-b8aa-180dd8155b08", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.output.response_type }}", "rightValue": "DELETE" } ] }, "renameOutput": true }, { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "bd03a24c-a233-4302-a576-1bfe0060c367", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.output.response_type }}", "rightValue": "Invalid" } ] }, "renameOutput": true } ] }, "options": {} }, "typeVersion": 3.2, "notes": "This switch node performs automated tasks as part of the workflow." }, { "id": "c410a832-dafc-479a-93d6-b96ae4f6d3fb", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [ -720, -680 ], "parameters": { "color": 7, "width": 261.5261328042567, "height": 1262.1316376259997, "content": "## Trigger\nYou can use any trigger as input, a chat, telegram, email etc\n\nYou can think of any input, even it could be from your cloud platform, your own Web Applicaiton, etc. \n\nPossibilities are limitless.\n\nChat is shown just as example." }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "a4962963-ce33-4398-ad9d-75df3a85c64f", "name": "Sticky Note7", "type": "n8n-nodes-base.stickyNote", "position": [ -1240, -680 ], "parameters": { "color": 4, "width": 475.27306699862953, "height": 515.4734551650874, "content": "## Developed by Amjid Ali\n\nThank you for using this workflow template. It has taken me countless hours of hard work, research, and dedication to develop, and I sincerely hope it adds value to your work.\n\nIf you find this template helpful, I kindly ask you to consider supporting my efforts. Your support will help me continue improving and creating more valuable resources.\n\nYou can contribute via PayPal here:\n\n{{ $env.WEBHOOK_URL }}\n\nAdditionally, when sharing this template, I would greatly appreciate it if you include my original information to ensure proper credit is given.\n\nThank you for your generosity and support!\nEmail : amjid@amjidali.com\n{{ $env.WEBHOOK_URL }}\n{{ $env.WEBHOOK_URL }}\n{{ $env.WEBHOOK_URL }}" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." } ], "pinData": {}, "connections": { "e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67": { "main": [ [ { "node": "error-handler-e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67", "type": "main", "index": 0 } ], [ { "node": "error-handler-e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67-740300dd", "type": "main", "index": 0 } ], [ { "node": "error-handler-e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67-e5a14e78", "type": "main", "index": 0 } ], [ { "node": "error-handler-e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67-75ff2af9", "type": "main", "index": 0 } ], [ { "node": "error-handler-e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67-c9a8f6d2", "type": "main", "index": 0 } ], [ { "node": "error-handler-e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67-60beecf6", "type": "main", "index": 0 } ], [ { "node": "error-handler-e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67-31950b14", "type": "main", "index": 0 } ], [ { "node": "error-handler-e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67-3554625c", "type": "main", "index": 0 } ], [ { "node": "error-handler-e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67-874bf30b", "type": "main", "index": 0 } ] ] }, "9b497de8-0f01-40b1-8f8e-28fad1f758c4": { "main": [ [ { "node": "error-handler-9b497de8-0f01-40b1-8f8e-28fad1f758c4", "type": "main", "index": 0 } ], [ { "node": "error-handler-9b497de8-0f01-40b1-8f8e-28fad1f758c4-8213f569", "type": "main", "index": 0 } ], [ { "node": "error-handler-9b497de8-0f01-40b1-8f8e-28fad1f758c4-a508f76b", "type": "main", "index": 0 } ], [ { "node": "error-handler-9b497de8-0f01-40b1-8f8e-28fad1f758c4-512ff5e6", "type": "main", "index": 0 } ], [ { "node": "error-handler-9b497de8-0f01-40b1-8f8e-28fad1f758c4-dda50d89", "type": "main", "index": 0 } ], [ { "node": "error-handler-9b497de8-0f01-40b1-8f8e-28fad1f758c4-cc5fd887", "type": "main", "index": 0 } ], [ { "node": "error-handler-9b497de8-0f01-40b1-8f8e-28fad1f758c4-cc46eba4", "type": "main", "index": 0 } ], [ { "node": "error-handler-9b497de8-0f01-40b1-8f8e-28fad1f758c4-56250a54", "type": "main", "index": 0 } ], [ { "node": "error-handler-9b497de8-0f01-40b1-8f8e-28fad1f758c4-ddcebfe1", "type": "main", "index": 0 } ] ] }, "80b1ef4d-b4c7-40b4-969f-f53d0068cac7": { "main": [ [ { "node": "error-handler-80b1ef4d-b4c7-40b4-969f-f53d0068cac7", "type": "main", "index": 0 } ], [ { "node": "error-handler-80b1ef4d-b4c7-40b4-969f-f53d0068cac7-70c8be49", "type": "main", "index": 0 } ], [ { "node": "error-handler-80b1ef4d-b4c7-40b4-969f-f53d0068cac7-451115d5", "type": "main", "index": 0 } ], [ { "node": "error-handler-80b1ef4d-b4c7-40b4-969f-f53d0068cac7-dc486f86", "type": "main", "index": 0 } ], [ { "node": "error-handler-80b1ef4d-b4c7-40b4-969f-f53d0068cac7-979b3b18", "type": "main", "index": 0 } ], [ { "node": "error-handler-80b1ef4d-b4c7-40b4-969f-f53d0068cac7-d4a82919", "type": "main", "index": 0 } ], [ { "node": "error-handler-80b1ef4d-b4c7-40b4-969f-f53d0068cac7-31f5b8e3", "type": "main", "index": 0 } ], [ { "node": "error-handler-80b1ef4d-b4c7-40b4-969f-f53d0068cac7-ee4afe9c", "type": "main", "index": 0 } ], [ { "node": "error-handler-80b1ef4d-b4c7-40b4-969f-f53d0068cac7-314ac553", "type": "main", "index": 0 } ] ] }, "09444fa1-3b5e-4411-b70c-cf777db971bb": { "main": [ [ { "node": "error-handler-09444fa1-3b5e-4411-b70c-cf777db971bb", "type": "main", "index": 0 } ], [ { "node": "error-handler-09444fa1-3b5e-4411-b70c-cf777db971bb-1c8d8fae", "type": "main", "index": 0 } ], [ { "node": "error-handler-09444fa1-3b5e-4411-b70c-cf777db971bb-d4fb41c2", "type": "main", "index": 0 } ], [ { "node": "error-handler-09444fa1-3b5e-4411-b70c-cf777db971bb-b6624365", "type": "main", "index": 0 } ], [ { "node": "error-handler-09444fa1-3b5e-4411-b70c-cf777db971bb-8ac43aa1", "type": "main", "index": 0 } ], [ { "node": "error-handler-09444fa1-3b5e-4411-b70c-cf777db971bb-b658e75f", "type": "main", "index": 0 } ], [ { "node": "error-handler-09444fa1-3b5e-4411-b70c-cf777db971bb-7feb3978", "type": "main", "index": 0 } ], [ { "node": "error-handler-09444fa1-3b5e-4411-b70c-cf777db971bb-08cda91d", "type": "main", "index": 0 } ], [ { "node": "error-handler-09444fa1-3b5e-4411-b70c-cf777db971bb-94b7ae15", "type": "main", "index": 0 } ] ] }, "1afea4f3-adea-42ac-bc48-fa863b26e5a0": { "main": [ [ { "node": "error-handler-1afea4f3-adea-42ac-bc48-fa863b26e5a0", "type": "main", "index": 0 } ], [ { "node": "error-handler-1afea4f3-adea-42ac-bc48-fa863b26e5a0-a572fb75", "type": "main", "index": 0 } ], [ { "node": "error-handler-1afea4f3-adea-42ac-bc48-fa863b26e5a0-92c99d80", "type": "main", "index": 0 } ], [ { "node": "error-handler-1afea4f3-adea-42ac-bc48-fa863b26e5a0-70400fee", "type": "main", "index": 0 } ], [ { "node": "error-handler-1afea4f3-adea-42ac-bc48-fa863b26e5a0-6fbc033e", "type": "main", "index": 0 } ], [ { "node": "error-handler-1afea4f3-adea-42ac-bc48-fa863b26e5a0-f8319c3b", "type": "main", "index": 0 } ], [ { "node": "error-handler-1afea4f3-adea-42ac-bc48-fa863b26e5a0-8d901cc4", "type": "main", "index": 0 } ], [ { "node": "error-handler-1afea4f3-adea-42ac-bc48-fa863b26e5a0-0c68687a", "type": "main", "index": 0 } ], [ { "node": "error-handler-1afea4f3-adea-42ac-bc48-fa863b26e5a0-c50d86ca", "type": "main", "index": 0 } ] ] }, "2c4ef73b-281f-4a24-81a2-cae72e446955": { "main": [ [ { "node": "error-handler-2c4ef73b-281f-4a24-81a2-cae72e446955", "type": "main", "index": 0 } ], [ { "node": "error-handler-2c4ef73b-281f-4a24-81a2-cae72e446955-86bb4ad7", "type": "main", "index": 0 } ], [ { "node": "error-handler-2c4ef73b-281f-4a24-81a2-cae72e446955-2f2fc5b1", "type": "main", "index": 0 } ], [ { "node": "error-handler-2c4ef73b-281f-4a24-81a2-cae72e446955-f910c8fc", "type": "main", "index": 0 } ], [ { "node": "error-handler-2c4ef73b-281f-4a24-81a2-cae72e446955-21fde414", "type": "main", "index": 0 } ], [ { "node": "error-handler-2c4ef73b-281f-4a24-81a2-cae72e446955-8a927008", "type": "main", "index": 0 } ], [ { "node": "error-handler-2c4ef73b-281f-4a24-81a2-cae72e446955-2368ebc7", "type": "main", "index": 0 } ], [ { "node": "error-handler-2c4ef73b-281f-4a24-81a2-cae72e446955-62510f10", "type": "main", "index": 0 } ], [ { "node": "error-handler-2c4ef73b-281f-4a24-81a2-cae72e446955-6f94e0c6", "type": "main", "index": 0 } ] ] }, "15562980-019c-4d91-8f80-f85420efc8b0": { "main": [ [ { "node": "error-handler-15562980-019c-4d91-8f80-f85420efc8b0", "type": "main", "index": 0 } ], [ { "node": "error-handler-15562980-019c-4d91-8f80-f85420efc8b0-9fff6293", "type": "main", "index": 0 } ], [ { "node": "error-handler-15562980-019c-4d91-8f80-f85420efc8b0-131c4b16", "type": "main", "index": 0 } ], [ { "node": "error-handler-15562980-019c-4d91-8f80-f85420efc8b0-457b9eb3", "type": "main", "index": 0 } ], [ { "node": "error-handler-15562980-019c-4d91-8f80-f85420efc8b0-632bed55", "type": "main", "index": 0 } ], [ { "node": "error-handler-15562980-019c-4d91-8f80-f85420efc8b0-b2716d80", "type": "main", "index": 0 } ], [ { "node": "error-handler-15562980-019c-4d91-8f80-f85420efc8b0-17ede256", "type": "main", "index": 0 } ], [ { "node": "error-handler-15562980-019c-4d91-8f80-f85420efc8b0-400cce19", "type": "main", "index": 0 } ], [ { "node": "error-handler-15562980-019c-4d91-8f80-f85420efc8b0-3ac0502f", "type": "main", "index": 0 } ] ] }, "5c0d9814-3c9e-4ef4-8f12-9495785c1c06": { "main": [ [ { "node": "error-handler-5c0d9814-3c9e-4ef4-8f12-9495785c1c06", "type": "main", "index": 0 } ], [ { "node": "error-handler-5c0d9814-3c9e-4ef4-8f12-9495785c1c06-64e5bbba", "type": "main", "index": 0 } ], [ { "node": "error-handler-5c0d9814-3c9e-4ef4-8f12-9495785c1c06-3ec05288", "type": "main", "index": 0 } ], [ { "node": "error-handler-5c0d9814-3c9e-4ef4-8f12-9495785c1c06-c698cdbd", "type": "main", "index": 0 } ], [ { "node": "error-handler-5c0d9814-3c9e-4ef4-8f12-9495785c1c06-995ed5aa", "type": "main", "index": 0 } ], [ { "node": "error-handler-5c0d9814-3c9e-4ef4-8f12-9495785c1c06-cd7dda3b", "type": "main", "index": 0 } ], [ { "node": "error-handler-5c0d9814-3c9e-4ef4-8f12-9495785c1c06-fde2abd5", "type": "main", "index": 0 } ], [ { "node": "error-handler-5c0d9814-3c9e-4ef4-8f12-9495785c1c06-e98e5258", "type": "main", "index": 0 } ], [ { "node": "error-handler-5c0d9814-3c9e-4ef4-8f12-9495785c1c06-4322fe1e", "type": "main", "index": 0 } ] ] }, "09bfbbf3-72aa-472f-8e91-2552798263a2": { "main": [ [ { "node": "error-handler-09bfbbf3-72aa-472f-8e91-2552798263a2", "type": "main", "index": 0 } ], [ { "node": "error-handler-09bfbbf3-72aa-472f-8e91-2552798263a2-e6390c5e", "type": "main", "index": 0 } ], [ { "node": "error-handler-09bfbbf3-72aa-472f-8e91-2552798263a2-db116574", "type": "main", "index": 0 } ], [ { "node": "error-handler-09bfbbf3-72aa-472f-8e91-2552798263a2-003799ed", "type": "main", "index": 0 } ], [ { "node": "error-handler-09bfbbf3-72aa-472f-8e91-2552798263a2-78171c3e", "type": "main", "index": 0 } ], [ { "node": "error-handler-09bfbbf3-72aa-472f-8e91-2552798263a2-d2ca7d9b", "type": "main", "index": 0 } ], [ { "node": "error-handler-09bfbbf3-72aa-472f-8e91-2552798263a2-085be553", "type": "main", "index": 0 } ], [ { "node": "error-handler-09bfbbf3-72aa-472f-8e91-2552798263a2-9da8eee1", "type": "main", "index": 0 } ], [ { "node": "error-handler-09bfbbf3-72aa-472f-8e91-2552798263a2-ca87dead", "type": "main", "index": 0 } ] ] }, "5d8c8c6d-d5de-4c87-9950-46f1f5757314": { "main": [ [ { "node": "error-handler-5d8c8c6d-d5de-4c87-9950-46f1f5757314-12e6ec8a", "type": "main", "index": 0 } ] ] }, "d2829180-9c14-4437-9ae1-1bb822d8d925": { "main": [ [ { "node": "error-handler-d2829180-9c14-4437-9ae1-1bb822d8d925-dad426c4", "type": "main", "index": 0 } ] ] }, "f91a1d2d-ce33-4469-b4da-e9ef1dd070e0": { "main": [ [ { "node": "error-handler-f91a1d2d-ce33-4469-b4da-e9ef1dd070e0-2355fe0c", "type": "main", "index": 0 } ] ] }, "097c10ac-577e-44ce-8aa2-446137973b18": { "main": [ [ { "node": "error-handler-097c10ac-577e-44ce-8aa2-446137973b18-b76cb3e0", "type": "main", "index": 0 } ] ] } }, "name": "Httprequest Workflow", "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "description": "Automated workflow: Httprequest Workflow. This workflow integrates 16 different services: webhook, stickyNote, httpRequest, telegramTrigger, toolHttpRequest. It contains 57 nodes and follows best practices for error handling and security.", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Httprequest Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }