{
  "meta": {
    "instanceId": "a2435d996b378e3a6fdef0468d70285e3aa0fbd0004de817bfc80e80afee4e7b"
  },
  "nodes": [
    {
      "id": "5fa5ccd8-81be-45a2-ac00-7ef28148c0c7",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        700,
        460
      ],
      "parameters": {
        "width": 1767.817629414989,
        "height": 470.03830555074103,
        "content": "## DROPCONTACT 250 BATCH ASYNCHRONOUSLY \n## 1500/HOUR REQUESTS\n**Double click** to edit me. [Guide](https://docs.n8n.io/workflows/sticky-notes/)"
      },
      "typeVersion": 1
    },
    {
      "id": "9c6826a3-ec94-4ff4-92a6-0ff7fa22349e",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1000,
        620
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "first_name"
            },
            {
              "fieldToAggregate": "last_name"
            },
            {
              "fieldToAggregate": "domain"
            },
            {
              "fieldToAggregate": "phantom_linkedin"
            },
            {
              "fieldToAggregate": "full_name"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c0d5b884-de58-42f3-bc50-0c7e6ca5e576",
      "name": "PROFILES QUERY",
      "type": "n8n-nodes-base.postgres",
      "position": [
        560,
        600
      ],
      "parameters": {
        "query": "select first_name, last_name, domain, full_name\nfrom accounts a \nleft join profiles p on a.company_id = p.company_id \nwhere title = 'Bestuurder' and p.email is null and a.domain != ''\nand domain NOT IN ('gmail.com', 'hotmail.com', 'hotmail.be', 'hotmail%','outlook.com','telenet.be', 'live.be', 'skynet.be','SKYNET%', 'yahoo.com' , 'yahoo%', 'msn%', 'hotmail', 'belgacom%') and dropcontact_found is null \nlimit 1000\n",
        "options": {},
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "id": "pYryZTyzA44MBOiN",
          "name": "Postgres account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "ddf11e8d-f1db-406c-9c2a-ab5a510fee47",
      "name": "BULK DROPCONTACT REQUESTS",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "maxTries": 3,
      "position": [
        1360,
        620
      ],
      "parameters": {
        "url": "https://api.dropcontact.io/batch",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json.toJsonString()}}\n",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Access-Token",
              "value": "apiKey"
            }
          ]
        },
        "nodeCredentialType": "dropcontactApi"
      },
      "credentials": {
        "dropcontactApi": {
          "id": "kUzEc345AiEZDjK7",
          "name": "Dropcontact Willow account"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "waitBetweenTries": 600
    },
    {
      "id": "606e2898-eb44-46c2-9576-8e3cc1bd2578",
      "name": "Loop Over Items2",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        780,
        600
      ],
      "parameters": {
        "options": {},
        "batchSize": 250
      },
      "typeVersion": 3
    },
    {
      "id": "ace20caa-3c9b-432a-a572-6bad48181347",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "onError": "continueRegularOutput",
      "position": [
        1940,
        600
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "2c581721-a399-4d48-98a1-cee82246c4f4",
      "name": "Postgres",
      "type": "n8n-nodes-base.postgres",
      "onError": "continueErrorOutput",
      "maxTries": 2,
      "position": [
        2100,
        600
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "profiles",
          "cachedResultName": "profiles"
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "columns": {
          "value": {
            "email": "={{ $json.email[0].email }}",
            "phone": "={{ $json.phone }}",
            "full_name": "={{ $json.custom_fields.full_name }}",
            "dropcontact_found": "={{ true }}",
            "email_qualification": "={{ $json.email[0].qualification }}"
          },
          "schema": [
            {
              "id": "company_id",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "company_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "create_date",
              "type": "dateTime",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "create_date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "first_name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "first_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last_name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "last_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "start_date_raw",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "start_date_raw",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "full_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "full_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "seniority",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "seniority",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email_qualification",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email_qualification",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "dropcontact_found",
              "type": "boolean",
              "display": true,
              "required": false,
              "displayName": "dropcontact_found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "full_name"
          ]
        },
        "options": {
          "replaceEmptyStrings": true
        },
        "operation": "update"
      },
      "credentials": {
        "postgres": {
          "id": "pYryZTyzA44MBOiN",
          "name": "Postgres account"
        }
      },
      "retryOnFail": true,
      "typeVersion": 2.3,
      "alwaysOutputData": true
    },
    {
      "id": "7e94c87d-3f83-4fd1-877d-3463dce3cdd1",
      "name": "BULK DROPCONTACT DOWNLOAD",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        1740,
        620
      ],
      "parameters": {
        "url": "=https://api.dropcontact.io/batch/{{ $json.request_id }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "dropcontactApi"
      },
      "credentials": {
        "dropcontactApi": {
          "id": "kUzEc345AiEZDjK7",
          "name": "Dropcontact Willow account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "17aab456-72dc-482d-b5e3-b3dfb3a3b3f7",
      "name": "Wait2",
      "type": "n8n-nodes-base.wait",
      "position": [
        1540,
        620
      ],
      "webhookId": "de669d58-95c5-480e-9acc-17c396859fcf",
      "parameters": {
        "amount": 600
      },
      "typeVersion": 1.1
    },
    {
      "id": "148cec0c-985b-4c82-8835-fff8eacf6e38",
      "name": "DATA TRANSFORMATION",
      "type": "n8n-nodes-base.code",
      "position": [
        1180,
        620
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "language": "python",
        "pythonCode": "import json\n\n## Load & access the existing JSON data\nfor item in _input.all():\n  data = item.json \n\n  # Define the output data structure\n  output_data = {\"data\": [], \"siren\": True}\n\n  # Unpack data from the single element list\n  first_names = data[\"first_name\"]\n  last_names = data[\"last_name\"]\n  domain = data[\"domain\"]\n  full_name = data[\"full_name\"]\n\n    # Combine data into a list of dictionaries\n  transformed_data = []\n  for i, (first_name, last_name, domain_name, full_name_value) in enumerate(zip(first_names, last_names, domain, full_name)):\n    transformed_data.append({\n      \"first_name\": first_name,\n      \"last_name\": last_name,\n      \"website\": domain_name,\n      \"custom_fields\": {\n        \"full_name\": full_name_value}\n    })\n\n  output_data[\"data\"] = transformed_data\n\n  return output_data \n\n"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "b233abfe-cfae-474a-b86d-29e56e1f3ac7",
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1740,
        820
      ],
      "parameters": {
        "text": "Dropcontact Credits issue: url ",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "select": "user",
        "otherOptions": {}
      },
      "typeVersion": 2.1
    },
    {
      "id": "d4e90677-89c9-418b-b618-f751b797d395",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        380,
        600
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.1
    }
  ],
  "pinData": {},
  "connections": {
    "Wait2": {
      "main": [
        [
          {
            "node": "BULK DROPCONTACT DOWNLOAD",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Postgres": {
      "main": [
        [
          {
            "node": "Loop Over Items2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "DATA TRANSFORMATION",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Postgres",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "PROFILES QUERY": {
      "main": [
        [
          {
            "node": "Loop Over Items2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items2": {
      "main": [
        null,
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "PROFILES QUERY",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DATA TRANSFORMATION": {
      "main": [
        [
          {
            "node": "BULK DROPCONTACT REQUESTS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "BULK DROPCONTACT DOWNLOAD": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "BULK DROPCONTACT REQUESTS": {
      "main": [
        [
          {
            "node": "Wait2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}