{ "meta": { "instanceId": "workflow-2b0d6539", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:58.517438", "updatedAt": "2025-09-29T07:07:58.517457", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "nodes": [ { "id": "f4b1bdd8-654d-4643-a004-ff1b2f32b5ae", "name": "When clicking ‘Test workflow’", "type": "n8n-nodes-base.manualTrigger", "position": [ 580, 1100 ], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow." }, { "id": "d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e", "name": "Create Asset", "type": "n8n-nodes-base.httpRequest", "position": [ 1940, 580 ], "parameters": { "url": "{{ $env.WEBHOOK_URL }}", "method": "POST", "options": { "redirect": { "redirect": {} } }, "sendBody": true, "sendHeaders": true, "authentication": "{{ $credentials.genericCredentialType }}", "bodyParameters": { "parameters": [ { "name": "mediaType", "value": "application/pdf" } ] }, "genericAuthType": "httpHeaderAuth", "headerParameters": { "parameters": [ { "name": "Authorization", "value": "=Bearer {{ $json.access_token }}" } ] } }, "credentials": { "httpHeaderAuth": { "id": "PU8GmSwXswwM1Fzq", "name": "Adobe API calls" } }, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "9e900a45-d792-4dc5-938c-0d5cdfd2e647", "name": "Execute Workflow Trigger", "type": "n8n-nodes-base.executeWorkflowTrigger", "position": [ 1140, 440 ], "parameters": {}, "typeVersion": 1, "notes": "This executeWorkflowTrigger node performs automated tasks as part of the workflow." }, { "id": "859f369d-f36f-4c3f-a50d-a17214fef2a3", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 20, 140 ], "parameters": { "color": 5, "width": 667.6107231291055, "height": 715.2927406867177, "content": "# Adobe API Wrapper\n\nSee Adobe documentation:\n- {{ $env.API_BASE_URL }}\n- {{ $env.API_BASE_URL }}\n\nIn short, this workflow does the following steps :\n\n- Authentication\n- Upload an asset (pdf) to adobe\n- Wait for the asset to be processed by Adobe\n- Download the result\n\n## Credential\n\nCredentials are not \"predefined\" and you'll have to create 2 custom credentials, detailed in the workflow.\n\n## Result\n\nThe result will depend on the transformation requested. It could be 1 of various files (json, zip...) accessible via download URL returned by the workflow.\n\nWorkflow can be tested with a PDF filed fetched with Dorpbox for example or any storage provider. " }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "450199c5-e588-486d-81cf-eb69cf729ab1", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 560, 900 ], "parameters": { "width": 857.2064431277577, "height": 463.937514110429, "content": "## Testing for development" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "311a75d6-4fbe-4d8f-89b3-d4b0ee21f7ae", "name": "Adobe API Query", "type": "n8n-nodes-base.set", "position": [ 900, 1000 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "62bb6466-acf4-41e5-9444-c9ef608a6822", "name": "endpoint", "type": "string", "value": "extractpdf" }, { "id": "0352f585-1434-4ab7-a704-a1e187fffa96", "name": "json_payload", "type": "object", "value": "={{ \n{\n \"renditionsToExtract\": [\n \"tables\"\n ],\n \"elementsToExtract\": [\n \"text\",\n \"tables\"\n ]\n }\n}}" } ] } }, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "abf20778-db50-4787-a5f4-7af5d5c76efe", "name": "Load a test pdf file", "type": "n8n-nodes-base.dropbox", "position": [ 900, 1180 ], "parameters": { "path": "/valerian/w/prod/_freelance/ADEZIF/AI/Source data/Brochures pour GPT/Brochure 3M/3M_doc_emballage VERSION FINALE.pdf", "operation": "download", "authentication": "{{ $credentials.oAuth2 }}" }, "credentials": { "dropboxOAuth2Api": { "id": "{{ $credentials.dropboxOAuth2Api.id }}", "name": "Dropbox account" } }, "typeVersion": 1, "notes": "This dropbox node performs automated tasks as part of the workflow." }, { "id": "8bb2ae0c-df61-4110-af44-b1040b4340a2", "name": "Query + File", "type": "n8n-nodes-base.merge", "position": [ 1180, 1080 ], "parameters": { "mode": "combine", "options": {}, "combinationMode": "mergeByPosition" }, "typeVersion": 2.1, "notes": "This merge node performs automated tasks as part of the workflow." }, { "id": "92afa6d6-daf8-4358-8c95-36473b810dc2", "name": "Query + File + Asset information", "type": "n8n-nodes-base.merge", "position": [ 2180, 580 ], "parameters": { "mode": "combine", "options": {}, "combinationMode": "mergeByPosition" }, "typeVersion": 2.1, "notes": "This merge node performs automated tasks as part of the workflow." }, { "id": "5d88b8e4-0b0a-463a-88db-c45d5e87e823", "name": "Process Query", "type": "n8n-nodes-base.httpRequest", "position": [ 2640, 580 ], "parameters": { "url": "{{ $env.BASE_URL }}", "method": "POST", "options": { "redirect": { "redirect": {} }, "response": { "response": { "fullResponse": true } } }, "jsonBody": "={{ \n{\n...{ \"assetID\":$('Query + File + Asset information').first().json.assetID },\n...$('Query + File + Asset information').first().json.json_payload\n}\n}}", "sendBody": true, "sendHeaders": true, "specifyBody": "json", "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpHeaderAuth", "headerParameters": { "parameters": [ { "name": "Authorization", "value": "=Bearer {{ $('Authenticartion (get token)').first().json[\"access_token\"] }}" } ] } }, "credentials": { "httpHeaderAuth": { "id": "PU8GmSwXswwM1Fzq", "name": "Adobe API calls" } }, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "47278b2f-dd04-4609-90ab-52f34b9a0e72", "name": "Wait 5 second", "type": "n8n-nodes-base.wait", "position": [ 2860, 580 ], "webhookId": "ed00a9a8-d599-4a98-86f8-a15176352c0a", "parameters": { "unit": "seconds", "amount": 5 }, "typeVersion": 1, "notes": "This wait node performs automated tasks as part of the workflow." }, { "id": "691b52ae-132a-4105-b1e4-bb7d55d0e347", "name": "Try to download the result", "type": "n8n-nodes-base.httpRequest", "position": [ 3080, 580 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "sendHeaders": true, "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpHeaderAuth", "headerParameters": { "parameters": [ { "name": "Authorization", "value": "=Bearer {{ $('Authenticartion (get token)').first().json[\"access_token\"] }}" } ] } }, "credentials": { "httpHeaderAuth": { "id": "PU8GmSwXswwM1Fzq", "name": "Adobe API calls" } }, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "277dea14-de8d-4719-aff1-f4008d6d5c67", "name": "Switch", "type": "n8n-nodes-base.switch", "position": [ 3260, 580 ], "parameters": { "rules": { "values": [ { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "operator": { "type": "string", "operation": "equals" }, "leftValue": "={{ $json.status }}", "rightValue": "in progress" } ] }, "renameOutput": true }, { "outputKey": "YOUR_CREDENTIAL_HERE", "conditions": { "options": { "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "6d6917f6-abb9-4175-a070-a2f500d9f34f", "operator": { "name": "filter.operator.equals", "type": "string", "operation": "equals" }, "leftValue": "={{ $json.status }}", "rightValue": "failed" } ] }, "renameOutput": true } ] }, "options": { "fallbackOutput": "extra" } }, "typeVersion": 3, "notes": "This switch node performs automated tasks as part of the workflow." }, { "id": "8f6f8273-43ed-4a44-bb27-6ce137000472", "name": "Forward response to origin workflow", "type": "n8n-nodes-base.set", "position": [ 3820, 600 ], "parameters": { "options": {}, "assignments": { "assignments": [] }, "includeOtherFields": true }, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "00e2d7e3-94cd-49e5-a975-2fdc1a7a95fd", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 2780, 480 ], "parameters": { "width": 741.3069226712129, "height": 336.57433650102917, "content": "## Wait for file do be processed" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "3667b1ba-b9a6-4e1a-94b1-61b37f1e7adc", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 1324.6733934850213, 147.59707015795897 ], "parameters": { "color": 5, "width": 402.63171535688423, "height": 700.9473619571734, "content": "### 1- Credential for token request\n\nCreate a \"Custom Auth\" credential like this :\n\n```\n{\n \"headers\": {\n \"Content-Type\":\"application/x-www-form-urlencoded\"\n }, \n \"body\" : {\n \"client_id\": \"****\", \n \"client_secret\":\"****\"\n }\n}\n```" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "718bb738-8ce4-4b38-94e4-6ccac1adf9ec", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 1800, 152.6219700851708 ], "parameters": { "color": 5, "width": 1752.5923360342827, "height": 692.0175575715904, "content": "### 2- Credential for all other Queries\n\nCreate a \"Header Auth\" credential like this : \n\n```\nX-API-Key: **** (same value as client_id)\n```" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "d6bc8011-699d-4388-82f5-e5f90ba8672a", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [ 740, 140 ], "parameters": { "color": 5, "width": 529.7500231395039, "height": 718.8735380890446, "content": "## Workflow Input\n\n- endpoint: splitpdf, extractpdf, ...\n- json_payload : all endpoint payload except assetID which is handled in current workflow\n- **PDF Data as n8n Binary**\n\n\n### Example for **split** : \n\n```\n{\n \"endpoint\": \"splitpdf\",\n \"json_payload\": {\n \"splitoption\": \n { \"pageRanges\": [{\"start\": 1,\"end\": 2}]}\n }\n }\n}\n```\n\n### Example for **extractpdf**\n\n```\n{\n \"endpoint\": \"splitpdf\",\n \"json_payload\": {\n \"renditionsToExtract\": [\n \"tables\"\n ],\n \"elementsToExtract\": [\n \"text\",\n \"tables\"\n ]\n }\n}\n```" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "2bbf6d9d-8399-49ba-94ea-b90795ef44ba", "name": "Authenticartion (get token)", "type": "n8n-nodes-base.httpRequest", "position": [ 1500, 580 ], "parameters": { "url": "{{ $env.WEBHOOK_URL }}", "method": "POST", "options": {}, "sendBody": true, "contentType": "form-urlencoded", "authentication": "{{ $credentials.genericCredentialType }}", "bodyParameters": { "parameters": [ {} ] }, "genericAuthType": "httpCustomAuth" }, "credentials": { "httpCustomAuth": { "id": "djeOoXpBafK4aiGX", "name": "Adobe API" } }, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "be4e87e8-6e56-408f-b932-320023382f98", "name": "Upload PDF File (asset)", "type": "n8n-nodes-base.httpRequest", "position": [ 2440, 580 ], "parameters": { "url": "{{ $env.BASE_URL }}", "method": "PUT", "options": { "redirect": { "redirect": {} } }, "sendBody": true, "sendQuery": true, "contentType": "binaryData", "queryParameters": { "parameters": [ {} ] }, "inputDataFieldName": "data" }, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow." } ], "pinData": {}, "connections": { "d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e": { "main": [ [ { "node": "error-handler-d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e", "type": "main", "index": 0 } ], [ { "node": "error-handler-d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e-9c7c65aa", "type": "main", "index": 0 } ], [ { "node": "error-handler-d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e-cbebca1c", "type": "main", "index": 0 } ], [ { "node": "error-handler-d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e-185a7498", "type": "main", "index": 0 } ], [ { "node": "error-handler-d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e-de1d8f47", "type": "main", "index": 0 } ], [ { "node": "error-handler-d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e-807a0fe5", "type": "main", "index": 0 } ], [ { "node": "error-handler-d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e-de8e7c3b", "type": "main", "index": 0 } ], [ { "node": "error-handler-d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e-5e4a2e9b", "type": "main", "index": 0 } ], [ { "node": "error-handler-d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e-6740d0cc", "type": "main", "index": 0 } ] ] }, "5d88b8e4-0b0a-463a-88db-c45d5e87e823": { "main": [ [ { "node": "error-handler-5d88b8e4-0b0a-463a-88db-c45d5e87e823", "type": "main", "index": 0 } ], [ { "node": "error-handler-5d88b8e4-0b0a-463a-88db-c45d5e87e823-ac496beb", "type": "main", "index": 0 } ], [ { "node": "error-handler-5d88b8e4-0b0a-463a-88db-c45d5e87e823-ec384ef8", "type": "main", "index": 0 } ], [ { "node": "error-handler-5d88b8e4-0b0a-463a-88db-c45d5e87e823-0641e356", "type": "main", "index": 0 } ], [ { "node": "error-handler-5d88b8e4-0b0a-463a-88db-c45d5e87e823-9dabb604", "type": "main", "index": 0 } ], [ { "node": "error-handler-5d88b8e4-0b0a-463a-88db-c45d5e87e823-c7d7af21", "type": "main", "index": 0 } ], [ { "node": "error-handler-5d88b8e4-0b0a-463a-88db-c45d5e87e823-40992106", "type": "main", "index": 0 } ], [ { "node": "error-handler-5d88b8e4-0b0a-463a-88db-c45d5e87e823-6e4dc606", "type": "main", "index": 0 } ], [ { "node": "error-handler-5d88b8e4-0b0a-463a-88db-c45d5e87e823-ca402876", "type": "main", "index": 0 } ] ] }, "691b52ae-132a-4105-b1e4-bb7d55d0e347": { "main": [ [ { "node": "error-handler-691b52ae-132a-4105-b1e4-bb7d55d0e347", "type": "main", "index": 0 } ], [ { "node": "error-handler-691b52ae-132a-4105-b1e4-bb7d55d0e347-f93717f2", "type": "main", "index": 0 } ], [ { "node": "error-handler-691b52ae-132a-4105-b1e4-bb7d55d0e347-21455058", "type": "main", "index": 0 } ], [ { "node": "error-handler-691b52ae-132a-4105-b1e4-bb7d55d0e347-b01d6231", "type": "main", "index": 0 } ], [ { "node": "error-handler-691b52ae-132a-4105-b1e4-bb7d55d0e347-78242e51", "type": "main", "index": 0 } ], [ { "node": "error-handler-691b52ae-132a-4105-b1e4-bb7d55d0e347-50946813", "type": "main", "index": 0 } ], [ { "node": "error-handler-691b52ae-132a-4105-b1e4-bb7d55d0e347-94b8fb99", "type": "main", "index": 0 } ], [ { "node": "error-handler-691b52ae-132a-4105-b1e4-bb7d55d0e347-a06e545d", "type": "main", "index": 0 } ], [ { "node": "error-handler-691b52ae-132a-4105-b1e4-bb7d55d0e347-a553e4c6", "type": "main", "index": 0 } ] ] }, "2bbf6d9d-8399-49ba-94ea-b90795ef44ba": { "main": [ [ { "node": "error-handler-2bbf6d9d-8399-49ba-94ea-b90795ef44ba", "type": "main", "index": 0 } ], [ { "node": "error-handler-2bbf6d9d-8399-49ba-94ea-b90795ef44ba-40b159b8", "type": "main", "index": 0 } ], [ { "node": "error-handler-2bbf6d9d-8399-49ba-94ea-b90795ef44ba-59d32c88", "type": "main", "index": 0 } ], [ { "node": "error-handler-2bbf6d9d-8399-49ba-94ea-b90795ef44ba-28ef1dd1", "type": "main", "index": 0 } ], [ { "node": "error-handler-2bbf6d9d-8399-49ba-94ea-b90795ef44ba-3539d84d", "type": "main", "index": 0 } ], [ { "node": "error-handler-2bbf6d9d-8399-49ba-94ea-b90795ef44ba-9e4c6431", "type": "main", "index": 0 } ], [ { "node": "error-handler-2bbf6d9d-8399-49ba-94ea-b90795ef44ba-bb7bac66", "type": "main", "index": 0 } ], [ { "node": "error-handler-2bbf6d9d-8399-49ba-94ea-b90795ef44ba-0955c1bd", "type": "main", "index": 0 } ], [ { "node": "error-handler-2bbf6d9d-8399-49ba-94ea-b90795ef44ba-eb4ab0a1", "type": "main", "index": 0 } ] ] }, "be4e87e8-6e56-408f-b932-320023382f98": { "main": [ [ { "node": "error-handler-be4e87e8-6e56-408f-b932-320023382f98", "type": "main", "index": 0 } ], [ { "node": "error-handler-be4e87e8-6e56-408f-b932-320023382f98-1909a315", "type": "main", "index": 0 } ], [ { "node": "error-handler-be4e87e8-6e56-408f-b932-320023382f98-5c95de47", "type": "main", "index": 0 } ], [ { "node": "error-handler-be4e87e8-6e56-408f-b932-320023382f98-4974f3ff", "type": "main", "index": 0 } ], [ { "node": "error-handler-be4e87e8-6e56-408f-b932-320023382f98-a0b9dae2", "type": "main", "index": 0 } ], [ { "node": "error-handler-be4e87e8-6e56-408f-b932-320023382f98-12d45be6", "type": "main", "index": 0 } ], [ { "node": "error-handler-be4e87e8-6e56-408f-b932-320023382f98-f7d1c1f9", "type": "main", "index": 0 } ], [ { "node": "error-handler-be4e87e8-6e56-408f-b932-320023382f98-7be879b5", "type": "main", "index": 0 } ], [ { "node": "error-handler-be4e87e8-6e56-408f-b932-320023382f98-1d245aef", "type": "main", "index": 0 } ] ] } }, "name": "Manualtrigger 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: Manualtrigger Workflow. This workflow integrates 10 different services: stickyNote, httpRequest, wait, dropbox, merge. It contains 30 nodes and follows best practices for error handling and security.", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Manualtrigger Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }