Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Comprehensive Cloudflare platform skill covering Workers, D1, R2, KV, AI, Durable Objects, and security.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/ddos/api.md
1# DDoS API23## Endpoints45### HTTP DDoS (L7)67```typescript8// Zone-level9PUT /zones/{zoneId}/rulesets/phases/ddos_l7/entrypoint10GET /zones/{zoneId}/rulesets/phases/ddos_l7/entrypoint1112// Account-level (Enterprise Advanced)13PUT /accounts/{accountId}/rulesets/phases/ddos_l7/entrypoint14GET /accounts/{accountId}/rulesets/phases/ddos_l7/entrypoint15```1617### Network DDoS (L3/4)1819```typescript20// Account-level only21PUT /accounts/{accountId}/rulesets/phases/ddos_l4/entrypoint22GET /accounts/{accountId}/rulesets/phases/ddos_l4/entrypoint23```2425## TypeScript SDK2627**SDK Version**: Requires `cloudflare` >= 3.0.0 for ruleset phase methods.2829```typescript30import Cloudflare from "cloudflare";3132const client = new Cloudflare({ apiToken: process.env.CLOUDFLARE_API_TOKEN });3334// STEP 1: Discover managed ruleset ID (required for overrides)35const allRulesets = await client.rulesets.list({ zone_id: zoneId });36const ddosRuleset = allRulesets.result.find(37(r) => r.kind === "managed" && r.phase === "ddos_l7"38);39if (!ddosRuleset) throw new Error("DDoS managed ruleset not found");40const managedRulesetId = ddosRuleset.id;4142// STEP 2: Get current HTTP DDoS configuration43const entrypointRuleset = await client.zones.rulesets.phases.entrypoint.get("ddos_l7", {44zone_id: zoneId,45});4647// STEP 3: Update HTTP DDoS ruleset with overrides48await client.zones.rulesets.phases.entrypoint.update("ddos_l7", {49zone_id: zoneId,50rules: [51{52action: "execute",53expression: "true",54action_parameters: {55id: managedRulesetId, // From discovery step56overrides: {57sensitivity_level: "medium",58action: "managed_challenge",59},60},61},62],63});6465// Network DDoS (account level, L3/4)66const l4Rulesets = await client.rulesets.list({ account_id: accountId });67const l4DdosRuleset = l4Rulesets.result.find(68(r) => r.kind === "managed" && r.phase === "ddos_l4"69);70const l4Ruleset = await client.accounts.rulesets.phases.entrypoint.get("ddos_l4", {71account_id: accountId,72});73```7475## Alert Configuration7677```typescript78interface DDoSAlertConfig {79name: string;80enabled: boolean;81alert_type: "http_ddos_attack_alert" | "layer_3_4_ddos_attack_alert"82| "advanced_http_ddos_attack_alert" | "advanced_layer_3_4_ddos_attack_alert";83filters?: {84zones?: string[];85hostnames?: string[];86requests_per_second?: number;87packets_per_second?: number;88megabits_per_second?: number;89ip_prefixes?: string[]; // CIDR90ip_addresses?: string[];91protocols?: string[];92};93mechanisms: {94email?: Array<{ id: string }>;95webhooks?: Array<{ id: string }>;96pagerduty?: Array<{ id: string }>;97};98}99100// Create alert101await fetch(102`https://api.cloudflare.com/client/v4/accounts/${accountId}/alerting/v3/policies`,103{104method: "POST",105headers: {106Authorization: `Bearer ${apiToken}`,107"Content-Type": "application/json",108},109body: JSON.stringify(alertConfig),110}111);112```113114## Typed Override Examples115116```typescript117// Override by category118interface CategoryOverride {119action: "execute";120expression: string;121action_parameters: {122id: string;123overrides: {124categories?: Array<{125category: "http-flood" | "http-anomaly" | "udp-flood" | "syn-flood";126sensitivity_level?: "default" | "medium" | "low" | "eoff";127action?: "block" | "managed_challenge" | "challenge" | "log";128}>;129};130};131}132133// Override by rule ID134interface RuleOverride {135action: "execute";136expression: string;137action_parameters: {138id: string;139overrides: {140rules?: Array<{141id: string;142action?: "block" | "managed_challenge" | "challenge" | "log";143sensitivity_level?: "default" | "medium" | "low" | "eoff";144}>;145};146};147}148149// Example: Override specific adaptive rule150const adaptiveOverride: RuleOverride = {151action: "execute",152expression: "true",153action_parameters: {154id: managedRulesetId,155overrides: {156rules: [157{ id: "...adaptive-origins-rule-id...", sensitivity_level: "low" },158],159},160},161};162```163164See [patterns.md](./patterns.md) for complete implementation patterns.165