Docs

Python: Policies and audit

List, create, test, evaluate and roll back access policies, check permissions, and read or verify the audit log and access transparency with the Python SDK.

Updated Oct 16, 2026
spl = 'ALLOW IF "STAFF" IN ctx.actor.roles'
print(await sovaria.policy_simulate(spl, {"actor": {"roles": ["STAFF"]}, "action": "UPDATE", "resource": "books"}))
await sovaria.policy_create("pol_staff_edit_books", "staff edit books", spl, org_id)

Methods

sovaria.audit_append

Append an immutable audit entry.

await sovaria.audit_append(
    *, event_type: str,
    actor_id: str,
    source: str,
    action: str,
    resource_id: str | None = None,
    metadata: dict[str, Any] | None = None,
    ip_address: str | None = None,
) -> dict[str, Any]

Parameters

event_typestrrequired
actor_idstrrequired
sourcestrrequired
actionstrrequired
resource_idstr | Noneoptionaldefault None
metadatadict[str, Any] | Noneoptionaldefault None
ip_addressstr | Noneoptionaldefault None
Returns
dict[str, Any]

sovaria.audit_count

Return current audit-entry count.

await sovaria.audit_count() -> dict[str, Any]
Returns
dict[str, Any]

sovaria.audit_list

Query audit entries.

await sovaria.audit_list(
    *, actor_id: str | None = None,
    event_type: str | None = None,
    source: str | None = None,
    resource_id: str | None = None,
    limit: int = 50,
    offset: int = 0,
) -> list[dict[str, Any]]

Parameters

actor_idstr | Noneoptionaldefault None
event_typestr | Noneoptionaldefault None
sourcestr | Noneoptionaldefault None
resource_idstr | Noneoptionaldefault None
limitintoptionaldefault 50
offsetintoptionaldefault 0
Returns
list[dict[str, Any]]

sovaria.audit_verify

Verify audit hash-chain integrity.

await sovaria.audit_verify() -> dict[str, Any]
Returns
dict[str, Any]

sovaria.list_access_transparency

List access transparency.

await sovaria.list_access_transparency(
    *, org_id: str,
    project_id: str | None = None,
    event_type: str | None = None,
    since: str | None = None,
    limit: int | None = None,
    offset: int | None = None,
) -> list[dict[str, Any]]

Parameters

org_idstrrequired
project_idstr | Noneoptionaldefault None
event_typestr | Noneoptionaldefault None
sincestr | Noneoptionaldefault None
limitint | Noneoptionaldefault None
offsetint | Noneoptionaldefault None
Returns
list[dict[str, Any]]

sovaria.policy_check

Preflight one action/resource against active Guard policies.

await sovaria.policy_check(
    *, org_id: str,
    project_id: str,
    action: str,
    resource: str,
    context: dict[str, Any] | None = None,
) -> dict[str, Any]

Parameters

org_idstrrequired
project_idstrrequired
actionstrrequired
resourcestrrequired
contextdict[str, Any] | Noneoptionaldefault None
Returns
dict[str, Any]

sovaria.policy_create

Create and compile a policy.

await sovaria.policy_create(
    policy_id: str,
    name: str,
    spl_source: str,
    org_id: str,
) -> dict[str, Any]

Parameters

policy_idstrrequired
Your unique id, e.g. pol_books_read.
namestrrequired
Readable name.
spl_sourcestrrequired
The rule.
org_idstrrequired
Organization id.
Returns
dict[str, Any]

sovaria.policy_delete

Delete (deactivate) a policy.

await sovaria.policy_delete(policy_id: str) -> None

Parameters

policy_idstrrequired
Returns
None

sovaria.policy_evaluate

Evaluate a policy against an explicit debug context.

await sovaria.policy_evaluate(
    policy_id: str,
    context: dict[str, Any],
) -> dict[str, Any]

Parameters

policy_idstrrequired
contextdict[str, Any]required
Returns
dict[str, Any]

sovaria.policy_get

Get a single policy by ID.

await sovaria.policy_get(policy_id: str) -> dict[str, Any]

Parameters

policy_idstrrequired
Returns
dict[str, Any]

sovaria.policy_history

Return version history for a policy.

await sovaria.policy_history(policy_id: str) -> list[dict[str, Any]]

Parameters

policy_idstrrequired
Returns
list[dict[str, Any]]

sovaria.policy_list

List active policies visible in current tenant scope.

await sovaria.policy_list() -> list[dict[str, Any]]
Returns
list[dict[str, Any]]

sovaria.policy_preflight

Preflight against current SDK org/project scope.

await sovaria.policy_preflight(
    action: str,
    resource: str,
    context: dict[str, Any] | None = None,
) -> dict[str, Any]

Parameters

actionstrrequired
resourcestrrequired
contextdict[str, Any] | Noneoptionaldefault None
Returns
dict[str, Any]

sovaria.policy_rollback

Rollback a policy to a historical version.

await sovaria.policy_rollback(
    policy_id: str,
    version: int,
) -> dict[str, Any]

Parameters

policy_idstrrequired
versionintrequired
Returns
dict[str, Any]

sovaria.policy_simulate

Policy simulate.

await sovaria.policy_simulate(
    spl_source: str,
    context: dict[str, Any] | None = None,
) -> dict[str, Any]

Parameters

spl_sourcestrrequired
contextdict[str, Any] | Noneoptionaldefault None
Returns
dict[str, Any]

sovaria.policy_templates

List server-authoritative SPL templates.

await sovaria.policy_templates() -> dict[str, Any]
Returns
dict[str, Any]

sovaria.policy_update

Recompile and update an existing policy.

await sovaria.policy_update(
    policy_id: str,
    spl_source: str,
    name: str | None = None,
) -> dict[str, Any]

Parameters

policy_idstrrequired
spl_sourcestrrequired
namestr | Noneoptionaldefault None
Returns
dict[str, Any]
Something unclear or missing on this page?Tell us