Issue an authoring capability
Mints a new DRAFT policy version under policy_id — rules copied from source_policy_version_id, created_by set to the issuing human — and, in the same transaction, creates an authoring capability record bound to THAT minted version, a closed set of authoring actions, a set of granted source items and a validity window. The bound policy_version_id and policy_version_number are chosen by the server and returned; a caller cannot name them. Access is decided by two gates, in this order, both answering 403: the scope check runs first, so a principal without the api-keys:admin scope — including an authoring:capability carrier key — is refused FORBIDDEN and never reaches the second gate; a principal that HAS api-keys:admin but is an API key rather than a verified human session is then refused HUMAN_PRINCIPAL_REQUIRED. Only a verified human principal holding api-keys:admin reaches the handler. The subject key named in the body must hold the authoring:capability scope and must not hold policies:read or policies:write. Returns 404 AUTHORING_CAPABILITY_SOURCE_VERSION_NOT_FOUND when the source version is not a version of that policy in this tenant, and 409 AUTHORING_CAPABILITY_DRAFT_CONFLICT when the policy already has an open draft or submitted version, so no shell can be minted.
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.
Body
Issue an authoring capability. source_policy_version_id names the EXISTING version whose rules are copied into a new draft version minted by this request; the capability binds to the MINTED version, whose id and number the server chooses and returns in policy_version_id / policy_version_number.
Issue an authoring capability. source_policy_version_id names the EXISTING version whose rules are copied into a new draft version minted by this request; the capability binds to the MINTED version, whose id and number the server chooses and returns in policy_version_id / policy_version_number.
1 - 5121policy.read, draft.edit, draft.validate, review.submit, review.withdraw_request, review.retrieve, case.preview 1 - 256Response
An authoring capability record: a grant, or the revocation that supersedes one.
An authoring capability record: a grant, or the revocation that supersedes one.
grant policy.read, draft.edit, draft.validate, review.submit, review.withdraw_request, review.retrieve, case.preview ^[0-9a-f]{64}$