Skip to main content

Actors and Public Identity

An actor is the unit of identity in the Genesis X-1 protocol. Not a user account. Not a session. An actor is a permanent, addressable identity with a cryptographic signing key — the entity that authorizes events, holds access grants, and appears in the immutable record of every action taken under its credentials.

Actor identity is publicly resolvable. Any party on any network — counterparty, auditor, regulator, verification tool — can resolve an actor's public key without authentication. This is the trust anchor for independent verification. No prior relationship required. No server trust required after the initial fetch.

Public Actor Identity URI​

The public actor identity URI is:

iaex:actor:{actor_uuid}

Example:

iaex:actor:2f7a5f0f-8cc1-4f20-95b8-a2f5488d6132

What a Public Actor Identity Proves​

A resolved actor identity proves:

  • the actor exists in the public network surface
  • the actor has a stable protocol identity
  • the actor has a public signing key lineage
  • the current preferred signing key can be identified

It does not prove:

  • business ownership of an organization
  • truth of business claims
  • private commercial relationships

Actor Creation​

POST /actors​

Creates a public actor identity.

Example:

curl -sS "$BASE_URL/actors" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"role": "PARTICIPANT",
"public_key": "'"$PUBLIC_KEY_B64"'",
"algorithm": "Ed25519"
}'

Response:

{
"actor_id": "2f7a5f0f-8cc1-4f20-95b8-a2f5488d6132",
"iaex_id": "iaex:actor:2f7a5f0f-8cc1-4f20-95b8-a2f5488d6132",
"role": "PARTICIPANT",
"key": {
"kid": "iaex:actor:2f7a5f0f-8cc1-4f20-95b8-a2f5488d6132#key-1",
"algorithm": "Ed25519",
"public_key": "'"$PUBLIC_KEY_B64"'",
"status": "ACTIVE",
"preferred_signing": true
}
}

Public Actor Read​

GET /actors/{actor_id}​

Returns:

  • actor_id
  • iaex_id
  • role
  • created_at

Example:

curl -sS "$BASE_URL/actors/$ACTOR_ID"

Actor Lookup by IAEX URI​

GET /actors/lookup?iaex_id=iaex:actor:{uuid}​

Returns a minimal public actor record and a resolve_url.

Use this when the caller already has an IAEX actor URI and needs a fast existence check before calling the resolver.

Actor Key Management​

GET /actors/{actor_id}/keys​

Returns active keys by default.

Use include_revoked=true to include revoked keys.

POST /actors/{actor_id}/keys​

Enrolls a new signing key for that actor.

PATCH /actors/{actor_id}/keys/{kid}/prefer​

Marks one active key as the preferred signing key.

PATCH /actors/{actor_id}/keys/{kid}/revoke​

Revokes a key. Revocation is permanent. Historical visibility remains available through the resolver and key list APIs.

Key Rotation​

Key rotation means:

  • a new public key is enrolled for the actor
  • the previous key can remain active during overlap
  • one active key can be marked preferred
  • revoked keys remain visible as historical lineage

Key rotation does not change:

  • the actor id
  • the actor IAEX URI
  • prior event attribution

Third-Party Actor Verification​

A third party verifies an actor by:

  1. Reading the actor identity document through /resolve/iaex:actor:{uuid}.
  2. Checking the active and revoked key lineage.
  3. Checking the preferred signing key if a current signer is required.
  4. Checking the authority trust anchor through /.well-known/iaex-authority.

Network Discovery​

GET /network/actors​

Lists actors visible to authenticated network participants.

This endpoint requires authentication.

Public and Private Boundary​

Public actor identity responses include:

  • actor identifiers
  • actor creation timestamp
  • public signing keys
  • key status
  • preferred signing key

Public actor identity responses do not include:

  • private keys
  • raw event signatures
  • internal authority identities
  • internal trust graph state
  • private audit fields