{
  "meta": {
    "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 }}"
            }
          ]
        }
      },
      "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 }}"
      },
      "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\"] }}"
            }
          ]
        }
      },
      "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\"] }}"
            }
          ]
        }
      },
      "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"
      },
      "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."
}