Inspect deployment policy and the effective capability matrix for an actor + scope.

Policy

CortexDB's authorization stack is four-tiered: deployment → tenant → scope → actor. Read-only inspection endpoints are stable; mutation endpoints (PUT /v1/policy/...) are experimental.

For the capability catalog and tier semantics, see Authorization.


GET /v1/policy/deployment

Returns the deployment-tier policy — the floor that no tenant or scope can override.

Response

{
  "preset": "cloud_managed",
  "allow":  ["scope.read.*", "scope.write", "forget.cascade.derived_only"],
  "deny":   ["forget.gdpr.cross_workspace"],
  "defaults": {
    "diagnostics_allowed": false,
    "experimental_enabled": false
  }
}

Built-in presets: on_prem_enterprise (most permissive, experimentals enabled), cloud_managed (default), cloud_strict (GDPR cross-workspace denied by default), dev_local (unsigned tokens allowed).


GET /v1/policy/effective

The capability matrix for one actor at one scope, resolved through all four tiers.

GET /v1/policy/effective?actor=user:alice&scope=org:acme/dept:eng/user:alice

Response

{
  "allowed": [
    { "capability": "scope.read.local",     "tier": "scope",  "reason": "scope.members[alice]=owner" },
    { "capability": "scope.read.holistic",  "tier": "tenant", "reason": "tenant policy" },
    { "capability": "scope.write",          "tier": "scope",  "reason": "scope.members[alice]=owner" }
  ],
  "denied": [
    { "capability": "forget.gdpr.cross_workspace", "tier": "deployment", "reason": "preset cloud_managed denies" }
  ]
}

Every entry cites the tier that decided and a human-readable reason. No opaque 403s.


PUT /v1/policy/deployment / tenant / scope / actor — Experimental

Mutate policy at each tier. Stability: experimental — the write surface is documented but the shape may change. Read endpoints above are stable.