{
  "name": "Meraki packet loss and latency alerts to Microsoft Teams",
  "nodes": [
    {
      "id": "3b18d784-eded-4b74-ac44-b25565049e13",
      "name": "When clicking \"Execute Workflow\"",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        380,
        400
      ]
    },
    {
      "id": "96eadd32-17c2-44b0-a00b-8e2ddcecaafa",
      "name": "Get Meraki Organizations",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        620,
        320
      ]
    },
    {
      "id": "444071ea-a364-45a6-9430-0338d2752b18",
      "name": "Get Network IDs",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1020,
        240
      ]
    },
    {
      "id": "42deea02-e2d2-4ba6-97f7-698c219715a5",
      "name": "Get Org Name & ID",
      "type": "n8n-nodes-base.set",
      "position": [
        840,
        240
      ]
    },
    {
      "id": "3d5ce6a8-bf05-4457-88e6-c5ad5a995b1d",
      "name": "Combine latency to its respective Network",
      "type": "n8n-nodes-base.merge",
      "position": [
        1500,
        400
      ]
    },
    {
      "id": "caafd6dd-a2b2-405d-a078-cea3bb615788",
      "name": "Makes Latency and Loss Filterable",
      "type": "n8n-nodes-base.set",
      "position": [
        1680,
        400
      ]
    },
    {
      "id": "c695fd89-c884-4794-b0e5-51b91a71ac5c",
      "name": "Filters Problematic sites",
      "type": "n8n-nodes-base.code",
      "position": [
        2040,
        400
      ]
    },
    {
      "id": "6db219fd-f54d-4bf8-b150-9c4f3069cf92",
      "name": "Average Latency & Loss over 5m",
      "type": "n8n-nodes-base.code",
      "position": [
        1860,
        400
      ]
    },
    {
      "id": "f3831843-2596-492d-b800-7d349e443293",
      "name": "Get Uplink Loss and Latency",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        840,
        400
      ]
    },
    {
      "id": "87c3f32c-de4f-48fd-a711-3521a008c245",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        380,
        240
      ]
    },
    {
      "id": "572adb5c-6745-4b4e-89d8-a97835c3d486",
      "name": "Sets Network Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        1220,
        240
      ]
    },
    {
      "id": "01717ed3-1012-4eda-9da9-567038132e06",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        2720,
        300
      ]
    },
    {
      "id": "a20f6f7c-0c92-4db9-903b-e322d67b536d",
      "name": "Check if Alert Exists",
      "type": "n8n-nodes-base.redis",
      "position": [
        2300,
        240
      ]
    },
    {
      "id": "63590446-2938-443a-adbe-bfc0ba89008c",
      "name": "Create Response",
      "type": "n8n-nodes-base.code",
      "position": [
        2500,
        240
      ]
    },
    {
      "id": "c63e2a45-bf5e-455f-8012-9868d55aa3e2",
      "name": "Message Techs",
      "type": "n8n-nodes-base.microsoftTeams",
      "position": [
        2920,
        300
      ]
    },
    {
      "id": "b4ae54cd-8345-4611-9fbe-32e7537855a9",
      "name": "Log the Alert",
      "type": "n8n-nodes-base.redis",
      "position": [
        3120,
        300
      ]
    },
    {
      "id": "05416de5-a0c0-4ff8-bfc5-3d26f0d88139",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        573.394087003982,
        143.69977924944794
      ],
      "parameters": {
        "width": 791.5865288559442,
        "height": 462.84878343542437,
        "content": "## Pulling in Info \nThis section pulls in all the data we will need to see any possible errors and generate our alert\n"
      }
    },
    {
      "id": "aeb1c8a6-3cec-4899-83e2-098d0b1a9703",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1464,
        211
      ],
      "parameters": {
        "width": 688.5000872281419,
        "height": 411.1258278145692,
        "content": "## Changing data\nThis section pulls together the data we got from the first section and sets everything up to be notified "
      }
    },
    {
      "id": "9ca9e89b-61ce-4b3f-af8e-bf03daff6710",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2260,
        60
      ],
      "parameters": {
        "width": 1015.6997792494475,
        "height": 614.8167770419421,
        "content": "## Notify\nThis last section is for the push of the alert as well as storing the alert as to not re-notify every time the workflow runs"
      }
    },
    {
      "id": "801879be-e83b-4c74-b8ac-b20157ca32d1",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        600,
        640
      ],
      "parameters": {
        "width": 673.6064168725538,
        "height": 394.26386951839356,
        "content": "## Explanation\nusing an HTTP request you will can do a get request for all Organizations your Meraki account has access to. \n\nYou will have to Generate your own API key inside of the Meraki Dashboard "
      }
    },
    {
      "id": "2b028326-0776-4b9b-bdf2-d79949809092",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1480,
        660
      ],
      "parameters": {
        "width": 645.9603701592033,
        "height": 389.89870424786454,
        "content": "## Explanation\nthe Merge node will combine the Networks with their respective stats by matching on NetworkID and networkid and enriching the input \n\nagain we add a set node to better organize the stat"
      }
    },
    {
      "id": "f7c1448d-3a03-4196-bde6-a1aea92f28ad",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2300,
        700
      ],
      "parameters": {
        "width": 913.6905067516504,
        "height": 523.763772544089,
        "content": "## Explanation \nwe will send the problematic sites to both the Redis node and the Merge node. \n\nThe Redis node does a get request to see if a key exists matching the Network name in Meraki. If so it w"
      }
    },
    {
      "id": "4f4d40ef-8e7d-420a-8273-4cfefd3af6e9",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1460,
        -320
      ],
      "parameters": {
        "width": 670.6963066922013,
        "height": 366.61782280504275,
        "content": "## other usecases \n If you feel confident enough the Teams nodes can be replaced with a node that can generate a ticket for your PSA such as ConnectWise Mange. That way these are generating tickets ra"
      }
    }
  ],
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Message Techs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message Techs": {
      "main": [
        [
          {
            "node": "Log the Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Response": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Network IDs": {
      "main": [
        [
          {
            "node": "Sets Network Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Meraki Organizations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Org Name & ID": {
      "main": [
        [
          {
            "node": "Get Network IDs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Alert Exists": {
      "main": [
        [
          {
            "node": "Create Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sets Network Variables": {
      "main": [
        [
          {
            "node": "Combine latency to its respective Network",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Meraki Organizations": {
      "main": [
        [
          {
            "node": "Get Org Name & ID",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Uplink Loss and Latency",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filters Problematic sites": {
      "main": [
        [
          {
            "node": "Check if Alert Exists",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Get Uplink Loss and Latency": {
      "main": [
        [
          {
            "node": "Combine latency to its respective Network",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Average Latency & Loss over 5m": {
      "main": [
        [
          {
            "node": "Filters Problematic sites",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \"Execute Workflow\"": {
      "main": [
        [
          {
            "node": "Get Meraki Organizations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Makes Latency and Loss Filterable": {
      "main": [
        [
          {
            "node": "Average Latency & Loss over 5m",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine latency to its respective Network": {
      "main": [
        [
          {
            "node": "Makes Latency and Loss Filterable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}