admin

Privy identity state for an account

Live identity-provider state for one account beside enforcer's own row: the account's stored email/phone and their verified flags, the VERIFIED contacts Privy holds right now, whether they still agree, and the live passkey MFA posture. email_matches_account is the field to read first — a Privy-linked address that has drifted from accounts.email sends every login code to an inbox the user no longer reads, and nothing else in the database exposes that. Both match fields are null (never false) when either side is blank, since "Privy holds no email" is a different problem from "the emails disagree"; both values ship in the body so a null always explains itself. privy is null for an account with no Privy user (native/SSO tenants), which is a fact about the tenant, not a fault. A Privy read that fails refuses the whole response rather than serving it with the provider half silently missing.

get/admin/users/{account_id}/identity

Request

  • Base URL: https://api.instruxi.dev/api/v1/enforcer
  • URL: https://api.instruxi.dev/api/v1/enforcer/admin/users/{account_id}/identity
  • Auth: one of:
    • API key in header Authorization
    • API key in header X-API-Key

Path parameters

account_idstring required

account id

Query parameters

tenant_idstring

tenant_id assertion — 404s when it does not match the account's tenant

Response

OK

successboolean

Example response

{
  "data": {
    "auth_provider": "privy",
    "passkey_mfa": {
      "credentials": 1,
      "factor_advertised": true,
      "passkeys": [
        {
          "authenticator_name": "Google Password Manager"
        }
      ],
      "state": "enrolled"
    },
    "privy": {
      "email": "velvia@example.com",
      "phone": "+15108675310"
    },
    "privy_user_id": "did:privy:clx0…"
  },
  "success": true
}

Changes

No recorded changes to this operation across all 1 revision of this API.