Problems
Every RFC 9457 problem IdentityX can answer, by status.
Every IdentityX error is an application/problem+json body: type, status, title, detail and instance are always present, plus errors: [{ field, message }] when request fields are at fault. A problem's type is {API_URL}/problems/{slug}, which the API itself serves as documentation. Branch on the slug at the end of type, not on title or detail. The members listed below a problem are its own, on top of the standard ones.
400
Action Token Expired
action-token-expired — Token expired.
{
"type": "https://api.identityx.trieoh.com/problems/action-token-expired",
"status": 400,
"title": "Action Token Expired",
"detail": "…",
"instance": "/…"
}Action Token Invalid
action-token-invalid — Invalid or expired token.
{
"type": "https://api.identityx.trieoh.com/problems/action-token-invalid",
"status": 400,
"title": "Action Token Invalid",
"detail": "…",
"instance": "/…"
}Action Token Used
action-token-used — Token already used.
{
"type": "https://api.identityx.trieoh.com/problems/action-token-used",
"status": 400,
"title": "Action Token Used",
"detail": "…",
"instance": "/…"
}Add Owner To Org
add-owner-to-org — Owners can't be added to organizations they own.
{
"type": "https://api.identityx.trieoh.com/problems/add-owner-to-org",
"status": 400,
"title": "Add Owner To Org",
"detail": "…",
"instance": "/…"
}Add Owner To Project
add-owner-to-project — Owners can't be added to projects they own.
{
"type": "https://api.identityx.trieoh.com/problems/add-owner-to-project",
"status": 400,
"title": "Add Owner To Project",
"detail": "…",
"instance": "/…"
}Add Self To Org
add-self-to-org — Users can't add themselves to organizations.
{
"type": "https://api.identityx.trieoh.com/problems/add-self-to-org",
"status": 400,
"title": "Add Self To Org",
"detail": "…",
"instance": "/…"
}Add Self To Project
add-self-to-project — Users can't add themselves to projects.
{
"type": "https://api.identityx.trieoh.com/problems/add-self-to-project",
"status": 400,
"title": "Add Self To Project",
"detail": "…",
"instance": "/…"
}Already Org Member
already-org-member — User is already a member of the organization.
{
"type": "https://api.identityx.trieoh.com/problems/already-org-member",
"status": 400,
"title": "Already Org Member",
"detail": "…",
"instance": "/…"
}Already Project Member
already-project-member — User is already a member of the project.
{
"type": "https://api.identityx.trieoh.com/problems/already-project-member",
"status": 400,
"title": "Already Project Member",
"detail": "…",
"instance": "/…"
}Batch Failed
batch-failed — Some items of a batch failed; each is answered as its own problem.
| Member | Type | Description |
|---|---|---|
items | object[] |
{
"type": "https://api.identityx.trieoh.com/problems/batch-failed",
"status": 400,
"title": "Batch Failed",
"detail": "…",
"instance": "/…",
"items": []
}Invalid Capabilities
invalid-capabilities — Invalid capabilities.
{
"type": "https://api.identityx.trieoh.com/problems/invalid-capabilities",
"status": 400,
"title": "Invalid Capabilities",
"detail": "…",
"instance": "/…"
}Missing OAuth Code
missing-oauth-code — Missing code.
{
"type": "https://api.identityx.trieoh.com/problems/missing-oauth-code",
"status": 400,
"title": "Missing OAuth Code",
"detail": "…",
"instance": "/…"
}Missing OAuth State
missing-oauth-state — Missing state.
{
"type": "https://api.identityx.trieoh.com/problems/missing-oauth-state",
"status": 400,
"title": "Missing OAuth State",
"detail": "…",
"instance": "/…"
}Not Org Member
not-org-member — User is not a member of the organization.
{
"type": "https://api.identityx.trieoh.com/problems/not-org-member",
"status": 400,
"title": "Not Org Member",
"detail": "…",
"instance": "/…"
}Not Project Member
not-project-member — User is not a member of the project.
{
"type": "https://api.identityx.trieoh.com/problems/not-project-member",
"status": 400,
"title": "Not Project Member",
"detail": "…",
"instance": "/…"
}OAuth State Expired
oauth-state-expired — OAuth state expired; start a new login.
{
"type": "https://api.identityx.trieoh.com/problems/oauth-state-expired",
"status": 400,
"title": "OAuth State Expired",
"detail": "…",
"instance": "/…"
}OAuth State Mismatch
oauth-state-mismatch — Invalid OAuth state.
{
"type": "https://api.identityx.trieoh.com/problems/oauth-state-mismatch",
"status": 400,
"title": "OAuth State Mismatch",
"detail": "…",
"instance": "/…"
}OAuth State Not Found
oauth-state-not-found — Invalid or expired OAuth state; start a new login.
{
"type": "https://api.identityx.trieoh.com/problems/oauth-state-not-found",
"status": 400,
"title": "OAuth State Not Found",
"detail": "…",
"instance": "/…"
}Org Member Already In Project
org-member-already-in-project — Organization member is already a member of the project.
{
"type": "https://api.identityx.trieoh.com/problems/org-member-already-in-project",
"status": 400,
"title": "Org Member Already In Project",
"detail": "…",
"instance": "/…"
}Org Owner Already In Project
org-owner-already-in-project — Owner of the organization is already a member of the project.
{
"type": "https://api.identityx.trieoh.com/problems/org-owner-already-in-project",
"status": 400,
"title": "Org Owner Already In Project",
"detail": "…",
"instance": "/…"
}Password Only For Humans
password-only-for-humans — Only human actors can authenticate via password.
{
"type": "https://api.identityx.trieoh.com/problems/password-only-for-humans",
"status": 400,
"title": "Password Only For Humans",
"detail": "…",
"instance": "/…"
}Profile Schema Violation
profile-schema-violation — The profile breaks its project's profile schema; `errors` names the offending fields.
{
"type": "https://api.identityx.trieoh.com/problems/profile-schema-violation",
"status": 400,
"title": "Profile Schema Violation",
"detail": "…",
"instance": "/…"
}Provider Not Configured
provider-not-configured — The OAuth provider has no credentials, for the project or the platform.
| Member | Type | Description |
|---|---|---|
provider | string | The provider's name. |
{
"type": "https://api.identityx.trieoh.com/problems/provider-not-configured",
"status": 400,
"title": "Provider Not Configured",
"detail": "…",
"instance": "/…",
"provider": "…"
}Provider Removed
provider-removed — The OAuth provider was removed from the project while the login was under way.
| Member | Type | Description |
|---|---|---|
provider | string | The provider's name. |
{
"type": "https://api.identityx.trieoh.com/problems/provider-removed",
"status": 400,
"title": "Provider Removed",
"detail": "…",
"instance": "/…",
"provider": "…"
}Remove Org Member From Project
remove-org-member-from-project — Cannot remove organization member from project.
{
"type": "https://api.identityx.trieoh.com/problems/remove-org-member-from-project",
"status": 400,
"title": "Remove Org Member From Project",
"detail": "…",
"instance": "/…"
}Remove Org Owner
remove-org-owner — Cannot remove the owner of the organization.
{
"type": "https://api.identityx.trieoh.com/problems/remove-org-owner",
"status": 400,
"title": "Remove Org Owner",
"detail": "…",
"instance": "/…"
}Remove Org Owner From Project
remove-org-owner-from-project — Cannot remove the owner of the organization from the project.
{
"type": "https://api.identityx.trieoh.com/problems/remove-org-owner-from-project",
"status": 400,
"title": "Remove Org Owner From Project",
"detail": "…",
"instance": "/…"
}Remove Project Owner
remove-project-owner — Cannot remove the owner of the project.
{
"type": "https://api.identityx.trieoh.com/problems/remove-project-owner",
"status": 400,
"title": "Remove Project Owner",
"detail": "…",
"instance": "/…"
}Remove Self From Org
remove-self-from-org — Cannot remove yourself from the organization.
{
"type": "https://api.identityx.trieoh.com/problems/remove-self-from-org",
"status": 400,
"title": "Remove Self From Org",
"detail": "…",
"instance": "/…"
}Remove Self From Project
remove-self-from-project — Cannot remove yourself from the project.
{
"type": "https://api.identityx.trieoh.com/problems/remove-self-from-project",
"status": 400,
"title": "Remove Self From Project",
"detail": "…",
"instance": "/…"
}Template Does Not Render
template-render — The email template does not render; `detail` says why.
{
"type": "https://api.identityx.trieoh.com/problems/template-render",
"status": 400,
"title": "Template Does Not Render",
"detail": "…",
"instance": "/…"
}Unsupported Provider
unsupported-provider — IdentityX has no OAuth provider by this name.
| Member | Type | Description |
|---|---|---|
provider | string | The provider's name. |
{
"type": "https://api.identityx.trieoh.com/problems/unsupported-provider",
"status": 400,
"title": "Unsupported Provider",
"detail": "…",
"instance": "/…",
"provider": "…"
}Validation Failed
validation — The request is malformed or breaks a rule; `errors` names the
offending fields.
{
"type": "https://api.identityx.trieoh.com/problems/validation",
"status": 400,
"title": "Validation Failed",
"detail": "…",
"instance": "/…"
}401
API Key Expired
api-key-expired — Api key expired.
{
"type": "https://api.identityx.trieoh.com/problems/api-key-expired",
"status": 401,
"title": "API Key Expired",
"detail": "…",
"instance": "/…"
}API Keys Not Accepted
api-keys-not-accepted — This API takes bearer tokens only, not API keys.
{
"type": "https://api.identityx.trieoh.com/problems/api-keys-not-accepted",
"status": 401,
"title": "API Keys Not Accepted",
"detail": "…",
"instance": "/…"
}Email Not Verified
email-not-verified — The caller must verify their email address first.
{
"type": "https://api.identityx.trieoh.com/problems/email-not-verified",
"status": 401,
"title": "Email Not Verified",
"detail": "…",
"instance": "/…"
}Invalid Access Token
invalid-access-token — Invalid access token.
{
"type": "https://api.identityx.trieoh.com/problems/invalid-access-token",
"status": 401,
"title": "Invalid Access Token",
"detail": "…",
"instance": "/…"
}Invalid API Key
invalid-api-key — The API key is unknown, malformed or revoked.
{
"type": "https://api.identityx.trieoh.com/problems/invalid-api-key",
"status": 401,
"title": "Invalid API Key",
"detail": "…",
"instance": "/…"
}Invalid Credentials
invalid-credentials — Invalid email or password.
{
"type": "https://api.identityx.trieoh.com/problems/invalid-credentials",
"status": 401,
"title": "Invalid Credentials",
"detail": "…",
"instance": "/…"
}Invalid KID
invalid-kid — Invalid kid.
{
"type": "https://api.identityx.trieoh.com/problems/invalid-kid",
"status": 401,
"title": "Invalid KID",
"detail": "…",
"instance": "/…"
}Invalid Token
invalid-token — The bearer token does not parse, its signature or issuer is
wrong, or it is not valid yet.
{
"type": "https://api.identityx.trieoh.com/problems/invalid-token",
"status": 401,
"title": "Invalid Token",
"detail": "…",
"instance": "/…"
}Missing KID
missing-kid — Missing kid.
{
"type": "https://api.identityx.trieoh.com/problems/missing-kid",
"status": 401,
"title": "Missing KID",
"detail": "…",
"instance": "/…"
}OAuth Code Exchange
oauth-code-exchange — Failed to exchange code.
{
"type": "https://api.identityx.trieoh.com/problems/oauth-code-exchange",
"status": 401,
"title": "OAuth Code Exchange",
"detail": "…",
"instance": "/…"
}OAuth Empty Token
oauth-empty-token — Empty token from provider.
{
"type": "https://api.identityx.trieoh.com/problems/oauth-empty-token",
"status": 401,
"title": "OAuth Empty Token",
"detail": "…",
"instance": "/…"
}OAuth GitHub Email
oauth-github-email — Could not fetch github email.
{
"type": "https://api.identityx.trieoh.com/problems/oauth-github-email",
"status": 401,
"title": "OAuth GitHub Email",
"detail": "…",
"instance": "/…"
}OAuth Incomplete Userinfo
oauth-incomplete-userinfo — Incomplete userinfo from provider.
{
"type": "https://api.identityx.trieoh.com/problems/oauth-incomplete-userinfo",
"status": 401,
"title": "OAuth Incomplete Userinfo",
"detail": "…",
"instance": "/…"
}OAuth Userinfo
oauth-userinfo — Userinfo request failed.
{
"type": "https://api.identityx.trieoh.com/problems/oauth-userinfo",
"status": 401,
"title": "OAuth Userinfo",
"detail": "…",
"instance": "/…"
}Outdated Token
outdated-token — Outdated token.
{
"type": "https://api.identityx.trieoh.com/problems/outdated-token",
"status": 401,
"title": "Outdated Token",
"detail": "…",
"instance": "/…"
}Platform Only
platform-only — Platform-level authentication required.
{
"type": "https://api.identityx.trieoh.com/problems/platform-only",
"status": 401,
"title": "Platform Only",
"detail": "…",
"instance": "/…"
}Signing Key Retired
signing-key-retired — Token signing key retired.
{
"type": "https://api.identityx.trieoh.com/problems/signing-key-retired",
"status": 401,
"title": "Signing Key Retired",
"detail": "…",
"instance": "/…"
}Signing Key Revoked
signing-key-revoked — Token signing key revoked.
{
"type": "https://api.identityx.trieoh.com/problems/signing-key-revoked",
"status": 401,
"title": "Signing Key Revoked",
"detail": "…",
"instance": "/…"
}Token Expired
token-expired — The bearer token has expired; refresh it and retry.
{
"type": "https://api.identityx.trieoh.com/problems/token-expired",
"status": 401,
"title": "Token Expired",
"detail": "…",
"instance": "/…"
}Token Revoked
token-revoked — Token has been revoked.
{
"type": "https://api.identityx.trieoh.com/problems/token-revoked",
"status": 401,
"title": "Token Revoked",
"detail": "…",
"instance": "/…"
}Unauthenticated
unauthenticated — The request carries no credentials: no bearer token and no API
key where the operation needs one.
{
"type": "https://api.identityx.trieoh.com/problems/unauthenticated",
"status": 401,
"title": "Unauthenticated",
"detail": "…",
"instance": "/…"
}403
Actor Not In Project
actor-not-in-project — Actor does not belong to this project.
{
"type": "https://api.identityx.trieoh.com/problems/actor-not-in-project",
"status": 403,
"title": "Actor Not In Project",
"detail": "…",
"instance": "/…"
}Actor Outside Project
actor-outside-project — Insufficient permissions.
{
"type": "https://api.identityx.trieoh.com/problems/actor-outside-project",
"status": 403,
"title": "Actor Outside Project",
"detail": "…",
"instance": "/…"
}Insufficient Role
insufficient-role — The caller's role does not allow the operation.
{
"type": "https://api.identityx.trieoh.com/problems/insufficient-role",
"status": 403,
"title": "Insufficient Role",
"detail": "…",
"instance": "/…"
}Not Profile Owner
not-profile-owner — Insufficient permissions.
{
"type": "https://api.identityx.trieoh.com/problems/not-profile-owner",
"status": 403,
"title": "Not Profile Owner",
"detail": "…",
"instance": "/…"
}Provider Disabled
provider-disabled — The project has disabled login with this OAuth provider.
| Member | Type | Description |
|---|---|---|
provider | string | The provider's name. |
{
"type": "https://api.identityx.trieoh.com/problems/provider-disabled",
"status": 403,
"title": "Provider Disabled",
"detail": "…",
"instance": "/…",
"provider": "…"
}404
Not Found
not-found — The requested resource does not exist.
{
"type": "https://api.identityx.trieoh.com/problems/not-found",
"status": 404,
"title": "Not Found",
"detail": "…",
"instance": "/…"
}409
Already Blacklisted
already-blacklisted — This target is already blacklisted for this scope.
{
"type": "https://api.identityx.trieoh.com/problems/already-blacklisted",
"status": 409,
"title": "Already Blacklisted",
"detail": "…",
"instance": "/…"
}API Key Prefix Taken
api-key-prefix-taken — An API key with this display prefix already exists.
{
"type": "https://api.identityx.trieoh.com/problems/api-key-prefix-taken",
"status": 409,
"title": "API Key Prefix Taken",
"detail": "…",
"instance": "/…"
}Capability Exists
capability-exists — A capability with this resource and action already exists for this scope.
{
"type": "https://api.identityx.trieoh.com/problems/capability-exists",
"status": 409,
"title": "Capability Exists",
"detail": "…",
"instance": "/…"
}Domain Taken
domain-taken — This domain is already verified by another project.
{
"type": "https://api.identityx.trieoh.com/problems/domain-taken",
"status": 409,
"title": "Domain Taken",
"detail": "…",
"instance": "/…"
}Duplicate OAuth State
duplicate-oauth-state — Duplicate OAuth login state.
{
"type": "https://api.identityx.trieoh.com/problems/duplicate-oauth-state",
"status": 409,
"title": "Duplicate OAuth State",
"detail": "…",
"instance": "/…"
}Email Taken For Scope
email-taken-for-scope — An account with this email already exists for this scope and auth method.
{
"type": "https://api.identityx.trieoh.com/problems/email-taken-for-scope",
"status": 409,
"title": "Email Taken For Scope",
"detail": "…",
"instance": "/…"
}Email Template Exists
email-template-exists — This project already has an email template of this kind.
{
"type": "https://api.identityx.trieoh.com/problems/email-template-exists",
"status": 409,
"title": "Email Template Exists",
"detail": "…",
"instance": "/…"
}External Identity Taken
external-identity-taken — This external identity is already linked to this account.
{
"type": "https://api.identityx.trieoh.com/problems/external-identity-taken",
"status": 409,
"title": "External Identity Taken",
"detail": "…",
"instance": "/…"
}Handle Taken
handle-taken — This handle is already in use by another profile.
{
"type": "https://api.identityx.trieoh.com/problems/handle-taken",
"status": 409,
"title": "Handle Taken",
"detail": "…",
"instance": "/…"
}OAuth Provider Configured
oauth-provider-configured — This OAuth provider is already configured for this project.
{
"type": "https://api.identityx.trieoh.com/problems/oauth-provider-configured",
"status": 409,
"title": "OAuth Provider Configured",
"detail": "…",
"instance": "/…"
}Org Slug Taken
org-slug-taken — An organization with this slug already exists.
{
"type": "https://api.identityx.trieoh.com/problems/org-slug-taken",
"status": 409,
"title": "Org Slug Taken",
"detail": "…",
"instance": "/…"
}Platform Schema Version Exists
platform-schema-version-exists — A platform profile schema version already exists.
{
"type": "https://api.identityx.trieoh.com/problems/platform-schema-version-exists",
"status": 409,
"title": "Platform Schema Version Exists",
"detail": "…",
"instance": "/…"
}Profile Schema Version Exists
profile-schema-version-exists — This profile schema version already exists for the scope.
{
"type": "https://api.identityx.trieoh.com/problems/profile-schema-version-exists",
"status": 409,
"title": "Profile Schema Version Exists",
"detail": "…",
"instance": "/…"
}Project Profile Schema Exists
project-profile-schema-exists — A profile schema already exists for this project.
{
"type": "https://api.identityx.trieoh.com/problems/project-profile-schema-exists",
"status": 409,
"title": "Project Profile Schema Exists",
"detail": "…",
"instance": "/…"
}Project Slug Taken
project-slug-taken — A project with this slug already exists.
{
"type": "https://api.identityx.trieoh.com/problems/project-slug-taken",
"status": 409,
"title": "Project Slug Taken",
"detail": "…",
"instance": "/…"
}Setup Complete
setup-complete — Setup already complete.
{
"type": "https://api.identityx.trieoh.com/problems/setup-complete",
"status": 409,
"title": "Setup Complete",
"detail": "…",
"instance": "/…"
}ToS Already Accepted
tos-already-accepted — This actor has already accepted this terms version.
{
"type": "https://api.identityx.trieoh.com/problems/tos-already-accepted",
"status": 409,
"title": "ToS Already Accepted",
"detail": "…",
"instance": "/…"
}ToS Already Exists
tos-already-exists — This project already has terms of service.
{
"type": "https://api.identityx.trieoh.com/problems/tos-already-exists",
"status": 409,
"title": "ToS Already Exists",
"detail": "…",
"instance": "/…"
}ToS Exists
tos-exists — Project already has terms of service; update them instead.
{
"type": "https://api.identityx.trieoh.com/problems/tos-exists",
"status": 409,
"title": "ToS Exists",
"detail": "…",
"instance": "/…"
}429
Too Many Requests
rate-limited — The caller exceeded the rate limit; retry later.
{
"type": "https://api.identityx.trieoh.com/problems/rate-limited",
"status": 429,
"title": "Too Many Requests",
"detail": "…",
"instance": "/…"
}500
Internal Server Error
internal-server-error — The server failed unexpectedly. The cause is logged, never
returned.
{
"type": "https://api.identityx.trieoh.com/problems/internal-server-error",
"status": 500,
"title": "Internal Server Error",
"detail": "Internal Server Error",
"instance": "/…"
}503
Identity Unavailable
identity-unavailable — IdentityX could not be reached to check the API key; retry
later.
{
"type": "https://api.identityx.trieoh.com/problems/identity-unavailable",
"status": 503,
"title": "Identity Unavailable",
"detail": "…",
"instance": "/…"
}Setup Check Failed
setup-check-failed — Could not check setup state.
{
"type": "https://api.identityx.trieoh.com/problems/setup-check-failed",
"status": 503,
"title": "Setup Check Failed",
"detail": "…",
"instance": "/…"
}Setup Required
setup-required — Please setup IDX first on /auth/setup.
{
"type": "https://api.identityx.trieoh.com/problems/setup-required",
"status": 503,
"title": "Setup Required",
"detail": "…",
"instance": "/…"
}List outdated project actor profiles GET
Lists the project's actor profiles that failed to migrate to the active project schema version and are flagged as outdated. The admin resolves them manually. Requires a project admin.
Backend
The IdentityX Go service — where it lives, how it's structured, how to run it.