MethodPathSummaryAuth
GET/v1/firewall-actions/policyRead the desired, active, and last-known-good firewall action policySession
PUT/v1/firewall-actions/policyCreate the next immutable firewall action policy candidateSession
POST/v1/firewall-actions/policy/recoverCreate a monotonic recovery candidate from the last-known-good policySession

Contract file:api/control-firewall-actions.openapi.yaml

Operation details

GET /v1/firewall-actions/policy

Read the desired, active, and last-known-good firewall action policy

operationId
getFirewallActionPolicy
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:firewall.read

Parameters

getFirewallActionPolicy Parameters
NameInTypeRequiredDescription
target_scope_idquerystring(uuid)Yes—
site_idquerystring(uuid)Yes—

Responses

getFirewallActionPolicy Responses
StatusDescription
200Desired, active, and LKG state

Fields:normal_action: string: disconnect / return_page escalated_action: string: nftables engage_threshold: integer recover_threshold: integer recovery_windows: integer block_networks: array<string> trusted_proxies: array<string> trusted_crawlers: array<TrustedCrawler> return_page: ReturnPage id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) revision: integer active_revision: integer lkg_revision: integer deployment_state: string: pending / active / failed host_escalation: string: owned / shared_unsupported document_sha256: string created_at: string(date-time) updated_at: string(date-time)

401Authentication required
403Permission denied
404Policy absent or outside actor scope

What to do on failure

  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.

↑ Back to list

PUT /v1/firewall-actions/policy

Create the next immutable firewall action policy candidate

operationId
putFirewallActionPolicy
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:firewall.manage

Parameters

putFirewallActionPolicy Parameters
NameInTypeRequiredDescription
target_scope_idquerystring(uuid)Yes—
site_idquerystring(uuid)Yes—
If-MatchheaderstringYes—
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstring(uuid)Yes—

Request body

application/json · Required:Yes

putFirewallActionPolicy Request body
NameTypeRequiredDescription
normal_actionstring: disconnect / return_pageYes—
escalated_actionstring: nftablesYes—
engage_thresholdintegerYes—
recover_thresholdintegerYes—
recovery_windowsintegerYes—
block_networksarray<string>Yes—
trusted_proxiesarray<string>Yes—
trusted_crawlersarray<TrustedCrawler>Yes—
return_pageReturnPageYes—

Responses

putFirewallActionPolicy Responses
StatusDescription
200Immutable candidate accepted for publication

Fields:normal_action: string: disconnect / return_page escalated_action: string: nftables engage_threshold: integer recover_threshold: integer recovery_windows: integer block_networks: array<string> trusted_proxies: array<string> trusted_crawlers: array<TrustedCrawler> return_page: ReturnPage id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) revision: integer active_revision: integer lkg_revision: integer deployment_state: string: pending / active / failed host_escalation: string: owned / shared_unsupported document_sha256: string created_at: string(date-time) updated_at: string(date-time)

400Invalid policy or request metadata
401Authentication required
403Permission denied
409Revision, idempotency, or LKG conflict

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.

↑ Back to list

POST /v1/firewall-actions/policy/recover

Create a monotonic recovery candidate from the last-known-good policy

operationId
recoverFirewallActionLKG
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:firewall.manage

Description (from the contract)

Creates a new monotonic candidate from the durable last-known-good document; it never rewinds revisions.

Parameters

recoverFirewallActionLKG Parameters
NameInTypeRequiredDescription
target_scope_idquerystring(uuid)Yes—
site_idquerystring(uuid)Yes—
If-MatchheaderstringYes—
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstring(uuid)Yes—

Request body

application/json · Required:Yes

Responses

recoverFirewallActionLKG Responses
StatusDescription
200LKG recovery candidate accepted

Fields:normal_action: string: disconnect / return_page escalated_action: string: nftables engage_threshold: integer recover_threshold: integer recovery_windows: integer block_networks: array<string> trusted_proxies: array<string> trusted_crawlers: array<TrustedCrawler> return_page: ReturnPage id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) revision: integer active_revision: integer lkg_revision: integer deployment_state: string: pending / active / failed host_escalation: string: owned / shared_unsupported document_sha256: string created_at: string(date-time) updated_at: string(date-time)

400Invalid policy or request metadata
401Authentication required
403Permission denied
409Revision, idempotency, or LKG conflict

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.

↑ Back to list