List protection rules
Ten per page, the panel's own page size. state is working once the rule is enforced; a rule you just created is creating, and one being removed is delete.
apiToken firewall:readAuthorizationBearer <token>A personal API token: Authorization: Bearer dh_live_…. See Authentication for scopes.
Scope: firewall:read
ip*stringOne of your protected addresses, from GET /v1/firewall/ips. Any other address is a 403.
page?integer1 <= value1One page of rules.
application/json- response
items*array<>total*integercurl -X GET 'https://api.deluxhost.net/v1/firewall/rules?ip=string' \ -H "Authorization: Bearer $DELUXHOST_TOKEN"{ "items": [ { "id": 0, "ip": "string", "port": 0, "protocol": "string", "application": "string", "state": "string" } ], "total": 0}Get DDoS attack details GET
`ip` is required and is what proves the record is yours: attack ids are a global sequence, so an id alone identifies nothing you are entitled to. A mismatch is a `404`, like every other id that is not yours.
Create a protection rule POST
Creates a rule from one of the presets in `GET /v1/firewall/applications`. **The response carries no rule.** The panel accepts the request and applies it in the background, without returning an id: the new rule appears in `GET /v1/firewall/rules` as `creating` and becomes `working` on its own. Poll that if you need to know it took effect. **Not idempotent, and there is no idempotency key in v1.** A repeated identical rule is refused by the panel as a duplicate — a `400`, not a silent success. Read the rule list before retrying a call whose response you never saw. The advanced fields are only meaningful on the `Custom` application; the presets carry their own tuning and ignore them.