Taifa Identity. Docs
OpenAPI Developers

API reference

Propose an exact owned-client registration policy

Management API contract View .md

Requires a controlled credential preparation and fresh private issuer custody readback. Stores the full immutable registration and versioned digest with exact accepted owner and catalog evidence for independent review. Approval does not install a client or authorize an assignment. Idempotency-Key replays the exact actor and body after current authority and fresh custody checks.

POST/v1/projects/{project_id}/owned-clients

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/jsonRequiredClientProposal

FieldTypeRequiredDescription
reasonstringYesValidation: min length 8; max length 500
target_issuerstringYesValidation: min length 1; max length 2048
client_idstringYesValidation: min length 1; max length 128
client_versionintegerYesValidation: minimum 1; maximum 9223372036854775807
display_namestringYesValidation: min length 3; max length 120
catalog_idstringYesValidation: min length 1; max length 200
credential_preparation_idstringYesCanonical preparation UUID from controlled credential delivery. Management verifies fresh private issuer readback; browser proof is reference metadata only. Validation: min length 36; max length 36
permission_idsstring[]YesValidation: min items 1; max items 32
registrationRegistrationProposalYes

Responses

201Successful Response

Content type: application/jsonClientRead

FieldTypeRequiredDescription
idstringYes
project_idstringYes
target_issuerstringYes
client_idstringYes
client_versionintegerYes
generationintegerYes
display_namestringYes
catalog_idstringYes
catalog_digeststringYes
permission_idsstring[]Yes
registrationRegistrationReadYes
registration_digeststringYes
policy_digeststringYes
credential_preparation_idstring | nullNo
custody_binding_digeststring | nullNo
statuspending_review | approved_pending_readback | superseded | revokedYes
proposerstringYes
approverstring | nullYes
created_atstringYes
expires_atstringYes
actions(approve | revoke)[]Yes
revocationRevocationRead | nullNo

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/owned-clients' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'idempotency-key: REPLACE_WITH_IDEMPOTENCY_KEY' \
  -H 'Content-Type: application/json' \
  --data '{
  "catalog_id": "00000000-0000-4000-8000-000000000001",
  "client_id": "case-app-test",
  "client_version": 1,
  "credential_preparation_id": "00000000-0000-4000-8000-000000000002",
  "display_name": "Case application test",
  "permission_ids": [
    "case.read"
  ],
  "reason": "Review an owned case application registration",
  "registration": {
    "enabled": true,
    "management_access": false,
    "post_logout_redirect_uris": [
      "https://case.example.test/signed-out"
    ],
    "redirect_uris": [
      "https://case.example.test/callback"
    ],
    "refresh_allowed": false,
    "resource_audiences": [
      "case-api-test"
    ],
    "secret_hash_fingerprint": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  },
  "target_issuer": "https://owned-issuer.example.test"
}'

Response example

No response example in the current specification.

Popular

Browse by section