Taifa Identity. Docs
OpenAPI Developers

API reference

Propose an immutable permission catalog

Management API contract View .md

Current project owner proposes a versioned catalog. A separate current platform project approver must approve it. Idempotency-Key replays the exact actor and body.

POST/v1/projects/{project_id}/permission-catalogs

Authentication Bearer access token with audience taifa-management. Roles and local eligibility are reviewed separately from the OpenAPI bearer scheme.

Parameters

NameInTypeRequiredDescription
project_idpathstringYes
idempotency-keyheaderstringYes

Request body

application/jsonRequiredCatalogProposal

FieldTypeRequiredDescription
reasonstringYesValidation: min length 8; max length 500
permissionsPermission[]YesValidation: min items 1; max items 32

Responses

201Successful Response

Content type: application/jsonCatalogRead

FieldTypeRequiredDescription
idstringYes
project_idstringYes
revisionintegerYes
permissionsPermission[]Yes
digeststringYes
statuspending_review | approved | superseded | revokedYes
proposerstringYes
approverstring | nullYes
created_atstringYes
expires_atstringYes
actions(approve | revoke)[]Yes
revocationsRevocationRead[]No

Other responses

StatusDescriptionSchema
403Current project authority or independent review required
409Current exact proposal, catalog, version or idempotency conflict
413Exact JSON request exceeds 64 KiB
422Invalid exact reviewed policy or registration
503Configured owned issuer authority unavailable

Request example

Illustrative only. TypeScript runs in Node.js on the server. Keep management tokens out of browser bundles. Replace the host, token, path values, and any header or required body placeholders before use. Examples do not send requests.

Shell
curl -X POST 'https://YOUR_IDENTITY_HOST/v1/projects/REPLACE_WITH_PROJECT_ID/permission-catalogs' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'idempotency-key: REPLACE_WITH_IDEMPOTENCY_KEY' \
  -H 'Content-Type: application/json' \
  --data '{
  "permissions": [
    {
      "description": "Read assigned case records",
      "id": "case.read"
    }
  ],
  "reason": "Define reviewed case access permissions"
}'

Response example

No response example in the current specification.

Popular

Browse by section