Skip to content

Terminal Application State

URI: https://docs.ankatech.co/errors/terminal-application-state
HTTP Status: 409 Conflict

When you see this

You updated an application (PATCH /api/v3/admin/tenants/{tenantId}/applications/{applicationId}) with status set to ACTIVE or SUSPENDED, and the application is DISABLED. DISABLED is terminal and irreversible: once an application is disabled, no status change ever leaves it, so it can never authenticate again.

The refusal comes before anything is written. No member of the patch is applied, including the members that do not touch status, and no status change is published to the cryptographic plane.

The same operation has two other 409s: application-name-conflict when the new applicationName is held by another live application, which another name resolves, and concurrent-modification when another write committed to the application after the request read it, which a re-read and a retry resolve. This one is resolved by no retry and no other value. Tell them apart on the type member, never by matching title or detail.

Common Causes

  • The application was disabled earlier by an update that set status to DISABLED.
  • The tenant was closed, which disables every application it holds.
  • A client re-sent a stored representation of the application after it was disabled.

Response Example

{
  "type": "https://docs.ankatech.co/errors/terminal-application-state",
  "title": "Terminal Application State",
  "status": 409,
  "detail": "Application is DISABLED, which is terminal and irreversible: its status cannot be changed to ACTIVE. Create a new application if the workload is still required.",
  "instance": "/api/v3/admin/tenants/7b9c2d10-4e6f-4a21-9c33-0d1e5f7a8b42/applications/5c1f8e2a-3b74-4d09-a6e5-2f8d9c0b1a37",
  "timestamp": 1790690531,
  "extensions": {
    "requestId": "4d8e1b62-7a39-4f05-b2c6-9e3a5f1d8c47"
  }
}

Content-Type: application/problem+json. The response follows RFC 9457 Problem Details.

How to Resolve

  1. Do not retry. The application's state is irreversible, so every retry gets this same refusal.
  2. To edit the other members of a disabled application, send the patch without status, or with status set to DISABLED.
  3. If the workload is still required, create a new application. To pause an application without ending it, use SUSPENDED, which an update with status set to ACTIVE reverses.

For full schema definitions, examples, and interactive testing, see the Developer Hub Reference.