Approve or reject lifecycle request
POST/tenants/{tenant_id}/lifecycle-requests/{id}/approve
Records an approval or rejection decision on a pending lifecycle request. If approved, the requested action (suspend, terminate, etc.) is executed immediately. If rejected, the request is closed without executing the action and the reason is recorded.
Request
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
tenant_id | string | Yes | The tenant identifier. |
id | string | Yes | The lifecycle request ID to act on. |
Request body
Content type application/json.
| Field | Type | Required | Description |
|---|---|---|---|
decision | string | No | Whether to approve or reject the lifecycle request. One of: |
comment | string, nullable | No | Decision comment recorded in the audit trail. Max length: 1000 |
Example
{
"decision": "approve",
"comment": "Finance confirmed non-payment. Proceeding with suspension."
}
Responses
200 Lifecycle decision recorded; action executed if approved
Content type application/json, object · LifecycleRequestV1.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | No | Unique lifecycle request identifier. |
tenant_id | string | No | |
action | string | No | One of: |
status | string | No | One of: |
requested_by | string | No | Email of the admin who created the request. |
reason | string, nullable | No | |
plan | string, nullable | No | |
approved_by | string, nullable | No | Email of the approving admin. |
decision_comment | string, nullable | No | |
created_at | string (date-time) | No | |
actioned_at | string (date-time), nullable | No |
404 Tenant or lifecycle request not found
409 Request has already been actioned
Example request
Paths are relative to the control-plane API base URL ($BASE_URL below).
curl -X POST "$BASE_URL/tenants/{tenant_id}/lifecycle-requests/{id}/approve" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"decision": "approve", "comment": "Finance confirmed non-payment. Proceeding with suspension."}'