Clerk · JSON Structure
Clerk User Structure
JSON Structure overview of Clerk User entity.
Type:
Properties: 0
Required: 35
AuthenticationAuthorizationB2B SaaSCIAMIdentity ManagementMFAOAuthOpenID ConnectOrganizationsPasskeysSAMLSecuritySessionsSSOUser Management
Clerk User Structure is a JSON Structure definition published by Clerk. It conforms to the https://json-structure.org/schema/v0 meta-schema.
Meta-schema: https://json-structure.org/schema/v0
JSON Structure
{
"$schema": "https://json-structure.org/schema/v0",
"title": "Clerk User Structure",
"description": "JSON Structure overview of Clerk User entity.",
"entity": "User",
"fields": [
{
"name": "id",
"type": "string",
"description": "",
"format": null,
"nullable": false
},
{
"name": "object",
"type": "string",
"description": "String representing the object's type. Objects of the same type share the same value.\n",
"format": null,
"nullable": false
},
{
"name": "external_id",
"type": "string",
"description": "",
"format": null,
"nullable": true
},
{
"name": "primary_email_address_id",
"type": "string",
"description": "",
"format": null,
"nullable": true
},
{
"name": "primary_phone_number_id",
"type": "string",
"description": "",
"format": null,
"nullable": true
},
{
"name": "primary_web3_wallet_id",
"type": "string",
"description": "",
"format": null,
"nullable": true
},
{
"name": "username",
"type": "string",
"description": "",
"format": null,
"nullable": true
},
{
"name": "first_name",
"type": "string",
"description": "",
"format": null,
"nullable": true
},
{
"name": "last_name",
"type": "string",
"description": "",
"format": null,
"nullable": true
},
{
"name": "locale",
"type": "string",
"description": "",
"format": null,
"nullable": true
},
{
"name": "profile_image_url",
"type": "string",
"description": "",
"format": null,
"nullable": false
},
{
"name": "image_url",
"type": "string",
"description": "",
"format": null,
"nullable": false
},
{
"name": "has_image",
"type": "boolean",
"description": "",
"format": null,
"nullable": false
},
{
"name": "public_metadata",
"type": "object",
"description": "",
"format": null,
"nullable": false
},
{
"name": "private_metadata",
"type": "object",
"description": "",
"format": null,
"nullable": true
},
{
"name": "unsafe_metadata",
"type": "object",
"description": "",
"format": null,
"nullable": false
},
{
"name": "email_addresses",
"type": "array",
"description": "",
"format": null,
"nullable": false
},
{
"name": "phone_numbers",
"type": "array",
"description": "",
"format": null,
"nullable": false
},
{
"name": "web3_wallets",
"type": "array",
"description": "",
"format": null,
"nullable": false
},
{
"name": "passkeys",
"type": "array",
"description": "",
"format": null,
"nullable": false
},
{
"name": "password_enabled",
"type": "boolean",
"description": "",
"format": null,
"nullable": false
},
{
"name": "two_factor_enabled",
"type": "boolean",
"description": "",
"format": null,
"nullable": false
},
{
"name": "totp_enabled",
"type": "boolean",
"description": "",
"format": null,
"nullable": false
},
{
"name": "backup_code_enabled",
"type": "boolean",
"description": "",
"format": null,
"nullable": false
},
{
"name": "mfa_enabled_at",
"type": "integer",
"description": "Unix timestamp of when MFA was last enabled for this user. It should be noted that this field is not nullified if MFA is disabled.\n",
"format": "int64",
"nullable": true
},
{
"name": "mfa_disabled_at",
"type": "integer",
"description": "Unix timestamp of when MFA was last disabled for this user. It should be noted that this field is not nullified if MFA is enabled again.\n",
"format": "int64",
"nullable": true
},
{
"name": "password_last_updated_at",
"type": "integer",
"description": "Unix timestamp of when the user's password was last updated.\n",
"format": "int64",
"nullable": true
},
{
"name": "external_accounts",
"type": "array",
"description": "",
"format": null,
"nullable": false
},
{
"name": "saml_accounts",
"type": "array",
"description": "",
"format": null,
"nullable": false
},
{
"name": "enterprise_accounts",
"type": "array",
"description": "",
"format": null,
"nullable": false
},
{
"name": "organization_memberships",
"type": "array",
"description": "",
"format": null,
"nullable": false
},
{
"name": "last_sign_in_at",
"type": "integer",
"description": "Unix timestamp of last sign-in.\n",
"format": "int64",
"nullable": true
},
{
"name": "banned",
"type": "boolean",
"description": "Flag to denote whether user is banned or not.\n",
"format": null,
"nullable": false
},
{
"name": "locked",
"type": "boolean",
"description": "Flag to denote whether user is currently locked, i.e. restricted from signing in or not.\n",
"format": null,
"nullable": false
},
{
"name": "deprovisioned",
"type": "boolean",
"description": "Flag to denote whether user has been deprovisioned and is restricted from signing in.\n",
"format": null,
"nullable": false
},
{
"name": "lockout_expires_in_seconds",
"type": "integer",
"description": "The number of seconds remaining until the lockout period expires for a locked user. A null value for a locked user indicates that lockout never expires.\n",
"format": "int64",
"nullable": true
},
{
"name": "verification_attempts_remaining",
"type": "integer",
"description": "The number of verification attempts remaining until the user is locked. Null if account lockout is not enabled. Note: if a user is locked explicitly via the Backend API, they may still have verification attempts remaining.\n",
"format": "int64",
"nullable": true
},
{
"name": "updated_at",
"type": "integer",
"description": "Unix timestamp of last update.\n",
"format": "int64",
"nullable": false
},
{
"name": "created_at",
"type": "integer",
"description": "Unix timestamp of creation.\n",
"format": "int64",
"nullable": false
},
{
"name": "delete_self_enabled",
"type": "boolean",
"description": "If enabled, user can delete themselves via FAPI.\n",
"format": null,
"nullable": false
},
{
"name": "create_organization_enabled",
"type": "boolean",
"description": "If enabled, user can create organizations via FAPI.\n",
"format": null,
"nullable": false
},
{
"name": "create_organizations_limit",
"type": "integer",
"description": "The maximum number of organizations the user can create. 0 means unlimited.\n",
"format": null,
"nullable": true
},
{
"name": "last_active_at",
"type": "integer",
"description": "Unix timestamp of the latest session activity, with day precision.\n",
"format": "int64",
"nullable": true
},
{
"name": "legal_accepted_at",
"type": "integer",
"description": "Unix timestamp of when the user accepted the legal requirements.\n",
"format": "int64",
"nullable": true
},
{
"name": "bypass_client_trust",
"type": "boolean",
"description": "When set to `true`, the user will bypass client trust checks during sign-in.",
"format": null,
"nullable": false
},
{
"name": "scim",
"type": "object",
"description": "",
"format": null,
"nullable": true
}
],
"required": [
"id",
"object",
"username",
"first_name",
"last_name",
"has_image",
"primary_email_address_id",
"primary_phone_number_id",
"primary_web3_wallet_id",
"password_enabled",
"two_factor_enabled",
"totp_enabled",
"backup_code_enabled",
"email_addresses",
"phone_numbers",
"web3_wallets",
"passkeys",
"external_accounts",
"saml_accounts",
"enterprise_accounts",
"public_metadata",
"external_id",
"last_sign_in_at",
"banned",
"locked",
"lockout_expires_in_seconds",
"verification_attempts_remaining",
"created_at",
"updated_at",
"delete_self_enabled",
"create_organization_enabled",
"last_active_at",
"mfa_enabled_at",
"mfa_disabled_at",
"legal_accepted_at"
]
}