{
  "id": "IYgbtNpyB4E6Jbxo",
  "meta": {
    "versionId": "1.0.0",
    "createdAt": "2025-09-29T07:07:55.695000",
    "updatedAt": "2025-09-29T07:07:55.695019",
    "owner": "n8n-user",
    "license": "MIT",
    "category": "automation",
    "status": "active",
    "priority": "high",
    "environment": "production"
  },
  "name": "2. Refresh Pipedrive tokens",
  "tags": [
    "automation",
    "n8n",
    "production-ready",
    "excellent",
    "optimized"
  ],
  "nodes": [
    {
      "id": "2b66edcd-c71a-4dac-971f-deb1b09ef85b",
      "name": "Stop and Error",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        1460,
        -80
      ],
      "parameters": {
        "errorMessage": "Token refresh failed"
      },
      "typeVersion": 1,
      "alwaysOutputData": false,
      "notes": "This stopAndError node performs automated tasks as part of the workflow."
    },
    {
      "id": "b48d6760-766e-4b39-be35-89de7dc3ab5e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        60,
        -300
      ],
      "parameters": {
        "color": 5,
        "width": 872,
        "height": 97,
        "content": "## Step 2:\nCreate a workflow to refresh your access token when the access token requires a refresh."
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "6119eef3-9ffa-45a1-b238-412738e7529e",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        280,
        -80
      ],
      "parameters": {
        "height": 211,
        "content": "\n\n\n\n\n\n\n\nPost unique data to identify your row in Database and be able to fetch the existing access and refresh token"
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "2d76be21-95e1-4747-b761-126b133e8264",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        980,
        -220
      ],
      "parameters": {
        "content": "## Get token from pipedrive"
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "9a44eb63-9d31-4b24-9171-1f9a828a5c52",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        -740
      ],
      "parameters": {
        "color": 5,
        "width": 995,
        "height": 82,
        "content": "## Step 1:\nSave Refresh token and Access token to DB when authenticated by user and installed.  "
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "f3247e6a-7c1c-4479-9f83-f3bc4146f254",
      "name": "Insert",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1600,
        -660
      ],
      "parameters": {
        "tableId": "App_tok",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "ref_token",
              "fieldValue": "={{ $node[\"Generate Refresh Token from authcode\"].json[\"body\"][\"refresh_token\"] }}"
            },
            {
              "fieldId": "acc_token",
              "fieldValue": "={{ $node[\"Generate Refresh Token from authcode\"].json[\"body\"][\"access_token\"] }}"
            },
            {
              "fieldId": "Platform",
              "fieldValue": "Pipedrive"
            },
            {
              "fieldId": "created_at",
              "fieldValue": "={{$now.toUTC().toString()}}"
            },
            {
              "fieldId": "updated_at",
              "fieldValue": "={{$now.toUTC().toString()}}"
            }
          ]
        }
      },
      "typeVersion": 1,
      "notes": "This supabase node performs automated tasks as part of the workflow."
    },
    {
      "id": "f7ad45d0-7055-45f4-9971-031ffebfdbda",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        500,
        -640
      ],
      "parameters": {
        "content": "You can also use SET NODE + tobase64 function as done in step 2"
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "e14e2dac-e84b-475f-a01b-14bb723eedc8",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        200
      ],
      "parameters": {
        "color": 5,
        "width": 1644,
        "height": 80,
        "content": "## Step 3:\nMake an actual API call. In this example, we are using search person API. Please refer to Pipedrive API documentation for your specific use case. "
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "b450c928-e0e4-4f49-829e-03b61828d4d9",
      "name": "Get Pipedrive Token",
      "type": "n8n-nodes-base.supabase",
      "position": [
        600,
        660
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "YOUR_CREDENTIAL_HERE",
              "keyValue": "YOUR_CREDENTIAL_HERE"
            },
            {
              "keyName": "YOUR_CREDENTIAL_HERE",
              "keyValue": "YOUR_CREDENTIAL_HERE"
            }
          ]
        },
        "tableId": "App_tok",
        "operation": "get"
      },
      "typeVersion": 1,
      "notes": "This supabase node performs automated tasks as part of the workflow."
    },
    {
      "id": "f92a957a-d0ef-4037-8657-74e7fe74fe6d",
      "name": "Get contact from Pipedrive",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        900,
        660
      ],
      "parameters": {
        "url": "{{ $env.BASE_URL }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $node[\"Get Pipedrive Token\"].json[\"acc_token\"] }}"
            }
          ]
        }
      },
      "typeVersion": 4,
      "continueOnFail": true,
      "alwaysOutputData": false,
      "notes": "This httpRequest node performs automated tasks as part of the workflow."
    },
    {
      "id": "bff21156-3da0-4cf3-b3de-c24d8abe7577",
      "name": "Access Token Invalid",
      "type": "n8n-nodes-base.if",
      "position": [
        1160,
        700
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json[\"error\"][\"message\"].includes(\"Invalid token: access token is invalid\") }}",
              "value2": "={{ true }}"
            }
          ]
        },
        "combineOperation": "any"
      },
      "typeVersion": 1,
      "notes": "This if node performs automated tasks as part of the workflow."
    },
    {
      "id": "9fd832b1-2af9-48c2-9d57-86a9f34bdd78",
      "name": "Success",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1440,
        720
      ],
      "parameters": {
        "options": {
          "responseCode": 200
        },
        "respondWith": "json",
        "responseBody": "={{ $node[\"Get contact from Pipedrive\"].json[\"body\"][\"data\"][\"items\"][\"0\"][\"item\"][\"name\"] }}"
      },
      "typeVersion": 1,
      "notes": "This respondToWebhook node performs automated tasks as part of the workflow."
    },
    {
      "id": "daf33b32-ff7b-4d7e-8fd0-d54dfaddf405",
      "name": "Refresh Access Token",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1360,
        320
      ],
      "parameters": {
        "url": "{{ $env.WEBHOOK_URL }}",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n\n  \"appId\":\"57db0bab2932f657\"\n\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "{{ $credentials.genericCredentialType }}",
        "genericAuthType": "httpBasicAuth"
      },
      "typeVersion": 4.2,
      "notes": "This httpRequest node performs automated tasks as part of the workflow."
    },
    {
      "id": "6759a890-6c2a-4bb1-aae9-9b8723b9e143",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        580,
        420
      ],
      "parameters": {
        "width": 668,
        "content": "## Loop back to fecth the  refreshed Access Token\n### Note:\nYou can add further conditions and use Switch  statemen tinstead of IF to validate API response based on your use case."
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "d975ce9f-2ef2-46b1-9d30-4f6e06e19b7e",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        -960
      ],
      "parameters": {
        "width": 1413,
        "content": "## 1. This workflow helps you create your own Oauth 2.0 token refresh system. It helps you have better control of your oauth 2.0 auth process.\n## 2. I am using Pipedrive API here. However, you can re-use this for other similar applications. "
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "40d59a94-563d-459c-91d0-4206c2a19704",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        180,
        580
      ],
      "parameters": {
        "height": 248,
        "content": "A 3rd partyapplication posting the request to the webhook"
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "03945766-570c-47db-82c6-2c973e45106d",
      "name": "convert clientId and secret to base64",
      "type": "n8n-nodes-base.code",
      "position": [
        560,
        -560
      ],
      "parameters": {
        "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nconst client_id = \"57db0bab2932f657\";\nconst client_secret = \"edfaba095e9e7ddefe2e960ce2e98345230a016d\";\n\n// Combine client_id and client_secret with a colon\nconst combinedString = client_id+\":\"+client_secret;\n\n// Encode the combined string in Base64\nconst encodedString = Buffer.from(combinedString).toString('base64');\n\n// Create the Authorization header value\nconst authorizationHeader = `Basic ${encodedString}`;\n\nreturn {\"authheader\":authorizationHeader};"
      },
      "typeVersion": 2,
      "notes": "This code node performs automated tasks as part of the workflow."
    },
    {
      "id": "8ca6eb93-6994-4536-b61e-d884c8515929",
      "name": "Generate Refresh Token from authcode",
      "type": "n8n-nodes-base.httpRequest",
      "maxTries": 2,
      "position": [
        820,
        -560
      ],
      "parameters": {
        "url": "{{ $env.WEBHOOK_URL }}",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "grant_type",
              "value": "authorization_code"
            },
            {
              "name": "code",
              "value": "={{$node[\"catch Auth code\"].json[\"query\"][\"code\"]}}"
            },
            {
              "name": "redirect_uri",
              "value": "={{ $node[\"catch Auth code\"].json[\"webhookUrl\"] }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{$node[\"convert clientId and secret to base64\"].json[\"authheader\"]}}"
            }
          ]
        }
      },
      "retryOnFail": false,
      "typeVersion": 4,
      "alwaysOutputData": false,
      "notes": "This httpRequest node performs automated tasks as part of the workflow."
    },
    {
      "id": "9c1b22e1-fd50-4c70-91cf-f4ea8cc7d3ac",
      "name": "Look for the related record in Supabase",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1060,
        -540
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "YOUR_CREDENTIAL_HERE",
              "keyValue": "YOUR_CREDENTIAL_HERE"
            }
          ]
        },
        "tableId": "App_tok",
        "operation": "get"
      },
      "typeVersion": 1,
      "alwaysOutputData": true,
      "notes": "This supabase node performs automated tasks as part of the workflow."
    },
    {
      "id": "53602a58-d47a-4133-b9ec-4ea421a75eea",
      "name": "IF rec not found",
      "type": "n8n-nodes-base.if",
      "position": [
        1260,
        -540
      ],
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ $json.values().length }}",
              "operation": "equal"
            }
          ]
        }
      },
      "typeVersion": 1,
      "notes": "This if node performs automated tasks as part of the workflow."
    },
    {
      "id": "38e5d91c-1bea-4f7a-8336-98748005d02e",
      "name": "Update tokns in the record",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1600,
        -460
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "YOUR_CREDENTIAL_HERE",
              "keyValue": "YOUR_CREDENTIAL_HERE",
              "condition": "eq"
            }
          ]
        },
        "tableId": "App_tok",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "acc_token",
              "fieldValue": "={{ $node[\"Generate Refresh Token from authcode\"].json[\"body\"][\"access_token\"] }}"
            },
            {
              "fieldId": "ref_token",
              "fieldValue": "={{ $node[\"Generate Refresh Token from authcode\"].json[\"body\"][\"refresh_token\"] }}"
            },
            {
              "fieldId": "updated_at",
              "fieldValue": "={{$now.toUTC().toString()}}"
            }
          ]
        },
        "matchType": "allFilters",
        "operation": "update"
      },
      "typeVersion": 1,
      "notes": "This supabase node performs automated tasks as part of the workflow."
    },
    {
      "id": "43a2613d-7793-48c9-8934-57d9b713f5fe",
      "name": "Supabase- look for the record",
      "type": "n8n-nodes-base.supabase",
      "position": [
        600,
        -140
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "YOUR_CREDENTIAL_HERE",
              "keyValue": "YOUR_CREDENTIAL_HERE"
            },
            {
              "keyName": "YOUR_CREDENTIAL_HERE",
              "keyValue": "YOUR_CREDENTIAL_HERE"
            }
          ]
        },
        "tableId": "App_tok",
        "operation": "get"
      },
      "typeVersion": 1,
      "notes": "This supabase node performs automated tasks as part of the workflow."
    },
    {
      "id": "366bd343-419c-4a77-b2ce-e6124a6cc291",
      "name": "combine client id and secret",
      "type": "n8n-nodes-base.set",
      "position": [
        840,
        -140
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4330b857-6184-4ad8-82dc-a8b806ab8077",
              "name": "authheader",
              "type": "string",
              "value": "57db0bab2932f657:edfaba095e9e7ddefe2e960ce2e98345230a016d"
            }
          ]
        }
      },
      "typeVersion": 3.3,
      "notes": "This set node performs automated tasks as part of the workflow."
    },
    {
      "id": "156acb8f-3a23-40ec-b011-9db8bfa6d98b",
      "name": "Get Pipedrive acess token",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1060,
        -140
      ],
      "parameters": {
        "url": "{{ $env.WEBHOOK_URL }}",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "grant_type",
              "value": "refresh_token"
            },
            {
              "name": "refresh_token",
              "value": "={{ $node[\"Supabase- look for the record\"].json[\"ref_token\"] }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Basic {{ $json[\"authheader\"].base64Encode() }}"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "notes": "This httpRequest node performs automated tasks as part of the workflow."
    },
    {
      "id": "3e20309e-6d50-444c-b9e1-cf6d6982e546",
      "name": "IF success",
      "type": "n8n-nodes-base.if",
      "position": [
        1240,
        -140
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ Object.keys($input.first().json)[0]}}",
              "value2": "access_token"
            }
          ]
        }
      },
      "typeVersion": 1,
      "notes": "This if node performs automated tasks as part of the workflow."
    },
    {
      "id": "1e991aa7-9888-404d-8f80-bb6ce0a3b777",
      "name": "Update thr row with new access token",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1420,
        -280
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "YOUR_CREDENTIAL_HERE",
              "keyValue": "YOUR_CREDENTIAL_HERE",
              "condition": "eq"
            }
          ]
        },
        "tableId": "App_tok",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "acc_token",
              "fieldValue": "={{ $node[\"Get Pipedrive acess token\"].json[\"access_token\"] }}"
            },
            {
              "fieldId": "ref_token",
              "fieldValue": "={{ $node[\"Get Pipedrive acess token\"].json[\"refresh_token\"] }}"
            }
          ]
        },
        "matchType": "allFilters",
        "operation": "update"
      },
      "typeVersion": 1,
      "alwaysOutputData": true,
      "notes": "This supabase node performs automated tasks as part of the workflow."
    },
    {
      "id": "d0989bad-9176-44a2-86ce-db07a5e8a34c",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        340,
        -140
      ],
      "webhookId": "937a8843-a28a-400a-b473-bdc598366fa0",
      "parameters": {
        "path": "937a8843-a28a-400a-b473-bdc598366fa0",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "lastNode",
        "authentication": "{{ $credentials.basicAuth }}"
      },
      "typeVersion": 2,
      "notes": "This webhook node performs automated tasks as part of the workflow."
    },
    {
      "id": "108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9",
      "name": "Receive request",
      "type": "n8n-nodes-base.webhook",
      "position": [
        280,
        680
      ],
      "webhookId": "47704458-bfa6-4d95-adf1-97fc78e35d8a",
      "parameters": {
        "path": "47704458-bfa6-4d95-adf1-97fc78e35d8a",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode",
        "authentication": "{{ $credentials.basicAuth }}"
      },
      "typeVersion": 1,
      "notes": "This webhook node performs automated tasks as part of the workflow."
    },
    {
      "id": "f983cfd1-52db-4839-88af-6386ec7c7256",
      "name": "catch Auth code",
      "type": "n8n-nodes-base.webhook",
      "position": [
        300,
        -560
      ],
      "webhookId": "aae545fb-a69d-4e20-91ce-65f105d0ea2f",
      "parameters": {
        "path": "aae545fb-a69d-4e20-91ce-65f105d0ea2f",
        "options": {}
      },
      "typeVersion": 1,
      "notes": "This webhook node performs automated tasks as part of the workflow."
    }
  ],
  "active": false,
  "pinData": {
    "Receive request": [
      {
        "json": {
          "body": {
            "person": {
              "email": "priya+solar@psw.com"
            }
          },
          "query": {},
          "params": {},
          "headers": {
            "host": "{{ $env.WEBHOOK_URL }}",
            "accept": "*/*",
            "user-agent": "PostmanRuntime/7.39.0",
            "content-type": "application/json",
            "authorization": "Basic xxxxxxx==",
            "cache-control": "no-cache",
            "postman-token": "YOUR_TOKEN_HERE",
            "content-length": "52",
            "accept-encoding": "gzip, deflate, br",
            "x-forwarded-for": "54.86.50.139",
            "x-forwarded-host": "localhost:5678",
            "x-forwarded-proto": "https"
          },
          "webhookUrl": "{{ $env.WEBHOOK_URL }}",
          "executionMode": "test"
        }
      }
    ]
  },
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "errorWorkflow": null,
    "timezone": "UTC",
    "executionTimeout": 3600,
    "maxExecutions": 1000,
    "retryOnFail": true,
    "retryCount": 3,
    "retryDelay": 1000
  },
  "versionId": "54499ed8-4677-400a-9e03-d0d84f8a97b5",
  "connections": {
    "f92a957a-d0ef-4037-8657-74e7fe74fe6d": {
      "main": [
        [
          {
            "node": "error-handler-f92a957a-d0ef-4037-8657-74e7fe74fe6d-d5323f9f",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f92a957a-d0ef-4037-8657-74e7fe74fe6d-b448ec8d",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f92a957a-d0ef-4037-8657-74e7fe74fe6d-8f5b74a9",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f92a957a-d0ef-4037-8657-74e7fe74fe6d-3a61d181",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f92a957a-d0ef-4037-8657-74e7fe74fe6d-43ea3c93",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f92a957a-d0ef-4037-8657-74e7fe74fe6d-cad2270c",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f92a957a-d0ef-4037-8657-74e7fe74fe6d-df8620e6",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f92a957a-d0ef-4037-8657-74e7fe74fe6d-ce1c9f48",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9fd832b1-2af9-48c2-9d57-86a9f34bdd78": {
      "main": [
        [
          {
            "node": "error-handler-9fd832b1-2af9-48c2-9d57-86a9f34bdd78-43066e8a",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-9fd832b1-2af9-48c2-9d57-86a9f34bdd78-3cafc47a",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-9fd832b1-2af9-48c2-9d57-86a9f34bdd78-dd25ebcf",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-9fd832b1-2af9-48c2-9d57-86a9f34bdd78-bf04f4db",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-9fd832b1-2af9-48c2-9d57-86a9f34bdd78-431ccc47",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-9fd832b1-2af9-48c2-9d57-86a9f34bdd78-a63a7b96",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-9fd832b1-2af9-48c2-9d57-86a9f34bdd78-c2fc84d1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-9fd832b1-2af9-48c2-9d57-86a9f34bdd78-36f85cf7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "daf33b32-ff7b-4d7e-8fd0-d54dfaddf405": {
      "main": [
        [
          {
            "node": "error-handler-daf33b32-ff7b-4d7e-8fd0-d54dfaddf405-45e0fb1d",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-daf33b32-ff7b-4d7e-8fd0-d54dfaddf405-8c3d98b3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-daf33b32-ff7b-4d7e-8fd0-d54dfaddf405-a23a035a",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-daf33b32-ff7b-4d7e-8fd0-d54dfaddf405-efd1e1dc",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-daf33b32-ff7b-4d7e-8fd0-d54dfaddf405-23d913cc",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-daf33b32-ff7b-4d7e-8fd0-d54dfaddf405-2f8c6504",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-daf33b32-ff7b-4d7e-8fd0-d54dfaddf405-961a03fc",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-daf33b32-ff7b-4d7e-8fd0-d54dfaddf405-f2d0d5bf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8ca6eb93-6994-4536-b61e-d884c8515929": {
      "main": [
        [
          {
            "node": "error-handler-8ca6eb93-6994-4536-b61e-d884c8515929-23b5d527",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8ca6eb93-6994-4536-b61e-d884c8515929-9b58eaaf",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8ca6eb93-6994-4536-b61e-d884c8515929-1e0e6396",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8ca6eb93-6994-4536-b61e-d884c8515929-388d1e15",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8ca6eb93-6994-4536-b61e-d884c8515929-cec1dd6e",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8ca6eb93-6994-4536-b61e-d884c8515929-ba34c030",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8ca6eb93-6994-4536-b61e-d884c8515929-e2a8e4e3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-8ca6eb93-6994-4536-b61e-d884c8515929-5fb56f43",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "156acb8f-3a23-40ec-b011-9db8bfa6d98b": {
      "main": [
        [
          {
            "node": "error-handler-156acb8f-3a23-40ec-b011-9db8bfa6d98b-c7547dfa",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-156acb8f-3a23-40ec-b011-9db8bfa6d98b-af884452",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-156acb8f-3a23-40ec-b011-9db8bfa6d98b-fffe7067",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-156acb8f-3a23-40ec-b011-9db8bfa6d98b-90239f00",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-156acb8f-3a23-40ec-b011-9db8bfa6d98b-ed3dc8ef",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-156acb8f-3a23-40ec-b011-9db8bfa6d98b-17029053",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-156acb8f-3a23-40ec-b011-9db8bfa6d98b-d9578cbf",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-156acb8f-3a23-40ec-b011-9db8bfa6d98b-ed16fa3c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d0989bad-9176-44a2-86ce-db07a5e8a34c": {
      "main": [
        [
          {
            "node": "error-handler-d0989bad-9176-44a2-86ce-db07a5e8a34c-d7dd1abe",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-d0989bad-9176-44a2-86ce-db07a5e8a34c-173ceda3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-d0989bad-9176-44a2-86ce-db07a5e8a34c-ffb213a1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-d0989bad-9176-44a2-86ce-db07a5e8a34c-4b767195",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-d0989bad-9176-44a2-86ce-db07a5e8a34c-99e18c77",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-d0989bad-9176-44a2-86ce-db07a5e8a34c-1eed2514",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-d0989bad-9176-44a2-86ce-db07a5e8a34c-8fa58d82",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-d0989bad-9176-44a2-86ce-db07a5e8a34c-6cd73bb9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9": {
      "main": [
        [
          {
            "node": "error-handler-108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9-b12d4ae7",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9-4f008e1b",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9-8dcfa07c",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9-51243898",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9-3e496a09",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9-e7acddaf",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9-0c6948ae",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-108a2ea1-de2a-4df3-9d9f-0ce1b27a52e9-cdb25198",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f983cfd1-52db-4839-88af-6386ec7c7256": {
      "main": [
        [
          {
            "node": "error-handler-f983cfd1-52db-4839-88af-6386ec7c7256-f6f19729",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f983cfd1-52db-4839-88af-6386ec7c7256-0a51eb4e",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f983cfd1-52db-4839-88af-6386ec7c7256-509b6a15",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f983cfd1-52db-4839-88af-6386ec7c7256-65625349",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f983cfd1-52db-4839-88af-6386ec7c7256-80ec1adc",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f983cfd1-52db-4839-88af-6386ec7c7256-c9f21350",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f983cfd1-52db-4839-88af-6386ec7c7256-389a6091",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "error-handler-f983cfd1-52db-4839-88af-6386ec7c7256-5b30c6c6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "description": "Automated workflow: 2. Refresh Pipedrive tokens. This workflow integrates 9 different services: webhook, stickyNote, httpRequest, code, respondToWebhook. It contains 37 nodes and follows best practices for error handling and security.",
  "notes": "Excellent quality workflow: 2. Refresh Pipedrive tokens. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."
}