Internal Use Case Not Renewable
URI: https://docs.ankatech.co/errors/internal-use-case-not-renewable
HTTP Status: 409 Conflict
When you see this
You asked to renew an Internal Crypto Use Case, renewInternalCryptoUseCase (POST /api/v3/admin/tenants/{tenantId}/internal-crypto-use-cases/{useCaseId}/renew), and the use case is REVOKED. Nothing changed.
Renewal extends a use case's validity window by one year and restores an EXPIRED use case to ACTIVE, with the same actor, the same credential and the same grants. A revoked use case has none of those left: its revocation revoked its grants and its credential, disabled its actor and closed its Exchange Context. There is no workload to restore, so a revoked use case is never renewed. A retry gets the same answer.
ACTIVE, SUSPENDED and EXPIRED use cases are all renewable:
| Status | After a renewal |
|---|---|
ACTIVE | ACTIVE, with the longer window |
SUSPENDED | SUSPENDED, with the longer window; resume it to make it authorize again |
EXPIRED | ACTIVE: its grants authorize again |
REVOKED | refused with this error |
This is a distinct 409 from Concurrent Modification, which means a stale optimistic-lock version and succeeds on a retry after a re-read.
Common Causes
- Renewing a use case that was revoked from the console or with
revokeInternalCryptoUseCase. - Renewing a use case that ended because a key it named was destroyed, or because its Application was deleted: both revoke the use case.
- A script that renews every use case of a tenant, revoked ones included (list them with
status=REVOKEDto tell them apart).
Response Example
{
"type": "https://docs.ankatech.co/errors/internal-use-case-not-renewable",
"title": "Internal Use Case Not Renewable",
"status": 409,
"detail": "The Internal Crypto Use Case is REVOKED; a revoked use case is never renewed. Provision a new use case if the workload is still required.",
"instance": "/api/v3/admin/tenants/0f3b8c2e-5d41-4a7e-9b1c-6e2f4d8a9c10/internal-crypto-use-cases/aaaaaaaa-1111-2222-3333-444444444444/renew",
"timestamp": 1730000000,
"extensions": {
"requestId": "550e8400-e29b-41d4-a716-446655440000"
}
}
Content-Type: application/problem+json, following RFC 9457 Problem Details. The detail is fixed text and names no identifier.
How to Resolve
- Read the use case (
getInternalCryptoUseCase) and confirmstatusisREVOKED;terminalCausesays why it ended. - If the workload is still needed, provision a new use case with
createInternalCryptoUseCase. It gets a new actor and a new credential, so the application must use the new credential. - Data protected under the revoked use case's key stays decryptable by any use case or grant over the same key: the revocation did not touch the key.
For full schema definitions, examples, and interactive testing, see the Developer Hub Reference.