Ga naar inhoud

Shield (WAF, DDoS en bots)

Web application firewall, DDoS-mitigatie en botdetectie per site, op basis van Bunny Shield.

Plan-gated. Elk Shield-endpoint retourneert 403 shield_not_in_plan wanneer het product van de site Shield niet bevat. Premium-only writes (botdetectie bijwerken, custom WAF-rule aanmaken) retourneren 403 shield_premium_required op een niet-premium plan. Reads die een ingerichte shield-zone vereisen retourneren 409 shield_not_active. OAuth-scopes: lezen sites:read, schrijven sites:write (deletes vereisen can_destroy). Upstream Bunny-fouten retourneren 502.


Shield-zone

Shield-config ophalen

GET /api/sites/:site_id/shield

Retourneert 409 shield_not_active als de shield-zone niet is ingericht.

Geretourneerde params
  • active: Boolean
  • plan: String | basic, advanced, business, enterprise
  • waf: Object | WAF-instellingen
  • ddos: Object | DDoS-instellingen
  • whitelabel_response_pages: Boolean

Shield activeren

POST /api/sites/:site_id/shield

Maakt de shield-zone aan. Retourneert 201. Retourneert 409 cdn_not_active als er geen pull zone is om aan te koppelen.

Shield bijwerken

PATCH /api/sites/:site_id/shield

Params (allemaal optioneel)
  • plan_type: Integer | 0=basic, 1=advanced, 2=business, 3=enterprise
  • premium: Boolean | back-compat alias voor plan_type (true=1, false=0)
  • learning_mode: Boolean
  • waf_enabled: Boolean
  • waf_execution_mode: Integer
  • waf_disabled_rules: Array<String> | ruleId-strings
  • waf_log_only_rules: Array<String> | ruleId-strings
  • ddos_sensitivity: Integer
  • ddos_execution_mode: Integer
  • ddos_challenge_window: Integer
  • whitelabel_response_pages: Boolean

Shield deactiveren

DELETE /api/sites/:site_id/shield

Soft deactivate — schakelt WAF en DDoS uit.


WAF

WAF-config ophalen

GET /api/sites/:site_id/shield/waf

WAF-config bijwerken

PATCH /api/sites/:site_id/shield/waf

Params (allemaal optioneel)
  • waf_enabled: Boolean
  • waf_execution_mode: Integer | 0=Log, 1=Block
  • waf_disabled_rules: Array<String> | ruleId-strings
  • waf_log_only_rules: Array<String> | ruleId-strings

Beheerde WAF-rules weergeven

GET /api/sites/:site_id/shield/waf/rules

Retourneert een kale array van beheerde WAF-rulegroepen.


Custom WAF-rules

Weergeven

GET /api/sites/:site_id/shield/waf_custom_rules

Aanmaken

POST /api/sites/:site_id/shield/waf_custom_rules

Premium-only. Retourneert 201.

Params
  • rule_name: String (vereist)
  • rule_description: String (optioneel)
  • rule_configuration: Object
    • action_type: Integer | 1=Block, 2=Log, 3=Challenge, 4=Allow, 5=Bypass
    • variable_type: String | bijv. REQUEST_HEADERS
    • variable_subselector: String | bijv. "User-Agent"
    • operator_type: Integer
    • severity_type: Integer | 0=NOTICE, 1=WARNING, 2=CRITICAL
    • value: String | de matchwaarde

Bijwerken

PATCH /api/sites/:site_id/shield/waf_custom_rules/:id

Niet premium-gated.

Verwijderen

DELETE /api/sites/:site_id/shield/waf_custom_rules/:id

Retourneert 204. Vereist de can_destroy-rol.


Botdetectie

Config ophalen

GET /api/sites/:site_id/shield/bot_detection

Config bijwerken

PATCH /api/sites/:site_id/shield/bot_detection

Premium-only (403 shield_premium_required).

Params (allemaal optioneel)
  • execution_mode: Integer
  • request_integrity_sensitivity: Integer
  • ip_address_sensitivity: Integer
  • browser_fingerprint_sensitivity: Integer
  • browser_fingerprint_aggression: Integer
  • browser_fingerprint_complex_enabled: Boolean

Rate limits

Weergeven

GET /api/sites/:site_id/shield/rate_limits

Aanmaken

POST /api/sites/:site_id/shield/rate_limits

Retourneert 201.

Params
  • rule_name: String | alleen letters, cijfers en spaties (zie hieronder)
  • rule_description: String | dezelfde tekenset als rule_name; mag leeg zijn
  • rule_configuration: Object | letterlijk doorgestuurd naar Bunny's rate-limit-rule-schema

Tekenset voor namen

rule_name en rule_description mogen alleen ASCII-letters, cijfers en spaties bevatten — Bunny weigert koppeltekens, underscores, punten en niet-ASCII. Een ongeldige waarde wordt pre-flight opgevangen en retourneert 422 {"error":"Rule name can only contain letters, numbers, and spaces."} (of "Rule description ..."), niet een 502 van Bunny.

Bijwerken

PATCH /api/sites/:site_id/shield/rate_limits/:id

Dezelfde params en naamvalidatie als Aanmaken.

Verwijderen

DELETE /api/sites/:site_id/shield/rate_limits/:id

Retourneert 204. Vereist de can_destroy-rol.


Access lists

Weergeven

GET /api/sites/:site_id/shield/access_lists

Enums weergeven

GET /api/sites/:site_id/shield/access_lists/enums

Beschikbare enum-waarden voor type van access lists.

Bekijken

GET /api/sites/:site_id/shield/access_lists/:id

Aanmaken

POST /api/sites/:site_id/shield/access_lists

Retourneert 201.

Params
  • name: String
  • description: String
  • type: Integer
  • content: String | door newlines gescheiden vermeldingen
  • checksum: String

Bijwerken

PATCH /api/sites/:site_id/shield/access_lists/:id

Verwijderen

DELETE /api/sites/:site_id/shield/access_lists/:id

Retourneert 204. Vereist de can_destroy-rol.


Events

GET /api/sites/:site_id/shield/events

Shield WAF/DDoS-eventlog voor een bepaalde datum.

Params
  • date: String | MM-DD-YYYY (standaard vandaag)
  • continue: String | continuation-token voor paginatie (optioneel)
Geretourneerde params
  • logs: Array
  • hasMoreData: Boolean
  • continuationToken: String
  • startToken: String

Shield-metrics

Deze metric-endpoints zijn niet plan-gated, maar retourneren nog steeds 409 shield_not_active wanneer er geen shield-zone is of de upstream stats-payload leeg terugkomt. Scope: sites:read.

Individuele stats

GET /api/sites/:site_id/metrics/shield

Individuele DDoS-, bot- en WAF-stats over de afgelopen 28 dagen.

Geretourneerde params
  • ddos: Array van series | logged, verified, blocked, challenged
  • bots: Array van series | logged, challenged
  • waf: Array van series | getriggerde events

Elke serie: { name: String, data: [ { x: "2026-05-01", y: 0 } ] }.

Overzichtsstats

GET /api/sites/:site_id/metrics/shield/overview

DDoS-aanvallen + WAF-triggers over de afgelopen 28 dagen. Retourneert een kale array van series: [ { name: "DDoS Attacks", data: [...] }, { name: "WAF Triggers", data: [...] } ].