{
  "name": "Automated failed login detection with Jira tasks, Slack alerts & Notion logging",
  "nodes": [
    {
      "id": "9b061f7c-0295-46d4-98dd-1eb3ca265c91",
      "name": "Faield Login Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [
        768,
        832
      ]
    },
    {
      "id": "1fb1f478-6384-4f89-b062-4f4df12899f0",
      "name": "Normalize Login Event",
      "type": "n8n-nodes-base.function",
      "position": [
        992,
        832
      ]
    },
    {
      "id": "cf1b5d07-e61c-44c6-9f67-8926d3f56443",
      "name": "Check Username & IP present",
      "type": "n8n-nodes-base.if",
      "position": [
        1216,
        832
      ]
    },
    {
      "id": "665bdc22-2db1-4ac5-914c-cc8546889108",
      "name": "IF - Multiple Attempts",
      "type": "n8n-nodes-base.if",
      "position": [
        1664,
        736
      ]
    },
    {
      "id": "bac1c2ad-91bc-4c7c-8485-f1e667ce0394",
      "name": "Build Multi-Attempt Summary",
      "type": "n8n-nodes-base.function",
      "position": [
        1888,
        640
      ]
    },
    {
      "id": "d5b3292c-795a-49a9-906f-5e095cd98bb4",
      "name": "Create Ticket- Multiple Attempts",
      "type": "n8n-nodes-base.jira",
      "position": [
        2048,
        640
      ]
    },
    {
      "id": "4dbfb710-0e51-4e15-8874-d2ba741eec40",
      "name": "Create Ticket - Single Attempt",
      "type": "n8n-nodes-base.jira",
      "position": [
        1888,
        832
      ]
    },
    {
      "id": "791dda77-40e1-45e6-8df3-793d59a74f2c",
      "name": "Slack Alert- Multiple Attempts",
      "type": "n8n-nodes-base.slack",
      "position": [
        2368,
        640
      ]
    },
    {
      "id": "426c59e1-b546-4ea1-811b-934b9e3e50fb",
      "name": "Slack Alert - Single Attempt",
      "type": "n8n-nodes-base.slack",
      "position": [
        2272,
        832
      ]
    },
    {
      "id": "e5853630-2424-457d-901c-f0d089b61390",
      "name": "Slack Alert - Missing Username/IP",
      "type": "n8n-nodes-base.slack",
      "position": [
        1440,
        928
      ]
    },
    {
      "id": "d8be8ed8-654e-4d6a-9497-ae1e99bfb91f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        752
      ],
      "parameters": {
        "width": 224,
        "height": 240,
        "content": "\nReceives the failed-login data from your application and starts the workflow."
      }
    },
    {
      "id": "d15fed38-11f5-41ce-a229-ec071c715edc",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        944,
        752
      ],
      "parameters": {
        "width": 208,
        "height": 240,
        "content": "This node cleans and format the login data"
      }
    },
    {
      "id": "8b7d74b0-0355-42a6-a61c-f11d1d366bf8",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        544
      ],
      "parameters": {
        "width": 1456,
        "height": 560,
        "content": "## Security Login Alert Process\nThis process for checks failed login event. If the username or IP address is missing, it immediately sends a Slack alert. If both are present, it checks whether the sam"
      }
    },
    {
      "id": "2a0808e7-5b82-4354-971c-aab886745d35",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 534,
        "height": 864,
        "content": "## How It Works\n\nThis workflow automatically monitors failed login attempts sent from your application. When a failed login event arrives, the workflow first cleans the data and checks whether the use"
      }
    },
    {
      "id": "1496a256-b92f-46fc-8941-b72fe5b84520",
      "name": "Detect Multiple Attempts",
      "type": "n8n-nodes-base.function",
      "position": [
        1440,
        736
      ]
    },
    {
      "id": "c5510875-1d73-493c-ba3f-eeba321fe5e3",
      "name": "Format Login Attempt",
      "type": "n8n-nodes-base.code",
      "position": [
        2784,
        752
      ]
    },
    {
      "id": "1281fbe9-53aa-4c62-bc10-35c3a29b3700",
      "name": "Login Attempts Data Store in DB",
      "type": "n8n-nodes-base.notion",
      "position": [
        3040,
        752
      ]
    },
    {
      "id": "6a8ee686-0610-4e42-8cd0-baf191539c17",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2672,
        640
      ],
      "parameters": {
        "width": 608,
        "height": 352,
        "content": "## Format data & Store to Database\nIn this Process format the login attempts data in proper manner and add to the Database"
      }
    },
    {
      "id": "fbdd80bc-abb8-4882-8d4d-dc869009772a",
      "name": "Format Fields for Multiple-attempt",
      "type": "n8n-nodes-base.set",
      "position": [
        2208,
        640
      ]
    },
    {
      "id": "36c3ec51-168c-4dbb-b726-2e87ee85eb04",
      "name": "Format Fields For Single Attempt",
      "type": "n8n-nodes-base.set",
      "position": [
        2080,
        832
      ]
    }
  ],
  "connections": {
    "Faield Login Trigger": {
      "main": [
        [
          {
            "node": "Normalize Login Event",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Login Attempt": {
      "main": [
        [
          {
            "node": "Login Attempts Data Store in DB",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Login Event": {
      "main": [
        [
          {
            "node": "Check Username & IP present",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF - Multiple Attempts": {
      "main": [
        [
          {
            "node": "Build Multi-Attempt Summary",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Ticket - Single Attempt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Detect Multiple Attempts": {
      "main": [
        [
          {
            "node": "IF - Multiple Attempts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Multi-Attempt Summary": {
      "main": [
        [
          {
            "node": "Create Ticket- Multiple Attempts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Username & IP present": {
      "main": [
        [
          {
            "node": "Detect Multiple Attempts",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Slack Alert - Missing Username/IP",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Slack Alert - Single Attempt": {
      "main": [
        [
          {
            "node": "Format Login Attempt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Ticket - Single Attempt": {
      "main": [
        [
          {
            "node": "Format Fields For Single Attempt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Slack Alert- Multiple Attempts": {
      "main": [
        [
          {
            "node": "Format Login Attempt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Login Attempts Data Store in DB": {
      "main": [
        []
      ]
    },
    "Create Ticket- Multiple Attempts": {
      "main": [
        [
          {
            "node": "Format Fields for Multiple-attempt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Fields For Single Attempt": {
      "main": [
        [
          {
            "node": "Slack Alert - Single Attempt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Fields for Multiple-attempt": {
      "main": [
        [
          {
            "node": "Slack Alert- Multiple Attempts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}