{ "meta": { "instanceId": "workflow-8650acac", "versionId": "1.0.0", "createdAt": "2025-09-29T07:08:00.195926", "updatedAt": "2025-09-29T07:08:00.195938", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "nodes": [ { "id": "a131803a-ab1d-4a89-b51d-8a875fa2caaf", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 440, 267.87369152409246 ], "parameters": { "width": 344, "height": 303, "content": "## Testing \n\nTesting can be done with CURL or similar.\n\nFor File posting using Form Data\ncurl -X POST -F file=@filepath.xml \n\nThis can also be tested using the Test workflow" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "f9ae7afb-48a6-45bf-9c55-0e5fd63afede", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 1720, 747.8736915240925 ], "parameters": { "color": 4, "width": 496, "height": 256, "content": "## Response\nWhere possible we will be returning a JSON object.\n```\n{\n \"status\": \"ok\",\n \"data\": { // JSON DATA }\n}\n```\nIf there is an error\n```\n{\n \"status\": \"error\",\n \"data\": \"error message to display\"\n}\n```" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "f37712fb-88cc-4d5a-9c37-6b9d962052e2", "name": "Extract From File", "type": "n8n-nodes-base.extractFromFile", "onError": "continueErrorOutput", "position": [ 1080, 307.87369152409246 ], "parameters": { "options": {}, "operation": "xml", "destinationKey": "YOUR_CREDENTIAL_HERE", "binaryPropertyName": "data0" }, "typeVersion": 1, "notes": "This extractFromFile node performs automated tasks as part of the workflow." }, { "id": "e70c134d-a546-447d-a0cb-96c5573232e1", "name": "Error Response", "type": "n8n-nodes-base.respondToWebhook", "onError": "continueErrorOutput", "position": [ 1480, 1067.8736915240925 ], "parameters": { "options": { "responseCode": 500 }, "respondWith": "json", "responseBody": "{\n \"status\": \"error\",\n \"data\": \"There was a problem converting your XML. Please refresh the page and try again.\"\n}" }, "typeVersion": 1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow." }, { "id": "eacf0315-75fb-4461-b5d3-d8e7c5572492", "name": "POST", "type": "n8n-nodes-base.webhook", "position": [ 460, 587.8736915240925 ], "webhookId": "add125c9-1591-4e1c-b68c-8032b99b6010", "parameters": { "path": "tool/xml-to-json", "options": { "binaryPropertyName": "data" }, "httpMethod": "POST", "responseMode": "responseNode" }, "typeVersion": 1.1, "notes": "This webhook node performs automated tasks as part of the workflow." }, { "id": "37cb0178-2010-4cfb-8f12-84e8a45a3553", "name": "XML", "type": "n8n-nodes-base.xml", "onError": "continueErrorOutput", "position": [ 1380, 407.87369152409246 ], "parameters": { "options": {}, "dataPropertyName": "xml" }, "typeVersion": 1, "notes": "This xml node performs automated tasks as part of the workflow." }, { "id": "4aa36858-f9ee-4653-81d5-7276347abcc2", "name": "Success Response", "type": "n8n-nodes-base.respondToWebhook", "onError": "continueErrorOutput", "position": [ 1500, 667.8736915240925 ], "parameters": { "options": { "responseCode": 200 }, "respondWith": "json", "responseBody": "={\n \"status\": \"OK\",\n \"data\": {{ JSON.stringify($json) }}\n}" }, "typeVersion": 1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow." }, { "id": "0425203d-8185-4b27-b7b5-3b4f0e775981", "name": "Already JSON", "type": "n8n-nodes-base.set", "position": [ 1080, 667.8736915240925 ], "parameters": { "mode": "raw", "options": {}, "jsonOutput": "={{ $json.body }}\n" }, "typeVersion": 3.3, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "9ac12f08-a09b-45e9-8ebd-55ff6d8a63bd", "name": "Change Field", "type": "n8n-nodes-base.set", "onError": "continueErrorOutput", "position": [ 1080, 487.87369152409246 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "b2e3bec3-221e-4f1d-b439-f75174f68ed1", "name": "xml", "type": "string", "value": "={{ $json.body }}" } ] } }, "typeVersion": 3.3, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "d722f969-f3d3-4f4a-9fbd-4e2d30556408", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 380, 240 ], "parameters": { "color": 7, "width": 1917.663445686706, "height": 1027.3921976438187, "content": "" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "7618bd02-6d56-44a1-aaa3-de805e1ef18d", "name": "Switch", "type": "n8n-nodes-base.switch", "position": [ 660, 587.8736915240925 ], "parameters": { "rules": { "values": [ { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "operator": { "type": "object", "operation": "notEmpty", "singleValue": true }, "leftValue": "={{ $binary }}", "rightValue": "" } ] }, "renameOutput": true }, { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "8930ce1a-a4cc-4094-b08f-a23a13dec40c", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.headers['content-type'] }}", "rightValue": "text/plain" } ] }, "renameOutput": true }, { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "e3108952-daa2-425c-8c70-7d2ce0949e0c", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.headers['content-type'] }}", "rightValue": "=application/xml" } ] }, "renameOutput": true } ] }, "options": { "fallbackOutput": "extra" } }, "typeVersion": 3, "notes": "This switch node performs automated tasks as part of the workflow." }, { "id": "b8bde0ed-7d85-4582-89c4-08a0829c4df8", "name": "Send to Error Channel", "type": "n8n-nodes-base.slack", "position": [ 1760, 1067.8736915240925 ], "parameters": { "text": ":interrobang: Error in XML to JSON tool", "select": "channel", "blocksUi": "={\n\t\"blocks\": [\n{\n\t\t\t\"type\": \"section\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\"text\": \":interrobang: Error in XML to JSON tool\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"type\": \"section\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\"text\": \"*Time:*\\n{{ $now.format('dd/MM/yyyy HH:mm:ss') }}\\n*Execution ID:*\\n{{ $execution.id }}\\n\"\n\t\t\t},\n\t\t\t\"accessory\": {\n\t\t\t\t\"type\": \"button\",\n\t\t\t\t\"text\": {\n\t\t\t\t\t\"type\": \"plain_text\",\n\t\t\t\t\t\"text\": \"Go to Error\",\n\t\t\t\t\t\"emoji\": true\n\t\t\t\t},\n\t\t\t\t\"value\": \"error\",\n\t\t\t\t\"url\": \"{{ $env.WEBHOOK_URL }}{{ $workflow.id }}/executions/{{ $execution.id }}\",\n\t\t\t\t\"action_id\": \"button-action\",\n\t\t\t\t\"style\": \"primary\"\n\t\t\t}\n\t\t}\n\t]\n}", "channelId": { "__rl": true, "mode": "name", "value": "#alerts-xml-to-json" }, "messageType": "block", "otherOptions": {} }, "credentials": { "slackApi": { "id": "{{ $credentials.slackApi.id }}", "name": "Idea Bot" } }, "typeVersion": 2.1, "notes": "This slack node performs automated tasks as part of the workflow." } ], "pinData": {}, "connections": { "e70c134d-a546-447d-a0cb-96c5573232e1": { "main": [ [ { "node": "error-handler-e70c134d-a546-447d-a0cb-96c5573232e1", "type": "main", "index": 0 } ], [ { "node": "error-handler-e70c134d-a546-447d-a0cb-96c5573232e1-72279beb", "type": "main", "index": 0 } ], [ { "node": "error-handler-e70c134d-a546-447d-a0cb-96c5573232e1-de59f00e", "type": "main", "index": 0 } ], [ { "node": "error-handler-e70c134d-a546-447d-a0cb-96c5573232e1-97fe1d00", "type": "main", "index": 0 } ], [ { "node": "error-handler-e70c134d-a546-447d-a0cb-96c5573232e1-bafcb8a5", "type": "main", "index": 0 } ], [ { "node": "error-handler-e70c134d-a546-447d-a0cb-96c5573232e1-7c006357", "type": "main", "index": 0 } ], [ { "node": "error-handler-e70c134d-a546-447d-a0cb-96c5573232e1-f2c63535", "type": "main", "index": 0 } ], [ { "node": "error-handler-e70c134d-a546-447d-a0cb-96c5573232e1-e2c38ca2", "type": "main", "index": 0 } ], [ { "node": "error-handler-e70c134d-a546-447d-a0cb-96c5573232e1-40db29da", "type": "main", "index": 0 } ] ] }, "eacf0315-75fb-4461-b5d3-d8e7c5572492": { "main": [ [ { "node": "error-handler-eacf0315-75fb-4461-b5d3-d8e7c5572492", "type": "main", "index": 0 } ], [ { "node": "error-handler-eacf0315-75fb-4461-b5d3-d8e7c5572492-5fabdea7", "type": "main", "index": 0 } ], [ { "node": "error-handler-eacf0315-75fb-4461-b5d3-d8e7c5572492-bf8c12c9", "type": "main", "index": 0 } ], [ { "node": "error-handler-eacf0315-75fb-4461-b5d3-d8e7c5572492-b5a76eff", "type": "main", "index": 0 } ], [ { "node": "error-handler-eacf0315-75fb-4461-b5d3-d8e7c5572492-67b64041", "type": "main", "index": 0 } ], [ { "node": "error-handler-eacf0315-75fb-4461-b5d3-d8e7c5572492-e16ecc69", "type": "main", "index": 0 } ], [ { "node": "error-handler-eacf0315-75fb-4461-b5d3-d8e7c5572492-7c21f476", "type": "main", "index": 0 } ], [ { "node": "error-handler-eacf0315-75fb-4461-b5d3-d8e7c5572492-98f40125", "type": "main", "index": 0 } ], [ { "node": "error-handler-eacf0315-75fb-4461-b5d3-d8e7c5572492-ff000b62", "type": "main", "index": 0 } ] ] }, "4aa36858-f9ee-4653-81d5-7276347abcc2": { "main": [ [ { "node": "error-handler-4aa36858-f9ee-4653-81d5-7276347abcc2", "type": "main", "index": 0 } ], [ { "node": "error-handler-4aa36858-f9ee-4653-81d5-7276347abcc2-3d89468e", "type": "main", "index": 0 } ], [ { "node": "error-handler-4aa36858-f9ee-4653-81d5-7276347abcc2-4c90f75f", "type": "main", "index": 0 } ], [ { "node": "error-handler-4aa36858-f9ee-4653-81d5-7276347abcc2-0cfbaab8", "type": "main", "index": 0 } ], [ { "node": "error-handler-4aa36858-f9ee-4653-81d5-7276347abcc2-3c7a6ebe", "type": "main", "index": 0 } ], [ { "node": "error-handler-4aa36858-f9ee-4653-81d5-7276347abcc2-8a3192d0", "type": "main", "index": 0 } ], [ { "node": "error-handler-4aa36858-f9ee-4653-81d5-7276347abcc2-97827dae", "type": "main", "index": 0 } ], [ { "node": "error-handler-4aa36858-f9ee-4653-81d5-7276347abcc2-103bddc0", "type": "main", "index": 0 } ], [ { "node": "error-handler-4aa36858-f9ee-4653-81d5-7276347abcc2-2bd8111b", "type": "main", "index": 0 } ] ] }, "f37712fb-88cc-4d5a-9c37-6b9d962052e2": { "main": [ [ { "node": "error-handler-f37712fb-88cc-4d5a-9c37-6b9d962052e2-04583353", "type": "main", "index": 0 } ] ] }, "b8bde0ed-7d85-4582-89c4-08a0829c4df8": { "main": [ [ { "node": "error-handler-b8bde0ed-7d85-4582-89c4-08a0829c4df8-2870cb7e", "type": "main", "index": 0 } ] ] } }, "name": "Stickynote 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: Stickynote Workflow. This workflow integrates 9 different services: webhook, stickyNote, switch, respondToWebhook, set. It contains 20 nodes and follows best practices for error handling and security.", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Stickynote Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }