{
  "openapi": "3.0.1",
  "info": {
    "title": "Webhook Sender IP Range Drift and Allowlist Gap Report",
    "description": "Fetch the webhook source IP ranges that SaaS providers such as GitHub, Stripe, Datadog, PagerDuty and Bitbucket publish, and compare them with the CIDR blocks that your firewall, WAF or ingress allows. The Actor reports the published ranges that your allo",
    "version": "0.1",
    "x-build-id": "BpaThN2Adq7VQUCl7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kingii98~webhook-sender-ip-range-drift-and-allowlist-gap-report/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kingii98-webhook-sender-ip-range-drift-and-allowlist-gap-report",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/kingii98~webhook-sender-ip-range-drift-and-allowlist-gap-report/runs": {
      "post": {
        "operationId": "runs-sync-kingii98-webhook-sender-ip-range-drift-and-allowlist-gap-report",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/kingii98~webhook-sender-ip-range-drift-and-allowlist-gap-report/run-sync": {
      "post": {
        "operationId": "run-sync-kingii98-webhook-sender-ip-range-drift-and-allowlist-gap-report",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "providers",
          "allowlist"
        ],
        "properties": {
          "providers": {
            "title": "Providers",
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "description": "1 to 20 providers. Each item is a preset ID from the built-in catalog (bitbucket, buildkite, datadog-us1, github, grafana-cloud, jira, pagerduty-eu, pagerduty-us, stripe), or a custom record with a \"name\", one HTTPS \"url\" of a published range list, a \"format\" (\"json_path\" or \"text_lines\") and, for json_path, a \"json_path\" such as \"hooks\" or \"webhooks.*\". The Actor sends one GET for each provider and reads at most 1 MB. If you leave this field empty, the Actor checks GitHub and Stripe.",
            "default": [
              "github",
              "stripe"
            ]
          },
          "allowlist": {
            "title": "Allowlist",
            "type": "object",
            "description": "The CIDR blocks that your firewall, WAF or ingress allows for each provider. The key is the provider name (the preset ID, or the name of a custom record). The value is a list of IPv4 and IPv6 CIDR blocks, or one text with one block on each line. A single address is a /32 or /128 block. At most 2,000 blocks in total. A provider without a key gets the verdict no_allowlist: the Actor reports its drift, but does not compare it and does not charge for it.",
            "default": {
              "github": [
                "192.30.252.0/22",
                "185.199.108.0/22",
                "140.82.112.0/20",
                "143.55.64.0/20",
                "2a0a:a440::/29",
                "2606:50c0::/32"
              ],
              "stripe": [
                "3.18.12.63/32",
                "3.69.109.8/32",
                "3.120.168.93/32",
                "3.130.192.231/32",
                "13.235.14.237/32",
                "13.235.122.149/32",
                "18.211.135.69/32",
                "35.154.171.200/32",
                "35.157.207.129/32",
                "52.15.183.38/32",
                "54.88.130.119/32",
                "54.88.130.237/32",
                "54.187.174.169/32",
                "54.187.205.235/32",
                "54.187.216.72/32"
              ]
            }
          },
          "alert_webhook_url": {
            "title": "Alert webhook URL",
            "type": "string",
            "description": "Optional. One public HTTPS URL. The Actor sends one JSON POST for each provider with a new gap: a published range that the allowlist does not cover and that no earlier run reported. Private and reserved addresses are refused, and a redirect is not followed. Leave it empty to read the gaps in the dataset only.",
            "default": ""
          },
          "baseline_key": {
            "title": "Baseline key",
            "type": "string",
            "description": "The record key of the stored baseline in the named key-value store \"webhook-ip-range-baseline\". Use one key for each allowlist, for example \"prod-edge\" and \"staging-edge\". The first run for a key writes the baseline and reports each gap as new.",
            "default": "DEFAULT"
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}