{
  "schemaVersion": 1,
  "generatedAt": "2026-07-14T16:24:36Z",
  "syncToken": "1784046276",
  "services": [
    {
      "slug": "anthropic",
      "name": "Anthropic (Claude API)",
      "category": "ai",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "api",
          "direction": "egress",
          "ipv4Count": 1,
          "ipv6Count": 1
        },
        {
          "key": "outbound",
          "direction": "ingress",
          "ipv4Count": 1,
          "ipv6Count": 0
        }
      ],
      "path": "services/anthropic.json",
      "sha256": "ac688dae6fb6b57cba8ea1c5e049386e189247b89072aa9b800f7f5abf2b208f"
    },
    {
      "slug": "atlassian",
      "name": "Atlassian Cloud",
      "category": "business-saas",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "both",
          "ipv4Count": 69,
          "ipv6Count": 14
        },
        {
          "key": "bitbucket",
          "direction": "both",
          "ipv4Count": 40,
          "ipv6Count": 14
        },
        {
          "key": "egress",
          "direction": "ingress",
          "ipv4Count": 66,
          "ipv6Count": 14
        }
      ],
      "path": "services/atlassian.json",
      "sha256": "fe8af446a261926b03a4131db280c3b0b2bd8f4d36cb0dd94ab135faae6a94aa"
    },
    {
      "slug": "auth0",
      "name": "Auth0 (Okta CIC)",
      "category": "identity",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "both",
          "ipv4Count": 103,
          "ipv6Count": 0
        }
      ],
      "path": "services/auth0.json",
      "sha256": "5334c6539406716a538eefef152cafcc5dcc335f79de5b033721d594f3211d06"
    },
    {
      "slug": "aws",
      "name": "Amazon Web Services",
      "category": "cloud",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "egress",
          "ipv4Count": 1731,
          "ipv6Count": 2047
        },
        {
          "key": "cloudfront",
          "direction": "egress",
          "ipv4Count": 179,
          "ipv6Count": 31
        },
        {
          "key": "dynamodb",
          "direction": "egress",
          "ipv4Count": 28,
          "ipv6Count": 0
        },
        {
          "key": "route53-healthchecks",
          "direction": "ingress",
          "ipv4Count": 27,
          "ipv6Count": 23
        },
        {
          "key": "s3",
          "direction": "egress",
          "ipv4Count": 175,
          "ipv6Count": 447
        }
      ],
      "path": "services/aws.json",
      "sha256": "187a142d2fc0f5e87358a9424905336f0627eb9b967cc12864de449c749d52f9"
    },
    {
      "slug": "azure",
      "name": "Microsoft Azure (Service Tags)",
      "category": "cloud",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "egress",
          "ipv4Count": 2705,
          "ipv6Count": 1941
        },
        {
          "key": "sql",
          "direction": "egress",
          "ipv4Count": 1113,
          "ipv6Count": 400
        },
        {
          "key": "storage",
          "direction": "egress",
          "ipv4Count": 496,
          "ipv6Count": 79
        }
      ],
      "path": "services/azure.json",
      "sha256": "a4e0272490e32c0353ebbf45e18d0652c3027ea90985950b9d90b1dccdec07b1"
    },
    {
      "slug": "braintree",
      "name": "Braintree (PayPal)",
      "category": "payments",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "api",
          "direction": "egress",
          "ipv4Count": 46,
          "ipv6Count": 0
        },
        {
          "key": "sandbox",
          "direction": "egress",
          "ipv4Count": 102,
          "ipv6Count": 0
        }
      ],
      "path": "services/braintree.json",
      "sha256": "877d6cfcef2669fe4873283d0de87ef381346c82ce75c2f46efaf91b974f22d3"
    },
    {
      "slug": "buildkite",
      "name": "Buildkite",
      "category": "devtools",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "webhooks",
          "direction": "ingress",
          "ipv4Count": 3,
          "ipv6Count": 0
        }
      ],
      "path": "services/buildkite.json",
      "sha256": "6f13bb3a978ad802c6fede96bc138c4f8c5985209b83187750c63c23e3b4fbcf"
    },
    {
      "slug": "circleci",
      "name": "CircleCI",
      "category": "devtools",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "core",
          "direction": "egress",
          "ipv4Count": 10,
          "ipv6Count": 0
        },
        {
          "key": "jobs",
          "direction": "ingress",
          "ipv4Count": 21,
          "ipv6Count": 0
        }
      ],
      "path": "services/circleci.json",
      "sha256": "91c5145a8e67a297497251d1d16e401c9d7eead725ec5c04fc1548bcfec0ff3b"
    },
    {
      "slug": "cloudflare",
      "name": "Cloudflare",
      "category": "cdn",
      "classification": "cdn-shared",
      "purposes": [
        {
          "key": "edge",
          "direction": "both",
          "ipv4Count": 15,
          "ipv6Count": 7
        }
      ],
      "path": "services/cloudflare.json",
      "sha256": "29e4f01b1565439c7a9f16114723e647d15f82ab99eaebef7d27a7c84355e14f"
    },
    {
      "slug": "databricks",
      "name": "Databricks",
      "category": "data-platform",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "both",
          "ipv4Count": 2662,
          "ipv6Count": 0
        }
      ],
      "path": "services/databricks.json",
      "sha256": "891128ddcc9cafab6b08dd6c0ebfcae3e4c8ebe5d5a780db141454e22a6ee116"
    },
    {
      "slug": "datadog",
      "name": "Datadog",
      "category": "observability",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "agents",
          "direction": "egress",
          "ipv4Count": 1,
          "ipv6Count": 1
        },
        {
          "key": "agents-eu",
          "direction": "egress",
          "ipv4Count": 2,
          "ipv6Count": 1
        },
        {
          "key": "api",
          "direction": "egress",
          "ipv4Count": 1,
          "ipv6Count": 1
        },
        {
          "key": "api-eu",
          "direction": "egress",
          "ipv4Count": 2,
          "ipv6Count": 2
        },
        {
          "key": "apm",
          "direction": "egress",
          "ipv4Count": 1,
          "ipv6Count": 1
        },
        {
          "key": "logs",
          "direction": "egress",
          "ipv4Count": 1,
          "ipv6Count": 1
        },
        {
          "key": "synthetics",
          "direction": "ingress",
          "ipv4Count": 113,
          "ipv6Count": 0
        },
        {
          "key": "webhooks",
          "direction": "ingress",
          "ipv4Count": 35,
          "ipv6Count": 0
        }
      ],
      "path": "services/datadog.json",
      "sha256": "a0cdbe1f0243342e29a8e2be1318ec5770f12aba1230bb1bb9158104275037c2"
    },
    {
      "slug": "digitalocean",
      "name": "DigitalOcean",
      "category": "cloud",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "egress",
          "ipv4Count": 179,
          "ipv6Count": 53
        }
      ],
      "path": "services/digitalocean.json",
      "sha256": "8bc2e6984c814a7c1678db528f2cde857608e0e140a31b0602e3a1c593ba6422"
    },
    {
      "slug": "docusign",
      "name": "DocuSign",
      "category": "business-saas",
      "classification": "mixed",
      "purposes": [
        {
          "key": "connect-webhooks",
          "direction": "ingress",
          "ipv4Count": 81,
          "ipv6Count": 0
        },
        {
          "key": "email",
          "direction": "ingress",
          "ipv4Count": 6,
          "ipv6Count": 0
        }
      ],
      "path": "services/docusign.json",
      "sha256": "0cc87d59ba645c46238d282a363b5b4976b9560cb9c75e758dc414e77801afe1"
    },
    {
      "slug": "elastic-cloud",
      "name": "Elastic Cloud",
      "category": "data-platform",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "api",
          "direction": "egress",
          "ipv4Count": 102,
          "ipv6Count": 0
        },
        {
          "key": "outbound",
          "direction": "ingress",
          "ipv4Count": 166,
          "ipv6Count": 0
        }
      ],
      "path": "services/elastic-cloud.json",
      "sha256": "b78ff5b0e0472577c9652a305b6d4a0b441b07803a04147635bacf6b1a970057"
    },
    {
      "slug": "fastly",
      "name": "Fastly",
      "category": "cdn",
      "classification": "cdn-shared",
      "purposes": [
        {
          "key": "edge",
          "direction": "both",
          "ipv4Count": 19,
          "ipv6Count": 2
        }
      ],
      "path": "services/fastly.json",
      "sha256": "cb2a0036546c3e68609d91ece82a6c1efe0dc82da7345854b4efed409c26bda8"
    },
    {
      "slug": "github",
      "name": "GitHub",
      "category": "devtools",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "actions",
          "direction": "ingress",
          "ipv4Count": 3902,
          "ipv6Count": 1444
        },
        {
          "key": "api",
          "direction": "egress",
          "ipv4Count": 20,
          "ipv6Count": 2
        },
        {
          "key": "git",
          "direction": "egress",
          "ipv4Count": 32,
          "ipv6Count": 2
        },
        {
          "key": "hooks",
          "direction": "ingress",
          "ipv4Count": 4,
          "ipv6Count": 2
        },
        {
          "key": "packages",
          "direction": "egress",
          "ipv4Count": 25,
          "ipv6Count": 0
        },
        {
          "key": "pages",
          "direction": "egress",
          "ipv4Count": 6,
          "ipv6Count": 4
        },
        {
          "key": "web",
          "direction": "egress",
          "ipv4Count": 20,
          "ipv6Count": 2
        }
      ],
      "path": "services/github.json",
      "sha256": "d5214a35a982b9e2b6fce3d94bfc64c62c52d8c34a6f56541329ce4cc66a6ba8"
    },
    {
      "slug": "gitlab",
      "name": "GitLab.com",
      "category": "devtools",
      "classification": "mixed",
      "purposes": [
        {
          "key": "web-api",
          "direction": "egress",
          "ipv4Count": 2,
          "ipv6Count": 0
        },
        {
          "key": "webhooks",
          "direction": "ingress",
          "ipv4Count": 2,
          "ipv6Count": 0
        }
      ],
      "path": "services/gitlab.json",
      "sha256": "62b9b7718cde3f3ed90eab195f29cd2f870d4936c6c05715034390cf80c8ffe2"
    },
    {
      "slug": "google",
      "name": "Google (all services)",
      "category": "cloud",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "egress",
          "ipv4Count": 97,
          "ipv6Count": 15
        }
      ],
      "path": "services/google.json",
      "sha256": "8bdce34db68927a57d773213b71f7fca172de1aaaa88ca9287744fc59cc899cd"
    },
    {
      "slug": "google-cloud",
      "name": "Google Cloud Platform",
      "category": "cloud",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "egress",
          "ipv4Count": 441,
          "ipv6Count": 20
        }
      ],
      "path": "services/google-cloud.json",
      "sha256": "82ab406ba8e7b0c00779de5e0daf13f1971bfe8ca4fd5467b9dd3faa1486154d"
    },
    {
      "slug": "grafana-cloud",
      "name": "Grafana Cloud",
      "category": "observability",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "alerts",
          "direction": "ingress",
          "ipv4Count": 26,
          "ipv6Count": 0
        },
        {
          "key": "logs",
          "direction": "ingress",
          "ipv4Count": 42,
          "ipv6Count": 0
        },
        {
          "key": "metrics",
          "direction": "ingress",
          "ipv4Count": 67,
          "ipv6Count": 0
        }
      ],
      "path": "services/grafana-cloud.json",
      "sha256": "5d0f075b1ca4ae434f4eab80b44d7b0d7ce310f56ccdd39b6b3e171cb03c4f83"
    },
    {
      "slug": "ibm-cloud",
      "name": "IBM Cloud (Classic infrastructure)",
      "category": "cloud",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "frontend",
          "direction": "egress",
          "ipv4Count": 42,
          "ipv6Count": 0
        },
        {
          "key": "load-balancers",
          "direction": "egress",
          "ipv4Count": 39,
          "ipv6Count": 0
        }
      ],
      "path": "services/ibm-cloud.json",
      "sha256": "ff9860c5e8b6f10f3a74439fc94e42689f8264d6a767db7495ce1dcbd71b404c"
    },
    {
      "slug": "intercom",
      "name": "Intercom",
      "category": "comms",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "both",
          "ipv4Count": 172,
          "ipv6Count": 0
        },
        {
          "key": "all-eu",
          "direction": "both",
          "ipv4Count": 84,
          "ipv6Count": 0
        },
        {
          "key": "outbound-webhooks",
          "direction": "ingress",
          "ipv4Count": 6,
          "ipv6Count": 0
        }
      ],
      "path": "services/intercom.json",
      "sha256": "3ba5c6176323e0d7df2fa3ff6a22a8018958741245f08fcda4ba4307afa742b5"
    },
    {
      "slug": "klaviyo",
      "name": "Klaviyo",
      "category": "comms",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "integrations",
          "direction": "ingress",
          "ipv4Count": 2,
          "ipv6Count": 0
        }
      ],
      "path": "services/klaviyo.json",
      "sha256": "48a1ad55cecd5ea26810a05cc9fa0a2b82cdde8d63b430743bba695da60e886e"
    },
    {
      "slug": "linode",
      "name": "Akamai Connected Cloud (Linode)",
      "category": "cloud",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "egress",
          "ipv4Count": 238,
          "ipv6Count": 38
        }
      ],
      "path": "services/linode.json",
      "sha256": "6f140befffa9ca053ceb4b972e4d683815a1f121b09281cc2fbd23589e9f1a2f"
    },
    {
      "slug": "microsoft-365",
      "name": "Microsoft 365",
      "category": "business-saas",
      "classification": "mixed",
      "purposes": [
        {
          "key": "common",
          "direction": "egress",
          "ipv4Count": 11,
          "ipv6Count": 29
        },
        {
          "key": "exchange",
          "direction": "egress",
          "ipv4Count": 15,
          "ipv6Count": 14
        },
        {
          "key": "sharepoint",
          "direction": "egress",
          "ipv4Count": 5,
          "ipv6Count": 5
        },
        {
          "key": "teams",
          "direction": "egress",
          "ipv4Count": 2,
          "ipv6Count": 7
        }
      ],
      "path": "services/microsoft-365.json",
      "sha256": "d6600166c51cf0eaf95dab9ffb828ff18a3bba6ca4f8bb6a6d122e6fcb56107d"
    },
    {
      "slug": "neon",
      "name": "Neon (Serverless Postgres)",
      "category": "data-platform",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "outbound",
          "direction": "ingress",
          "ipv4Count": 98,
          "ipv6Count": 0
        }
      ],
      "path": "services/neon.json",
      "sha256": "a1d53123bb65395dd87bcf2fe620798a8c21806ad08ffc274693f976850f4f19"
    },
    {
      "slug": "netskope",
      "name": "Netskope (NewEdge)",
      "category": "security",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "dataplane",
          "direction": "both",
          "ipv4Count": 5,
          "ipv6Count": 0
        }
      ],
      "path": "services/netskope.json",
      "sha256": "a26f39b31b0d464f3dc98dc841256a9a937c55670ecc053472dfab3198a89cf6"
    },
    {
      "slug": "new-relic",
      "name": "New Relic",
      "category": "observability",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "agents",
          "direction": "egress",
          "ipv4Count": 5,
          "ipv6Count": 4
        },
        {
          "key": "synthetics",
          "direction": "ingress",
          "ipv4Count": 59,
          "ipv6Count": 0
        }
      ],
      "path": "services/new-relic.json",
      "sha256": "e3e06253e7b2f38c735595d733d39026fcd7508543271819552d7ebc136e0059"
    },
    {
      "slug": "okta",
      "name": "Okta",
      "category": "identity",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "both",
          "ipv4Count": 1947,
          "ipv6Count": 0
        }
      ],
      "path": "services/okta.json",
      "sha256": "03d33bd58bd83fa39c8c34aa979c5e5b236a17dd4929a3a727cdab2af6f00bb3"
    },
    {
      "slug": "openai",
      "name": "OpenAI (ChatGPT egress)",
      "category": "ai",
      "classification": "mixed",
      "purposes": [
        {
          "key": "agents",
          "direction": "ingress",
          "ipv4Count": 758,
          "ipv6Count": 0
        },
        {
          "key": "connectors",
          "direction": "ingress",
          "ipv4Count": 277,
          "ipv6Count": 0
        }
      ],
      "path": "services/openai.json",
      "sha256": "386ef40d8e412c3351b471e2ccfe63b77428b88e609bec3e314e65ecb4afefaa"
    },
    {
      "slug": "oracle-cloud",
      "name": "Oracle Cloud Infrastructure",
      "category": "cloud",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "egress",
          "ipv4Count": 781,
          "ipv6Count": 0
        },
        {
          "key": "object-storage",
          "direction": "egress",
          "ipv4Count": 29,
          "ipv6Count": 0
        }
      ],
      "path": "services/oracle-cloud.json",
      "sha256": "d48470463b84e19d4d72ba4492ff6e40875bc3ca5d7c7d2401dcabcacf75bea5"
    },
    {
      "slug": "pagerduty",
      "name": "PagerDuty",
      "category": "comms",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "webhooks",
          "direction": "ingress",
          "ipv4Count": 13,
          "ipv6Count": 0
        },
        {
          "key": "webhooks-eu",
          "direction": "ingress",
          "ipv4Count": 12,
          "ipv6Count": 0
        }
      ],
      "path": "services/pagerduty.json",
      "sha256": "eb7cb6b00aad62b5c70ed207f606e86d6b1ac047c75c7eac2797d3c11f343e3d"
    },
    {
      "slug": "paypal",
      "name": "PayPal",
      "category": "payments",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "both",
          "ipv4Count": 8,
          "ipv6Count": 0
        }
      ],
      "path": "services/paypal.json",
      "sha256": "3fda813534834f82089aace75fcba4f3a88c8758cde194db8a121efb8770bbc3"
    },
    {
      "slug": "plaid",
      "name": "Plaid",
      "category": "payments",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "webhooks",
          "direction": "ingress",
          "ipv4Count": 4,
          "ipv6Count": 0
        }
      ],
      "path": "services/plaid.json",
      "sha256": "0100f774986bf89ec4261f26bd8ca2801d5d372b91305cad39ff27e8ba936215"
    },
    {
      "slug": "postmark",
      "name": "Postmark",
      "category": "comms",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "smtp",
          "direction": "egress",
          "ipv4Count": 3,
          "ipv6Count": 0
        },
        {
          "key": "webhooks",
          "direction": "ingress",
          "ipv4Count": 4,
          "ipv6Count": 0
        }
      ],
      "path": "services/postmark.json",
      "sha256": "020ddef52a53711cd23f20bd5b0707dfbdada307872415a9cdcf2e1f397cd619"
    },
    {
      "slug": "rapid7",
      "name": "Rapid7 (InsightAppSec cloud engines)",
      "category": "security",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "appsec-engines",
          "direction": "ingress",
          "ipv4Count": 24,
          "ipv6Count": 0
        }
      ],
      "path": "services/rapid7.json",
      "sha256": "58457659e8180378d7443caf87cf16d9b61df8efc5598012832010eb9fcac8d1"
    },
    {
      "slug": "salesforce",
      "name": "Salesforce",
      "category": "business-saas",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "both",
          "ipv4Count": 32,
          "ipv6Count": 5
        }
      ],
      "path": "services/salesforce.json",
      "sha256": "2b5ab7be981de91da4e3941187bf77b66648ccdc08a1908d41e01efadadd08e1"
    },
    {
      "slug": "sentry",
      "name": "Sentry (hosted)",
      "category": "observability",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "ingest",
          "direction": "egress",
          "ipv4Count": 4,
          "ipv6Count": 2
        },
        {
          "key": "uptime",
          "direction": "ingress",
          "ipv4Count": 12,
          "ipv6Count": 0
        },
        {
          "key": "webhooks",
          "direction": "ingress",
          "ipv4Count": 10,
          "ipv6Count": 0
        }
      ],
      "path": "services/sentry.json",
      "sha256": "3e096cac6e73e0f040ccf6b2077198f91484702b4782d9780ac27f365a68047a"
    },
    {
      "slug": "stripe",
      "name": "Stripe",
      "category": "payments",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "api",
          "direction": "egress",
          "ipv4Count": 130,
          "ipv6Count": 0
        },
        {
          "key": "terminal",
          "direction": "egress",
          "ipv4Count": 38,
          "ipv6Count": 0
        },
        {
          "key": "webhooks",
          "direction": "ingress",
          "ipv4Count": 15,
          "ipv6Count": 0
        }
      ],
      "path": "services/stripe.json",
      "sha256": "f32291a63ecd5a45a7689f2a006a0ee16fa64a1d77ef2c1b116320f8e5e6e239"
    },
    {
      "slug": "tenable",
      "name": "Tenable (Vulnerability Management)",
      "category": "security",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "scanners",
          "direction": "ingress",
          "ipv4Count": 39,
          "ipv6Count": 17
        }
      ],
      "path": "services/tenable.json",
      "sha256": "9158a40b1c509486388b23486b3e863e31acecd2712de34271a2cd07fca75f28"
    },
    {
      "slug": "twilio-sip",
      "name": "Twilio Elastic SIP Trunking",
      "category": "comms",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "sip-media",
          "direction": "both",
          "ipv4Count": 1,
          "ipv6Count": 0
        },
        {
          "key": "sip-signaling",
          "direction": "both",
          "ipv4Count": 8,
          "ipv6Count": 0
        }
      ],
      "path": "services/twilio-sip.json",
      "sha256": "f851ac959a77c11783229d2a3d03cc0288774edfc9f7f4bdb92ec732bc737973"
    },
    {
      "slug": "vultr",
      "name": "Vultr (Constant, AS20473)",
      "category": "cloud",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "egress",
          "ipv4Count": 124,
          "ipv6Count": 27
        }
      ],
      "path": "services/vultr.json",
      "sha256": "9d26547dfc5ebbb798f04237bfb6a39530cd8cc586e61af5212b3313036928f4"
    },
    {
      "slug": "zendesk",
      "name": "Zendesk",
      "category": "business-saas",
      "classification": "mixed",
      "purposes": [
        {
          "key": "api",
          "direction": "egress",
          "ipv4Count": 3,
          "ipv6Count": 0
        },
        {
          "key": "webhooks",
          "direction": "ingress",
          "ipv4Count": 1,
          "ipv6Count": 0
        }
      ],
      "path": "services/zendesk.json",
      "sha256": "7c4df33d49566ca2a90cfd7a610158aa793af46fe1d5a2e7380fd3b92c791dac"
    },
    {
      "slug": "zoom",
      "name": "Zoom",
      "category": "comms",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "all",
          "direction": "egress",
          "ipv4Count": 49,
          "ipv6Count": 0
        }
      ],
      "path": "services/zoom.json",
      "sha256": "88df995bf26cf92bfb4bedce540ab082a907b01b9b9e36fef404fded9ff7de88"
    },
    {
      "slug": "zscaler",
      "name": "Zscaler (zscaler.net cloud)",
      "category": "security",
      "classification": "dedicated",
      "purposes": [
        {
          "key": "enforcement-nodes",
          "direction": "egress",
          "ipv4Count": 243,
          "ipv6Count": 48
        }
      ],
      "path": "services/zscaler.json",
      "sha256": "e43f4b6edf2b55bbde685534523a88797e0c8988a2464f05025a7e5e105264f2"
    }
  ],
  "nonPublishers": [
    {
      "slug": "twilio",
      "name": "Twilio (REST API + webhooks)",
      "evidence": "https://support.twilio.com/hc/en-us/articles/115015934048-All-About-Twilio-IP-Addresses",
      "vendorPosition": "IPs 'highly dynamic, span a large range'; allow *.twilio.com instead. SIP trunking IS pinnable — see the twilio-sip service."
    },
    {
      "slug": "adyen",
      "name": "Adyen",
      "evidence": "https://help.adyen.com/knowledge/ecommerce-integrations/webhooks/what-ip-addresses-does-adyen-use-to-send-webhook-events",
      "vendorPosition": "No IP list; allowlist out.adyen.com or resolve it via DNS hourly (their words)."
    },
    {
      "slug": "sendgrid",
      "name": "SendGrid (webhooks/parse)",
      "evidence": "https://support.sendgrid.com/hc/en-us/articles/44375457225371",
      "vendorPosition": "Dynamic cloud infra; use signed webhooks, not IP allowlists."
    },
    {
      "slug": "slack",
      "name": "Slack",
      "evidence": "https://docs.slack.dev/concepts/security/",
      "vendorPosition": "No published egress IPs; their allowlisting feature restricts YOUR IPs calling THEM."
    },
    {
      "slug": "shopify",
      "name": "Shopify (webhooks)",
      "evidence": "Shopify community threads; no official ranges page",
      "vendorPosition": "Webhook source IPs not published; verify HMAC signatures instead."
    },
    {
      "slug": "square",
      "name": "Square (webhooks)",
      "evidence": "https://developer.squareup.com/docs/webhooks/step3validate",
      "vendorPosition": "No webhook source-IP list published; validate notifications via the documented HMAC-SHA256 signature flow."
    },
    {
      "slug": "duo",
      "name": "Duo Security",
      "evidence": "https://duo.com/docs (KB 1337)",
      "vendorPosition": "Explicitly discourages IP-based egress rules; may change to maintain availability."
    },
    {
      "slug": "snowflake",
      "name": "Snowflake",
      "evidence": "SYSTEM$ALLOWLIST() function docs",
      "vendorPosition": "Deployment-specific hostnames/IPs per account; no global list."
    },
    {
      "slug": "mongodb-atlas",
      "name": "MongoDB Atlas (data plane)",
      "evidence": "https://www.mongodb.com/docs/atlas/reference/faq/networking/",
      "vendorPosition": "Cluster IPs are per-project/dynamic; control-plane IPs only via authenticated Admin API. Use private endpoints (PrivateLink) — which is itself the strategy's Tier-2 story."
    },
    {
      "slug": "vercel",
      "name": "Vercel (function egress)",
      "evidence": "https://vercel.com/docs/networking/static-ips",
      "vendorPosition": "Dynamic by default; static IPs are a paid per-customer feature, not a public range."
    },
    {
      "slug": "netlify",
      "name": "Netlify (function egress)",
      "evidence": "Netlify support/community; runs on AWS Lambda",
      "vendorPosition": "No published IPs; any circulating list 'is a guess or outdated'."
    },
    {
      "slug": "hubspot",
      "name": "HubSpot",
      "evidence": "https://developers.hubspot.com/docs/api-reference (ip-ranges guide)",
      "vendorPosition": "No static publication ('change too frequently'); offers an API returning current ranges — could be integrated later as an authed source."
    },
    {
      "slug": "openai-api",
      "name": "OpenAI API (api.openai.com)",
      "evidence": "Cloudflare-fronted endpoint; no inbound range publication",
      "vendorPosition": "Egress to api.openai.com resolves to shared Cloudflare ranges — pinning would allowlist the whole CDN."
    },
    {
      "slug": "akamai",
      "name": "Akamai (CDN)",
      "evidence": "Site Shield / Origin IP ACL docs (auth required)",
      "vendorPosition": "Customer-specific maps behind login; no public global ranges."
    },
    {
      "slug": "box",
      "name": "Box",
      "evidence": "https://support.box.com/hc/en-us/articles/360043696434-Configuring-A-Firewall-For-Box-Applications-and-Services",
      "vendorPosition": "Use domain names; 'IP addresses can change frequently and without notice' (their wording). No webhook source ranges published."
    },
    {
      "slug": "sumo-logic",
      "name": "Sumo Logic",
      "evidence": "https://support.sumologic.com/hc/en-us/articles/360012685393-How-to-allow-or-enable-IP-ranges-for-Sumo-Logic-endpoints",
      "vendorPosition": "No own ranges; officially delegates to AWS ip-ranges.json ('Amazon'/'EC2' services for your deployment region) — covered by our aws service."
    }
  ]
}
