API reference

/v1/security-ip-lists

4 operations · 4 support API keys

← All groups · First call? Read the tutorial: auth, permissions, requests and responses, common failures

MethodPathSummaryAuth
GET/v1/security-ip-listsList named IP listsAPI keySession
POST/v1/security-ip-listsCreate a named IP listAPI keySession
PUT/v1/security-ip-lists/{list_id}Replace a named IP listAPI keySession
DELETE/v1/security-ip-lists/{list_id}Delete a named IP listAPI keySession

Contract file:api/openapi/v1/control.yaml

Operation details

GET /v1/security-ip-lists

List named IP lists

operationId
listSecurityIPLists
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • 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

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

Requires security_policies.read. Tenant identities only: the tenant's own lists (writable) and the platform lists (read only, platform true).

Responses

listSecurityIPLists Responses
StatusDescription
200Lists ordered own first, then by name.

Fields:items: array<SecurityIPList>

401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
500The request could not be completed because of an internal failure.

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.
  • 500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.

↑ Back to list

POST /v1/security-ip-lists

Create a named IP list

operationId
createSecurityIPList
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • 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

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

Requires security_policies.manage. Entries are canonicalized (masked, deduplicated, ordered). Audit security.ip_list.create. At most 200 live lists per scope.

Parameters

createSecurityIPList Parameters
NameInTypeRequiredDescription
Idempotency-KeyheaderstringYes—

Request body

application/json · Required:Yes

createSecurityIPList Request body
NameTypeRequiredDescription
namestringYes—
descriptionstringNo—
entriesarray<string>Yes—

Responses

createSecurityIPList Responses
StatusDescription
201Created, or an identical request replayed.

Fields:id: string(uuid) name: string description: string entries: array<string> revision: integer platform: boolean updated_at: string(date-time)

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
409The requested state conflicts with an existing resource or idempotency fact.
500The request could not be completed because of an internal failure.

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.
  • 500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.

↑ Back to list

PUT /v1/security-ip-lists/{list_id}

Replace a named IP list

operationId
updateSecurityIPList
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • 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

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

Requires security_policies.manage and the current revision. Every tenant whose bound WAF policy references the list is republished automatically (system trigger ip_list). Audit security.ip_list.update.

Parameters

updateSecurityIPList Parameters
NameInTypeRequiredDescription
Idempotency-KeyheaderstringYes—
list_idpathstring(uuid)Yes—

Request body

application/json · Required:Yes

updateSecurityIPList Request body
NameTypeRequiredDescription
expected_revisionintegerYes—
namestringYes—
descriptionstringNo—
entriesarray<string>Yes—

Responses

updateSecurityIPList Responses
StatusDescription
200Replaced (revision + 1), or an identical request replayed.

Fields:id: string(uuid) name: string description: string entries: array<string> revision: integer platform: boolean updated_at: string(date-time)

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
404The requested resource was not found.
409The requested state conflicts with an existing resource or idempotency fact.
500The request could not be completed because of an internal failure.

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.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.

↑ Back to list

DELETE /v1/security-ip-lists/{list_id}

Delete a named IP list

operationId
deleteSecurityIPList
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • 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

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

Requires security_policies.manage and the current revision. A list any live policy version references is refused (409 ip_list_in_use). Audit security.ip_list.delete.

Parameters

deleteSecurityIPList Parameters
NameInTypeRequiredDescription
Idempotency-KeyheaderstringYes—
list_idpathstring(uuid)Yes—
expected_revisionqueryintegerYes—

Responses

deleteSecurityIPList Responses
StatusDescription
204Deleted.
400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
404The requested resource was not found.
409The requested state conflicts with an existing resource or idempotency fact.
500The request could not be completed because of an internal failure.

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.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.

↑ Back to list