Skip to content

Actor Not Active

URI: https://docs.ankatech.co/errors/actor-not-active
HTTP Status: 422 Unprocessable Content

When you see this

The operation would confer capabilities on a Cryptographic Actor, and that actor is not ACTIVE. Conferring standing authority on a suspended or disabled actor is refused outright, before anything is written. Three writes raise it:

  • activateExchange — activating a Cryptographic Exchange creates the grant its actor will act under;
  • resumeExchange — resuming makes a suspended Exchange's grant effective again, which confers authority exactly as activation does;
  • createCapabilityGrant — a standalone grant on the actor.

The refusal is unconditional: it applies even when the actor already holds every scope the grant would bring. Evaluating it independently of the actor's holdings is what keeps it from revealing them.

The actor's observed status travels as the actorStatus extension member. It reads UNKNOWN when the actor no longer resolves in your tenant at all — for example after it was deleted.

previewExchangeActivation and previewCapabilityGrant report the same refusal, with the same type, inside their 200 response, so you can see it before you submit the write.

Common Causes

  • The actor was suspended — directly, or by suspending the Internal Crypto Use Case that owns it, which suspends its actor in the same transaction.
  • The actor was disabled by a tenant closure or by its owning Application's delete cascade.
  • The actor was deleted after the Exchange or grant request was prepared.

Response Example

{
  "type": "https://docs.ankatech.co/errors/actor-not-active",
  "title": "Actor Not Active",
  "status": 422,
  "detail": "The actor this authorization would be conferred on is not ACTIVE (status SUSPENDED). Reactivate it before conferring capabilities on it.",
  "instance": "/api/v3/admin/exchanges/7d2f4a10-9c31-4b8e-a5d6-2f11c0b47e93/activate",
  "timestamp": 1730000000,
  "extensions": {
    "actorStatus": "SUSPENDED",
    "requestId": "550e8400-e29b-41d4-a716-446655440000"
  }
}

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

How to Resolve

  1. Read extensions.actorStatus.
  2. SUSPENDED: reactivate the actor (or resume the Internal Crypto Use Case that suspended it), then repeat the request.
  3. DISABLED is terminal: the actor can never act again. Point the Exchange at another actor, or grant to another actor.
  4. UNKNOWN: the actor no longer exists in this tenant. Choose an existing actor.

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