Skip to content

The v1 docs follow nauthera-server's main branch and its 0.x releases on the way to 1.0, so fields and APIs can still change.

v1

Problem code runbooks

Docs version v1 (main)Nauthera is pre-1.0, in a design-partner program

One runbook per code of an RFC 9457 problem response. A problem's type, https://nauthera.io/problems/<code>, redirects to its page here.

CodeWhat it means
invalid_requestA handler refused a request it could read but cannot act on (400).
invalid_credentialsThe email address and password, or the passkey, did not verify (401).
forbiddenThe caller may not do this, or the request looked cross-site (403).
unauthorizedThe caller is not signed in, or the sign-in or admin token no longer counts (401).
insufficient_user_authenticationThe admin operation needs a more recent sign-in, or one with a second factor (401).
protected_accountThe admin change targets the caller's own account or a more privileged one (403).
password_held_by_directoryThe user's password lives in their organization's directory, which the server only reads (409).
last_role_administratorThe change would leave the organization with nobody able to grant roles (409).
invalid_codeThe second-factor or recovery code was wrong or already used (401).
too_many_requestsA throttle in a handler tripped; slow down and retry later (429).
too_many_attemptsAn attempt budget is spent; retrying cannot help, start over (429).
account_lockedThe account is temporarily locked after repeated failed sign-ins (429).
account_unavailableThe right password for an account an administrator suspended or blocked (403).
already_enrolledThe user already has the second factor they are trying to enrol (409).
registration_disabledSelf-service registration is turned off on this deployment (403).
registration_conflictThe account could not be created with this address (409).
captcha_failedThe request carried no captcha solution, or one that is wrong, expired or used (400).
invalid_reset_linkThe password-reset link is unknown, expired, used or another organization's (400).
password_reusedThe new password is the same as the one the account must replace (400).
password_too_shortThe new password has fewer characters than the deployment accepts (400).
password_too_longThe new password has more characters than the deployment accepts (400).
password_compromisedThe new password is a common one or appears in a breach corpus (400).
invalid_verification_linkThe email-verification link is unknown, expired, used or no longer matches (400).
invalid_invitation_linkThe invitation link was never issued, has expired, was used or no longer applies (400).
mail_relay_missingThe organization has no email relay, so the message cannot be sent (409 or 503).
email_unverifiedThe email second factor cannot be enrolled because the address is not verified (409).
not_foundNo such resource, or the request names nothing the server serves (404).
conflictThe change collides with the current state, a duplicate or a concurrent change (409).
unavailableThe feature is not available here, or something it depends on could not answer (503).
busyAn aggregate read was turned away; the server is computing as many as it allows (503).
window_too_largeAn audit count or ranking asked for a window longer than its bucket allows (400).
too_many_seriesAn audit count would return too many series times buckets (400).
internal_errorThe server accepted the operation and could not complete it (500).
rate_limitedThe per-IP request rate limit was exceeded; honour Retry-After (429).
malformedA parameter or body could not be read, or a parameter was repeated (400).
body_too_largeThe request body is larger than the server reads (413).
requiredThe operation needs a request body and none was sent (400).
validation_errorThe request failed the schema; the errors list names each offending field (400).
unknown_orgThe path's /orgs/{slug} names no organization served there (404).
invalid_tokenUserInfo refused the access token, which is missing, invalid, expired or misused (401).
invalid_dpop_proofUserInfo refused the DPoP proof for a bound access token (401).
use_dpop_nonceRetry the UserInfo request with the nonce sent in the DPoP-Nonce header (401).
server_errorUserInfo could not check the access token; keep the token and retry (500).