{"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 <WEBHOOK_URL>\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."}],"connections":{"Error Response":{"main":[[],[],[],[],[],[],[],[],[]]},"POST":{"main":[[],[],[],[],[],[],[],[],[]]},"Success Response":{"main":[[],[],[],[],[],[],[],[],[]]},"Extract From File":{"main":[[]]},"Send to Error Channel":{"main":[[]]}},"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.","notes":"Excellent quality workflow: Stickynote Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}