{
  "name": "Monitor Jamf policy integrity and send Slack alerts for changes",
  "nodes": [
    {
      "id": "b944be24-1707-46da-8df2-7279dc87beea",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -288,
        336
      ]
    },
    {
      "id": "e383809e-c269-4965-8594-d9c0d0a558f5",
      "name": "IDs",
      "type": "n8n-nodes-base.set",
      "position": [
        96,
        160
      ]
    },
    {
      "id": "db2c7535-cbfd-42af-9431-ec6c9a1ce9a8",
      "name": "Split groups",
      "type": "n8n-nodes-base.code",
      "position": [
        288,
        160
      ]
    },
    {
      "id": "4cfb00a3-8350-41ca-a02b-dc0467c4e208",
      "name": "Jamf Server",
      "type": "n8n-nodes-base.set",
      "position": [
        -80,
        160
      ]
    },
    {
      "id": "c2348a64-e068-433d-9857-2d353828276e",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -288,
        160
      ]
    },
    {
      "id": "c7c8fed1-8bd1-445b-a32d-05d54c3e93e2",
      "name": "Hash_policy",
      "type": "n8n-nodes-base.crypto",
      "position": [
        880,
        160
      ]
    },
    {
      "id": "044ba5a6-26dc-49d6-87c6-7f7931d6fab4",
      "name": "Condition hash Diff",
      "type": "n8n-nodes-base.if",
      "position": [
        1376,
        240
      ]
    },
    {
      "id": "d34c5b21-6e2b-45c5-82d9-b0cc9421b9bd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -112,
        -32
      ],
      "parameters": {
        "width": 320,
        "height": 404,
        "content": "## Set\n**Node: Jamf Server**\nSet your jamf BaseURL from your jamf URL\nhttps://yourServer.jamfcloud.com\n\n**Node: IDs**\nSet the policy ID to monitor"
      }
    },
    {
      "id": "48807bc8-d4d2-4764-b34c-c10452d68420",
      "name": "Update Hash",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1648,
        224
      ]
    },
    {
      "id": "68d57c39-8a80-4de9-8635-f34dbd2d7d4e",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        -32
      ],
      "parameters": {
        "width": 220,
        "height": 404,
        "content": "## Split  \nSplit previous node array into items.\n"
      }
    },
    {
      "id": "3d353ccc-b7b4-4482-8f52-94ff3b8f9c2a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        -32
      ],
      "parameters": {
        "width": 180,
        "height": 400,
        "content": "## Get  \nGet policy by ID"
      }
    },
    {
      "id": "59d4b110-4ce6-4332-9a92-95a70fb20020",
      "name": "Get /id",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        512,
        160
      ]
    },
    {
      "id": "14449796-3ced-4fed-860a-55fd8c36caa8",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        -32
      ],
      "parameters": {
        "width": 180,
        "height": 400,
        "content": "## XML to JSON  \n"
      }
    },
    {
      "id": "6ff80123-f16a-4161-aad6-93faa1296f39",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        848,
        -32
      ],
      "parameters": {
        "width": 180,
        "height": 400,
        "content": "## Policy HASH\nHash the policy to monitor \n"
      }
    },
    {
      "id": "4628148c-f2ae-4f55-820c-0ace384d4e5d",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1040,
        -32
      ],
      "parameters": {
        "width": 532,
        "height": 400,
        "content": "## Upsert and Monitor\nInsert the policy if it doesn't exist and then compare the HASH\n"
      }
    },
    {
      "id": "3fa8915a-7ffd-467e-9ecf-adff5200ef7f",
      "name": "Insert new Policy",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1248,
        80
      ]
    },
    {
      "id": "7f5dc520-448e-4c37-984a-3a137f27542b",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1584,
        -32
      ],
      "parameters": {
        "width": 356,
        "height": 400,
        "content": "## Upsert and Notify\nUpdate policy with new HASH and notify via slack"
      }
    },
    {
      "id": "3019b883-8663-4cd5-b6c5-708656197728",
      "name": "If Policy does not exist",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1088,
        80
      ]
    },
    {
      "id": "d752d43a-23bc-4f4b-bb2f-52310d02031f",
      "name": "Get Policy",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1216,
        240
      ]
    },
    {
      "id": "c40c8a36-415d-4f0e-9ab0-1b022744ecc9",
      "name": "XML to JSON",
      "type": "n8n-nodes-base.xml",
      "position": [
        704,
        160
      ]
    },
    {
      "id": "5771408f-6435-450e-8e83-143c6f312aa1",
      "name": "Manual Execution",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -288,
        0
      ]
    },
    {
      "id": "297db7c0-a007-49e2-82fa-9a0c61c3ba9b",
      "name": "Send Alert to Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1808,
        224
      ]
    },
    {
      "id": "1595181f-f216-4a29-a817-22f1a5d48c44",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1424,
        80
      ]
    }
  ],
  "connections": {
    "IDs": {
      "main": [
        [
          {
            "node": "Split groups",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get /id": {
      "main": [
        [
          {
            "node": "XML to JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Jamf Server",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Policy": {
      "main": [
        [
          {
            "node": "Condition hash Diff",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Hash_policy": {
      "main": [
        [
          {
            "node": "If Policy does not exist",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Policy",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Jamf Server": {
      "main": [
        [
          {
            "node": "IDs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Hash": {
      "main": [
        [
          {
            "node": "Send Alert to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "XML to JSON": {
      "main": [
        [
          {
            "node": "Hash_policy",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split groups": {
      "main": [
        [
          {
            "node": "Get /id",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Execution": {
      "main": [
        [
          {
            "node": "Jamf Server",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Jamf Server",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insert new Policy": {
      "main": [
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Condition hash Diff": {
      "main": [
        [
          {
            "node": "Update Hash",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Alert to Slack": {
      "main": [
        []
      ]
    },
    "If Policy does not exist": {
      "main": [
        [
          {
            "node": "Insert new Policy",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}