The flow endpoint is used to interact with the user in a sign-on workflow. Flow endpoint operations are used only to implement custom authentication UIs. OIDC/OAuth 2 and SAML requests initiate the flow and redirect the browser to the custom authentication UI (which is configured in the application through the application’s loginPageUrl property).

Common sign-on actions

Login actions

The flow endpoint can initiate login actions that specify the operations required to authenticate with a username and password.

Multi-factor authentication actions

The flow endpoint can also initiate multi-factor authentication (MFA) actions that specify the operations required to complete authentication using a registered user device and a one-time password (OTP).

Identity first actions

The flow can initiate a discovery action used to identify the user by username and determine the applicable authentication methods for this user.

Progressive profiling actions

Progressive profiling actions prompt users to provide additional data at sign on. This action type does not authenticate users. It is used only to obtain additional profile data.

Agreement actions

Agreement actions enforce user consent to an agreement at sign on. This action type does not authenticate users. It is used only to obtain user consent to a terms of service agreement.

Identity provider actions

An action that bypasses the PingOne sign-on prompt and immediately redirects the user to an external identity provider’s sign-on workflow to authenticate.

Flow status

In a sign-on workflow, the flow’s status property value returned by the last action identifies the appropriate next action in the authentication process. For example, if an application uses the LOGIN sign-on policy, when a user initiates sign-on and starts the authentication flow, the response returned by the flow shows a status value that specifies the next required step to complete this flow successfully. For the LOGIN sign-on policy, the next action prompts the user to enter a username and password, as indicated by the USERNAME_PASSWORD_REQUIRED value in the status property.

"status" : "USERNAME_PASSWORD_REQUIRED"

The response data includes a HAL link to the required action, which in this case is the usernamePassword.check:

{
  "_links" : {
    "self" : {
      "href" : "https://auth.pingone.com/{environmentId}/flows/{flowID}"
    },
    "session.reset" : {
      "href" : "https://auth.pingone.com/{environmentId}/flows/{flowID}"
    },
    "usernamePassword.check" : {
      "href" : "https://auth.pingone.com/{environmentId}/flows/{flowID}"
    }
  },

After the user submits a username and password, the flow calls the usernamePassword.check action to verify the username and password.

Flow status values

An authentication flow can return one of the following status values in response to a sign-on action:

Status value Description
USERNAME_PASSWORD_REQUIRED This value specifies that a username and password is required. This status can initiate a usernamePassword.check action, a user.register action, a registration.external action, a password.forgot action, or an authenticate action to sign on using an external identity provider.
PASSWORD_REQUIRED This value specifies that a password is required. This status initiates a usernamePassword.check action.
SIGN_ON_REQUIRED This value specifies that a sign-on action is required. This status transitions to a user.lookup action and a registration.external action in a passwordless authentication flow.
RECOVERY_CODE_REQUIRED This value specifies that the user initiated a password.forgot action and a recovery code must be sent. This status calls the password.recover action.
VERIFICATION_REQUIRED This value specifies that the user’s account must be verified. This status calls the user.verify action.
OTP_REQUIRED This value specifies that the user must complete a multi-factor authentication action. This status calls the otp.check action.
DEVICE_SELECTION_REQUIRED This value specifies that the user must complete a device selection multi-factor authentication action. This status calls the device.select action.
PASSWORD_EXPIRED This value specifies that a user’s password has expired and must be updated. This status calls the password.reset action.
MUST_CHANGE_PASSWORD This value specifies that a temporary password must be changed or updated. This status calls the password.reset action.
ACCOUNT_LINKING_REQUIRED This value specifies that the external identity returned by the identity provider requires an account linking action to link the external account to an existing user. This status can initiate a usernamePassword.check to link to an existing user, a user.register action to create a link to a new user, a registration.external action, or a password.forgot to link to an existing user who has forgotten the password.
ACCOUNT_CONFIRMATION_REQUIRED This value specifies that the external identity informaiton returned by the identity provider requires an account confirmation action to verify the account data. This status can initiate a user.confirm action to verify the account information.
EXTERNAL_AUTHENTICATION_REQUIRED This value specifies that account authentication is required through an external identity provider’s authentication flow. The authenticate HAL embedded resource link provides the location to redirect the browser to sign on with the specified identity provider.
PROFILE_DATA_REQUIRED This value specifies that user must submit the requested profile data in order to continue the authentication flow.
COMPLETED This value specifies that the entire flow is completed and initiates a browser redirect to the resumeUrl property to continue.
FAILED This value specifies that the entire flow has failed.
PENDING_PUSH_CONFIRMATION This value specifies that a push was sent to a mobile device to confirm the authentication. The client will have to poll this status using GET /{environmentId}/flows/{flowID} to check whether the mobile device answered the push.
PENDING_PUSH_TIMEOUT This value specifies that a push was sent to a mobile device, but the mobile device didn’t answer the push during the allowed timeframe.
ASSERTION_REQUIRED This value specifies that for a FIDO2 device type, an assertion generated by the browser from the provided webauthn public key credential request is required to continue the flow. The flow calls the assertion.check action.
AGREEMENT_CONSENT_REQUIRED This value specifies that users need to consent to an agreement. This status calls the user.consent action.

Flow API operations

The GET /{environmentId}/flows/{flowID} operation retrieves the flow specified by the flowID in the request URL. For more information about this flow action, see Get a flow.

The flow endpoint operation, POST /{environmentId}/flows/{flowID}, supports several flow actions that are specified by the custom media type provided in the HTTP Content-Type request header. The following table lists the PingOne custom media types and their associated authentication flow actions:

Media type Flow action
application/vnd.pingidentity.session.reset+json Update or reset a flow
application/vnd.pingidentity.usernamePassword.check+json Sign on with a username and password
application/vnd.pingidentity.user.lookup+json Sign on with a username in a passwordless flow
application/vnd.pingidentity.password.forgot+json Forgot password
application/vnd.pingidentity.user.register+json Register a user
application/vnd.pingidentity.usernamePassword.check+json Check a user’s password
application/vnd.pingidentity.password.reset+json Reset a user’s password
application/vnd.pingidentity.password.recover+json Recover a user’s password
application/vnd.pingidentity.password.sendRecoveryCode Send the user a recovery code
application/vnd.pingidentity.user.verify+json Verify a user
application/vnd.pingidentity.user.sendVerificationCode+json Send the user a verification email
application/vnd.pingidentity.device.select+json Select an MFA device
application/vnd.pingidentity.otp.check+json Validate the one-time password
application/vnd.pingidentity.user.update+json Submit profile data
application/vnd.pingidentity.user.confirm+json Confirm account information
application/vnd.pingidentity.assertion.check+json Check assertion
application/vnd.pingidentity.user.consent+json Agreement Accept Consent

Flows common response data model

These common properties are returned with the flow response.

Property Description
application A reference to the application that initiated the flow.
application.id A string that specifies the ID of the application that initiated the flow.
application.name A string that specifies the name of the application that initiated the flow.
application.icon.id A string that specifies the icon ID for the application that initiated the flow.
application.icon.href A string that specifies the URL of the icon for the application that initiated the flow.
authenticator An array that specifies the set of authentication methods that the user completed in this flow. The values returned by the flow must use the values defined in RFC 8176. The order of the methods returned by the flow might not reflect the order in which they were executed in the flow.
authorizeResponse.access_token A string that specifies the access token returned by the flow in a browserless or MFA only authentication flow (for an implicit authorization request).
authorizeResponse.id_token A string that specifies the ID token returned by the flow in a browserless or MFA only authentication flow (for an implicit authorization request).
authorizeResponse.code A string that specifies the authorization code returned by the flow in a browserless or MFA only authentication flow (for an authorization_code authorization request).
authorizeResponse.state A string that specifies the authorization state (used to maintain state between the logout request and the callback to the redirect URI) returned by the flow in a browserless or MFA only authentication flow (for an authorization_code authorization request).
completedSignOnPolicy.id A string that specifies the ID of the completed sign-on policy resource after the flow is COMPLETED.
completedSignOnPolicy.name A string that specifies the name of the completed sign-on policy after the flow is COMPLETED.
createdAt The time the resource was created.
expiresAt The time this flow will expire due to inactivity timeout based on a sliding window.
id A string that specifies the flow resource’s unique identifier.
identifier A string that specifies a username value returned from the login_hint property.
resumeUrl A string that specifies where the flow handler UI will redirect the browser to after the flow is COMPLETED or FAILED.
status A string that specifies the status of the flow.
user.id A string that specifies the ID of the session user. This value is used for authentication flows initiated with an existing session’s unique ID.

These common links are returned with the flow response.

Links Description
self The HAL link to the current flow resource.
session.reset The HAL link to the session reset action. This link is present if the user has signed on previously on this device. It can be used to sign off the user and reset the flow.

These common embedded resources are returned with the flow response:

Embedded resources Description
user The HAL link to the resource containing profile attributes of the actively signing-on or previously signed-on user.

Response codes

Code Message
200 Successful operation.
201 Successfully created.
204 Successfully removed. No content.
400 The request could not be completed.
401 You weren’t authenticated to perform this operation.
404 The requested resource was not found.

Flow status data model and embedded resources

The following sections show the parameters required by the flow status. In addition, the following links and embedded resources are returned in the flow response for the given flow status.

USERNAME_PASSWORD_REQUIRED

Parameters Description
username A string that specifies the username or ID of the user to authenticate.
password A string that specifies the password or ID of the user to authenticate.
Links Description
usernamePassword.check The HAL link to initiate a sign-on action that allows users to login with a username and password. The request body requires the username and password attributes.
user.register The HAL link to initiate a sign-on action to register a user. The request body requires the username, email, and password attributes needed to define a new user.
registration.external The HAL link to redirect a sign-on action to register a user to an external identity provider’s registration workflow.
password.forgot The HAL link to initiate an action to recover a user’s forgotten password. The request body requires the username attribute to identify the user.
Embedded resources Description
socialProviders.authenticate The HAL link to the external authentication resource to initiate authentication using an external identity provider’s authentication flow. The response also returns the following information about the identity provider: id, name, and type. For more information, see Base identity providers data model.
passwordPolicy The embedded password policy resource expanded to show password policy attributes. For more information about password policy attributes, see [Password policies data model]#password-policies).

SIGN_ON_REQUIRED

Parameters Description
username A string that specifies the username or ID of the user to sign on.
Links Description
user.lookup The HAL link for existing users to sign on using their username.
registration.external The HAL link to redirect a sign-on action to register a user to an external identity provider’s registration workflow.

PASSWORD_REQUIRED

Parameters Description
username A string that specifies the username or ID of the user to authenticate. If provided, must match the user currently associated with the session.
password A string that specifies the password or ID of the user to authenticate.
Links Description
usernamePassword.check The HAL link to initiate a sign-on action that allows users to log in with a username and password. The request body requires the username and password attributes.
password.forgot The HAL link to initiate an action to recover a user’s forgotten password. The request body requires the username attribute to identify the user.
Embedded resources Description
socialProviders.authenticate The HAL link to the external authentication resource to initiate authentication using an external identity provider’s authentication flow. The response also returns the following information about the identity provider: id, name, and type. For more information, see Base identity providers data model.

PASSWORD_EXPIRED

Parameters Description
currentPassword A string that specifies the current password, which must be verified before the new password is set.
newPassword A string that specifies the new password to set.
Links Description
password.reset The HAL link to initiate a sign-on action that allows users to reset their password. The request body requires the currentPassword and newPassword attributes.
Embedded resources Description
passwordPolicy The embedded password policy resource expanded to show password policy attributes. For more information about password policy attributes, see Password policies data model.

MUST_CHANGE_PASSWORD

Parameters Description
currentPassword A string that specifies the current password, which must be verified before the new password is set.
newPassword A string that specifies the new password to set.
Links Description
password.reset The HAL link to initiate a sign-on action that allows users to reset their password. The request body requires the currentPassword and newPassword attributes.
Embedded resources Description
passwordPolicy The embedded password policy resource expanded to show password policy attributes. For more information about password policy attributes, see Password policies data model.

RECOVERY_CODE_REQUIRED

Parameters Description
recoveryCode A string that specifies the recovery code sent to the user to recover the user’s password.
newPassword A string that specifies the new password to set.
Links Description
password.recover The HAL link to initiate an action to recover the account and set a new password. The request body requires the recoveryCode and newPassword attributes.
password.sendRecoveryCode The HAL link to send the one-time password (OTP) to the user.
Embedded resources Description
passwordPolicy The embedded password policy resource expanded to show password policy attributes. For more information about password policy attributes, see Password policies data model.

VERIFICATION_CODE_REQUIRED

Parameters Description
verificationCode A string that specifies the verification code to check.
Links Description
user.verify The HAL link to initiate an action to verify the user account to continue the authentication flow.
user.sendVerificationCode The HAL link to initiate an action to send the user a new account verification email.

DEVICE_SELECTION_REQUIRED

Parameters Description
device.id A string that specifies the ID of the selected device.
Links Description
device.select The HAL link to initiate an action to specify a device ID to use in the multi-factor authentication flow.
Embedded resources Description
devices The embedded devices resource expanded to show a list of authenticating devices for this operation. For more information about device attributes, see Device properties.

OTP_REQUIRED

Parameters Description
selectedDevice.id A string that specifies the ID of the currently selected device.
Links Description
device.select The HAL link to initiate an action to specify a device ID to use in the multi-factor authentication flow.
otp.check The HAL link to initiate an action to validate the OTP used in the multi-factor authentication flow.
Embedded resources Description
devices The embedded devices resource expanded to show a list of authenticating devices for this operation. For more information about device attributes, see Device properties.

PUSH_CONFIRMATION_REQUIRED

Parameters Description
selectedDevice.id A string that specifies the ID of the currently selected device.
Links Description
device.select The HAL link to initiate an action to specify a device ID to use in the multi-factor authentication flow.
Embedded resources Description
devices The embedded devices resource expanded to show a list of authenticating devices for this operation. For more information about device attributes, see Device properties.

PUSH_CONFIRMATION_TIMED_OUT

Parameters Description
selectedDevice.id A string that specifies the ID of the currently selected device.
Links Description
device.select The HAL link to initiate an action to specify a device ID to use in the multi-factor authentication flow.
Embedded resources Description
devices The embedded devices resource expanded to show a list of authenticating devices for this operation. For more information about device attributes, see Device properties.

ACCOUNT_LINKING_REQUIRED

Links Description
user.register The HAL link to initiate a sign-on action that initiates an action to register a user. The request body requires the username, email, and password attributes to define a new user.
registration.external The HAL link to redirect a sign-on action to register a user to an external identity provider’s registration workflow.
Embedded resources Description
matchedUsers An array of 0 or more users that match the external identity. The request returns the username, email, and lastSignedOnAt attributes needed to identify the user.
identityProviders The external identity provider used to authenticate. The request returns the name and type attributes needed to identify the identity provider used for authentication.

ACCOUNT_CONFIRMATION_REQUIRED

Links Description
user.confirm The HAL link to initiate an action to verify the data returned by the external identity provider. The request body can include the returned attributes from the identity provider.
Embedded resources Description
attributes An array of attributes returned by the external identity provider.

EXTERNAL_AUTHENTICATION_REQUIRED

Parameters Description
name A string that specifies the name of the identity provider.
type A string that specifies the identity provider type.
Embedded resources Description
identityProvider.authenticate A string that specifies the URL for the external identity provider’s sign-on screen to initiate authentication with the external identity provider.
identityProvider.loginButtonIcon A string that specifies the URL for the external identity provider’s login button icon file.

PROFILE_DATA_REQUIRED

Parameters Description
displayName A string that specifies the display name as defined in the user schema.
name A string that specifies the attribute name/path as defined in the user schema (for example, email, address.postalCode).
required A boolean that specifies whether the user is required to provide a value for the attribute.
Links Description
user.update The HAL link to update the specified user’s profile with the user attribute values provided in the request.
Embedded resources Description
attributes An array of user attributes provided to update the user’s profile.
attributes.name A string that specifies the attribute path, as defined in the user schema (for example, email, name.family, address.postalCode).
attributes.displayName A string that specifies the attribute’s display name, as defined in the user schema. This property is optional.
attributes.required A boolean that specifies whether the user is required to provide a value for the attribute.
promptText A string that specifies text to display to the user when prompting for attribute values.

ASSERTION_REQUIRED

Response property Description
publicKeyCredentialRequestOptions A string that specifies the public key credential request options object generated for the selected device that should be used to call the navigator.credentials.get() on the browser to generate the assertion.
Parameters Description
assertion A string that specifies the authenticator assertion response, which contains the signed challenge needed to complete the MFA action.
compatibility A string that specifies the browser compatibility to support webauthn. Options are FULL (compatible with FIDO2 biometrics and security key), SECURITY_KEY_ONLY (compatible with security key only), and NONE (browser is not compatible with the webauthn method).
origin A string that specifies the server name where the fetch originates, providing the URI scheme and hostname (for example, https://apps.pingone.com).
Links Description
device.select The HAL link to initiate an action to specify a device ID to use in the multi-factor authentication flow. For more information, see Select an MFA device.
assertion.check The HAL link to initiate an action to validate the assertion used in the multi-factor authentication flow. For more information, see Check assertion.
Embedded resources Description
devices The embedded devices resource expanded to show a list of authenticating devices for this operation. For more information about device attributes, see Devices model properties.

AGREEMENT_CONSENT_REQUIRED

Parameters Description
accept A boolean that specifies whether the user has consented to the agreement. This property is required for a user.consent action. The value is true if the user has consented to the agreement.
Links Description
user.consent The HAL link to initiate an action in which the user accepts the agreement.