Put a ratified policy version in force
Puts this exact ratified version in force: the version currently in force (if any) is superseded, this version governs evaluations from now on, and a signed immutable version-activation receipt is returned. A policy’s first activation starts it in shadow mode; a later activation keeps the policy’s current mode (shadow to enforcing stays its own act, POST /v1/policies//activate). Refusals: 404 NOT_FOUND when the policy or version does not exist in this tenant; 409 INVALID_TRANSITION with details.reason = POLICY_ARCHIVED (the policy is archived), VERSION_ALREADY_IN_FORCE, VERSION_NOT_RATIFIED (the version is not ratified), or VERSION_NOT_PENDING (a version with an equal or higher number is in force); 500 RATIFIER_KEY_REQUIRED when no ratifier key is configured. Nothing is written on a refusal.
Authorizations
MeshQu API key passed as a bearer token: Authorization: Bearer mqu_…. Mint one in the console (Settings → API keys).
Tenant UUID for multi-tenant isolation. Required on all authenticated routes — validated before authentication (middleware/tenant.ts), so a missing or non-UUID header returns 400 (MISSING_TENANT_ID / INVALID_TENANT_ID) before the API key is checked.
Response
Default Response
Names the act inside the signed preimage. Always policy_version_activation.
policy_version_activation The version this act put in force.
x >= 1The version that was in force and is now superseded; null when nothing was in force (first activation).
The policy's mode after this act. A first activation starts the policy in shadow; a later one keeps the mode it had.
Stable subject id of the human who acted.
SHA-256 (hex) of the canonical JSON of the eleven preimage fields.
^[0-9a-f]{64}$