PingOne Platform APIs

User Passwords

The password management endpoints provide functions that enable the following operations on a specified user:

  • Get a user’s password state

  • Validate a user’s password

  • Set a user’s password

  • Update a user’s password

  • Unlock a user’s password

  • Recover a forgotten password

Users who authenticate with an authoritative identity provider cannot perform any self-service actions on passwords. Their user.identityProvider.id attribute is not null and their user.identityProvider.type attribute is not PING_ONE. These actions include:

Attempting to do so returns a REQUEST_FAILED exception.

Password state data model

Property Type Required Mutable Description

environment.id

String

Required

Mutable

Specifies the ID of the environment resource referenced by this relationship.

currentPassword

String

Required

Mutable

The current password to be verified before the new password is set. Required for self-change when the user already has a password (the user whose password is being changed is the same as the actor in the access token).

lastChangedAt

DateTime

N/A

Read-only

The time the password was last changed. If the user doesn’t have a password, this value is the date the user was created.

newPassword

String

Optional

Mutable

The new password (must satisfy all requirements).

passwordPolicy.id

String

N/A

Read-only

Specifies the ID of the password policy resource referenced by this relationship.

secondsUntilUnlock

Integer

N/A

Read-only

Specifies the number of seconds before the password may be used again after a lock out. If absent, the password must be reset by an administrator before it may be used again after a lockout.

status

String

N/A

Read-only

Specifies the current status of the password. Options are OK, NO_PASSWORD, PASSWORD_EXPIRED, PASSWORD_LOCKED_OUT, MUST_CHANGE_PASSWORD, and EXTERNAL. For more information, refer to the "Password status states" table below.

user.id

String

Required

Mutable

Specifies the ID of the user resource referenced by this relationship.

warnings.expires

Object

N/A

Read-only

Warns that the password will expire on the specified date and time. The warning will only display if the password will expire in less than 21 days.

warnings.failuresRemaining

Object

N/A

Read-only

Warns that the password has been checked unsuccessfully and the user will be locked out after the indicated number of further unsuccessful attempts.

warnings.noChangeUntil

Object

N/A

Read-only

Warns that the password was recently self-changed and cannot be self-changed again until the specified date and time.

For information about password policy data model properties, refer to Password policies data model.

Password status states

Password state Description

NO_PASSWORD

Specifies that no password has been set. It also indicates that the user does not use a password for authentication.

OK

Specifies that a password has been set and can be used for login actions.

PASSWORD_EXPIRED

Specifies that the current password has expired and cannot be used for login actions.

MUST_CHANGE_PASSWORD

Specifies that the user’s password has been changed by the administrator and must be reset by the user before the next login action.

PASSWORD_LOCKED_OUT

Specifies that a password is temporarily locked out as a result of too many invalid login attempts. It cannot be used for login actions.

EXTERNAL

Specifies that a password is managed in a remote directory, not in PingOne. If the referenced gateway in password.gateway does not allow password changes (allowPasswordChanges=false), then password changes are blocked and links for password.forgot and password.reset are not included.

User password errors

In addition to the general error codes, user password operations can return the following errors:

HTTP status Top‑level code Detail code When it happens and what the response contains

400

REQUEST_FAILED

CONSTRAINT_VIOLATION

Message: The request could not be completed. There was an issue processing the request.

When and details

When: A password operation targets a user whose lifecycle.status is INVITED, an administrative PUT Update Password (Self or Admin) or POST Password Check, Recover, or Send (Resend) Recovery Code request targets a self‑service user with an authoritative identity provider, or a POST Password Recover request runs after five failed recovery attempts with the given code

Details: Operation not allowed for users with lifecycle.status INVITED, Operation not allowed for users with an authoritative identity provider., or Maximum password recovery failures exceeded. Initiating another password recovery process resets the failure count.

400

REQUEST_FAILED

CONSTRAINT_VIOLATION

Message: The request could not be completed. There was an issue processing the request.

When and details

When: A POST Send (Resend) Recovery Code request targets a user without an email address, or the account is locked for reasons other than a locked password

Details: The user does not have an email address or Account is locked out with a secondsUntilUnlock inner error when the unlock time is known.

400

REQUEST_FAILED

ACCOUNT_NOT_USABLE

Message: The request could not be completed. There was an issue processing the request.

When and details

When: A password check, unlock, force change, or Send (Resend) Recovery Code request targets a disabled user

Details: The user is disabled

400

REQUEST_FAILED

PASSWORD_LOCKED_OUT

Message: The request could not be completed. There was an issue processing the request.

When and details

When: A POST Password Check or self-change PUT Update Password request runs while the password is locked out, or the failed attempts in the request lock the password out

Details: Account is locked out or The password is temporarily or administratively locked out, with a secondsUntilUnlock inner error when the unlock time is known.

400

REQUEST_FAILED

NO_PASSWORD or PASSWORD_EXPIRED or PASSWORD_TOO_YOUNG or TIMEOUT

Message: The request could not be completed. There was an issue processing the request.

When and details

When: A POST Password Check request targets a user without a provisioned password, or with an expired password, or a self-change PUT Update Password request runs before the minimum password age has elapsed, or the password check timed out

Details: The user does not have a password set, The user’s password is expired (target password), The password cannot be changed because it has not been long enough since the last password change, or A timeout was encountered when checking the password.

400

INVALID_DATA

INVALID_VALUE

Message: The request could not be completed. One or more validation errors were in the request.

When and details

When: A POST Password Check or self-change PUT Update Password request provides a password that does not match the provisioned password, a self-change request provides an incorrect currentPassword, a set or update request provides a newPassword or value that does not satisfy the password policy, or a POST Password Recover request provides an invalid or expired recoveryCode

Details: The provided password did not match provisioned password (target password) or The current password provided for the user is invalid (target currentPassword), each with a failuresRemaining inner error when the warning is present; New password did not satisfy password policy requirements (target newPassword or value) with the failed checks in the unsatisfiedRequirements inner error; or The provided password recovery code was invalid or expired (target recoveryCode)

400

INVALID_DATA

EMPTY_VALUE

Message: Validation Error : [recoveryCode must not be empty] for Recover and Update Password (Self or Admin), Validation Error : [value must not be empty] for Update Password (Set), or The request could not be completed. One or more validation errors were in the request. for Password Check

When and details

When: A POST Password Check request omits password, a POST Password Recover request omits recoveryCode or newPassword, a PUT Update Password (Self or Admin) request omits newPassword, or a PUT Update Password (Set) request omits value

Details: must not be empty with target = the omitted field

400

INVALID_DATA

OUT_OF_RANGE

Message: Validation Error : [<field> size must be between 0 and 256]

When and details

When: A POST Password Check, PUT Update Password (Self or Admin), or Set request provides a password, newPassword, or value longer than 256 characters

Details: size must be between 0 and 256 with target = the offending field and rangeMinimumValue 0 and rangeMaximumValue 256 inner errors

400

INVALID_DATA

INVALID_VALUE

Message: The request could not be completed. One or more validation errors were in the request.

When and details

When: A PUT Update Password (Self or Admin) or POST Password Recover request provides a pre-encoded password (a password that starts with a storage-scheme prefix such as {SSHA})

Details: The password must not be pre-encoded. with no target

400

INVALID_DATA

INVALID_VALUE

Message: Validation Error : [<field> <message>] (target newPassword or value)

When and details

When: A PUT Update Password (Self or Admin) or Update Password (Set) request provides a pre-encoded {PBKDF2} password that fails validation, such as too many iterations

Details: Invalid PBKDF2 password., PBKDF2 password must start with {PBKDF2}., PBKDF2 password must be at least 13 bytes long after the {PBKDF2} prefix. Provided: <length>., PBKDF2 version must be 0x00, 0x01, 0x02, or 0x03. Provided: 0x<version>., PBKDF2 salt length must be between 8 and 127 bytes. Provided: <saltLength>., or PBKDF2 iterations must not be greater than 5000000. Provided: <iterations>

400

INVALID_REQUEST

INVALID_VALUE or None

Message: The request could not be completed. The request was malformed or invalid.

When and details

When: A request body cannot be deserialized as JSON, or the LDAP gateway in password.external.gateway does not allow password changes for the user type

Details: For a JSON field conversion error, the detail is Invalid value for attribute. with target = the field path. For a gateway that disallows password changes, the message is A system error occurred when accessing your account for authentication. Contact your administrator. with no detail.

400

INVALID_DATA or REQUEST_FAILED

INVALID_VALUE or CONSTRAINT_VIOLATION

Message: The request could not be completed. One or more validation errors were in the request. for a missing gateway or user type, or The request could not be completed. There was an issue processing the request. for a non‑LDAP gateway

When and details

When: A PUT Update Password (External) request references a gateway or user type that does not exist, or a gateway that is not an LDAP gateway

Details: Gateway does not exist. or UserType does not exist in gateway. with detail code INVALID_VALUE, or Only LDAP gateway type is supported. with detail code CONSTRAINT_VIOLATION

403

ACCESS_FAILED

None

Message: The actor attempting to perform the request is not authorized.

When and details

When: The actor lacks the permission required by the operation (dir:read:userPassword for Read Password State, dir:validate:userPassword for Password Check, dir:forceChange:userPassword for Force Change Password, dir:recover:userPassword for Send (Resend) Recovery Code and Password Recover, dir:unlock:userPassword for Unlock User Password, or dir:reset:userPassword for Update Password Self/Admin, dir:set:userPassword for Update Password Set, Set Value, and External), is not authorized for the target user’s population or group scope, or attempts a self-service administrative action (dir:forceChange:userPassword, dir:reset:userPassword, or dir:set:userPassword operations) on their own account

Details: None.

404

NOT_FOUND

None

Message: The request could not be completed. The requested resource was not found.

When and details

When: The user ID or environment ID in the request URL does not exist

Details: None.

429

REQUEST_LIMITED

None

Message: The request could not be completed. A rate or quota limit was reached. Please try again later.

When and details

When: A Send (Resend) Recovery Code request exceeds the password recovery rate limit for the user’s email address

Details: None.