Skip to content

Create a cloud-policy

POST
/cloud-policies
object
data
object
name
required

Human-readable policy name (e.g. ‘CIS-1.1: No public S3 bucket’).

string
description

Detailed explanation of the policy and its intent.

string
severity
required

Block = job is rejected; warn = job proceeds but a warning is emitted in audit.

string
Allowed values: block warn
provider
required

Cloud provider this policy applies to. ‘all’ matches any provider.

string
Allowed values: aws azure gcp hetzner ovhcloud scaleway upcloud digitalocean all
resource_type

Free-text resource type filter (e.g. ‘ec2’, ‘s3’, ‘all’). ‘all’ or empty = matches any resource type.

string
expression

Simple JSON DSL: { “and”: […] } or { “or”: […] } with leaf nodes { “field”: string, “op”: “eq”|“neq”|“contains”|“exists”|“not-exists”|“gt”|“lt”, “value”: any }. Field is a dot-path into the job payload (e.g. ‘config.public_access’).

is_active

When false the policy is soft-disabled (skipped by the evaluator) without deleting it.

boolean
is_builtin

Built-in CIS-aligned policies seeded by bootstrap. True = platform-wide, read-only default (organisation=null). False = custom per-org.

boolean
organisation
One of:

DocumentId reference to api::organisation.organisation

string
home_region

Logical data-residency region of the tenant (CELL invariant, F2.CELL.01).

string
cell_id

Deployment cell within home_region for blast-radius isolation (CELL invariant, F2.CELL.01).

string

Created

object
data
object
name
required

Human-readable policy name (e.g. ‘CIS-1.1: No public S3 bucket’).

string
description

Detailed explanation of the policy and its intent.

string
severity
required

Block = job is rejected; warn = job proceeds but a warning is emitted in audit.

string
Allowed values: block warn
provider
required

Cloud provider this policy applies to. ‘all’ matches any provider.

string
Allowed values: aws azure gcp hetzner ovhcloud scaleway upcloud digitalocean all
resource_type

Free-text resource type filter (e.g. ‘ec2’, ‘s3’, ‘all’). ‘all’ or empty = matches any resource type.

string
expression

Simple JSON DSL: { “and”: […] } or { “or”: […] } with leaf nodes { “field”: string, “op”: “eq”|“neq”|“contains”|“exists”|“not-exists”|“gt”|“lt”, “value”: any }. Field is a dot-path into the job payload (e.g. ‘config.public_access’).

is_active

When false the policy is soft-disabled (skipped by the evaluator) without deleting it.

boolean
is_builtin

Built-in CIS-aligned policies seeded by bootstrap. True = platform-wide, read-only default (organisation=null). False = custom per-org.

boolean
organisation
One of:

DocumentId reference to api::organisation.organisation

string
home_region

Logical data-residency region of the tenant (CELL invariant, F2.CELL.01).

string
cell_id

Deployment cell within home_region for blast-radius isolation (CELL invariant, F2.CELL.01).

string
documentId
string
id
integer
createdAt
string format: date-time
updatedAt
string format: date-time
publishedAt
string format: date-time
nullable

Validation error

Missing or invalid authentication

Not authorized (tenant scope or capability)