API reference
Project lifecycle
6 management API operations for Project lifecycle.
/v1/projects/{project_id}/lifecycleRead project lifecycle and issuer removal state
POST/v1/projects/{project_id}/lifecycle/suspendSuspend a project
POST/v1/projects/{project_id}/lifecycle/resumeResume a suspended project
POST/v1/projects/{project_id}/lifecycle/decommissionRequest irreversible decommission
POST/v1/projects/{project_id}/lifecycle/decommission/{action_id}/approveApprove irreversible decommission
POST/v1/projects/{project_id}/lifecycle/decommission/{action_id}/cancelCancel a pending decommission request
GET/v1/projects/{project_id}/lifecycle
Read project lifecycle and issuer removal state
Scoped to a current owner or project approver. Revocation state is Management ledger state plus authenticated Go receipts. local_sessions is always unobserved.
Authentication Bearer access token with audience taifa-management. Roles and local eligibility are reviewed separately from the OpenAPI bearer scheme.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
project_id | path | string | Yes |
Request body
This operation has no request body.
Responses
200Successful Response
Content type: application/jsonLifecycleRead
| Field | Type | Required | Description |
|---|---|---|---|
project_id | string | Yes | |
name | string | Yes | |
status | string | Yes | |
downstream | DownstreamRead | Yes | |
actions | ActionRead[] | Yes | |
revocations | RevocationDetail[] | Yes | |
allowed | (suspend | resume | decommission-request | decommission-approve | decommission-cancel)[] | Yes |
Other responses
| Status | Description | Schema |
|---|---|---|
| 403 | Current scoped authority, independent review or recent strong authentication required | |
| 409 | Current project state, target set or idempotency conflict | |
| 422 | Invalid exact request |
POST/v1/projects/{project_id}/lifecycle/suspend
Suspend a project
Reversible. Blocks new authority, revokes workforce access through the ordered lifecycle feed and leaves issuer clients installed. Resume does not restore access.
Authentication Bearer access token with audience taifa-management. Roles and local eligibility are reviewed separately from the OpenAPI bearer scheme.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
project_id | path | string | Yes | |
idempotency-key | header | string | Yes |
Request body
application/jsonRequiredidentity__owned_client_router__Reason
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | Yes | Validation: min length 8; max length 500 |
Responses
200Successful Response
Content type: application/jsonActionResult
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
project_id | string | Yes | |
kind | suspend | resume | decommission | Yes | |
status | requested | effective | cancelled | Yes | |
requested_by | string | Yes | |
decided_by | string | null | Yes | |
reason | string | Yes | |
created_at | string | Yes | |
expires_at | string | null | Yes | |
effective_at | string | null | Yes | |
completed_at | string | null | Yes | |
project_status | string | Yes | |
access_revoked | integer | Yes | |
lifecycle_head | integer | Yes | |
revocations | RevocationRead[] | Yes |
Other responses
| Status | Description | Schema |
|---|---|---|
| 403 | Current scoped authority, independent review or recent strong authentication required | |
| 409 | Current project state, target set or idempotency conflict | |
| 422 | Invalid exact request |
POST/v1/projects/{project_id}/lifecycle/resume
Resume a suspended project
Requires a current project approver other than the suspender. Workforce access must be granted again through the normal reviewed workflow.
Authentication Bearer access token with audience taifa-management. Roles and local eligibility are reviewed separately from the OpenAPI bearer scheme.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
project_id | path | string | Yes | |
idempotency-key | header | string | Yes |
Request body
application/jsonRequiredidentity__owned_client_router__Reason
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | Yes | Validation: min length 8; max length 500 |
Responses
200Successful Response
Content type: application/jsonActionResult
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
project_id | string | Yes | |
kind | suspend | resume | decommission | Yes | |
status | requested | effective | cancelled | Yes | |
requested_by | string | Yes | |
decided_by | string | null | Yes | |
reason | string | Yes | |
created_at | string | Yes | |
expires_at | string | null | Yes | |
effective_at | string | null | Yes | |
completed_at | string | null | Yes | |
project_status | string | Yes | |
access_revoked | integer | Yes | |
lifecycle_head | integer | Yes | |
revocations | RevocationRead[] | Yes |
Other responses
| Status | Description | Schema |
|---|---|---|
| 403 | Current scoped authority, independent review or recent strong authentication required | |
| 409 | Current project state, target set or idempotency conflict | |
| 422 | Invalid exact request |
POST/v1/projects/{project_id}/lifecycle/decommission
Request irreversible decommission
Records a request that expires after 72 hours. It changes no project authority until an independent approver approves it.
Authentication Bearer access token with audience taifa-management. Roles and local eligibility are reviewed separately from the OpenAPI bearer scheme.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
project_id | path | string | Yes | |
idempotency-key | header | string | Yes |
Request body
application/jsonRequiredidentity__owned_client_router__Reason
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | Yes | Validation: min length 8; max length 500 |
Responses
201Successful Response
Content type: application/jsonActionResult
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
project_id | string | Yes | |
kind | suspend | resume | decommission | Yes | |
status | requested | effective | cancelled | Yes | |
requested_by | string | Yes | |
decided_by | string | null | Yes | |
reason | string | Yes | |
created_at | string | Yes | |
expires_at | string | null | Yes | |
effective_at | string | null | Yes | |
completed_at | string | null | Yes | |
project_status | string | Yes | |
access_revoked | integer | Yes | |
lifecycle_head | integer | Yes | |
revocations | RevocationRead[] | Yes |
Other responses
| Status | Description | Schema |
|---|---|---|
| 403 | Current scoped authority, independent review or recent strong authentication required | |
| 409 | Current project state, target set or idempotency conflict | |
| 422 | Invalid exact request |
POST/v1/projects/{project_id}/lifecycle/decommission/{action_id}/approve
Approve irreversible decommission
Requires an independent current project approver. Queues exact issuer revoke commands. The project becomes decommissioned only after every removal is acknowledged or was never installed.
Authentication Bearer access token with audience taifa-management. Roles and local eligibility are reviewed separately from the OpenAPI bearer scheme.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
project_id | path | string | Yes | |
action_id | path | string | Yes | |
idempotency-key | header | string | Yes |
Request body
application/jsonRequiredidentity__owned_client_router__Reason
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | Yes | Validation: min length 8; max length 500 |
Responses
200Successful Response
Content type: application/jsonActionResult
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
project_id | string | Yes | |
kind | suspend | resume | decommission | Yes | |
status | requested | effective | cancelled | Yes | |
requested_by | string | Yes | |
decided_by | string | null | Yes | |
reason | string | Yes | |
created_at | string | Yes | |
expires_at | string | null | Yes | |
effective_at | string | null | Yes | |
completed_at | string | null | Yes | |
project_status | string | Yes | |
access_revoked | integer | Yes | |
lifecycle_head | integer | Yes | |
revocations | RevocationRead[] | Yes |
Other responses
| Status | Description | Schema |
|---|---|---|
| 403 | Current scoped authority, independent review or recent strong authentication required | |
| 409 | Current project state, target set or idempotency conflict | |
| 422 | Invalid exact request |
POST/v1/projects/{project_id}/lifecycle/decommission/{action_id}/cancel
Cancel a pending decommission request
Authentication Bearer access token with audience taifa-management. Roles and local eligibility are reviewed separately from the OpenAPI bearer scheme.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
project_id | path | string | Yes | |
action_id | path | string | Yes | |
idempotency-key | header | string | Yes |
Request body
application/jsonRequiredidentity__owned_client_router__Reason
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | Yes | Validation: min length 8; max length 500 |
Responses
200Successful Response
Content type: application/jsonActionResult
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
project_id | string | Yes | |
kind | suspend | resume | decommission | Yes | |
status | requested | effective | cancelled | Yes | |
requested_by | string | Yes | |
decided_by | string | null | Yes | |
reason | string | Yes | |
created_at | string | Yes | |
expires_at | string | null | Yes | |
effective_at | string | null | Yes | |
completed_at | string | null | Yes | |
project_status | string | Yes | |
access_revoked | integer | Yes | |
lifecycle_head | integer | Yes | |
revocations | RevocationRead[] | Yes |
Other responses
| Status | Description | Schema |
|---|---|---|
| 403 | Current scoped authority, independent review or recent strong authentication required | |
| 409 | Current project state, target set or idempotency conflict | |
| 422 | Invalid exact request |