C
CIFP

Firewall Rules API

Create and manage CEL-based firewall rules.

Firewall rules are CEL expressions evaluated on every request in firewall mode. Rules are compiled at write time — invalid expressions are rejected with 400.

List Rules

GET/api/proxies/:id/rules
bash
curl https://cifp.vril.dev/api/proxies/proxy-id/rules \
  -H "Authorization: Bearer cifp_your_api_key"
Response
{
  "rules": [
    {
      "id":            "rule_abc",
      "name":          "allow-openai",
      "priority":      10,
      "action":        "allow",
      "celExpression": "request.host == \"api.openai.com\"",
      "enabled":       true,
      "createdAt":     "2026-06-01T10:00:00Z"
    }
  ],
  "count": 1
}

Create Rule

POST/api/proxies/:id/rules
bash
curl -X POST https://cifp.vril.dev/api/proxies/proxy-id/rules \
  -H "Authorization: Bearer cifp_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name":          "allow-openai",
    "priority":      10,
    "action":        "allow",
    "celExpression": "request.host == \"api.openai.com\"",
    "enabled":       true,
    "description":   "Allow OpenAI API traffic"
  }'
FieldRequiredDescription
nameYesDisplay name. 1–100 chars.
celExpressionYesBoolean CEL expression. Compiled at write time.
actionYesallow, deny, or hitl
priorityNoInteger 0–10000. Lower = higher priority. Default 100.
enabledNoToggle rule without deleting. Default true.
descriptionNoOptional documentation. Max 500 chars.

Update Rule

PATCH/api/proxies/:id/rules/:ruleId

All fields are optional. Only provided fields are updated.

bash
# Disable a rule
curl -X PATCH https://cifp.vril.dev/api/proxies/proxy-id/rules/rule-id \
  -H "Authorization: Bearer cifp_your_api_key" \
  -d '{"enabled": false}

# Change priority and action
curl -X PATCH https://cifp.vril.dev/api/proxies/proxy-id/rules/rule-id \
  -d '{"priority": 5, "action": "hitl"}'

Delete Rule

DELETE/api/proxies/:id/rules/:ruleId
bash
curl -X DELETE https://cifp.vril.dev/api/proxies/proxy-id/rules/rule-id \
  -H "Authorization: Bearer cifp_your_api_key"

# Returns 204 No Content