{
  "name": "Rate limiting and waiting for external events",
  "nodes": [
    {
      "id": null,
      "name": "On clicking 'execute'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        400,
        520
      ]
    },
    {
      "id": null,
      "name": "Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1500,
        360
      ],
      "parameters": {
        "width": 780,
        "height": 360,
        "content": "## 2. Wait for an external event\nUse this operation when an external step is needed in order to continue with the rest of the workflow.\nFor example - a workflow sends a purchase approval link to the m"
      }
    },
    {
      "id": null,
      "name": "Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        200,
        380
      ],
      "parameters": {
        "width": 300,
        "height": 120,
        "content": "### Click the `Execute Workflow` button and double click on the nodes to see the input and output items."
      }
    },
    {
      "id": null,
      "name": "Create approval URL",
      "type": "n8n-nodes-base.set",
      "position": [
        1540,
        520
      ]
    },
    {
      "id": null,
      "name": "Wait for external approval",
      "type": "n8n-nodes-base.wait",
      "position": [
        1940,
        520
      ]
    },
    {
      "id": null,
      "name": "Rest of the workflow placeholder",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2140,
        520
      ]
    },
    {
      "id": null,
      "name": "Customer Datastore",
      "type": "n8n-nodes-base.n8nTrainingCustomerDatastore",
      "position": [
        580,
        520
      ]
    },
    {
      "id": null,
      "name": "SplitInBatches",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        760,
        520
      ]
    },
    {
      "id": null,
      "name": "Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        540,
        360
      ],
      "parameters": {
        "width": 900,
        "height": 360,
        "content": "## 1. Rate Limiting \nSometimes you need to slow down how often you are contacting a service.\n\nIn this example, `Customer Datastore` node simulates the big batches of requests coming at once, the `Spli"
      }
    },
    {
      "id": null,
      "name": "Wait for time interval",
      "type": "n8n-nodes-base.wait",
      "position": [
        920,
        520
      ]
    },
    {
      "id": null,
      "name": "If - Are we Finished?",
      "type": "n8n-nodes-base.if",
      "position": [
        1280,
        520
      ]
    },
    {
      "id": null,
      "name": "Customer Messenger - Send URL to merchant",
      "type": "n8n-nodes-base.n8nTrainingCustomerMessenger",
      "position": [
        1740,
        520
      ]
    },
    {
      "id": null,
      "name": "Customer Messenger - Send message to client",
      "type": "n8n-nodes-base.n8nTrainingCustomerMessenger",
      "position": [
        1100,
        520
      ]
    }
  ],
  "connections": {
    "SplitInBatches": {
      "main": [
        [
          {
            "node": "Wait for time interval",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Customer Datastore": {
      "main": [
        [
          {
            "node": "SplitInBatches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create approval URL": {
      "main": [
        [
          {
            "node": "Customer Messenger - Send URL to merchant",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If - Are we Finished?": {
      "main": [
        [
          {
            "node": "Create approval URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "SplitInBatches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On clicking 'execute'": {
      "main": [
        [
          {
            "node": "Customer Datastore",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for time interval": {
      "main": [
        [
          {
            "node": "Customer Messenger - Send message to client",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for external approval": {
      "main": [
        [
          {
            "node": "Rest of the workflow placeholder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Customer Messenger - Send URL to merchant": {
      "main": [
        [
          {
            "node": "Wait for external approval",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Customer Messenger - Send message to client": {
      "main": [
        [
          {
            "node": "If - Are we Finished?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}