PingOne Platform API Reference

PingOne is a cloud-based framework for secure identity access management. The PingOne API gives developers the tools to integrate enterprise and third-party applications with the PingOne platform.

For the authorization and authentication APIs, refer to PingOne Platform Auth APIs.

For architectural and background information, refer to PingOne for Developers Foundations.

For API documentation for PingOne Authorize, PingOne DaVinci, PingOne MFA, PingOne Neo, PingOne Protect use these links or the table of contents in the left panel.

New to PingOne?

If you're new to PingOne, the following topic links will help you learn more and start working with the PingOne API.

Changelog

The following changes have been made to the PingOne APIs or the associated SDKs, by year.

2025

Release Date Description
Oct 28, 2025 The platform includes an mtlsEnabled property on custom domains to specifies whether the custom domain supports the use of mTLS when establishing connections to PingOne. Refer to Custom Domains.
Oct 22, 2025 The platform now includes endpoints to import and export forms. Refer to Import Form and Export Form.
Oct 22, 2025 The platform now includes endpoints to retrieve authorization server metadata. Refer to OAuth 2.0 Authorization Server Metadata and OAuth 2.0 Authorization Server Metadata (custom domain).
Oct 20, 2025 We've published the PingOne Universal Services collections (PingOne Authorize, PingOne DaVinci, PingOne MFA, PingOne Neo, and PingOne Protect) as independent documentation sets. All are linked from the PingOne Platform API Reference.
Sep 15, 2025 We've added support for the new Rate Limiting feature. Rate entitlement enforcement will begin at some point after September 2025. You can use the API Usage Dashboard now to track your usage, and determine if the existing entitlements will be sufficient to meet the needs of your business when enforcement starts. Refer to Rate Limiting for more information.
Sep 2, 2025 When defining a custom provider for SMS/voice or email notifications from PingOne, you can now also use providers that require authentication with OAuth 2 or a custom header. For details, see the Create Phone Delivery Settings (custom, OAUTH2) example, the Create Phone Delivery Settings (custom, custom header) example, the Email delivery settings data model under Email Delivery Settings, and the Custom provider phone delivery settings properties (excluding Twilio and Syniverse) table under Phone Delivery Settings.
Aug 27, 2025 We've added support for RFC 7914 for Scrypt password encoding. This encoding is used in our new SCRYPT_RFC7914 identifier to distinguish it from the earlier encoding (still supported) using the SCRYPT identifier. Refer to Password encoding for more information.
Aug 19, 2025 For the User-based Risk Behavior predictor, you can now include the new field shouldDetectCompromisedAccount if you want PingOne to attempt to detect compromised user accounts and take this into account when calculating the risk level for this predictor. In cases where there are indications that the user's account has been compromised, result.recommendedAction is returned with a value of ACCOUNT_RECOVERY. For details, refer to Risk Predictors.
Aug 13, 2025 For PingOne environments where PingID accounts have been integrated, you can now include the PingID-specific authentication methods such as the PingID app in your device authentication policies. For details, refer to Device Authentication Policies and the Update Device Authentication Policy (env with PingID integration) example.
Aug 10, 2025 For mobile applications, a new parameter called passcodeGracePeriod has been added to allow you to customize the grace period during which the passcode can still be used even after the passcode has been refreshed. For details, refer to the Applications OIDC settings data model.
Jul 27, 2025 For PingOne email notifications, you can now use the new emailProviderFallbackChain field to switch back to using the Ping server without losing the settings for the custom server/provider that you defined. For details, refer to Notifications settings.
Jul 23, 2025 The platform now supports a Forms component setting to control the visibility of a form field. For more information, refer to FormField data model.
Jul 14, 2025 OIDC-based applications in PingOne can now request an access token that accesses scopes from multiple custom resources in a single request. For more information, refer to Applications OIDC settings data model and Resource Scopes.
Jul 7, 2025 For applications of type PORTAL_LINK_APP, you can now specify an external ID for the application. For details, refer to the description of the new externalId field in the Applications base data model.
Jul 7, 2025 You can now use Targeted risk policies to define risk policies for different "targets" - combinations of transaction types, user groups, and applications that are being accessed. When a risk evaluation is carried out, these targeted policies are processed in the order that you specified. PingOne Protect uses the first policy whose conditions (transaction type, user group, application) are met. For details, refer to Targeted risk policies under Risk Policies, the Create Risk Policy Set - Targeted Policy with Mitigations example, and the Create Risk Evaluation (using targeted risk policies) example.
Jul 7, 2025 You can now include mitigations in your risk policies. In this context, a mitigation is an action that you recommend if a given condition is met, for example, deny access if the email reputation predictor indicates high risk. In situations where the condition is met, the action that you recommended be taken is returned in the risk evaluation response as the value of the result.mitigations[].action field. For details, refer to Using mitigations in your policies and Risk policies data model under Risk Policies, and the Create Risk Policy Set - Targeted Policy with Mitigations example.
Jul 2, 2025 We've added a new role, Help Desk Admin, to manage user MFA methods and devices, and reset passwords to resolve any account lockouts. Refer to Built-in Admin Roles and PingOne Role Permissions for more information.
Jun 30, 2025 The platform now supports the SG (Singapore) region. For details, refer to Working with PingOne APIs.
Jun 25, 2025 Added the opSessionCheckEnabled application property to support OIDC session management. For more information see, OIDC Session Management and the Applications OIDC settings data model.
Jun 24, 2025 We now support the Czech language for language translations. Refer to Language Translations for more information.
Jun 17, 2025 It is now possible to send PingOne notifications via Twilio Verify, and you can use any Verify templates that you have defined. For details, refer to Phone Delivery Settings, the Content Properties table under Notifications Templates, and the following Postman examples: Create Phone Delivery Settings (Twilio Verify), Read One Phone Delivery Settings (include Verify templates), and Create SMS Content (including Twilio Verify template).
Jun 3, 2025 We've added the virtualServerSettings properties for SAML applications, enabling you to use multiple self-identifiers when connecting to the same SAML application. Refer to Applications SAML settings data model for details.
May 27, 2025 We've added the logoutType property, enabling you to specify either OIDC_RP_INITIATED or SAML2_SLO when logging out of applications of type PING_ONE_SELF_SERVICE or PING_ONE_PORTAL (Application Portal). Refer to the OIDC data model settings for PING_ONE_SELF_SERVICE and PING_ONE_PORTAL for details.
May 13, 2025 When creating a FIDO policy, you can now specify that it requires enterprise attestation to verify that the authenticator being used was provided by the organization. For details, refer to the Create FIDO Policy - FIDO-certified and enterprise example and the FIDO policies data model.
May 13, 2025 When creating a FIDO policy, you can use the new userDisplayNameAttributes.suffix field to include the PingOne environment name and/or the PingOne organization name in the popup window that is displayed when a user adds a passkey as an authentication method. For details, refer to the FIDO policies data model.
May 11, 2025 The use of OATH tokens as an authentication method, which was introduced a number of months ago for environments where PingID accounts were integrated, is now available for all PingOne environments that include the PingOne MFA or PingID services. You can use the oathTokens endpoint to add OATH tokens to the environment and carry out actions such as revoking or resyncing tokens. For For details, refer to OATH tokens and the Create MFA User Device (OATH token) example.
Apr 30, 2025 You can now soft-delete PingOne PRODUCTION environments, making the environment non-operational for a waiting period before it can be deleted. This is to help protect you from inadvertently deleting a Production environment. Refer to Environments and Deleting Environments for more information.
Apr 30, 2025 The TEXTBLOB form field type (fieldTypes property) has been deprecated. Refer to Forms for more information.
Apr 29, 2025 We've published a new Getting Started guide for the PingOne Platform APIs, and removed the existing Tutorial guide (the Getting Started guide now covers this information). Refer to PingOne for Developers Getting Started.
Apr 28, 2025 In your notification policies, you can now define waiting periods before users can request another notification such as another OTP, as well as a maximum number of such requests before the user is temporarily locked out. Refer to the new cooldownConfiguration object in Notification Policies and the Create Notification Policy / Environment example.
Apr 28, 2025 Your MFA policies can now include WhatsApp as an authentication method. For details, refer to Instant Messaging Delivery Settings, the Offline device (SMS, voice, email, WhatsApp) authentication policy data model in Device Authentication Policies, and the Create WhatsApp Content example.
Apr 22, 2025 The platform now supports the x5t signature header in the signed JWT. Refer to Applications OIDC settings data model.
Apr 22, 2025 The platform now supports configuration options for Davinci flow execution using the PingOne authorize endpoint in which the response returns JSON. Refer to DaVinci Flow Executions.
Apr 21, 2025 The platform now supports DaVinci Admin API operations through the PingOne API resource server to manage DaVinci workflow configuration. Refer to DaVinci Admin APIs for links to all available services.
Apr 7, 2025 We've added Early Access Features APIs enabling you to adopt and provide feedback on PingOne features before the General Availability release. Refer to Early Access Features for more information.
Apr 2, 2025 You can now specify that a mobile push requires the user to match a number that they were shown when requesting access. To enable the option for an application, use the new push.numberMatching.enabled property in your MFA policy. Refer to Device Authentication Policies. To control how the user performs the matching - selection from a group of three numbers or manually entering the number - use the push.numberMatching.type property when configuring the mobile settings for the application. Refer to Application Operations.
Apr 2, 2025 You can now cancel an authentication process that has already begun. This can be used in situations where a user decides they want to use a different authentication device. For details, refer to the Cancel Device Authentication and Cancel Authentication Flow examples.
Mar 25, 2025 When using the devices endpoint to request details of a single MFA device or all MFA devices, responses for activated FIDO2 devices can now include the AAGUID for the type of authenticator. For details, refer to the new fidoDeviceMetadata object in MFA devices.
Mar 18, 2025 When configuring an MFA policy, you can now specify for FIDO2 devices the maximum number of times authentication can fail before the user is blocked temporarily, and how long the user should be blocked. Refer to the new fido2.failure object in Device Authentication Policies.
Mar 10, 2025 ID tokens now include a new claim called p1.mfa_device_id, the ID of the device that was used to authenticate. Refer to ID Token claims.
Mar 4, 2025 For workforce contexts, risk evaluations can now include the new PingID Device Trust predictor. For details, refer to Risk Predictors and the Create Risk Evaluation (includes device trust predictor) example.
Feb 25, 2025 When determining the language to use for a notification, PingOne now also takes into consideration the Accept-Language header in the request. For details, refer to Runtime logic for content selection in Notifications Templates.
Feb 25, 2025 When creating or updating an MFA policy, you can now specify the notification policy that should be used with the MFA policy by using the new notificationsPolicy.id field. Refer to Device Authentication Policies and the Create Device Authentication Policy example.
Feb 24, 2025 In MFA policies, you can now include a "remember me" option so that users do not have to authenticate when accessing applications from a device they have used before. Refer to the new rememberMe object in Device Authentication Policies and the implementation instructions in Remembered Devices.
Feb 18, 2025 When creating or updating a population, if you do not specify a theme.id value in your request, the default theme for the current environment is used. Refer to Create Population and Update Population.
Feb 12, 2025 The platform supports token fulfillment in PingOne, enabling admins to map attributes from a source's authentication JWT to the PingOne generated token to improve interoperability with OIDC applications. Refer to Use an authentication JWT for token fulfillment.
Feb 5, 2025 You can now define multiple custom providers to use for SMS / voice notifications. In environments with more than one custom provider, you can specify in your notification policies the order of provider preference to use in different geographical locations. For details, refer to the new providerConfiguration object in Notification Policies.
Jan 28, 2025 We've added the ability for an OIDC application to request to terminate a user session from the IdP associated with the user using only the ID token. Refer to GET IdP Signoff for details.
Jan 21, 2025 The platform now supports the LINKEDIN_OIDC identity provider type to specify LinkedIn as an external identity provider. The LINKEDIN type is deprecated and will be removed from the platform in February, 2026. For details, refer to Create Identity Provider (LinkedIn OIDC).
Jan 13, 2025 PingOne Verify added an additional provider, Babel Street Rosette, to enhance matching of biographic data on submitted documents to corresponding data on verified records. A new request, Verify Identity Record Matching provides access to this provider outside the context of a verify transaction. This new request requires a specific license entitlement.
Jan 9, 2025 You can now define a period during which a specific user should be allowed to bypass MFA. Refer to Allow MFA Bypass for User.
Jan 9, 2025 For RADIUS gateways, support has been added for the EAP-MSCHAP v2 protocol. Also, to help block Blast RADIUS attacks, a new object called blastRadiusMitigation has been added. Refer to Gateway Management.
Jan 9, 2025 When defining FIDO policies, you can now include the new publicKeyCredentialHints array to provide public key credential hints to the browser in order to give priority to the authentication method that the user is most likely to use. For details, refer to FIDO Policies.
Jan 7, 2025 For PingOne environments where PingID accounts have been integrated, you can use the new oathTokens endpoint to add OATH tokens to the environment and carry out actions such as revoking or resyncing tokens. For details, refer to OATH tokens and the Create MFA User Device (OATH token) example.

2024

Release Date Description
Dec 18, 2024 The platform now supports DaVinci runtime endpoints for use with the DaVinci SDK. For details, refer to DaVinci Flow Executions.
Dec 9, 2024 When defining FIDO policies, you can now use the new userPresenceTimeout object to specify the amount of time the user has to perform a user presence gesture with their FIDO device before the request expires. For details, refer to FIDO Policies.
Nov 5, 2024 You can now return a refresh token by setting offline_access as a scope on the application's resource grant and including offline_access in the scope parameter of the authorize request. Refer to Authorization for details.
Oct 29, 2024 We've added the SAML property sessionNotOnOrAfterDuration to allow you to specify a custom duration for the lifetime of a SAML assertion. Refer to SAML data model for details.
Oct 16, 2024 You can specify a replacement background of a uniform color to apply to user self portraits with the Update Verified Data Portrait Background request.
Oct 15, 2024 The platform now supports custom admin roles. For details, refer to Roles Management.
Oct 9, 2024 You can now use the emailDeliverySettings endpoint to configure the sending of notifications via an external email service. For details, refer to Email Delivery Settings.
Oct 7, 2024 For SMS, voice, and email authentication, you can now customize the length of the OTP that is shown to users. For details, refer to the new otpLength parameter in the Offline device (SMS, voice, email) authentication policy data model under Device Authentication Policies.
Sep 30, 2024 To help users recognize which application the OTP displayed in their authenticator app is for, your MFA policies can now specify text that should be displayed alongside the OTP. For details, refer to the new uriParameters object in the TOTP device authentication policy data model under Device Authentication Policies.
Sep 20, 2024 We've added the ability to modify Administrator Security to support enhanced admin security. Enhanced security requires the use of PingOne MFA for all admin sign-ons to PingOne. Refer to Administrator Security for more information.
Aug 29, 2024 When retrieving verified data with Read All User Verified Data, you can use the attempt query parameter to limit the number of retries returned and thus reduce the size of the response.
Aug 19, 2024 PingOne Protect now has a risk predictor called Traffic Anomaly intended to detect traffic anomalies in terms of variables such as users, devices, and sessions. The Traffic Anomaly predictor will eventually include a variety of rules, some of which you can select to enable or disable. Currently, the predictor detects situations where there are a large number of risk evaluations requested for a single user within a short period of time, and optionally can also detect situations where the number of users per device during a given period is suspicious. When a risk level of High is calculated for a Traffic Anomaly predictor, the recommendedAction field in the risk evaluation response has the value DENY, indicating that you should probably deny access. To create a Traffic Anomaly predictor, set the type parameter to the new value TRAFFIC_ANOMALY. If you want to also check the number of users per device, use the objects described in the traffic anomaly risk predictor data model. For details, refer to Risk Predictors and Risk evaluations.
Aug 5, 2024 When creating composite predictors, you can now include conditions that check what PingOne user groups the user belongs to. For details, refer to the Composite Risk Predictors section in Risk Predictors and the relevant example.
Aug 5, 2024 The Bot Detection predictor now has an option that you can enable to expand the range of bot activity that PingOne Protect can detect. For details, refer to the new field includeRepeatedEventsWithoutSdk under Risk Predictors.
Jul 22, 2024 For MFA, there is now an option to use dynamic linking to attach a unique identifier to the registration of a FIDO device. For details, refer to MFA devices.
Jul 15, 2024 MFA is now enforced for environment administrators during registration. You can read and update admin sign-on settings using the new Administrator Security endpoints. For details, refer to Administrator Security.
Jul 3, 2024 The Suspicious Device predictor now includes an option to specify that any risk policies that include the predictor will require that the Signals SDK payload be provided as a signed JWT whose signature will be verified before proceeding with risk evaluation. For details, refer to Risk Predictors.
Jun 27, 2024 We've added the new role "Application Owner", enabling you to restrict administrator access to specific applications. Use this role to assign application developers permissions only to the applications they manage. For details, refer to Roles.
Jun 18, 2024 When creating risk evaluations, you can now provide additional detail about the context of the flow by providing a value for flow.subtype in addition to flow.type. For details, refer to Risk evaluations.
Jun 17, 2024 A new endpoint, riskFeedback, has been added to allow you to provide feedback on the accuracy of specific risk evaluations that were carried out. Each such call can include feedback for up to 100 risk evaluations, and for each you can specify a feedback category and a reason for including the evaluation in that category, For details, refer to Providing feedback for risk evaluations.
Jun 4, 2024 For MFA, there is now an option to use dynamic linking to attach a unique identifier to a FIDO transaction. For details, refer to Create a request property JWT and Device authentications data model.
Jun 3, 2024 When creating or updating MFA policies, you can now include a field called promptForNicknameOnPairing to allow users to provide nicknames for devices during pairing. For details, refer to Device Authentication Policies.
May 28, 2024 The Forms service now supports a social login button as a field type option. For details, refer to Forms.
May 6, 2024 The platform now supports the AU (Australia/Asia Pacific) region. The platform continues to support the AP (Asia Pacific) region. However, if your environments use the AP region designation (api.pingone.asia domain) for Asia-Pacific countries, be aware that this region does not support the migration of PingID customers (or the PingID product) to the PingOne platform. To get PingID platform support for your Asia-Pacific environments, use the AU region designation (api.pingone.com.au domain) when creating your new environments. For details, refer to Working with PingOne APIs.
Apr 24, 2024 The Resources service now provides a property to add application permissions to access tokens. For details, refer to Resources.
Apr 8, 2024 Simplify changing your PingOne regional domain with an environment variable, tld, in the public PingOne environment template that represents the top level domain (TLD) for your PingOne domain, such as com or eu. All the {{...Path}} variables, such as {{apiPath}} and {{authPath}}, reference {{tld}}. To change your region's top level domain, merely change the value of {{tld}}. Refer to PingOne API domains for more information.
Apr 4, 2024 With Managed Credential Issuance, client applications can issue and update credentials using Create Credential Type (managed) rather than an Issuance Rule.
Apr 3, 2024 You can submit a redirect URL and redirect message, used and seen by users when submitting verification documents, in the body of Create Verify Transaction.
Apr 3, 2024 You can issue and update user credentials via a Create a User Credential or Update a User Credential call rather than an Issuance Rule.
Apr 3, 2024 When you create a trusted email domain, PingOne now prepares an additional text record that reflects the association of the domain with the specific PingOne environment. If you add this new record to your DNS, any "sender" email address belonging to the domain is set to active status as soon as you create it, with no need for a verification email. For details, refer to Trusted Email Domains.
Apr 2, 2024 FIDO policies now include an option called aggregateDevices that you can use to specify that the displayed list of available authentication methods should include only a single generic entry for FIDO2 devices, even if the user has multiple paired FIDO2 devices. For details, refer to FIDO Policies. With the introduction of this feature, responses to requests that use the deviceAuthentications and flows endpoints may now include a field called aggregateFido2Devices, indicating whether the available authentication method list should include only a single generic FIDO2 option.
Mar 12, 2024 We've added the new LDAP Gateway attribute userTypes.updateUserOnSuccessfulAuthentication. When enabled, on user sign on, user attributes are updated based on responses from the LDAP server. For details, refer to Gateway LDAP data model.
Mar 4, 2024 The external IdP service now supports PKCE. A new pkceMethod property has been added to the base IdP data model. For details, refer to Identity Provider Management.
Mar 4, 2024 PingOne Protect now has a new risk predictor called Email Reputation to detect the use of disposable email addresses during registration. The value of the type parameter for this predictor is EMAIL_REPUTATION. For details, refer to Risk Predictors. For risk evaluations based on policies that include an email reputation predictor, the response may include a value of TEMP_EMAIL_MITIGATION for the result.recommendedAction field. For details, refer to Risk evaluations.
Mar 4, 2024 For risk evaluations that use a risk policy with the New Device predictor, the response now includes the field details.device.lastSeen, which represents the date and time that the device was last seen. If an externally-maintained device ID was provided in the risk evaluation request, the response will include externalLastSeen for the date and time that the device was last seen. For details, refer to Risk evaluations.
Feb 28, 2024 For situations where a user did not receive the one-time passcode (OTP) that was sent for pairing a device, you can now use the devices endpoint to resend the OTP. For details, refer to Resend Pairing Code.
Feb 21, 2024 The platform now supports the device_code device authorization grant type on an application configuration, and it also provides endpoints to initiate and manage a device authorization flow. For details, refer to Device Authorization Grant.
Feb 20, 2024 A new field, fidoUserVerification, was added to the information that can be included in MFA device reports generated with the dataExplorations endpoint. For details, refer to Reporting.
Feb 14, 2024 PingOne now supports the CLIENT_SECRET_JWT and PRIVATE_KEY_JWT token endpoint authentication methods for OIDC applications. For details, refer to the jwks and jwksUrl properties in Application Operations, the client_assertion and client_assertion_type properties in OpenID Connect/OAuth 2, Token (authorization_code) (CLIENT_SECRET_JWT), Token (authorization_code) (PRIVATE_KEY_JWT), and Configure CLIENT_SECRET_JWT as the Token Auth Method.
Feb 12, 2024 PingOne Protect now has a new risk predictor to prevent Adversary-in-the-Middle (AitM) attacks. To create an AitM predictor, set the type parameter to the new value ADVERSARY_IN_THE_MIDDLE and use the whiteList parameter to specify the legitimate domains that your users will access for your restricted resources. For details, refer to Risk Predictors.
Feb 5, 2024 PingOne Verify no longer reads or uses verifyStatus on the user. The PingOne Neo Verify Verify Status endpoint, /environments/{{envID}}/users/{{userID}}/verifyStatus and its two operations, Read User Verification Status and Update User Verification Status at the same URL, are deprecated. The endpoint and requests will be removed February 2025.
Jan 19, 2024 We've added the icon property to the Environments service, enabling you to assign an icon to a PingOne environment. Refer to the Environments data model for details.
Jan 16, 2024 The platform's client secret configuration now supports optional parameters to designate the replaced secret as a "previous" secret that remains valid for a specified period, up to 30 days. For details, refer to Update Application Secret and Create Resource Client Secret.
Jan 11, 2024 The platform supports the PingOne Authorize application resources and roles services, which provide endpoints to define custom resources, roles, and permissions to protect external application resources. For details, refer to PingOne Authorize Application Resources and Roles.
Jan 8, 2024 The platform supports reduced self-service scopes when the mfa authentication method is not included as an amr claim value in the token. For details, refer to PingOne self-management scopes.
Jan 7, 2024 Changes have been made to the steps required to retrieve MFA device reports generated as files. This is reflected in the responses to the relevant requests. For details, refer to Reporting. Note that the .zip file containing the report is now password-protected and cannot be opened without the password that is returned.
Jan 4, 2024 A field called device.externalId has been added to the Event data model for risk evaluations. You can use this field to send an externally-maintained device ID to the risk evaluation. If you provide such an ID, that is the device ID that will be used rather than the device ID provided by the Signals SDK. For details, refer to Risk evaluations.
Jan 3, 2024 We've added a corsSettings object to support applications using cross-origin resource sharing (CORS). Refer to Cross-origin resource sharing, and the corsSettings properties in the Applications data models for OIDC, SAML, and WS-Federation.

2023

Release Date Description
Dec 15, 2023 You can now set and get the default identity provider (IdP) for a population. Refer to Update Population Default IdP and Read One Population Default IdP for details.
Dec 8, 2023 PingOne Platform API collections in the PingOne public workspace now use Postman Collection-Level Authorization of type bearer. All requests that use bearer token authorization are now set to Inherit authorization from parent.
Dec 4, 2023 The PingOne Neo Verify User Data endpoint, /environments/{{envID}}/users/{{userID}}/verifyTransactions/{{transactionID}}/userData and its only operation, Read User Verification Data at the same URL, are deprecated. The endpoint and request will be removed December 2024.
Dec 4, 2023 The New Device Paired notification template now has an optional variable called report.fraud. If you include this variable, the notification will include a link for reporting fraudulent pairing attempts. For details, refer to Notifications Templates.
Nov 16, 2023 We've added documentation for the supported password encoding schemes. Refer to Password encoding for more information.
Oct 24, 2023 You can now assign admin roles to user groups. Refer to Group Role Assignments.
Oct 12, 2023 PingOne now supports outbound mutual TLS (mTLS) authentication with webhooks. You can upload a key with a usageType of OUTBOUND_MTLS and pass the ID to the tlsClientAuthKeyPair.id property when creating or updating a webhook. For more information, refer to Subscriptions (webhooks).
Oct 4, 2023 Added the displayName, sourceId, and sourceType parameters to allow querying of external user groups. Refer to Groups.
Sep 19, 2023 When creating composite predictors, it is now possible to create additional sets of conditions to form an if / else if structure. To facilitate this, the composition object has been replaced with an array called compositions. To ensure backward compatibility, requests that contain the single composition object are still supported. For details, refer to Risk Predictors.
Sep 18, 2023 When providing the flow type as input for a risk evaluation, you can now use other types in addition to AUTHENTICATION. The new flow types supported are: REGISTRATION, ACCESS, AUTHORIZATION, and TRANSACTION. Refer to Risk Evaluations.
Sep 18, 2023 In the MFA Settings for an environment, you can now specify whether MFA should be enabled by default for a user when their account is created. For details, refer to users.mfaEnabled in MFA settings.
Sep 14, 2023 If you create a pairing key that is shared by multiple applications, but define different pairing key lifetimes for the different applications, all the applications using the pairing key now use the most strict setting that you specified for key lifetime (shortest time).
Sep 7, 2023 We've added a Correlation-Id setting in the header of Phone Delivery Settings requests to the custom provider enabling you to track notifications sent by the custom provider using the Correlation-Id value. Refer to Phone Delivery Settings.
Sep 5, 2023 We've added information regarding how to handle client secret updates for external identity providers. Refer to Update Identity Provider.
Sep 5, 2023 You can now specify Elliptical Curve Digital Signature Algorithm (ECDSA) signing certificate algorithms for your SAML identity providers and applications. Refer to Create Identity Provider (SAML) and SAML Application Settings Data Model.
Aug 10, 2023 You can now use the RequestedAuthnContext parameter to specify lower-priority application flow policies for SAML applications. Refer to Application Flow Policy Assignments.
Jul 31, 2023 Added a new endpoint to PingOne Authorize to manage API service deployment. Refer to API Service Deployment.
Jul 26, 2023 We've added the new roles DaVinci Admin and DaVinci Read-Only Admin. Currently, you cannot assign these roles to a Worker app. For details, refer to Roles.
Jul 5, 2023 A new field called newDeviceNotification has been added for MFA policies to allow you to specify that users should receive an SMS or email notification when a new device is added to their account. For details, refer to Device Authentication Policies.
Jul 5, 2023 New fields were added to the information that can be included in MFA device reports generated with the dataExplorations endpoint: deviceIntegrityStateCompromised, deviceIntegrityStateReason, deviceIntegrityStateTimestamp, deviceIntegrityStateAdvice, extension, fidoBackupEligibility, fidoBackupState, lastDeviceTrxTime. For details, refer to Reporting.
Jun 30, 2023 Two new risk predictors - Bot Detection and Suspicious Device - have been added. For details, refer to Risk Predictors and Risk Evaluations.
Jun 30, 2023 For including data from the Signals SDK in risk evaluations, the data in now sent using the sdk.signals.data property rather than sending the data in the header of the request. For details, refer to Risk Evaluations.
Jun 20, 2023 In MFA policies, you can now disable pairing for specific authentication methods. You can use this option if you want to phase out an existing authentication method but want to allow users to continue using the method for authentication for existing devices. Refer to pairingDisabled in Device Authentication Policies.
Jun 19, 2023 To provide support for passkeys, Fido policies have been expanded significantly. For details, refer to FIDO Policies. Note that FIDO policy requests now use the endpoint environments/{{envID}}/fido2Policies and not environments/{{envID}}/fidoPolicies. In the framework of these changes, support was added for a new MFA device type called FIDO2. For details, refer to MFA Devices.
Jun 15, 2023 Requests that use the flows endpoint and the deviceAuthentications endpoint now include additional device status information in the response: usableStatus, pushStatus, and otpStatus. For details, refer to Flows and MFA Device Authentications.
Jun 12, 2023 PingOne MFA has moved to Firebase Cloud Messaging for sending push messages. This impacts the credentials you must enter when enabling push notifications for Google Play-based mobile applications. For details, refer to Application MFA Push Credentials.
Jun 1, 2023 We've fixed an issue with the Try a Request feature in the documentation. We've re-enabled this feature for all endpoints except the authorization endpoints (identified by the {{authPath}} variable). The Try a Request feature has always been blocked for these endpoints, due to a CORS constraint.
May 18, 2023 You can now choose to include the IP address of an actor and the user-agent HTTP header of an event in the source section of a subsciption audit event. Refer to Create Subscriptions.
May 8, 2023 It is now possible to have one-time passwords delivered via voice to phone numbers that include extensions. For details on enabling support for phone numbers with extensions, refer to MFA Settings.
Apr 28, 2023 PingOne now supports a Language Translations service, which provides operations to view the custom string translations for a specified language and to update localized strings for specified user interface elements. For details, refer to Language Translations.
Apr 25, 2023 DaVinci no longer ignores the pi.flow OAuth property. For details about pi.flow, refer to the OpenID Connect/OAuth2 data model.
Apr 23, 2023 When creating notification policies, you can now use the quotas array to limit the use of email messages for pairing and authentication. For details, refer to Notification Policies.
Apr 19, 2023 For integrity checking on Android devices, PingOne MFA now uses Google's Play Integrity API. This requires you to provide additional information from your Google service account if you want to create or update an application that uses integrity checking. For the details of the new mandatory fields, refer to the Applications OIDC settings data model table in Application Operations and the Create Application (OIDC Protocol - Native App) sample.
Apr 14, 2023 PingOne now supports the Forms service, which provides tools for administrators to create custom forms presented to users during the authentication workflow. For details, refer to Forms and Forms Recaptcha.
Apr 3, 2023 When creating notification policies, you can now use the countryLimit object to limit the countries where you can use SMS and voice notifications. For details, refer to Notification Policies.
Mar 27, 2023 PingOne now supports the SCIM 2.0 identity management standard for provisioning users into PingOne Directory. Currently we support the /Users endpoint with basic SCIM to PingOne Directory attribute mapping. For details, refer to SCIM.
Mar 27, 2023 When creating or updating New Device risk predictors, you can now use the activationAt parameter to specify a date on which the learning process for the predictor should be restarted. This can be used in conjunction with the fallback setting (default.result.level) to force strong authentication when moving the predictor to production. For details, refer to Risk Predictors.
Mar 26, 2023 In addition to combining existing predictors, you can now include the following risk factors in your composite predictors: country, state, IP range, IP domain organization, ISP, target resource (application). For details, refer to Risk Predictors.
Mar 16, 2023 We've added new Sessions endpoints to Reset the Authentication Session by Session ID or Reset the Authentication Session by Session Token.
Mar 13, 2023 When defining the settings for mobile applications in an MFA policy, you can now use the new pairingKeyLifetime object to specify how long an issued pairing key can be used until it expires. For details, refer to Device Authentication Policies.
Mar 13, 2023 You can now define the number of consecutive push notifications that can be ignored or rejected by a user within a defined period before push notifications are blocked for an application. Use this setting to prevent attacks based on repeated push notifications that may lead users to eventually accept the authentication request. For details, refer to the documentation for the pushLimit object in Device Authentication Policies.
Feb 01, 2023 The platform now supports properties for enumerated values and regular expression validation in the schema data model. For details, refer to Schemas.
Jan 10, 2023 You can now configure Android applications to use Huawei Mobile Services. For details, refer to Application Operations and Application MFA Push Credentials.
Jan 10, 2023 You can now use the dataExplorations endpoint to generate reports of MFA devices. For details, refer to Reporting.
Jan 10, 2023 For notification templates of type "Push", it is now possible to specify a push category to control the type of banner that is displayed to the user. For details, refer to Notification Templates.
Jan 3, 2023 You can now use the riskPredictors endpoint to create New Device predictors, which allow your risk policy to take into account the risk associated with users trying to access applications from unknown devices or devices that have not been used in the recent past. For details, refer to Risk Predictors.
Jan 3, 2023 In MFA policies, it is now possible to specify how much time users have to respond to a push notification before it expires. This period can be defined separately for each mobile application included in the MFA policy. For details, refer to Device Authentication Policies.
Jan 3, 2023 The default method to use for MFA is now set at the MFA policy level rather than at the environment level. For details, refer to Device Authentication Policies.
Jan 3, 2023 It is now possible to block a user's MFA device, and to unblock a device that is currently blocked. For details, refer to MFA Devices.

2022

Release Date Description
Dec 15, 2022 It is now possible to use the API to unlock a device that was locked-out due to too many failed MFA attempts, even if the defined waiting period has not yet elapsed. For details, refer to MFA Devices.
Dec 15, 2022 It is now possible to use the gateways endpoint to create a RADIUS gateway. For details, refer to Gateway Management.
Dec 8, 2022 We've added properties to support applications using WS-Federation. Refer to the Applications base data model and the Applications WS-Federation settings data model for more information.
Dec 2, 2022 We've added an email verification endpoint to verify a user's email through a verification code. Refer to User Email Verification.
Nov 22, 2022 You can now use the hiddenFromAppPortal property to hide an application in the application portal, overriding your configured group membership access policy. Refer to Applications base data model.
Oct 26, 2022 You can now use the nameFormat property to define the naming format for attributes other than Subject. Refer to Applications attribute mapping data model.
Oct 26, 2022 We've added the initiateLoginUri and targetLinkUri properties to the Applications OIDC data model.
Oct 25, 2022 The Token Introspection Endpoint now supports authentication with a Resource ID and Secret. Refer to POST Token Introspection (Resource ID and Secret) and Resource Secret.
Oct 21, 2022 You can now allow a wildcard character in the Redirect URI for OIDC applications. Refer to Applications OIDC settings data model.
Oct 19, 2022 PingOne Risk now includes an SDK that allows you to obtain additional risk-related data and pass the data to the risk evaluation, resulting in improved detection. The riskEvaluations endpoint can now take the data provided by the SDK in a header called X-SDK-DATA-PAYLOAD. For details, refer to the documentation for creating risk evaluations.
Sep 28, 2022 To simplify automated testing of your applications, you can now create dedicated testing devices. When you use the API to send authentication requests to such a device, the OTP is not sent to the actual device, but instead is returned as part of the body of the response. Refer to MFA Devices.
Sep 15, 2022 We've added support for the WS-Federation protocol to the Application Management service. This supports Microsoft's Office365 and Azure integration with PingOne. Refer to Create Application (WS-Federation Protocol) for more information.
Aug 31, 2022 When using the mfaSettings endpoint to update MFA settings, you can now use pairing.pairingKeyFormat to specify the type of pairing keys that should be used - 12-digit numeric keys or 16-character alphanumeric keys. Existing environments will continue to use the 12-digit numeric keys unless changed. New environments will use the 16-character keys by default.
Aug 31, 2022 It is now possible to create composite predictors - for situations where you are interested in combining a number of risk predictors into a single predictor. Refer to Risk Predictors.
Aug 26, 2022 The platform now supports adding custom claims to an OpenID Connect scope. Refer to Resource Scopes.
Aug 18, 2022 We've added a default property to the Populations endpoint, enabling you to assign a default population to an environment. Refer to Populations.
Aug 14, 2022 When creating or editing an MFA policy, you can now use the field mobile.applications[].integrityDetection to specify how registration and authentication attempts should be handled if a response is not received for device integrity: continue with the flow or block the user. For details, refer to Device Authentication Policies.
Aug 14, 2022 When defining a mobile application, you can now use mobile.integrityDetection.excludedPlatforms in conjuction with mobile.integrityDetection.mode to enable device integrity checking only for Android or only for iOS. For details, refer to Application Operations.
Aug 2, 2022 You can now use Kerberos to sign-on users. Refer to Gateway LDAP data model in Gateway Management and the Sign On with Kerberos request.
Aug 2, 2022 You can now force a reset of the password identified by the user ID and environment ID without the administrator supplying a password. Refer to Force Change Password request.
Aug 2, 2022 It is now possible to use the API to create and manage FIDO policies, which can then be included in device authentication policies. For details, refer to FIDO Policies and Device Authentication Policies.
Aug 1, 2022 It is now possible to use the riskPolicySets endpoint with conditions of type AGGREGATED_SCORES to create score-based policies. Refer to Risk Policies.
Jul 18, 2022 For sign-on policies in PingOne, MFA steps are added now by referencing an existing MFA policy rather than having to define the specific authentication methods that are allowed for the policy. For details, refer to Sign-On Policy Actions.
Jul 14, 2022 The platform now includes PingFederate admin roles, allowing admins to SSO from PingOne into PingFederate with the appropriate permissions for their role. Refer to Roles.
Jul 10, 2022 For organizations that prefer to maintain their own user device information, it is now possible to initiate authentication while providing the information necessary for contacting the user. Refer to the documentation for the selectedDevice object in MFA Device Authentications.
Jul 7, 2022 It is now possible to create passwordless authentication flows that require only FIDO2 authentication with no need for the user to provide their username. To use this feature, use the rp.id property in the request body for deviceAuthentications. For details, refer to MFA Device Authentications.
Jun 6, 2022 You can now define notification policies to limit the use of SMS and voice messages for pairing and authentication. For details, refer to Notification Policies.
Apr 28, 2022 The platform now includes the PingOne Authorize API access management service, which provides tools to externalize the management and evaluation of access control policies for HTTP-based APIs. Refer to PingOneAuthorize API Access Management.
Apr 25, 2022 MFA Native SDK v1.7.0 now supports authentication code flows for Android and iOS operating systems. Refer to Authentication code flow. SDK v1.7.0 also supports elliptic-curve cryptography (ECC) for signing and verifying mobile requests. This feature uses iOS secure enclave capabilities.
Apr 25, 2022 The platform now includes endpoints that initiate an authentication code flow. Refer to MFA Authentication Code. The platform includes a new uriPrefix property on the application's mobile object that specifies a valid app/universal link or app schema to enable direct triggering of the mobile application when scanning a QR code. Refer to Application Operations.
Mar 11, 2022 The platform now requires a minimum password length of 8 - 32 characters. For more information, refer to Password Policies.
Mar 07, 2022 The platform now supports a hybrid flow authorization request, in which some tokens are returned from the authorization endpoint, and others are returned from the token endpoint. For more information, refer to GET Authorize (hybrid GET) and POST Authorize (hybrid POST).
Feb 09, 2022 The platform now supports a policy.id property for MFA devices that specifies the device authentication policy ID associated with the device resource. For more information, refer to MFA Devices and MFA Pairing Keys.
Feb 04, 2022 The platform now supports a PingFederate-SSO platform application, which is created automatically if the PingOne environment includes PingFederate. For more information, refer to Application Management.
Jan 13, 2022 Custom risk predictors cannot be referenced as an attribute in a placeholder details list (${details.<attribute>}). Refer to Custom risk predictor conditions in Risk Predictors for more information.

2021

Release Date Description
Dec 27, 2021 The platform now supports configuring the whiteList property on a per risk predictor basis. For information about risk predictors that support the whiteList property, refer to Risk Predictors.
Dec 27, 2021 The platform now supports the User Location Anomaly risk predictor. Refer to Risk Predictors.
Dec 23, 2021 For authorization requests that return an invalid request object error, the error message now includes additional details about the INVALID_VALUE. For example, the old detail message stated this: "The request parameter contains an invalid Request Object". The new detail message provides specific information about the validation error: "The request parameter contains an invalid Request Object: The token signature is invalid.".
Dec 17, 2021 The Integration Catalog has been updated to easily retrieve application integration information and assets.
Dec 17, 2021 The image service API now returns a regionalized URL for any new images uploaded. For example, if you are in the EU and use pingone.eu, then uploaded images will now be in this format "https://uploads.pingone.eu/environments/..." instead of "https://uploads.pingone.com/environments/..." . This regionalization is also applicable to uploaded images in the .asia and .ca regions. Old image URLs will still work as expected. For more information, refer to Images.
Dec 16, 2021 The platform now supports configuration of policies for MFA enrollment and authentication transactions in PingOne Flows.
The apiPath/environments/envID/deviceAuthenticationPolicy endpoint is deprecated, but still supported. No immediate code change are required, but it's recommended to change to the new apiPath/environments/envID/deviceAuthenticationPolicies endpoint.
Refer to Device authentication policies that now supports the following operations:
Dec 15, 2021 The platform now includes endpoints that initiate and complete an MFA action without requiring a call to the PingOne authorize service. For more information, refer to MFA Device Authentications.
Dec 15, 2021 The platform now supports the ability to configure short codes and toll-free origination numbers to send SMS and voice notifications to recipients in multiple countries.
Refer to the supportedCountries property in the Custom provider phone number properties table.
Dec 12, 2021 The platform now supports configuration of untrusted sender email addresses at the email notification template content level, when using a custom email sender.
Refer to Content properties.
Dec 08, 2021 The platform now provides easier integration with custom providers' remote gateways, including support for dispatching voice notifications.
This implementation uses the GET and POST operations and customizable body and headers.
Basic and bearer authentication methods are supported.
Refer to Phone delivery settings.
Dec 07, 2021 The platform now includes decision endpoints that allow efficient evaluation of policies developed in the PingOneAuthorize Policy Editor Service. For more information, refer to PingOneAuthorize Policy Decision Service.
Nov 08, 2021 The platform now supports a JSON array PATCH action to update targeted elements on a user object. For more information, refer to Update User (Patch JSON Array).
Oct 25, 2021 The notifications settings property, notificationsSettings.defaultLanguage, has been removed from the platform. When required, notifications use the environment's default language, which is set using the /environments/{{envID}}/languages endpoint. For information about notification content and language selection, refer to Runtime logic for content selection. For information about an environment's default language, refer to Language Management.
Oct 04, 2021 Ping Identity has added a Canada regional data center, that will provide enhanced performance and response on services for Canadian customers accounts hosted on this data center.
Canada data center domains:
  • Management APIs: api.pingone.ca
  • Authentication and authorization APIs: auth.pingone.ca
Sep 30, 2021 The platform now supports the Identity Data Read Only Admin role. Refer to Roles.
Sep 30, 2021 The platform now supports custom risk predictors. Refer to Risk Predictors.
Sep 2, 2021 The platform now supports connecting to external LDAP directories to validate user credentials. Refer to Gateway Management.
Aug 31, 2021 The platform now supports configuration of your own provider for dispatching SMS notifications. Refer to Phone delivery settings.
The phoneDeliverySettings.provider field now supports the new CUSTOM_PROVIDER valid value.
The new POST Create Phone Delivery Settings and PUT Update Phone Delivery Settings operations use the new custom provider phone delivery settings properties:
  • name
  • provider
  • authentication object
  • requests object
  • numbers object

Note: This implementation uses the POST operation and non-customizable body and headers. It requires customers to create a gateway that receives these requests in their simple, static format, and translates those requests into their custom provider's supported SMS format.
Aug 12, 2021 From MFA Native SDK v1.6.0, the platform supports mobile device integrity checks.
  • The native device's rooted property is deprecated, and is replaced by deviceIntegrityState. Refer to Native Device Properties in MFA devices.
  • The application's packageName and bundleId properties have been moved to the new mobile object. Refer to Application Operations.
  • The pairing key object has a new error property, and the status property has the new FAILED value. Refer to MFA pairing keys.
Jul 29, 2021 The following properties have been added to the risk evaluations details data model: state, city, previousSuccessfulTransaction.state, previousSuccessfulTransaction.city. Refer to Risk evaluations.
Jul 26, 2021 The platform now supports the Credentials Issuance service, enabling you to create custom verifiable credentials for users. Refer to Credentials Issuance.
Jul 14, 2021 The platform now supports configuration of your MFA authentication methods according to your security policies, including passcode refresh time (mobile applications), passcode retry attempts, passcode lifetime duration, and device block duration times. Refer to Device authentication policies.
Jun 30, 2021 The platform now supports dispatching SMS and voice notifications via your organization's own Syniverse account in place of Ping Identity's account or your own Twilio account.
The phoneDeliverySettings.provider field now supports the new CUSTOM_SYNIVERSE valid value.
The fallback option uses the smsProvidersFallbackChain property. For more information refer to Phone delivery settings. To configure an SMS and voice provider fallback chain refer to Notifications settings.
Jun 30, 2021 The platform now supports pairing a phone number as an MFA method using a voice call OTP, and subsequent voice call OTP authentication notifications to paired phone numbers.
The following new operations were added:Existing services have been extended to include voice OTP:
  • Support for voice OTP as an MFA method in a sign-on policy. Refer to the voice and voice.enabled properties in the MULTI_FACTOR_AUTHENTICATION action data model in Sign-On Policy Actions.
  • Support for voice as one of the Notification Template's deliveryMethods, and custom notification with the creation of an SMS, voice or email MFA device. For more information, refer to Custom device pairing notification with device creation.
May 06, 2021 The platform now supports just-in-time provisioning of new users who authenticate with a registered authoritative external identity provider. Refer to Identity Provider Management and Users.
May 05, 2021 The platform now provides the number of OTP attempts remaining in the error message detail as part of the Check One-Time Passcode action and Activate MFA User Device action.
Apr 13, 2021 The platform now provides a Risk Advanced Predictors endpoint to include advanced predictor criteria for risk policies. For more information, refer to PingOne Risk, Risk Advanced Predictors, and Risk Policies.
Apr 08, 2021 If you attempt to create or update a custom content for an existing combination of template, locale, deliveryMethod and variant, you now get an INVALID_DATA/UNIQUENESS_VIOLATION error.
Mar 24, 2021 The platform now provides a sign-on policy action that bypasses the PingOne sign-on screen and immediately redirects the user to an external identity provider's sign-on workflow to authenticate. For more information, refer to Sign-On Policy Actions and External Authentication.
Mar 19, 2021 The platform now provides a user account management endpoint to unlock a user account. For more information, refer to User Accounts, Users, Sign-On Policy Actions, MFA Settings, and Flows.
Feb 23, 2021 The platform now supports the ability to prompt end users with your own legal text during registration and sign on. The platform records a user's active consent to the document before proceeding with the flow. For more information, refer to Agreement Management, User Agreement Consents, Sign-On Policy Actions, and Flows.
Feb 23, 2021 The platform now supports text and language customization for all end user interfaces and notifications. In this initial release, it supports the new Agreements (terms of service) feature. For more information, refer to Language Management.
Feb 03, 2021 The platform now supports groups for users. For more information, refer to Groups.
Feb 03, 2021 The platform now includes optional accessControl properties on applications that, when set, specify the conditions that must be met by an authenticating actor to access the application. For more information, refer to Control access to applications through roles and groups.
Feb 02, 2021 The platform now supports multiple custom contents for each template + deliveryMethod + locale combination with the variant property. For more information, refer to Notifications templates.
Feb 02, 2021 The platform now supports a custom notification with the creation of an email or SMS MFA device. For more information, refer to Custom device pairing notification with device creation.
Feb 1, 2021 The platform now includes the PingOne Verify APIs, and the PingOne Verify native SDKs.
Jan 19, 2021 The platform now includes endpoints to read and update MFA settings. For more information, refer to MFA Settings.
Jan 19, 2021 The platform includes support for FIDO2 bound biometrics devices and FIDO2 or U2F security key devices. For more information, refer to FIDO2 Devices.
Jan 11, 2021 The platform now supports device ordering to create a default active device. For more information, refer to Device order.
Jan 08, 2021 The platform now supports external registration, which provides a sign-on action to register a user using an external identity provider's registration workflow. For more information, refer to Flows and Sign-On Policy Actions.

2020

Release Date Description
Dec 30, 2020 The platform now supports a maximum allowed devices setting for paired devices and a device nickname property used during authentication. For more information, refer to Maximum allowed devices and Device properties.
Dec 14, 2020 The platform now supports risk policy sets and risk evaluations. For more information, refer to PingOne Risk.
Dec 14, 2020 The platform now supports using the token endpoint so that the client can make a token exchange request to the PingOne authorization server. For more information, refer to Token Exchange (Gateway Credential).
Dec 09, 2020 The application protocol data model property no longer supports the NONE option. For more information, refer to Application Operations.
Dec 03, 2020 Notifications content variables are now case insensitive. For more information, refer to Notifications Templates.
Oct 15, 2020 The platform now supports an alerting service that delivers high-level email warnings about resource states. For more information, refer to Alerting.
Oct 13, 2020 The platform now supports a Time-based One-time Password (TOTP) authenticator application device type. For more information, refer to Create MFA User Device (TOTP) and Sign-on Policy Actions.
Sep 29, 2020 The platform now supports the PingOne MFA product. For more information, refer to Getting Started with PingOne MFA.
Sep 22, 2020 The platform now supports the ability to select and customize the branding themes that you can apply to your sign-on screens. For more information, refer to Branding.
Sep 21, 2020 The platform now supports self-management access control scopes that allow organizations to specify which user profile attributes are accessible to end users. For more information, refer to Access services through scopes and roles and Resource scopes.
Sep 14, 2020 The platform now includes endpoints to manage Yahoo, Microsoft, GitHub, and PayPal external identity provider configurations. For more information, refer to Identity providers.
Jul 21, 2020 The platform now supports the ability to configure a trusted email domain for each environment. A trusted email domain with its associated email addresses enable PingOne to send emails on your organization's behalf. For more information refer to Trusted email domains and Trusted email addresses.
Jul 07, 2020 The platform now supports configuration of sign-on policies to determine whether MFA is required for authentication requests detected as originating from an anonymous network such as an unknown VPN, proxy or anonymity communication tool such as Tor. It is possible to exclude specific IP addresses using a whitelist. Refer to the anonymousNetwork condition in the Condition Variables table in the Sign-on Policy Actions page.
Jun 25, 2020 The platform now includes endpoints to manage Apple external identity provider configurations. For more information, refer to Identity providers.
Jun 24, 2020 The platform now includes endpoints to manage Amazon external identity provider configurations. For more information, refer to Identity providers.
Jun 24, 2020 The platform now includes endpoints to manage Twitter external identity provider configurations. For more information, refer to Identity providers.
Jun 16, 2020 The platform now supports despatching SMS notifications via your organization's own Twilio account in place of Ping Identity's account. This also allows for the option of falling back to Ping's account in the event of notification failure, using the new smsProvidersFallbackChain property. For more information refer to Phone delivery settings. Refer to Notifications settings to configure an SMS provider fallback chain.
Jun 16, 2020 The platform now supports transaction approval when strong authentication is required for elevated security for a high value transaction, or high risk resource or service. This includes use of the new request property in the following OIDC operations: GET Authorize (authorization_code GET)), POST Authorize (authorization_code POST), GET Authorize (implicit GET) and POST Authorize (implicit POST). Transaction approval also permits use of the new allowDynamicVariables property in Notifications templates.
Jun 16, 2020 From Native SDK v1.3.0, the platform supports extra verification on device authorization. For more information refer to the extraVerification property in Sign-on policy actions.
May 05, 2020 The platform now provides an interface for third-party auditing tools to subscribe to and consume PingOne audit activity events. For more information, refer to Subscriptions (webhooks).
Apr 30, 2020 The platform now supports a token revocation endpoint. For more information, refer to Token revocation.
Apr 15, 2020 The platform now supports an identity-provider initiated SAML authentication single sign-on flow. For more information, refer to SAML 2.0.
Apr 15, 2020 The sign-on policy service now includes an IDENTIFIER_FIRST sign-on policy action. For more information, refer to Sign-on policy actions.
Apr 03, 2020 The sign-on policy service now includes a PROGRESSIVE_PROFILING sign-on policy action. For more information, refer to Sign-on policy actions.
Apr 03, 2020 The licenses and capabilities services now include properties that designate whether the license allows the creation of custom domains. For more information, refer to Licensing and Capabilities.
Apr 03, 2020 The flow service has changed so that a session token cookie is set only after the identity of the user has been partially established. For more information, refer to Identity providers.
Apr 03, 2020 The platform now includes endpoints to manage OpenID Connect external identity provider configurations. For more information, refer to Identity providers.
Mar 31, 2020 The platform now supports configuration of sign-on policies to determine whether MFA is required for authentication requests detected as having high-risk IP reputation and geovelocity anomalies. Refer to the geovelocity and IP reputation Condition variables on the Sign-on policy actions page.
Mar 31, 2020 From Native SDK v1.2.0, the platform includes the ability to get logs from authenticating user native devices for investigation and support. Refer to Devices API operations on the Devices page.
Mar 31, 2020 From Native SDK v1.2.0, the platform includes the ability to send logs from authenticating user native devices to the PingOne server, for investigation and support.
Mar 31, 2020 From Native SDK v1.2.0, the platform supports automatic device authentication. Refer to PingOne Native SDK flows.
Mar 13, 2020 The platform now includes an identity propagation API that provides for configurable and audit-capable propagation of identities and their attributes between identity stores owned or managed by a customer. For more information, refer to Identity propagation.
Mar 11, 2020 The platform now includes an identity provider discovery login flow that initiates actions to identify the user and determine the applicable authentication methods for this user. For more information, refer to Identifier first action and Get a flow.
Mar 11, 2020 The platform now includes a progressive profiling authentication flow that prompts users to provide additional data at sign on. For more information, refer to Progressive profiling action and Submit profile data.
Feb 19, 2020 The set password action now includes an optional bypassPolicy property that specifies whether the user's password policy should be ignored. For more information, refer to Set password.
Feb 10, 2020 The platform now includes an endpoint to view and license capabilities. For more information, refer to Capabilities.
Jan 13, 2020 The platform now includes an endpoint to view and update the name property value for a license. For more information, refer to Licensing.

2019

Release Date Description
Dec 17, 2019 The platform now supports a token introspection endpoint. For more information, refer to Token introspection.
Dec 10, 2019 The platform now supports password policy customization. For more information, refer to Password policies.
Dec 10, 2019 The platform now supports configuration of a Proof Key for Code Exchange (PKCE) authorization workflow. For more information, refer to OpenID Connect/OAuth 2 and Configure a PKCE authorization workflow.
Dec 10, 2019 The platform now supports custom domains. For more information, refer to Custom domains.
Dec 10, 2019 The platform now includes endpoints to manage LinkedIn external identity provider configurations. For more information, refer to Identity providers.
Dec 10, 2019 The platform now includes endpoints to customize ID tokens for a OIDC applications. For more information, refer to Attribute mapping.
Dec 09, 2019 The Native SDK supports automatic enrollment through OIDC authentication.
Oct 10, 2019 The Native SDK sample app for Android now has notification banners.
Oct 10, 2019 The Native SDK Android component dependencies have been updated: the Nimbus library has been replaced by Jose4J. Refer to Pingone Native SDK > Android > Set up a native app using the PingOne SDK sample code > Add the PingOne SDK component into your existing project.
Oct 10, 2019 The iOS Native SDK API now requires Swift 5.1. Refer to Pingone Native SDK > iOS > Set up a native app using the PingOne SDK sample code > Xcode integration for software prerequisites.
Oct 10, 2019 Logs appeared in the Android developer console. This has been resolved so that they no longer appear. (P14CMFA-3242)
Oct 03, 2019 The platform now includes endpoints to view authentication statistics on a per application basis. For more information, refer to Authentications per application.
Aug 30, 2019 The platform now includes endpoints to manage Google external identity provider configurations. For more information, refer to Identity providers.
Aug 30, 2019 The platform now supports access token customization. For more information, refer to Access token customization.
Aug 19, 2019 The platform now includes a basic password policy to allow for maximum customer flexibility. For more information, refer to Password policies.
Aug 14, 2019 Sign-on policy action condition attributes now require camelCase syntax for attribute names (for example, ipRange, secondsSince). For more information, refer to Sign-on policy actions.
Jul 31, 2019 The platform now supports the refresh_token grant type. For more information, refer to Access tokens and ID tokens and Obtain an access token.
Jul 31, 2019 The platform now supports a native SDK that allows developers to send push notifications to custom native applications for multi-factor authentication (MFA). For more information, refer to Pairing keys, Android PingOne Native SDK API, and iOS PingOne Native SDK API.
Jul 31, 2019 The following template IDs (refer to Notifications templates) have changed:
  • offline_pairing has been renamed to device_pairing
  • offline_authentication has been renamed to strong_authentication
Calls to the GET {{apiPath}}/environments/{{envID}}/templates endpoint will return the new template IDs, instead of the old ones. The deprecated offline_pairing and offline_authentication template IDs are still supported for backward compatibility, but will be unsupported at a future date.
Jul 02, 2019 The platform now includes endpoints to manage external identity provider configurations that enable social login and inbound SAML login features in PingOne. It also includes endpoints to manage a user's links to external identity provider accounts. For more information, refer to Identity providers and Linked accounts.
Jun 25, 2019 The platform now includes endpoints to get information about the licenses associated with an organization. For more information, refer to Licensing.
Jun 25, 2019 The platform now includes endpoints to get information about active identity counts and total identity counts. For more information, refer to Active identity counts and Total identities.
Jun 13, 2019 The file import feature is temporarily disabled. It will be enabled in a future release.
Apr 15, 2019 The platform now supports a passwordless authentication flow. For more information, refer to Sign-on with a username and Configure a passwordless sign-on policy.
Apr 01, 2019 PATCH requests that modify custom JSON user attributes are replaced completely. For more information, refer to Users: Partial update.
Apr 01, 2019 Sign on policy actions now support a policy condition language that allows both logical and data rules to construct a policy condition statement. For more information, refer to Sign-on policy action conditions.
Mar 25, 2019 Platform scopes, such as p1:read:env:user, p1:create:env:device, and p1:update:env:population, have been removed. In order to access platform APIs, you must create a new WORKER application type. For more information, refer to Access through scopes and roles.
Mar 25, 2019 Scopes with "self" in the name have been renamed. Example: p1:reset:self:userPassword is now p1:reset:userPassword. For more information, refer to Access through scopes and roles.
Mar 01, 2019 The SAML attribute mappings data model now includes a mappingType attribute to identify CORE, SCOPE and CUSTOM mapping types. For more information, refer to Attribute mapping.
Feb 18, 2019 The following templates are available for use with notifications templates: verification_code_template, recovery_code_template, offline_authentication, and offline_pairing. For more information, refer to Notifications templates and Notifications settings.
Jan 28, 2019 The flow service no longer uses the /step/{{stepID}} sub-resource, and it no longer shows multiple statuses and nested embedded resources. The status property in the flow response contains all information about the flow's current state. For more information, refer to Flows.
Jan 22, 2019 Audit reporting supports a POST operation to retrieve audit events without exposing sensitive or personal filtering information in a GET request URL. The required SCIM filtering expression is specified in the POST request body. For more information, refer to Get audit activities using POST.
Jan 21, 2019 The data model for SAML application settings requires a leading dollar sign ($) when specifying the expression in the value attribute. For example, "value": "${user.username}". For more information, refer to SAML application attribute mappings.
Jan 11, 2019 The GET {{apiPath}}/environments/{{envID}}/activities endpoint no longer supports the in (includes) SCIM operator. For more information, refer to Audit activities and events.

More information

For more information about PingOne product updates, refer to Release Notes.

Working with PingOne APIs

If you want to start building your own workflows with PingOne APIs, the Workflow Library provides step-by-step workflows with linked Postman collections to help you start using the PingOne APIs in your Postman environment. Refer also to Using the PingOne APIs.

For information about how PingOne secures APIs, resources, and data, and what you can do to implement security measures for your PingOne deployment and applications, refer to Platform security.

PingOne API domains

This section discusses how PingOne API regional endpoints are entered in the domain name system (DNS). In DNS, and in our endpoints, the domain part of the uniform resource locator (URL) comprises three parts separated by periods, such as api.pingone.com: one of our service-specific subdomains, our PingOne domain name of pingone, and one of our top level domains.

We use Postman variables to manage this variety of domain parts in PingOne API endpoints. The later discussion is correct regarding the domain part that the variables evaluate to. However, to ease maintenance, the Postman environment template you get when you Download the PingOne Postman collections uses variables to isolate the TLD from the rest of the domain part and to isolate the domain part from the rest of the endpoint.

The environment template has a path variable for each subdomain. Each path variable uses another variable, {{tld}}, for the top level domain (TLD). Such as https://api.pingone.com/v1 for {{apiPath}}. The tld variable is first in the environment template that you downloaded.

The table below shows the top level domain value for each region. To change your region, simply change the default {{tld}} value from com to your region's TLD.

Region Code Top level domain
North America region (excluding Canada) NA com (default)
Canada region CA ca
European Union region EU eu
Australia region AU com.au
Singapore region SG sg
Asia-Pacific region AP asia

The PingOne API includes the following domains:

Domain Postman path variable Description
api.pingone.{{tld}}/v1 {{apiPath}} The primary domain for calling PingOne Management API resource server. Note: /v1 is required for {{apiPath}}.
auth.pingone.{{tld}} {{authPath}} The authorization and authentication server domain called to request the access token required to authenticate PingOne API requests. Note: do not include /v1 for {{authPath}}.
orchestrate-api.pingone.{{tld}}/v1 {{orchestratePath}} The primary domain for calling the PingOne DaVinci Management API resource server. Note: /v1 is required for {{orchestratePath}}.
scim-api.pingone.{{tld}} {{scimPath}} PingOne API service for Cross-domain Identity Management (SCIM).

The {{...Path}} variable in the sample requests stand for the PingOne service endpoint. Refer to Public endpoints in the PingOne for Developers Foundations guide for more information.

The Try a Request feature

Our documentation for the PingOne APIs includes an interactive Try a Request feature. Try a Request enables you to configure and send a PingOne API request and get a response from within the documentation. This is a quick way to interactively test a PingOne API request without needing to use either Postman or the command line.

Requests in Authentication and Authorization APIs do not have the Try a Request feature due to a Cross-Origin Resource Sharing (CORS) constraint.

Calling the PingOne APIs from the command line

Each PingOne API request in the documentation includes an example request and response. By default, the example request is displayed using cURL. However, a number of coding languages are available in the associated drop-down list. If you want to run a request from the command line, you can select the coding language and copy the displayed request. You'll need to replace any variables in the request with the appropriate values before running the request.

Using Postman collection-level authorization

Most APIs require authorization to ensure that client requests access data securely. Postman can pass along whatever authorization details necessary for the method demanded by the endpoint. You can manually include authorization data in the header, body, or as parameters to a request. However, the easiest way is to use the Authorization tab in Postman. Select an authorization Type on that tab and Postman offers a dialog to gather the information required by that Type. When you run a request, Postman uses the information from the Authorization tab to automatically add the necessary authorization header, body, or parameters to the request. Postman offers the Authorization tab on requests, folders, and collections.

In PingOne collections, the authorization method is defined at the collection level. Only those requests that require a specific authorization method have authorization defined on the request (roughly 10% of PingOne requests). This allows you to easily change the authorization used for most requests. Refer to Postman Collection-Level Authorization for more information.

Forward compatibility guidance for PingOne client developers

This section provides guidance on what PingOne API client developers should do to maintain forward compatibility of their client applications as PingOne APIs evolve. PingOne is a continuously developing platform, and developers must be aware of non-breaking changes to the APIs and how to prepare for these inevitable changes. PingOne will rarely, if ever, introduce a breaking change; however, when that happens, there will be notifications or deprecation messages to inform developers. For non-breaking changes, client developers must ensure that their apps will function as expected after the following API changes occur.

Non-breaking API changes

Client applications should be resilient to additions of new optional properties in request, response, and event payloads. The following list of enhancements occur regularly to the Pingone platform API.

Related resource links

The addition of new related resource links added to responses should not cause application breaks in your client environments.

{
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "organization": {
            "href": "https://api.pingone.com/v1/organizations/bed432e6-676a-4ebe-b5a5-6b3b54e46bda"
        },
        "license": {
            "href": "https://api.pingone.com/v1/organizations/bed432e6-676a-4ebe-b5a5-6b3b54e46bda/licenses/3f06970a-3235-46cb-b46f-cf6dfee2bb84"
        },

Almost all PingOne API responses include a _links section that lists related resources as HAL (Hypertext Application Language) links, and these lists change as the platform adds new resources (and new relationships). For common endpoints, the list of HAL links changes often.

New optional properties

The addition of new (optional) properties added to request, response, and event payloads should not cause application breaks in your client environments.

PingOne API endpoints, even those that have been part of the platform since its inception, can receive additional optional data model properties as the platform matures. Client application developers must configure their client environments to accommodate new optional properties in requests and support new returned properties in endpoint responses.

New content-types or content-language formats

The addition of new content-types or content-language formats of the same resource should not cause application breaks in your client environments.

The platform API includes endpoints that support multiple content types. Client application developers must configure their application environments to accept supported media types for the endpoint. For example, the following request shows a new action on the /{{envID}}/flows/{{flowID}} endpoint that supports a device authorization grant. Your client environment should support the new content type, application/vnd.pingidentity.deviceAuthGrant.userCode.verify+json.

curl --location --request POST '{{authPath}}/{{envID}}/flows/{{flowID}}' \
--header 'Content-Type: application/vnd.pingidentity.deviceAuthGrant.userCode.verify+json' \
--data-raw '{
    "userCode": "{{userCode}}"
}'

In addition, the PingOne API might (over time) return new content types for a given resource. If a client is retrieving a resource without specifying the exact type that it is expecting, then it must be able to tolerate processing any response content type that satisfies the Accept HTTP header.

For example, a client issues this request:

curl --location --request GET '/some/resource' \
--header 'Accept: */*' 

Initially, GET /some/resource is represented by a Content-Type: application/json response, which satisfies the request's Accept: */*. A client could assume that this response is always application/json and only have code to process such responses.

However, at some later date, GET /some/resource supports a new Content-Type: text/html response, which also satisfies the request's Accept: */*. The platform does not guarantee the choice of Content-Type when multiple values satisfy the request. In such cases, the client could start receiving Content-Type: text/html and process this response incorrectly, expecting it to be JSON.

In cases where clients can receive any content type that satisfies their request's Accept: */* header, the client must be configured to handle any content type that is returned. Or, preferably, clients should be configured to be as specific as possible about the content type they are able to accept.

Case-insensitive request and response headers

It's important that you do not treat request or response headers as case-sensitive. PingOne treats all request headers as case-insensitive, and may change the case of response headers at any time.

The HTTP 1.x and 2.x specifications require headers to be treated as case-insensitive.

New HTTP methods

The addition of new supported HTTP methods added to a resource should not cause application breaks in your client environments.

Client application developers must configure their application environments to accommodate new HTTP methods added to a platform service. For example, adding a new PATCH operation to an endpoint should be supported in your client environments.

Third-party libraries

Some third-party libraries deployed in your client environment can cause failures as a result of the non-breaking API changes listed above. In such cases, configuration of the library objects can resolve the issue.

For example, if your application environment uses the Jackson library to serialize or map Java objects to JSON, it is recommended that you update the object mapper setting responsible for deserializing API responses to prevent deserialization errors when new properties are added to the API response. The recommended setting is: new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);. (Jackson's default setting is true.)

As a backup, you can also annotate Jackson library objects with the @JsonIgnoreProperties(ignoreUnknown = true) property to prevent deserialization errors. Conservative developers may choose to employ both strategies.

Protocol for breaking changes

Ping Identity will only support the current release of the platform APIs.

APIs and resources that are made generally available to all customers for Ping Identity's multi-tenant hosted service products are designed to evolve in a non-breaking fashion rather than rely on versioning to change. In the case of a breaking change that requires an API or a resource to be versioned, the following describes the Ping Identity version support lifecycle:

  • The current version of the API or resource will be supported;

  • Once a new version of the API or resource is released, the previous version will also be supported for one (1) year; and

  • Anytime after this one (1) year period, previous versions of the API or resource will be removed.

Retries: Best practice for managing transient API errors

Transient API errors occur because of temporary service interruptions such as network issues, rate limits, server congestion, and other similar occurrences. This topic outlines the recommended best practices for implementing retry-handling logic to maintain resiliency in the applications and integrations with PingOne.

These HTTP status codes indicate temporary issues that can resolve over time, making them ideal candidates for automatic retries by a calling client.

HTTP status code Description
408 (Request Timeout) The server took too long to respond to the client request, possibly caused by a weak or slow connection to the client application.
429 (Too Many Requests) Rate limiting controls denied the request, often because the user is over quota for the request. Retry after the delay specified in the Retry-After header. Refer to PingOne Platform Limits in the PingOne admin documentation for more information.
500 (Internal Server Error) There was an unexpected server-side error encountered while processing the request.
502 (Bad Gateway) Suggests a temporary network issue or service stack disruption caused by a communication problem between servers.
503 (Service Unavailable) The server cannot process the request, possibly resulting from a temporary service outage or in-progress deployment.
504 (Gateway Timeout) A downstream server (for example, DNS) didn't respond in time to complete the request.

Accounting for latency

API clients can experience latency when creating resources across services in the PingOne platform multi-region architecture, where the newly created resource has not propagated through the system to allow for the successful completion of a follow-up request. For example, if you create a resource with one internal service, it is possible that other internal services might not be aware of that new resource in time for your code's next step. An immediate call to the second resource can fail. Given this potential for latency, all applications should be written to retry the request.

The primary areas that experience latency are:

  • Applications and Secrets

    Latency occurs when you create an application and then try immediately to retrieve the system-generated secret.

  • Applications and Scopes

    Latency occurs when you create an application and then try immediately to retrieve its resource access grants.

  • SAML configuration and attributes

    Latency occurs when you create a SAML configuration and then try immediately to retrieve its attribute mappings.

  • Environments, role assignments, and applications

    Latency occurs when you create an environment and then try immediately to retrieve its role assignments or add an application to the new environment.

  • Populations and role assignments

    Latency occurs when you create a population and then try immediately to retrieve its role assignments.

Eventual Consistency and retryable 404 errors

Latency most often affects read operations immediately after a create request. For 404 Not Found responses where eventual consistency can delay resource visibility across services, it is recommended that you retry only if:

  • You recently performed a successful create operation on a parent resource (such as Environment or Application), and

  • The 404 response is received during a GET request for a subordinate resource shortly afterward.

For example, after creating an environment with POST /environments, an immediate follow-up GET /environments/{{envID}}/signOnPolicies might return a 404 briefly. Likewise, after creating an application with POST /environments/{{envID}}/applications, an immediate GET /environments/{{envID}}/applications/{{appID}}/secret might return a 404 briefly until the secret gets generated asynchronously.

Eventual consistency and delete operations

Similar to create cases, eventual consistency can affect reading resources after a delete operation. In these cases, subordinate resources might still be readable for a period of time until the system propagates the delete across services.

For example, after deleting an environment with DELETE /environments/{{envID}}, an immediate read operation on applications with GET /environments/{{envID}}/applications might return some results temporarily. In such cases, it is recommended that you do not retry the original delete and do not delete the currently readable resource(s). The system is eventually consistent and will catch up.

For more information about these status codes, refer to MDN Web Docs HTTP response status codes.

Retry-handling logic with exponential backoff and jitter

Do not simply create a loop that rapidly re-submits the same request over and over. You could unintentionally end up with a status 429, trigger rate limiting, or worse have your IP address blocked. Instead, implement an exponential backoff with jitter that gradually increases the time between retry attempts. Start small and increase exponentially until reaching maximum delay. This allows the server or network time to recover, and your application will get the response it needs.

For example, you can increase the number of seconds between retries in powers of two. If you add jitter, which involves adding randomness to those retry delays, this will randomize backoff retry delays to avoid "retry storms" when multiple clients are in use simultaneously.

// Pseudo code
// Example of an exponential backoff calculator
function calculateExponentialBackoff(attempt, baseDelay) {
    jitter = random(0, 100); // Add random jitter
    return baseDelay * (2 ** attempt) + jitter;
}

Honor the Retry-After header

Status codes 429 and 503 often include a Retry-After header that specifies one of two things, depending on the status code. For a 429, it specifies how long the client should wait before retrying the request, designated in number of seconds. For these cases, your retry handler must wait for the amount of time provided by the service.

For a 503 status code, the Retry-After header specifies when the service is expected to be available, designated in a date format. In both cases, the Retry-After header specifies when your app can reasonably make the request again. You need to do some math on the available date to figure out when you can try again. Or, if the retry delay is too long, then return a friendly error message to the client.

//Pseudo code
//Example of using the Retry-After header
if response.status == 429 or response.status == 503:
    retryAfter = response.getHeader("Retry-After");
    if retryAfter exists:
        wait(retryAfter);
    else:
        delay = calculateExponentialBackoff(attempt, baseDelay);
        wait(delay);

Don't make retry handling a catchall

It's good practice to avoid a catchall approach to errors, particularly if you are implementing retry logic in your API calls. The goal is to create resiliency in your application and provide the best user experience. Do not try to handle all status codes in the same way. The status codes outlined above that support retry logic mean different things with respect to how you should handle them.

The following is an example of an anti-pattern that could result in unintended bad consequences.

//Psuedo code
// Example of bad practice 
switch(statusCode) {
    case 408:
    case 429:
    case 500:
    case 502:
    case 504:
    case 503:
        //callout to service 
    default:
        //catchall for other status codes
}

Fail gracefully

If you reach the maximum number of retries without a successful request, it's important to consider how you handle the error. You need to take into account the user experience as well as your business requirements.

Don't return raw error responses to the user. Provide a useful, friendly error message with instructions on how to retry later or who to contact. If there are business implications to not making a successful request, first consider what operations might need to be rolled back, and any logging that should occur, before or simultaneously with your client error message (particularly in authentication and authorization transactions). You might need to revoke tokens or sessions, depending on your use case.

Security considerations

To avoid exposing your applications to vulnerabilities or attacks, it is important to design your retry handler properly. The following factors should be considered.

  • Maximum retry counts

    If your retry logic supports an unlimited number of retries, you could expose your application to resource exhaustion attacks. Attackers can use your application as a proxy for denial of service (DoS) attacks against PingOne APIs or as a conduit for brute force credential-stuffing attacks.

    Consult with your app owners and security teams to determine a reasonable number of retries. Set that as the maximum number of retries in your retry handler in a way that cannot be overridden.

  • Validate reasonable Retry-After limits

    Similar to the best practice of validating input data at the client and server, you should also validate the Retry-After header in API responses when the status code is 429 or 503. Man-in-the-middle attacks could result in manipulation of the response headers, and an attacker could reset the value to 1, causing your application to retry too often and get rate limited, or worse, have your IP address blocked. Likewise, attackers can reset the value to an extremely long wait time, like 172800 (2 days), causing your customers to abandon your application before a transaction is completed.

    If no Retry-After header is present, make sure you have reasonable values set in your exponential-backoff variable number of seconds to avoid rate-limiting, IP blocking, or retry storms.

  • Check for token expiration

    If your application is retrying requests, keep checking the HTTP status code in case it changes to a 401 (unauthorized), or 403 (forbidden). During your retry attempts, your token could expire, and you should switch to re-authentication before trying again. If you're using OAuth/OIDC, and depending on your security requirements, you have options for silent authentication with the prompt="none" parameter, the login_hint_token request parameter, or using refresh tokens to get a new token before retrying. These options provide a better user experience rather than forcing users to login again.

  • Alert excessive failures

    Monitor, log, and alert the number of attempts a user or customer submits while using your application to retry these API calls (if you have that capability from your client application). It could be a sign of a misuse or abuse case you need to handle.

Sample retry handler

The following psuedo code sample shows these retry logic best practices.

// Pseudo code
//Example of retry logic
function callApiWithRetry(apiEndpoint, maxRetries = 5, baseDelay = 1000) {
    let attempt = 0;
   
    while (attempt < maxRetries) {
        response = makeApiCall(apiEndpoint);

        // Success Case
        if response.status == 200 || response.status == 202:
            return response.data;

        // Handle Transient Errors
        if response.status in [408, 500, 502, 504]:
            delay = calculateExponentialBackoff(attempt, baseDelay);
            wait(delay);

        // Handle Rate-Limiting
        else if response.status == 429 or response.status == 503:
            retryAfter = response.getHeader("Retry-After");
            if retryAfter exists:
                wait(retryAfter);
            else:
                delay = calculateExponentialBackoff(attempt, baseDelay);
                wait(delay);

        // Handle Authentication Failures
        else if response.status == 401 or response.status == 403:
            refreshToken(); // Secure token refresh or re-authentication
            continue;

        // Handle other errors (No retries)
        else:
            handleError(response); // Sanitize and log the error
            throw Error("Request failed with status code: " + response.status);
       
        // Increment Retry Counter and Monitor
        attempt += 1;
        monitorRetries(apiEndpoint, attempt); // Security monitoring for abnormal retry behavior
    }
   
    // Fail Gracefully After Max Retries
    throw Error("Max retries reached. Request failed.");
}

function calculateExponentialBackoff(attempt, baseDelay) {
    jitter = random(0, 100); // Add random jitter
    return baseDelay * (2 ** attempt) + jitter;
}

Postman and the PingOne APIs

We use Postman to create our PingOne API docs, and have supplied our Postman collections for you to download. There's also an accompanying Postman Environment template already populated with the variables used in the collections.

If you aren't currently using Postman, you can install the free version. Refer to Download Postman to install Postman, either locally, or in your browser.

Refer to The PingOne Postman collections for the collections you can download or fork.

For more information about our Postman environment variables, refer to The PingOne Postman environment template.

You'll also find all of the Postman collections for our documented PingOne use cases in our Workflow Library.

The PingOne Postman collections

You can get here the PingOne Postman collections used for the Getting Started workflows, as well as the collections for all of our Platform APIs. You've two methods for retrieving a Postman collection into your workspace:

  1. Fork the collection into your workspace. Postman retains an association between the source and your fork. If we update the source collection, you can pull those changes into the fork in your workspace.

  2. Import the collection into your workspace. This is a one-time transfer and retains no association to the source collection.

To retrieve a collection

Refer to The PingOne Platform collections on this page.

  1. Click the collection's Run In Postman button.

  2. At the prompt, click Fork Collection at the bottom of the dialog or click import a copy near the bottom of the dialog.

    RunInPostman

  3. Follow the on-screen instructions to fork or import the collection. You're prompted to select a Postman workspace for the retrieved collection.

When you fork a Postman collection, you create a copy of it in a selected workspace. Forking a collection creates a linked version that synchronizes with its source collection. This synchronization is apparent when you click the three dots icon on the forked collection - you'll see Pull changes on the context menu. When you click Pull changes, Postman compares the fork to the source collection. If changes are available, you can pull those changes into your fork. If you also elect to watch the collection, you'll receive notifications when the source changes.

If you import a collection, a copy is created in the selected workspace with no link back to the source. The collection is static. This may be desirable for some use cases. For example, if you intend to keep and use only some requests in a collection, a link back to the source is not needed.

You're not limited to choosing one method or the other. You can fork a copy to track the source and import a copy for experimentation, if you like.

The PingOne Platform collections

These Postman collections include requests for all create, read, update, and delete (CRUD) operations for the PingOne Platform APIs.

Collection Description Retrieve
Platform Postman requests for the PingOne Platform API. Includes all environment variables. No example responses to make it easy to get started. Run In Postman
Platform Postman requests for the PingOne Platform API. Includes all PingOne Platform API Reference documentation and example reponses. No environment variables are included. Run In Postman

For more information about the Postman environment variables included when you download or fork one of our Postman collections, refer to The PingOne Postman environment template.

The PingOne Postman environment template

Our Postman collections use variables in the request URLs to specify the UUIDs for PingOne resources. When you click the Run in Postman button for a collection, these environment variables are included in your download or fork. Use these environment variables as a template to assign your PingOne resource UUIDs with the common variables used in many of the requests.

For more information about using Postman environments, refer to the following topic in the Postman documentation: Environments in Postman.

POST requests in the PingOne Postman collections that create a resource and return a resource ID include a Postman script. This script automatically adds a resource variable to your active Postman environment, and uses the newly created ID as the value.

For example, the following request creates a new user. This request URL contains variables for the API path and environment ID:

POST {{apiPath}}/environments/{{envID}}/users

To run this request, you must ensure the {{apiPath}} in the Postman environment template has the regional top-level domain (TLD) associated with your organization. Refer to Variables you must value for more information.

Almost every request in PingOne requires an environment ID. If you are working primarily in one environment for testing purposes, you'll want to add your environment's UUID to your active Postman environment as the value for the {{envID}} variable.

Requests to PingOne Management API endpoints require a valid access token to authenticate the request. In the PingOne Postman collections, the token value is represented in the Postman environment template as the variable {{accessToken}}.

With the {{tld}} and {{envID}} variables defined in your Postman template, and with a valid token value defined in the {{accessToken}} variable, you can run the request shown above:

POST {{apiPath}}/environments/{{envID}}/users

If the request is successful, Postman adds a {{userID}} variable to the current Postman environment automatically, and associates the new user's id property value (the UUID of the new user) with this variable.

Notes about environment variables and security

It's important to understand how Postman allows you to Store and reuse values using variables. Postman has two values for each environment variable: an Initial value and a Current value. You'll want to pay particular attention to differences between Initial and current values. Initial values are saved to Postman's cloud, and available to anyone who has access to the environment. Current values are saved only locally and available only to you. Postman uses only the current value in requests. If an environment variable has an initial value but no current value, Postman doesn't copy it to the current value or use the initial value in the request, the request simply fails. In this case, you need to manually copy the initial value to the current value.

When you create a new variable with an initial value and save the environment, Postman autofills the current value. However, that is the only time that Postman autofills the current value. If you subsequently delete the current value, the variable is no longer valued in a request.

Saving initial values to the Postman cloud impacts security. These initial values are available to anyone who has access to the workspace. If a workspace is public, you have a security issue.

Postman's recommended solution to exposing secrets is to Store secrets in your Postman Vault. Remember that Postman uses only current values in requests.

Variables you must value

When you download or fork a PingOne Postman collection, your workspace receives a set of Postman environment variables for you to use as a template. The variables that represent a resource in PingOne automatically receive a value when you create a new PingOne resource using Postman. Our script associated with the request (shown on the request's Scripts tab) inserts the identifier of the resource it creates as the value of the variable associated with that resource. However, some variables essential to using Postman with PingOne do not have their values inserted automatically. You must manually add the correct value to these variables before making any requests in Postman:

Postman variable PingOne resource
adminAppID The Client ID of the Worker app you created Create an admin Worker app connection.
adminAppSecret The Client Secret of the Worker app created.
adminEnvID The ID for the environment in which your Worker app resides.
envID The ID for the environment in which you are running your Postman API requests.
orgID The ID for your organization. In the PingOne admin console, select Environment and click Properties to view your organization ID.
tld The top-level domain to use for your environment. This is used in URLs containing apiPath, authPath, orchestratePath, and scimPath.
apiPath The regional domain for the PingOne management server (https://api.pingone.{{tld}}/v1).
authPath The regional domain for the PingOne authorization and authentication server (https://auth.pingone.{{tld}}).
orchestratePath The regional domain for the PingOne DaVinci management server (https://orchestrate-api.pingone.{{tld}}/v1).
scimPath The regional domain for the PingOne SCIM management server (https://scim-api.pingone.{{tld}}).

Integrations

For information about integrating PingOne services with other Ping Identity products, refer to the following integration guides:

Integration Catalog API

The PingOne integration catalog API enables developers to discover and retrieve integration metadata and download integration kits as a compressed file. For more information, refer to Integration Catalog. For use cases, refer to the Workflow Library.

Application Management

Application resources define the connection between PingOne and the actual application (also known as a client connection). The application type you choose to create includes default settings that you're free to change. For example, you can configure the settings for a Single-Page application to match the settings for a Web application. This is by design for maximum flexibility.

Learn more in Applications in the PingOne admin guide.

When you make a request to create a new application, you must specify the type property that specifies one of the following application types:

  • Web application

    A browser-based application with a server-side component, such as ASP, CGI, JSP/Java, Node.js, or Ruby on Rails applications.

  • Native application

    An application that is installed and run directly on the local operating system, like Java, Objective-C, Swift, or React applications. Native applications are typically intended for mobile devices. These native applications are optionally configured using the mobile property.

  • Single-Page application

    A browser-based application that runs on the front-end with no server-side component, such as Sencha Touch, AngularJS, and React applications. A single page application runs on the client side after it loads, so it cannot keep a client secret.

  • Non-interactive

    A web application that does not require user interaction through the web browser, like a command line interface, a service, or a daemon.

  • Worker

    An administrator application that can interact with platform APIs. Access to platform APIs is determined by the user's or application's role assignments. The role assignment for a Worker app is set by the assignActorRoles property.

  • Device authorization

    Creating an application of this type initiates an action that returns an activation code to the end user. This enables you to obtain authorization from the end user through (what is typically) a mobile device.

  • Platform applications

    PingOne creates platform applications (PingOne Admin Console, PingOne Application Portal, PingOne Self-Service - MyAccount, and PingFederate-SSO) when the environment is created. The PingFederate-SSO platform application is created only if the PingOne environment includes PingFederate, and unlike the other platform applications, PingFederate-SSO application information is not returned through a GET request.

These are the default grantTypes, response_type, and tokenEndpointAuthMethod attributes for the application types:

Application type Grant type Response type Token endpoint authentication method
Device Authorization DEVICE_CODE, REFRESH_TOKEN N/A NONE
Native AUTHORIZATION_CODE, IMPLICIT TOKEN, ID_TOKEN, CODE NONE
Single-page IMPLICIT TOKEN, ID_TOKEN NONE
Web AUTHORIZATION_CODE CODE CLIENT_SECRET_BASIC
Worker/Non-interactive CLIENT_CREDENTIALS TOKEN CLIENT_SECRET_BASIC

Use Cases

Managing applications

The base endpoint, /environment/{{envID}}/applications, provides endpoint operations to create, read, update, and delete OIDC and SAML application connections. There are POST request examples to show the required properties to create each type of application connection. For more information, refer to Application Operations.

The secret endpoint, /environments/{{envID}}/applications/{{appID}}/secret, provides endpoint operations to read and update the application's secret, if the requesting actor has a superset of the application's role assignments. For more information, refer to Application Secret.

Applications support the following additional configuration properties:

  • Application resource grants

    The application resource grants endpoint, /environments/{{envID}}/applications/{{appID}}/grants, provides endpoint operations to create, read, update, and delete the resource grant associated with the application connection. For more information, refer to Application Resource Grants.

  • Application sign-on policy assignments

    The application sign-on policy assignments endpoint, /environments/{{envID}}/applications/{{appID}}/signOnPolicyAssignments, provides endpoint operations to create, read, update, and delete the sign-on policies associated with the application connection. For more information, refer to Application Sign-On Policy Assignments.

  • Application role assignments

    The application role assignments endpoint, /environments/{{envID}}/applications/{{appID}}/roleAssignments, provides endpoint operations to create, read, update, and delete the role assignments associated with the application connection. For more information, refer to Application Role Assignments.

  • Application attribute mapping

    The application attribute mapping endpoint, /environments/{{envID}}/applications/{{appID}}/roleAssignments, lets you customize the content of an ID token or a SAML assertion by adding custom attributes and their values. For more information, refer to Application Attribute Mapping.

  • Application MFA push credentials

    Push credentials are required for sending push notifications to a native application. The endpoint, /environments/{{envID}}/applications/{{appID}}/pushCredentials, provides endpoint operations to create, read, update, and delete the push credentials associated with the application connection. This section provides examples for both APNS and FCM push credential types. For more information, refer to Application MFA Push Credentials.

Application Operations

The Applications service implements operations to create, read, update, and delete, applications resources.

Cross-origin resource sharing

PingOne supports cross-origin resource sharing (CORS), which gives applications running at different domains permission to access resources on PingOne servers. For example, an application at https://myapp.com that uses PingOne to authenticate users needs to request permission to access resources at https://auth.pingone.com before authentication operations are executed. In this case, a request is made to the resource owner (auth.pingone.com) from the requestor (myapp.com) using CORS headers to ask for access privileges. The response from auth.pingone.com returns the CORS Access-Control-Allow-Origin header with a value that confirms the requestor's access rights.

PingOne servers are configured to trust all origins when using access tokens. However, when requesting sensitive resources that use PingOne session cookies for authentication, only specified origins will be trusted. The following endpoints require session cookies for authentication, and only the origins specified in the application's corsSettings property will be trusted when calling these endpoints:

/{envId}/as/authorize
/{envId}/as/resume
/{envId}/as/signoff
/{envId}/rp/authenticate
/{envId}/rp/callback/{callbackId}
/{envId}/saml20/idp/sso
/{envId}/saml20/idp/startsso
/{envId}/saml20/resume
/{envId}/saml20/idp/slo
/{envId}/wsf/sts/{appId}
/{envId}/wsf/mex/{appId}
/{envId}/wsf/prp/{appId}
/{envId}/wsf/prp/resume

When using session cookies for authentication, no origins will be trusted when calling these endpoints:

/{envId}/as/txs 
/{envId}/saml20/sp/sso
/{envId}/saml20/sp/acs
/{envId}/saml20/sp/jwtacs

Consequently, when defining an application's connection to PingOne, you generally do not need to add your application's domain to a list of trusted origins. Cross-origin requests that use HTTP methods to modify the resource, such as PUT, PATCH, POST, and DELETE, trigger a preflight request to ensure that the initial request can be sent. The browser initiates a preflight HTTP OPTIONS request to verify that the HTTP method used in the actual request is allowed. In these cases, the response from auth.pingone.com to the preflight request returns a response with the CORS Access-Control-Allow-Methods header to specify the allowed methods.

When making CORS requests, only these headers can be used:

  • Accept
  • Accept-Language
  • Content-Language
  • Content-Type
  • Range
  • Authorization
  • Content-Length
  • Cookie
  • Correlation-Id
  • Origin
  • Origin-Cookies
  • Referer or Referrer
  • X-Amz-Date
  • X-Amz-Security-Token
  • X-Api-Key
  • X-client-version
  • X-Content-Type-Options

When accessing CORS responses, you're restricted to reading only the Correlation-Id header (as well as the request body).

Attempting to submit or access headers that are not listed above may prevent you from making CORS requests or reading the responses.

Applications data models

The following applications properties tables show the base data model for properties that apply to all application protocols, and the specific properties for the OpenID Connect (OIDC), SAML, and WS-Federation application protocols.

Applications base data model

Property Type Required? Mutable? Description
accessControl.role.type String Optional Mutable The user role required to access the application. Options are ADMIN_USERS_ONLY. A user is an admin user if the user has one or more of the following roles: Organization Admin, Environment Admin, Identity Data Admin, or Client Application Developer.
accessControl.group.type String Optional Mutable The group type required to access the application. Options are ANY_GROUP (the actor must belong to at least one group listed in the accessControl.group.groups property) and ALL_GROUPS (the actor must belong to all groups listed in the accessControl.group.groups property).
accessControl.group.groups String[] Optional Mutable The group IDs for the groups the actor must belong to for access to the application.
createdAt Date N/A Read-only The time the resource was created.
description String Optional Mutable The description of the application.
enabled Boolean Required Mutable The current enabled state of the application. Options are true (enabled) or false (disabled).
environment.id String Required Read-only The PingOne environment associated with the application.
externalId String Optional Mutable For applications whose type is PORTAL_LINK_APP, you can use externalId to specify an external ID that should be used for the application in contexts such as targeted risk policies. Note that PORTAL_LINK_APP applications that do not have an external ID specified are not displayed in the list of applications when defining a targeted risk policy in the UI.
hiddenFromAppPortal Boolean Optional Mutable Whether the application is hidden in the application portal despite the configured group access policy.
homePageUrl String Optional Mutable The custom home page URL for the application.
icon Object Optional Mutable The HREF and the ID for the application icon.
id String Required Read-only The application UUID.
loginPageUrl String Optional Mutable The custom login page URL for the application. If you set the loginPageUrl property for applications in an environment that sets a custom domain, the URL should include the top-level domain and at least one additional domain level. Warning: To avoid issues with third-party cookies in some browsers, a custom domain must be used, giving your PingOne environment the same parent domain as your authentication application. For more information about custom domains, refer to Custom domains.
name String Required Mutable The name of the application.
protocol String Required Immutable The protocol used by the application. Options are OPENID_CONNECT, SAML, WS_FED, and EXTERNAL_LINK.
type String Required Mutable The application type. Options are WEB_APP, NATIVE_APP, SINGLE_PAGE_APP, SERVICE, CUSTOM_APP, WORKER, PING_ONE_SELF_SERVICE, PING_ONE_ADMIN_CONSOLE, PING_ONE_PORTAL, TEMPLATE_APP, and PORTAL_LINK_APP.
updatedAt Date N/A Read-only The time the resource was last updated.

Applications OIDC settings data model

Property Type Required? Mutable? Description
additionalRefreshTokenReplayProtectionEnabled Boolean Optional Mutable PingOne detects a replay attack when a refresh token is reused outside of its specified grace period (refer to below for information on refreshTokenRollingGracePeriodDuration). If the refresh token is revoked because of a replay attack, then PingOne also revokes any associated access tokens if, and only if, this setting is enabled. Setting this property to null equates to a false setting. For more information about refresh token rotation, refer to Refresh token rotation in the PingOne admin guide.
allowWildcardInRedirectUris Boolean Optional Mutable Whether wildcards are allowed in redirect URIs. For more information, refer to Wildcards in Redirect URIs.
assignActorRoles Boolean Optional Mutable Indicates whether the permissions service should assign to the application the roles of the actor creating the application (defaults to true). This property is set only on the POST request. The property is ignored when included in a PUT request. Best Practice: When creating a Worker app, the best practice is to set this value to false. This is for security purposes, to ensure you assign only the minimal set of permissions necessary for the Worker app.
corsSettings Object Optional Mutable Enables you to customize how the Authorization and Authentication APIs interact with CORS requests that reference the application. If omitted, the application allows CORS requests from any origin except for operations that expose sensitive information (such as, operations from /as/authorize and /as/token). We recommend you use corsSettings, rather than omitting this property.
corsSettings.behavior String Required Mutable Options are "ALLOW_NO_ORIGINS" and "ALLOW_SPECIFIC_ORIGINS". ALLOWS_NO_ORIGINS rejects all CORS requests. ALLOW_SPECIFIC_ORIGINS rejects all CORS requests except those listed in corsSettings.origins.
corsSettings.origins String[] Optional Mutable This must be specified when corsSettings.behavior is ALLOW_SPECIFIC_ORIGINS, and must be omitted or empty when corsSettings.behaviour is ALLOW_NO_ORIGINS. Limited to 20 values. The values are the origins from which CORS requests to the Authorization and Authentication APIs are allowed. Each value is an HTTP or HTTPS URL without a path. The host may be a domain name (including localhost), or an IPv4 address. Subdomains can be specified using the wildcard (*) to match any string.
devicePathId String Optional Mutable A string that specifies a unique identifier within an environment for a device authorization grant flow to provide a short identifier to the application. This property is ignored when the deviceCustomVerificationUri property is configured. The string can contain any letters, numbers, and some special characters (regex: a-zA-Z0-9_-). It can have a length of no more than 50 characters (min/max=1/50).
deviceCustomVerificationUri String Optional Mutable A string that specifies an optional custom verification URI that is returned for the /device_authorization endpoint.
deviceTimeout Integer Required Mutable An integer that specifies the length of time (in seconds) that the userCode and deviceCode returned by the /device_authorization endpoint are valid. This property is required only for applications in which the grantTypes property is set to device_code. The default value is 600 seconds. It can have a value of no more than 3600 seconds (min/max=1/3600).
devicePollingInterval Integer Required Mutable An integer that specifies the frequency (in seconds) for the client to poll the /as/token endpoint. This property is required only for applications in which the grantTypes property is set to device_code. The default value is 5 seconds. It can have a value of no more than 60 seconds (min/max=1/60).
grantTypes String[] Required Mutable The grant type for the authorization request. Options are authorization_code, implicit, refresh_token, device_code, and client_credentials.
idpSignoff Boolean Optional Mutable Set this to true to allow an application to request to terminate a user session using only the ID token. The application is not required to have access to the session token cookie. Refer to GET IdP Signoff for more information.
includeX5t Boolean Optional Mutable Specifies whether tokens signed for this application include the x5t signature header in the signed JWT. Refer to JSON Web Signature (JWS), section "x5t" (X.509 Certificate SHA-1 Thumbprint) Header Parameter.
initiateLoginUri String Optional Mutable The URI to use for third-parties to begin the sign-on process for the application. If specified, PingOne redirects users to this URI to initiate SSO to PingOne. The application is responsible for implementing the relevant OIDC flow when the initiate login URI is requested. This property is required if you want the application to appear in the PingOne Application Portal. Refer to the OIDC specification section Initiating Login from a Third Party for more information.
jwks String Optional Mutable A JWKS string that validates the signature of signed JWTs for applications that use the PRIVATE_KEY_JWT option for the tokenEndpointAuthMethod. This property is required when tokenEndpointAuthMethod is PRIVATE_KEY_JWT and the jwksUrl property is empty. For more information, refer to Create a private_key_jwt JWKS string. This property is also required if the optional request property JWT on the authorize endpoint is signed using the RS256 (or RS384, RS512) signing algorithm and the jwksUrl property is empty. For more infornmation about signing the request property JWT, refer to Create a request property JWT.
jwksUrl String Optional Mutable A URL (supports https:// only) that provides access to a JWKS string that validates the signature of signed JWTs for applications that use the PRIVATE_KEY_JWT option for the tokenEndpointAuthMethod. This property is required when tokenEndpointAuthMethod is PRIVATE_KEY_JWT and the jwks property is empty. For more information, refer to Create a private_key_jwt JWKS string. This property is also required if the optional request property JWT on the authorize endpoint is signed using the RS256 (or RS384, RS512) signing algorithm and the jwks property is empty. For more infornmation about signing the request property JWT, refer to Create a request property JWT.
kerberos.key Object Optional Mutable A Relationship object containing the certificate issuer (root CA).
kerberos.key.id String Optional Immutable The unique identifier for the Kerberos key. Required if kerberos.key is specified.
mobile.bundleId String Optional Immutable The bundle associated with the application, for push notifications in native apps. The value of the bundleId property is unique per environment, and once defined, is immutable. Used only for applications for the Apple ecosystem.
mobile.huaweiAppId String Optional Immutable The unique identifier for the app on the device and in the Huawei Mobile Service AppGallery. The value of the mobile.huaweiAppId property is unique per environment, and once defined, is immutable. Used only for applications for the Huawei ecosystem.
mobile.huaweiPackageName String Optional Immutable The package name associated with the application, for push notifications in native apps. The value of the mobile.huaweiPackageName property is unique per environment, and once defined, is immutable. Used only for applications for the Huawei ecosystem.
mobile.integrityDetection.googlePlay Object Optional Mutable Object that contains the credentials required for using Google's Play Integrity API for integrity detection.
mobile.integrityDetection.googlePlay.verificationType String Optional Mutable The type of verification that should be used. The possible values are GOOGLE and INTERNAL. Using internal verification will not count against your Google API call quota. The value you select for verificationType determines what other parameters you must provide. When set to GOOGLE, you must provide serviceAccountCredentials. When set to INTERNAL, you must provide decryptionKey and verificationKey.
mobile.integrityDetection.googlePlay.serviceAccountCredentials String Optional Mutable Contents of the JSON file that represents your Service Account Credentials. This parameter must be provided if you have set mobile.integrityDetection.googlePlay.verificationType to GOOGLE.
mobile.integrityDetection.googlePlay.decryptionKey String Optional Mutable Play Integrity verdict decryption key from your Google Play Services account. This parameter must be provided if you have set mobile.integrityDetection.googlePlay.verificationType to INTERNAL.
mobile.integrityDetection.googlePlay.verificationKey String Optional Mutable Play Integrity verdict signature verification key from your Google Play Services account. This parameter must be provided if you have set mobile.integrityDetection.googlePlay.verificationType to INTERNAL.
mobile.integrityDetection.mode String Optional Mutable Indicates whether device integrity detection takes place on mobile devices, for the application's enrollment and authentication events. The possible values are ENABLED or DISABLED.
mobile.integrityDetection.excludedPlatforms Array Optional Mutable You can enable device integrity checking separately for Android and iOS by setting mobile.integrityDetection.mode to ENABLED and then using this property to specify an OS where you do not want to use device integrity checking. The possible values are GOOGLE and IOS. Note that this is implemented as an array even though currently you can only include a single value.
mobile.integrityDetection.cacheDuration.amount Integer Optional Mutable The duration between successful integrity detection calls. Every attestation request entails a certain time tradeoff. You can choose to cache successful integrity detection calls for a predefined duration, between a minimum of 1 minute and a maximum of 48 hours. If mobile.integrityDetection.mode is ENABLED, the cache duration must be set.
mobile.integrityDetection.cacheDuration.units String Optional Mutable The time units used for mobile.integrityDetection.cacheDuration.amount. The possible values are MINUTES or HOURS.
mobile.packageName String Optional Immutable The package name associated with the application, for push notifications in native apps. The value of the mobile.packageName property is unique per environment, and once defined, is immutable. Used only for applications for the Google ecosystem.
mobile.passcodeGracePeriod Integer Optional Mutable To cover time synchronization issues, you can use passcodeGracePeriod to customize the grace period during which the passcode can still be used even after the passcode has been refreshed. The value of the parameter should be the number of windows to use (min 1, max 10). In this context, a window is equal to the passcode refresh period in either direction. For example, if you defined a passcode refresh duration of 30 seconds and a grace period of 2 windows, the passcode is valid for 150 seconds (from 60 seconds behind the time of issue until 60 seconds past the expiration time). When passcodeGracePeriod is not included, the default value used is 5 windows.
mobile.passcodeRefreshDuration.duration Integer Optional Mutable The amount of time a passcode should be displayed before being replaced with a new passcode. Must be between 30 and 60 (seconds).
mobile.passcodeRefreshDuration.timeUnit String Optional Mutable The type of time unit for mobile.passcodeRefreshDuration.duration. Currently, this must be SECONDS.
mobile.push.numberMatching.type String Optional Mutable This option is used to specify the type of number matching that should be used in MFA policies where number matching has been enabled for the application (refer to the numberMatching.enabled parameter in Device Authentication Policies). The possible values are:
  • SELECT_NUMBER - Users must select the correct number from a group of three numbers
  • ENTER_MANUALLY - Users must enter the number that was shown
  • mobile.uriPrefix String Optional Mutable A URI prefix that enables direct triggering of the mobile application when scanning a QR code. The URI prefix can be set to a universal link with a valid value (which can be a URL address that starts with HTTP:// or HTTPS://, such as https://www.acme.com), or an app schema, which is just a string and requires no special validation.
    opSessionCheckEnabled Boolean Optional Mutable When enabled, PingOne includes the session_state parameter in the authentication response, per spec with OpenID Connect Session Management 1.0. Refer to OIDC Session Management in the Developer's Foundations for more information. This property is disabled by default.
    parRequirement Enum Optional Mutable Whether pushed authorization requests (PAR) are required. Options are REQUIRED and OPTIONAL. The default value is OPTIONAL.
    parTimeout Integer Optional Mutable PAR timeout in seconds. Must be between 1 and 600. The default value is 60.
    pkceEnforcement String Optional Mutable Specifies how PKCE request parameters are handled on the authorize request. Options are: OPTIONAL: PKCE code_challenge is optional and any code challenge method is acceptable. REQUIRED: PKCE code_challenge is required and any code challenge method is acceptable. S256_REQUIRED: PKCE code_challenge is required and the code_challenge_method must be S256.
    postLogoutRedirectUris String[] Optional Mutable The URLs that the browser can be redirected to after logout.
    redirectUris String[] Optional Mutable The callback URI for the authentication response.
    refreshTokenDuration Integer Optional Mutable The lifetime in seconds of the refresh token. If a value is not provided, the default value is 2592000, or 30 days. Valid values are between 60 and 2147483647. If the refreshTokenRollingDuration property is specified for the application, then this property must be less than or equal to the value of refreshTokenRollingDuration. After this property is set, the value cannot be nullified. This value is used to generate the value for the exp claim when minting a new refresh token.
    refreshTokenRollingDuration Integer Optional Mutable The number of seconds a refresh token can be exchanged before re-authentication is required. If a value is not provided, the refresh token is valid forever. Valid values are between 60 and 2147483647. After this property is set, the value cannot be nullified. This value is used to generate the value for the exp claim when minting a new refresh token.
    refreshTokenRollingGracePeriodDuration Integer Optional Mutable The number of seconds that a refresh token may be reused after having been exchanged for a new set of tokens. This is useful in the case of network errors on the client. Valid values are between 0 and 86400 seconds. Null is treated the same as 0.
    requestScopesForMultipleResourcesEnabled Boolean Optional Mutable Specifies whether the application can request scopes from multiple custom resources. The default value is false. For more information about scopes and access tokens, refer to Resource Scopes.
    requireSignedRequestObject Boolean Optional Mutable Indicates that the Java Web Token (JWT) for the request query parameter is required to be signed. If false or null (default), a signed request object is not required. Both supportUnsignedRequestObject and this property cannot be set to true.
    responseTypes String[] Optional Mutable The code or token type returned by an authorization request. Options are TOKEN, ID_TOKEN, and CODE. For hybrid flows that specify CODE with TOKEN or ID_TOKEN, refer to Hybrid grant type.
    signing Object Optional Mutable Configuration for the signing key. If absent, application tokens will be signed and verified by the PingOne default key at runtime. This property only applies to OIDC applications of type WEB_APP, NATIVE_APP, SINGLE_PAGE_APP, and CUSTOM_APP.
    signing.keyRotationPolicy Object Required Mutable Contains the Key Rotation Policy (KRP) ID. This property is required if signing is set.
    signing.keyRotationPolicy.id String Required Mutable Reference to a KRP ID from certificate management. This property is required if signing is set.
    supportUnsignedRequestObject Boolean Optional Mutable Indicates whether the Java Web Token (JWT) for the request query parameter is allowed to be unsigned. If false or null (default), an unsigned request object is not allowed. Both requireSignedRequestObject and this property cannot be set to true.
    tags String[] Optional Mutable An array that specifies the list of labels associated with the application. Options are PING_FED_CONNECTION_INTEGRATION. Only applicable for Create Application (OIDC Protocol - PingFederate Worker App).
    targetLinkUri String Optional Mutable The URI for the application. If specified, PingOne will redirect application users to this URI after a user is authenticated. In the PingOne admin console, this becomes the value of the target_link_uri parameter used for the Initiate Single Sign-On URL field.
    template Object Optional Mutable Valid only when the application type is TEMPLATE_APP. This identifies the application as integration in Integration Catalog. (by integration.id and version.id) and provides key-value map of parameters needed by the integration
    template.configuration Object Required Mutable Contains a key/value map of the parameters required by the integration in Integration Catalog.
    template.integration.id String Required Mutable The UUID of the integration in Integration Catalog.
    template.version.id String Required Mutable The UUID of the integration version in Integration Catalog.
    tokenEndpointAuthMethod String Optional Mutable The client authentication methods supported by the token endpoint. Options are NONE, CLIENT_SECRET_BASIC, CLIENT_SECRET_POST, PRIVATE_KEY_JWT, and CLIENT_SECRET_JWT. If this property is not set, the default values for supported app types are: CLIENT_SECRET_BASIC for WEB_APP and WORKER types, NONE for NATIVE_APP, SINGLE_PAGE_APP, and CUSTOM_APP types (when CUSTOM_APP specifies a DEVICE_CODE grant type for device authorization). For PKCE authentication flows, the tokenEndpointAuthMethod must be set to NONE.
    Applications OIDC settings data model for PING_ONE_SELF_SERVICE

    For applications of type PING_ONE_SELF_SERVICE only. Ignored for all other application types.

    Property Type Required? Mutable? Description
    applyDefaultTheme Boolean Required Mutable If true, applies the default theme to the self service application.
    enableDefaultThemeFooter Boolean Required Mutable If true, shows the default theme footer on the self service application. Applies only if applyDefaultTheme is also true.
    logoutType String Optional Mutable The logout type for the self service application. This can be either OIDC_RP_INITIATED (the default) or SAML2_SLO.
    manageDevicesViaMyAccountEnabled Boolean Optional Mutable When set to true, PingID users can manage their devices using the MyAccount app. This will also add the MyAccount app to all PingID policies that already include Device Management. To limit the scope of PingID users, ensure an MFA policy or MFA DaVinci flow policy limiting their scope is added to the MyAccount app. For more information, refer to Self service in the PingOne admin documentation.
    Applications OIDC settings data model for PING_ONE_PORTAL

    For applications of type PING_ONE_PORTAL only. Ignored for all other application types.

    Property Type Required? Mutable? Description
    applyDefaultTheme Boolean Required Mutable If true, applies the default theme to the app portal application.
    logoutType String Optional Mutable The logout type for the app portal application. This can be either OIDC_RP_INITIATED (the default) or SAML2_SLO.

    Applications SAML settings data model

    Property Type Required? Mutable? Description
    acsUrls String[] Required Mutable The Assertion Consumer Service URLs. The first URL in the list is used as default (there must be at least one URL).
    assertionDuration Integer Required Mutable The assertion validity duration in seconds.
    assertionSigned Boolean Optional Mutable Indicates whether the SAML assertion itself should be signed. The default value is true.
    corsSettings Object Optional Mutable Enables you to customize how the Authorization and Authentication APIs interact with CORS requests that reference the application. If omitted, the application allows CORS requests from any origin except for operations that expose sensitive information (such as, operations from /as/authorize and /as/token). We recommend you use corsSettings, rather than omitting this property.
    corsSettings.behavior String Required Mutable Options are "ALLOW_NO_ORIGINS" and "ALLOW_SPECIFIC_ORIGINS". ALLOWS_NO_ORIGINS rejects all CORS requests. ALLOW_SPECIFIC_ORIGINS rejects all CORS requests except those listed in corsSettings.origins.
    corsSettings.origins String[] Optional Mutable This must be specified when corsSettings.behavior is ALLOW_SPECIFIC_ORIGINS, and must be omitted or empty when corsSettings.behavior is ALLOW_NO_ORIGINS. Limited to 20 values. The values are the origins from which CORS requests to the Authorization and Authentication APIs are allowed. Each value is an HTTP or HTTPS URL without a path. The host may be a domain name (including localhost), or an IPv4 address. Subdomains can be specified using the wildcard (*) to match any string.
    defaultTargetUrl String Optional Mutable This is used as the RelayState parameter by the IdP to deep link into the application after authentication. This value can be overridden by the applicationUrl query parameter for GET Identity Provider Initiated SSO. Although both of these parameters are generally URLs, because they are used as deep links, this is not enforced. If neither defaultTargetUrl nor applicationUrl is specified during a SAML authentication flow, no RelayState value is supplied to the application. The defaultTargetUrl (or the applicationUrl) value is passed to the SAML application's ACS URL as a separate RelayState key value (not within the SAMLResponse key value).
    enableRequestedAuthnContext Boolean Optional Mutable Indicates whether requestedAuthnContext is taken into account in policy decision-making.
    enableAlwaysAcceptAcsUrlInSignedAuthnRequest Boolean Optional Mutable If enabled (true), this indicates that when a service provider (SP) specifies an ACS URL in its AuthnRequest, and signs the AuthnRequest, then assuming the identity provider (IdP) can validate the signature, the IdP can accept the ACS URL as valid. This is so, regardless of whether the ACS URL is specified in acsUrls as an allowable ACS URL (refer to Applications SAML metadata settings data model). Enabling this setting is useful when an SP generates ACS URLs dynamically.
    idpSigning.algorithm String Optional Mutable The algorithm used by the IdP signing key. Algorithms supported: SHA256withRSA, SHA384withRSA, SHA512withRSA, SHA256withECDSA, SHA384withECDSA, and SHA512withECDSA.
    idpSigning.key.id String Optional Mutable The certificate to be used by the identity provider to sign assertions and responses. If this property is omitted, the default signing certificate for the environment is used.
    nameIdFormat String Optional Mutable The format of the Subject NameID attribute in the SAML assertion. Options are
    • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified: The Subject's NameID format is not specified. Use this format if you are not sure which format to use.
    • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress: The Subject's NameID format is in the form of an email address.
    • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent: The Subject's NameID format is an opaque unique identifier for a user that retains the same value over time.
    • urn:oasis:names:tc:SAML:2.0:nameid-format:transient: The Subject's NameID format is a randomly generated identifier. A different value is used for each SSO for a given user.
    responseSigned Boolean Optional Mutable Indicates whether the SAML assertion response itself should be signed. The default value is False.
    sessionNotOnOrAfterDuration Integer Optional Mutable Update this value if the SAML application requires a different SessionNotOnOrAfter attribute value within the AuthnStatement element than the NotOnOrAfter value set by the assertionDuration property.
    sloBinding String Optional Mutable The binding protocol to be used for the logout response. Options are HTTP_REDIRECT or HTTP_POST. The default is HTTP_POST; existing configurations with no data default to HTTP_POST. This is an optional property.
    sloEndpoint String Optional Mutable The logout endpoint URL. This is an optional property. However, if a sloEndpoint logout endpoint URL is not defined, logout actions result in an error.
    sloResponseEndpoint String Optional Mutable The endpoint URL to submit the logout response. If a value is not provided, the sloEndpoint property value is used to submit SLO response.
    sloWindow Integer Optional Mutable Defines how long PingOne can exchange logout messages with the application, specifically a LogoutRequest from the application, since the initial request. PingOne can also send a LogoutRequest to the application when a single logout is initiated by the user from other session participants, such as an application or identity provider. This setting is per application. The SLO logout is separate from the user session logout that revokes all tokens.
    spEncryption Object Optional Mutable Enables PingOne to encrypt SAML assertions to be sent to the application. Assertions are not encrypted by default.
    spEncryption.algorithm String Required Mutable The algorithm for encrypting the assertions (AES_128, AES_256, or TRIPLEDES).
    spEncryption.certificate Object Required Mutable Contains the ID of the encryption public certificate that has been uploaded to PingOne.
    spEncryption.certificate.id String Required Mutable The unique identifier of the encryption public certificate that has been uploaded to PingOne.
    spEntityId String Required Immutable The service provider entity ID used to lookup the application. This must be unique within the environment.
    spVerification.authnRequestSigned Boolean Optional Mutable Whether the Authn Request signing should be enforced. Default is false.
    spVerification.certificates[].id String[] Optional Mutable An array that specifies the certificate IDs used to verify the service provider signature.
    template Object Optional Mutable Valid only when the application type is TEMPLATE_APP. This identifies the application as integration in Integration Catalog.
    template.configuration Object Required Mutable Contains a key/value map of the parameters required by the integration in Integration Catalog.
    template.integration.id String Required Mutable The UUID of the integration in Integration Catalog.
    template.version.id String Required Mutable The UUID of the integration version in Integration Catalog.
    virtualServerIdSettings Object Optional Mutable Contains the virtual server ID or IDs to be used.
    virtualServerIdSettings.enabled Boolean Optional Mutable Indicates whether the virtual server ID or IDs specified are to be used. Defaults to false.
    virtualServerIdSettings.virtualServerIds Object[] Optional* Mutable *Required if enabled is true. Contains the list of virtual ID or IDs to be used.
    virtualServerIdSettings.virtualServerIds.vsId String Optional* Mutable *Required if enabled is true. This must be a valid SAML entity ID.
    virtualServerIdSettings.virtualServerIds.default Boolean Optional Mutable Indicates whether the virtual server identified by the associated vsId is to be used as the default virtual server.
    Applications SAML metadata settings data model
    Property Type Required? Mutable? Description
    acsBindings String Optional Mutable The assertion consumer service binding protocol. Options are: HTTP_REDIRECT or HTTP_POST
    acsUrls String[] Optional Mutable The assertion consumer service URLs.
    authnRequestsSigned Boolean Optional Mutable Indicates whether the SAML authentication request is signed.
    encryptionCertificate.pkcs7Der Byte[] Optional Mutable The PKCS7 encryption certificate in DER format.
    sloBinding String Optional Mutable The SAML single logout binding protocol used for logout response. Options are: HTTP_REDIRECT or HTTP_POST.
    sloEndpoint String Required Mutable The SAML single logout endpoint URL.
    signingCertificates[].pkcs7Der Byte[] Optional Mutable The PKCS7 signing certificates in DER format.

    Applications WS-Federation settings data model

    Property Type Required? Mutable? Description
    audienceRestriction String Optional Mutable The service provider ID. Defaults to urn:federation:MicrosoftOnline.
    corsSettings Object Optional Mutable Enables you to customize how the Authorization and Authentication APIs interact with CORS requests that reference the application. If omitted, the application allows CORS requests from any origin except for operations that expose sensitive information (such as, operations from /as/authorize and /as/token). We recommend you use corsSettings, rather than omitting this property.
    corsSettings.behavior String Required Mutable Options are "ALLOW_NO_ORIGINS" and "ALLOW_SPECIFIC_ORIGINS". ALLOWS_NO_ORIGINS rejects all CORS requests. ALLOW_SPECIFIC_ORIGINS rejects all CORS requests except those listed in corsSettings.origins.
    corsSettings.origins String[] Optional Mutable This must be specified when corsSettings.behavior is ALLOW_SPECIFIC_ORIGINS, and must be omitted or empty when corsSettings.behaviour is ALLOW_NO_ORIGINS. Limited to 20 values. The values are the origins from which CORS requests to the Authorization and Authentication APIs are allowed. Each value is an HTTP or HTTPS URL without a path. The host may be a domain name (including localhost), or an IPv4 address. Subdomains can be specified using the wildcard (*) to match any string.
    domainName String Required Mutable The federated domain name (for example, the Azure custom domain).
    idpSigning Object Required Mutable Contains the information about the signing of requests by the identity provider (IdP).
    idpSigning.algorithm String Required Mutable The signature algorithm to be used for signing. Algorithms supported: SHA256withRSA, SHA384withRSA, SHA512withRSA, SHA256withECDSA, SHA384withECDSA, and SHA512withECDSA.
    idpSigning.key String Required Mutable The key pair to be used by the IdP to sign requests. If this isn't specified, the default signing certificate for the environment is used.
    idpSigning.key.id String Required Mutable The ID of the key specified for idpSigning.key.
    kerberos Object Optional Mutable Contains the Kerberos authentication settings. Set this to null to disable Kerberos authentication.
    kerberos.gateways Object[] Optional Mutable Contains the gateway properties.
    kerberos.gateways.id String Required Mutable The UUID of the LDAP gateway.
    kerberos.gateways.type String Required Mutable The gateway type. This must be "LDAP".
    kerberos.gateways.userType.id String Required Mutable The UUID of a user type in the list of userTypes for the LDAP gateway.
    replyUrl String Required Mutable The URL that the replying party (such as, Office365) uses to accept submissions of RequestSecurityTokenResponse messages that are a result of SSO requests.
    sloEndpoint String Optional Mutable The single logout endpoint URL.
    subjectNameIdentifierFormat String Optional Mutable The format to use for the SubjectNameIdentifier element. This value must be one of the following:
    urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
    urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

    Applications WS-Federation settings data model (continued)

    Additional settings for Microsoft Entra ID hybrid join

    Hybrid join simplifies device management and allows organizations to join devices to on-premises Active Directory and the cloud with Entra ID.

    Property Type Required? Mutable? Description
    hybridJoinDeviceAttribute String Optional Mutable Required for Entra ID hybrid join. The value must be the name of a custom user attribute that an administrator has created. See Creating attributes and a population for hybrid joined devices for more information.
    stsTokenType String Optional Mutable The type of token to use. Valid values:
    • http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1: Corresponds to SAML 1.1 in the admin console. Not suitable for Entra ID hybrid join.
    • urn:oasis:names:tc:SAML:1.0:assertion: Corresponds to SAML 1.1 for Office 365 in the admin console. Required for Entra ID hybrid join.
    useMex13 Boolean Optional Mutable Must be true to enable Entra ID hybrid join. After it’s set to true, update Entra ID to use the new metadata exchange endpoint. See Updating the federated IdP setting for more information.

    Application events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request, or your license is exceeded.
    404 The requested resource was not found.
    500 An unexpected error occurred.

    Create Application (OIDC Protocol - Web App)


    Create Application (OIDC Protocol - Native App)


    Create Application (OIDC Protocol - Single Page App)


    Create Application (OIDC Protocol - Service App)


    Create Application (OIDC Protocol - Worker App)


    Create Application (OIDC Protocol - Worker Interactive App)


    Create Application (OIDC Protocol - PingFederate Worker App)


    Create Application (OIDC Device Authorization Grant)


    Create Application (OIDC Mobile App)


    Create Application (SAML Protocol)


    Create Application (WS-Federation Protocol)


    Read All Applications


    Read One Application


    Update Application (OIDC)


    Update Application (SAML)


    Update Application (WS-Federation)


    Delete Application

    Application Attribute Mapping

    ID token and SAML assertion customization

    The application attributes service lets you customize the content of an ID token or a SAML assertion by adding custom attributes and their values. Custom attributes have a cumulative length constraint of 16 Kb. Refer to Custom attributes in Schemas for more information.

    In the Authorization request header field of all samples, the accessToken value is your full base64url-encoded JSON web token generated by the authentication service.

    OpenID Connect application attribute mappings

    For OpenID Connect (OIDC) applications, the user claim defined by the custom attribute mapping is returned in the ID token, regardless of the scopes specified in the authorization request. For example, suppose you want to include a user's accountId in ID tokens associated with the specified OIDC application, a custom application attribute resource can be created to map the user's account ID to the accountId PingOne user attribute. The request looks like this:

    curl -X "POST" "https://api.pingone.com/v1/environments/{{envID}}/applications/{{appID}}/attributes" \
    -H 'Content-type: application/json' \
    -H 'Authorization: Bearer {{accessToken}}' \
    -d '{
    	"name": "userAccountID",
    	"value": "${user.accountId}",
    	"required": true
    }'
    
    

    SAML application attribute mappings

    For SAML applications, the user claim defined by the custom attribute mapping is returned in the SAML assertion.

    For example, suppose you want to include an externalId in assertions associated with the specified SAML application, a custom application attribute resource can be created to map the SAML externalId attribute to the user's external ID attribute. The request looks like this:

    curl -X "POST" "https://api.pingone.com/v1/environments/{{envID}}/applications/{{appID}}/attributes" \
    -H 'Content-type: application/json' \
    -H 'Authorization: Bearer {{accessToken}}' \
    -d '{
    	"name": "externalId",
    	"value": "${user.externalId}",
    	"required": true
    }'
    
    

    Advanced attribute mapping

    You can use PingOne's expression language for advanced attribute mapping. The supported expression language is an augmentation of SpEL. SpEL is a powerful expression language used for querying and manipulating an object graph at runtime.

    For example, with advanced attribute mapping capabilities, you can write an expression that concatenates two or more user attributes in the value property:

    curl -X "POST" "https://api.pingone.com/v1/environments/{{envID}}/applications/{{appID}}/attributes" \
    -H 'Content-type: application/json' \
    -H 'Authorization: Bearer {{accessToken}}' \
    -d '{
    	"name": "fullName",
    	"value": "${user.name.given + ', ' + user.name.family}",
    	"required": true
    }'
    

    In this request, the fullName mapped attribute includes the user's first name and last name in the response.

    Applications attribute mapping data model

    Property Type Required? Mutable? Description
    application.id String Required Read-only The application associated with the application mapping resource.
    createdAt Date N/A Read-only The time the resource was created.
    environment.id String Required Read-only The environment associated with the application mapping resource.
    id UUID Required Read-only The application mapping ID.
    mappingType String Optional Mutable The mapping type of the attribute. Options are CORE, SCOPE, and CUSTOM. The CORE and SCOPE mapping types are for reserved attributes managed by the API and cannot be removed. Attribute values for these mapping types can be updated. The CUSTOM mapping type is for user-defined attributes. Attributes of this type can be updated and deleted.
    name String Required Immutable The name of attribute. Must be unique within an application. The property is set on create only and cannot be changed after creation. For SAML applications, the samlAssertion.subject name is a reserved case-insensitive name which indicates the mapping to be used for the subject in an assertion. For OpenID Connect applications, the following names are reserved and cannot be used:
    • acr
    • amr
    • at_hash
    • aud
    • auth_time
    • azp
    • client_id
    • exp
    • iat
    • iss
    • jti
    • nbf
    • nonce
    • org
    • scope
    • sid
    • sub
    nameFormat String Optional Mutable A URI reference representing the classification of the attribute. Helps the service provider interpret the attribute format.
    required Boolean Required Mutable Whether a mapping value is required for this attribute. If true, a value must be set and a non-empty value must be available in the SAML assertion or ID token.
    updatedAt Date N/A Read-only The time the resource was updated.
    value String Required Mutable The string constants or expression for mapping the attribute path against a specific source. The expression format is: ${<source>.<attribute_path>}. The only supported source is user (for example, ${user.id}).
    idToken Boolean Optional Mutable Whether the attribute mapping should be available in the ID Token. This property is applicable only when the application's protocol property is OPENID_CONNECT. If omitted, the default is true. Note that the idToken and userInfo properties cannot both be set to false. At least one of these properties must have a value of true.
    userInfo Boolean Optional Mutable Whether the attribute mapping should be available through the /as/userinfo endpoint. This property is applicable only when the application's protocol property is OPENID_CONNECT. If omitted, the default is true. Note that the idToken and userInfo properties cannot both be set to false. At least one of these properties must have a value of true.
    oidcScopes List Optional Mutable OIDC resource scope IDs that this attribute mapping is available for exclusively. This setting overrides any global OIDC resource scopes that contain an attribute mapping with the same name. The list can contain only scope IDs that have been granted for the application through the /grants endpoint. A null value is accepted for backwards compatibility. However, an empty set is invalid, and one scope ID is expected. If null, the response includes this mapping in the openid scope.

    OIDC application core mapping attributes

    Property Type Required? Mutable? Description
    sub String Required Mutable A string that specifies the core OIDC application mapping attribute. The default user attribute value is ${user.id} and the required property value must be set to true.

    SAML application core mapping attributes

    Property Type Required? Mutable? Description
    saml_subject String Required Mutable A string that specifies the core SAML mapping attribute. The default user attribute value is ${user.id} and the required property value must be set to true.

    Application Attribute events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 An unexpected error occurred.

    Create Application Attribute Mapping


    Read All Application Attribute Mappings


    Read One Application Attribute Mapping


    Update Application Attribute Mapping


    Delete Application Attribute Mapping

    Application Flow Policy Assignments

    Flow policy assignment endpoints manage the flow policies associated with the specified application. An application can have zero or more flow policies assigned to it that determine how users are authenticated. The number of flow policies assigned to an application also controls how the authentication flow progresses.

    No flow policy assignments

    Applications that have no flow policy assignments use the environment resource's default sign-on policy to authenticate users (or a designated sign-on policy assignment).

    One flow policy assignment

    Applications that have one flow policy assignment always use that flow policy to authenticate users.

    Two or more flow policy assignments

    If an application has two or more assigned flow policies, the authentication flow uses the flow policy with the highest priority (priority 1) first. If authentication is successful, the flow is complete. If authentication fails, the flow initiates the flow policy with the next highest priority. The flow continues until one of the assigned flow policies completes successfully or all policies have been tried and failed.

    OIDC applications can request a lower-priority policy by using the acr_values OIDC parameter with the desired PingOne authentication name or DaVinci flow policy ID. Refer to OpenID Connect/OAuth2 data model.

    SAML applications can request a lower-priority policy by sending a SAML 2.0 authentication request with the RequestedAuthnContext parameter, where the value indicates the desired PingOne authentication name or DaVinci flow policy ID. Note that the enableRequestAuthnContext must be set to true for the SAML application. Refer to SAML settings data model.

    Flow policies and the PingOne application portal

    If the PingOne application portal is not configured with any flow policies, it will use the default PingOne policy.

    You can apply policies other than the default to the PingOne application portal by appending the policy query parameter to your Application Portal Home Page URL. For example, the Home Page URL https://apps.pingone.com/<envID>/myapps/ would become https://apps.pingone.com/<envID>/myapps/?policy=<value>, where <value> is the name of a configured PingOne policy, or the ID of a configured DaVinci flow policy. If the policy name or ID doesn't match any configured policy, then PingOne returns an error.

    Application flow policy assignments data model

    Property Type Required? Mutable? Description
    application.id String Required Read only A string that specifies the application resource ID associated with the flow policy assignment.
    environment.id String Required Read only A string that specifies the environment associated with the application.
    flowPolicy.id String Required Mutable A string that specifies the flow policy resource ID associated with the flow policy assignment.
    id String Required Read only A string that specifies the flow policy assignment resource's unique identifier.
    priority Integer Required Mutable The order in which the policy referenced by this assignment is evaluated during an authentication flow relative to other policies. An assignment with a lower priority will be evaluated first.

    Flow Policy events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 An unexpected error occurred.

    Create an Application Flow Policy Assignment


    Read All Application Flow Policy Assignments


    Read One Application Flow Policy Assignment


    Update an Application Flow Policy Assignment


    Delete an Application Flow Policy Assignment

    Application MFA Push Credentials

    Push credentials are required for the purpose of sending push notifications to a native application. Push credentials must be defined for the application.

    The push credentials endpoint implements functions to create, read, update and delete the push credentials associated with native application resources.

    There are three types of push credentials:

    • APNS (Apple)
    • FCM_HTTP_V1 (Google)
    • HMS (Huawei)

    The FCM type, used previously for Google Play-based applications, is no longer supported. Use FCM_HTTP_V1 instead.

    MFA push credentials data model

    Property Type Required? Mutable? Description
    type String Required Immutable Specifies the push credential type.
    Valid values:
    • APNS (for Apple)
    • FCM_HTTP_V1 (for Google)
    • HMS (for Huawei)
    • FCM (no longer supported, used previously for Google)
    clientId String Required Immutable Used only if type is set to HMS. OAuth 2.0 Client ID from the Huawei Developers API console.
    clientSecret String Required Immutable Used only if type is set to HMS. The client secret associated with the OAuth 2.0 Client ID.
    googleServiceAccountCredentials String Required Immutable Used when type is set to FCM_HTTP_V1. The value should be the contents of the JSON file that represents your Service Account Credentials (the Firebase Admin SDK private key).
    key String Required Immutable Used when type is set to APNS. The value should be the key ID. Before the deprecation of the FCM type, this was also used for the server key.
    teamId String Required Immutable Used only if type is set to APNS. Used to identify teams.
    token String Required Immutable Used only if type is set to APNS. Used as the authentication token signing key to securely connect to APNS. This is a p8 file with a private key format.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 Unexpected server error.

    Create MFA Push Credential (APNS)


    Create MFA Push Credential (FCM_HTTP_V1)


    Create MFA Push Credential (HMS)


    Read All MFA Push Credentials


    Read One MFA Push Credential


    Update MFA Push Credential


    Delete MFA Push Credential

    Application Resource Grants

    Resources are the protected endpoints that applications request access to using OAuth 2 authorization services. A resource access grant specifies the identifier of the resource associated with the specified application.

    Applications resource grant data model

    Property Type Required? Mutable? Description
    application.id String N/A Read-only The application resource ID associated with the resource grant.
    createdAt Date N/A Read-only The time the resource was created.
    id String N/A Read-only The application resource grant ID.
    resource.id String N/A Read-only The ID of the protected resource associated with this grant.
    scopes.id String[] Required Mutable The IDs of the scopes associated with this grant.
    updatedAt Date N/A Read only The time the resource was last updated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 An unexpected error occurred.

    Create Grant


    Read All Grants for an Application


    Read One Grant for an Application


    Update Grant


    Delete Grant

    Application Role Assignments

    The role assignments endpoint implements functions to create, read, and delete the role assignments associated with applications resources. For more information about roles and the permissions associated with each role, refer to Roles.

    Role assignments are defined by the role itself, and at a more granular level by the scope attribute associated with the role assignment. The role assignment scope identifies the type of platform resource that defines the scope, and the id of the specific resource to which the scope applies. The following sample shows the scope attribute, which includes the resource type and id attributes. In this case, the scope is restricted to the environment resource identified by its id.

    {
      "scope": {
       "id": "d928aa51-c194-4333-9cf5-0fd0c9b7d62f",
       "type": "ENVIRONMENT"
       }
    }   
    

    Role assignment scopes can be:

    • Organization

    • Environment

    • Population

    • Application

    Applications role assignments data model

    Property Type Required? Mutable? Description
    application.id String Required Read only The application resource ID associated with the role assignment.
    environment.id String Required Read only The environment associated with the application role assignment.
    id String Required Read only The application role assignment ID.
    readOnly Boolean Optional Mutable Indicates whether this role assignment can be deleted by the current actor. Varies depending on the actor accessing the role assignment and is only true under the following conditions: The actor is the target, or the actor does not have the role (or a role that can assign the role) for the scope or an ancestor of the scope.
    role.id String Required Mutable The role ID.
    scope.id String Required Mutable The role assignment scope ID. When this is an application ID, because an application ID is guaranteed to be globally unique (across all environments), the application ID here eliminates the need to also specify the application environment ID.
    scope.type String Required Mutable The type of resource defining the scope of the Role assignment. Options are ORGANIZATION, ENVIRONMENT, and POPULATION, APPLICATION.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Application Role Assignments


    Read Application Role Assignments


    Read One Application Role Assignment


    Delete Application Role Assignment

    Application Secret

    The application secret endpoints are available to users or worker applications only when the following conditions are met:

    • The actor has the requisite permission: applications:read:secret, applications:update:secret, or applications:delete:secret.

    • The actor does not see any of the application's role assignments as readOnly. Note: This only applies if the application is a worker application. Learn more about the readOnly property in the Applications role assignments data model table.

    An actor's ability to access application secrets is restricted to prevent permission escalation. Permission escalation is when an actor can perform operations indirectly through the application that they'd be unable to perform directly.

    Best practices

    • Do not store an application secret in applications that are publicly available.

    • For security purposes, regenerate application secrets regularly.

    • If you suspect an application secret has been compromised, generate a new application secret immediately.

    Applications secret data model

    Property Type Required? Mutable? Description
    environment.id String Read-only The environment associated with the application.
    previous Object Optional Read only An object that specifies the previous secret, when it expires, and when it was last used.
    previous.secret String N/A Read only A string that specifies the previous application secret. This property is returned in the response if the previous secret is not expired.
    previous.expiresAt Timestamp Optional Read only A timestamp that specifies how long this secret is saved (and can be used) before it expires. Supported time range is 1 minute to 30 days.
    previous.lastUsed Timestamp Optional Read only A timestamp that specifies when the previous secret was last used.
    secret String Required Read-only The application secret ID used to authenticate to the authorization server. The secret has a minimum length of 64 characters per SHA-512 requirements when using the HS512 algorithm to sign ID tokens using the secret as the key.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 An unexpected error occurred.

    Update Application Secret


    Read Application Secret


    Delete Previous Application Secret

    Application Sign-On Policy Assignments

    Sign-on policy assignment endpoints manage the sign-on policies associated with the specified application. An application can have zero or more sign-on policies assigned to it that determine how users are authenticated. The number of sign-on policies assigned to an application also controls how the authentication flow progresses.

    No sign-on policy assignments

    Applications that have no sign-on policy assignments use the environment resource's default sign-on policy to authenticate users. Every environment has one designated sign-on policy as its default policy. If the environment's default sign-on policy changes, then the application's sign-on policy changes to use the updated default policy.

    One sign-on policy assignment

    Applications that have one sign-on policy assignment always use that sign-on policy to authenticate users. For example, if the application has the Single_Factor sign-on policy assigned, the application will always use this basic authentication method that prompts users to enter a username and password to authenticate the account.

    Two or more sign-on policy assignments

    If an application has two or more assigned sign-on policies, the authentication flow uses the sign-on policy with the highest priority (priority 1) first. If authentication is successful, the sign-on flow is complete. If authentication fails, the flow initiates the sign-on policy with the next highest priority. If authentication fails again, the sign-on flow initiates the next sign-on policy. The sign-on flow continues until one of the assigned sign-on policies completes successfully or all policies have been tried and failed.

    Sign-on policy priority when acr_values is set

    For applications with the protocol property set to OPENID_CONNECT, the acr_values property (set on the authorize request) identifies the exact list of sign-on policies that can execute at sign on. At sign-on, only the sign-on policies listed in the acr_values property are evaluated, and they are evaluated based on the order of the policies listed in this property. In addition, if there are numerous sign-on policies assigned to an application, setting the acr_values property limits the number of sign-on policies evaluated to only those listed in this property.

    For example, if the authorize request includes acr_values=Multi_Factor Single_Factor, the authentication flow executes the Multi_Factor policy first. If the multi-factor sign-on flow completes all conditions for the policy, the flow completes and the user is issued a token. If the multi-factor policy fails, the Single_Factor policy executes. If that policy completes all conditions, the flow completes and the user is issued a token. If the single-factor policy is the last policy in the acr_values list, and it fails, then the sign-on flow fails. No other sign-on policies are tried, even if the application has additional sign-on policy assignments.

    Applications sign-on policy assignments data model

    Property Type Required? Mutable? Description
    application.id String Required Read-only The application resource ID associated with the sign-on policy assignment.
    environment.id String Required Read-only The environment associated with the application sign-on policy assignment.
    id String Required Read-only The sign-on policy assignment resource's unique identifier.
    priority Integer Required Mutable The order in which the policy referenced by this assignment is evaluated during an authentication flow relative to other policies. An assignment with a lower priority will be evaluated first.
    signOnPolicy.id String Required Mutable The sign-on policy resource's unique identifier associated with this sign-on policy assignment.

    Application Sign-on Policy events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 An unexpected error occurred.

    Create SOP Assignment


    Read All SOP Assignments


    Read One SOP Assignment


    Update SOP Assignment


    Delete SOP Assignment

    Integration Catalog

    Use the endpoints in the Integration Catalog to discover and retrieve integration metadata, SAML metadata, and download integration kits as a compressed file.

    Integration data model

    Property Type Required? Mutable? Description
    categories String[] Optional Mutable The list of categories used to classify the integration. Valid strings include alphanumeric characters, underscore, hyphen, and space.
    createdAt Date Required Immutable Creation date of the integration.
    description String Optional Mutable The description of the integration in HTML to be used for the integration listing. You can use class and style attributes for inline styling. There's a 4000 character limit for the description.
    id String Required Immutable The platform-generated ID of this integration.
    logo String Optional Mutable A logo to use for the integration. If specified, the associated properties are required.
    logo.href String Required Mutable The href to the absolute URL of the image.
    logo.id String Required Mutable The image ID generated by the Image service.
    marketingLandingPageUrl String Optional Mutable Absolute URL link to the marketing landing page.
    name String Required Mutable Name of the integration.
    pingProductNames String[] Required Mutable The Ping product associated with the integration. Can include: PINGID, PINGONE_ENTERPRISE, PINGONE, PINGACCESS, PINGFEDERATE, PINGDIRECTORY, PINGDATAGOVERNANCE, orPINGINTELLIGENCE_FOR_APIS, PINGONE_ADVANCED_SERVICES
    publisher String Required Mutable Name of the publisher.
    tags String[] Optional Mutable Tags to apply to the integration metadata. Can include: SSO, AUTHENTICATION, MFA, INTELLIGENCE, GOVERNANCE, IDAAS, ACCESS, DIRECTORY, or PROVISIONING.
    thirdParty Object Optional Mutable Metadata that defines the third party related to this integration.
    thirdParty.companyName String Required Mutable Name of the third party company for the listing.
    thirdParty.products String[] Optional Mutable Names of the third party products for the integration.

    Integration version data model

    Each integration can have versions. Valid integration version numbers match the regular expression (^\d+.\d+(.\d+)?$). So, 1.0.2 and 2.06 are valid versions. Examples of invalid versions include v.1.2 and 1.2.3.4.

    Property Type Required? Mutable? Description
    configuration Object Optional Mutable The configuration of the integration version. If specified, configuration.schema and configuration.properties is required.
    configuration.schema Object Required Mutable Contains a JSON schema defining the integration version.
    configuration.properties Object Required Mutable Contains the property names and assigned values for the integration version.
    description String Optional Mutable Unicode characters. The description of this integration metadata version.
    id String Required Immutable The platform-generated ID of this integration metadata version.
    integration Object Required Read only The parent integration of the integration version.
    integration.id String Required Immutable The platform-generated ID of the parent integration.
    name String Required Mutable A unique name for the integration metadata version.
    number String Required Mutable A unique number for the integration version.
    type String Optional Mutable The type of integration for this version. Currently, the only valid values are PRODUCT_INTEGRATION_KIT and SAML.

    Integration Kit data model (extends Integration Version)

    Integration version metadata with a type of PRODUCT_INTEGRATION_KIT will include this data.

    Property Type Required? Mutable? Description
    documentationUrl String Optional Mutable Absolute URL to the documentation.
    endOfLifeOn Date Optional Mutable EOL support date in the form yyyy-mm-dd.
    integratedWith Object Optional Mutable Ping product integration details.
    integratedWith.name String Required Mutable Name of the compatible Ping product with which this version integrates. Can include: PINGID, PINGONE_ENTERPRISE, PINGONE, PINGACCESS, PINGFEDERATE, PINGDIRECTORY, or PINGDATAGOVERNANCE
    integratedWith.minVersion String Optional Mutable Earliest version of the integrated Ping product.
    integratedWith.maxVersion String Optional Mutable Latest version of the integrated Ping product.
    number String Required Mutable Unique number for the integration version.
    releasedOn Date Required Mutable Release date in the form yyyy-mm-dd.

    SAML data model (extends Integration Version)

    Integration version metadata with a type of SAML will include the following data.

    Property Type Required? Mutable? Description
    assertionConsumerService String Required Mutable The URL to which PingOne sends SAML responses. Parameterize the URL using ${_paremter_}. For example, https://${subdomain}.slack.com. The maximum length is 2000 characters.
    assertionEncrypted Boolean Optional Mutable The state of assertion encryption. True if encrypted.
    defaultTarget String Optional Mutable After an IdP-initiated SSO, this URL is passed in the RelayState value in the SAML response. Informs the IdP where to send its response. Parameterize the URL using ${_paremter_}. For example, https://${subdomain}.slack.com.
    entityId String Optional Mutable Unique ID for the application.
    nameIdFormat String Optional Mutable This can be one of the following:
    • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

    • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

    • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

    • urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    protocolVersion String Required Mutable The SAML protocol version supported: 2.0, 1.1, or 1.0.
    slo Object Optional Mutable The Single Logout information.
    slo.requestEndpoint String Optional Mutable The endpoint where SLO requests are sent.
    slo.responseEndpoint String Optional Mutable The endpoint where SLO responses are sent.
    slo.binding String Optional Mutable The SLO binding. Must be either HTTP_POST or HTTP_REDIRECT
    thirdParty Object Optional Mutable Third-party IdP information.
    thirdParty.metadata Object Optional Mutable The third-party IdP metadata.
    thirdParty.metadata.href String Optional Mutable URL of IdP's SAML metadata XML.
    thirdParty.instructions.href String Optional Mutable URL of IdP's setup instructions.

    Attribute data model

    Only available for SAML integration metadata. The attribute data is used to store any attributes that are predefined by providers.

    Property Type Required? Mutable? Description
    id String Required Mutable Auto-generated ID of this attribute.
    integration Object Required Read only The parent integration of the integration version.
    integration.id String Required Immutable The platform-generated ID of the parent integration.
    name String Optional Mutable Attribute name the application expects. Unique within the integration version and in the form urn:oasis:names:tc:SAML:2.0:attrname-format:uri.
    required Boolean Optional Mutable Whether or not the attribute is required. If true, the value property must be set with a non-empty value. Default is false.
    schema String Required Mutable A JSON schema describing the current attribute mapping.
    version Object Required Read only The relationship to the parent integration version.
    version.id String Required Immutable The platform-generated ID of the parent integration version.

    Use Cases


    Read All Integration Metadata


    Read All Integration Versions Metadata


    Read All Attributes of an Integration Version (SAML only)


    Read One Integration Metadata


    Read One Integration Version Metadata


    Read One Attribute of an Integration Version (SAML only)


    Download One Integration Version Asset

    Environment Management

    Environments define separate working domains within an organization. Environments are used to model regions within a large global enterprise such as NA (North America) or EU (European Union). They are also used as the defining entity to segregate enterprise operations by functionality, staging environments, or configurations.

    In the management API sample requests shown in this document, the {{apiPath}} variable in the sample requests represents the regional domain for the PingOne server. Refer to PingOne API domains for more information.

    For more information, refer to Environments.

    Environments contain many of the core resources on which all identity services are built. Environments encompass:

    • MFA

      A multi-factor authentication (MFA) authentication policy prompts users to complete an MFA action, such as entering a one-time passcode received on a registered device or accepting a push confirmation on a registered native device. There ae several services that enable MFA configuration at the environment level.

      For more information, refer to Device Authentication Policies, MFA Settings, and Sign-On Policies.

    • Populations

      In PingOne, a population defines a set of users, similar to an organizational unit (OU). In a given environment, you can use populations to simplify the management of users. For example, you can create a population for similar types of users and apply a password policy to that population. You must create at least one population before you can create users. An individual user cannot belong to more than one population simultaneously, but users can be moved to a different populations.

      For more information, refer to Populations.

    • Resources

      Resources represent the connections to external services, enabling secure access to PingOne resources and other defined external resources.

      For more information, refer to Resources, Resource scopes, and Resource attributes.

    • Activities

      Activities are collections of user activity information such as login attempts, password reset attempts, and total active user counts. This audit data can be exported, reported on, or streamed out to customer security information and event management (SIEM) solutions.

      For more information, refer to User activities.

    • Branding and images

      Branding can be configured for elements of the PingOne interface. All end user interfaces are branded according to the theme defined in the associated branding resource. Image resources can be configured to upload custom branding image files to the content delivery network (CDN) and manage the lifecycle of those images.

      For more information, refer to Branding and Images.

    • Password policies

      These resources represent the password management actions and password policies that can be applied to users within an environment.

      For more information, refer to Passwords.

    • Sign-on policies

      These resources represent the sign-on workflow policies to establish an authentication flow during login, re-authentication, or registration actions that identify and verify users. The authentication workflows are part of the authentication API. The signOnPolicy resource is a proxy back to other APIs to perform authentication actions.

      For more information, refer to Sign-on policies and Sign-on policy actions.

    • Notifications templates

      These endpoints manage notification templates resources and notifications content.

      For more information, refer to Notifications templates and Notifications settings.

    • Certificates and keys

      The certificate management endpoints provide an implementation that supports FIPS 140-2 Level 1 compliant security algorithms to generate key pairs. They manage customer-provided certificates, customer-provided signing/encryption keys, Ping-generated certificates (PKI), and Ping-generated signing/encryption keys.

      For more information, refer to Certificate management.

    Roles, entitlements, and permissions

    Roles, permissions, and entitlements are defined at the root of the platform. Roles are assigned to users, and these user roles include a scope property to grant the user permissions corresponding to the role. For example, a role of Identity Admin contains permissions allowing the subject to read and edit user data. When this role is assigned to a user, it can be assigned with the scope property that identifies a population or an environment to which the permissions apply.

    Self-service application permissions are described using scopes rather than roles. Scopes are more narrowly defined roles in that a scope cannot cross an environment boundary, and it is restricted to a specific task. For example, the p1:read:user scope grants permission to read the user resource's data only; it does not grant permission to read another user's data or perform create, update, or delete operations on user resources.

    For more information, refer to Roles and Resource scopes.

    Licenses

    The license resource identifies the organization that owns the license, the licensing package type, and the expiration date for the license.

    For more information, refer to Licensing.

    Administrator Security

    Use the administrator security endpoints to read and update environment administrator sign-on settings. By default, MFA is enforced for administrators. You can use the PUT operation to:

    • Use an external identity provider or a hybrid configuration by making a request to PUT {{apiPath}}/environments/{{envID}}/adminConfig and setting the authenticationMethod property.
    • Require MFA for all admin sign-ons. In this case, use PingOne as the value of authenticationMethod, set the mfaStatus value to ENFORCE, and the allowedMethods to the MFA methods you want to enable.

    Refer to Configuring Administrator Security in the PingOne administrator documentation for more information.

    Administrator security data model

    Property Type Required? Mutable? Description
    allowedMethods Object Optional Mutable Indicates the methods to enable or disable for admin sign-on. Required properties are TOTP (temporary one-time password), FIDO2, and EMAIL.
    allowedMethods.EMAIL String Required Mutable Indicates whether to enable email for sign-on. Must be set to either {\"enabled\":true} or {\"enabled\":false}.
    allowedMethods.FIDO2 String Required Mutable Indicates whether to enable FIDO2 for sign-on. Must be set to either {\"enabled\":true} or {\"enabled\":false}.
    allowedMethods.TOTP String Required Mutable Indicates whether to enable TOTP for sign-on. Must be set to either {\"enabled\":true} or {\"enabled\":false}.
    authenticationMethod String Required Mutable Indicates whether to use PingOne MFA, an external IdP, or a combination of both for admin sign-on. Possible values are PINGONE, EXTERNAL, or HYBRID. The default is PINGONE.
    createdAt Date N/A Read-only The timestamp the resource was created.
    environment.id UUID N/A Read-only The ID of the environment.
    hasFido2Capabilities Boolean N/A Read-only Indicates whether the environment supports FIDO2 passkeys for MFA.
    isPingIDInBOM Boolean N/A Read-only Indicates whether the environment supports PingID for MFA.
    mfaStatus String Required Immutable This property must be set to ENFORCE as MFA is required for administrator sign-ons. This property applies only to the specified environment.
    provider.id UUID Optional Mutable The UUID of the external IdP, if applicable.
    recovery Boolean Required Mutable Indicates whether to allow account recovery within the admin policy.
    updatedAt Date N/A Read-only The timestamp the resource was last updated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Read Administrator Security


    Read Administrator Security Populations


    Update Administrator Security (External IdP)


    Update Administrator Security (Enhanced)


    Update Administrator Security Populations (Hybrid)

    Agreement Management

    Agreements define the details of an agreement to which end users provide consent. An agreement consists of these PingOne resources:

    • Agreements resources

      Defines the top level configuration for all the languages resources associated with the agreement. For more information, refer to Agreements Resources.

    • Language resources

      Defines the configuation for the locale and for the configuration that applies to all revision resources associated with the language. For more information, refer to Agreement Languages Resources.

    • Revisions resources

      Defines the specific version text (the agreement content) to manage the lifecycle of the agreement to which users provide consent. For more information, refer to Agreement Revisions Resources.

    Learn more in Agreements in the PingOne admin guide.

    Agreement configuration

    An agreement cannot be enabled unless it supports the default environment language. The agreement resource can have its enabled property set to true only if there is "agreement content to show" for the default environment language. If the enabled property on the agreement resource is false, the agreement cannot be presented to end users.

    The condition of having "agreement content to show" requires that at least the environment's default language is configured as an agreement language resource. The agreement language resource that supports the environment's default language must be enabled. The agreement language resource can have its enabled property set to true only if there is "localized content to show" configured on its associated agreement revisions resource. If the enabled property on the agreement language resource is false, the agreement language cannot be presented to end users. Remember, you must enable the agreement language resource that represents the environment's default language to enable the agreement. Additional agreement languages can also be configured and associated with the agreement.

    The agreement revision resource associated with an agreement language resource must have text content (and it can have optional buttons and checkboxes) configured on the resource to meet the "localized content to show" condition to enable the language. For the agreement revision to be active, the agreement revision's effectiveDate property must not be set to a future date. However, the effectiveDate value can be set to a future date, but the revision is inactive until the specified date.

    How agreement content is presented to users

    Agreement languages are defined by either the language code (for example, en) or the combination of language code and country code (for example, en-GB). For identifying languages, the API follows the tags for identifying languages described in RFC_4646. For selecting a language code to use in an agreement, the API follows the matching of language tags described in RFC_4647.

    When an agreement is active, languages are presented to the user in the following order:

    1. User preference: The end user receives agreement content in the language that matches the user's preferredLanguage property value.

    2. Browser preference: If the user's preferredLanguage is not configured (or enabled) as one of the supported agreement language resources for this agreement, the end user receives agreement content in the language associated with the browser's configured locale.

    3. Environment default language: If the browser's configured language is not one of the enabled agreement language resources for this agreement, then the agreement content is presented to the end user in the environment's default language.

    The following table shows an example of how the platform presents agreement languages to users, depending on the environment default language, the configured agreement languages, and the user's language preferences.

    Environment default language Configured agreement languages User preference languages (ordered) Language presented to user
    es en, es en-US, es en
    es en-GB, es en-US es
    es en, en-GB, es en-US, es, en-GB en

    Agreement consent history

    A user's consents to agreements do not expire by default, but they can be configured to designate a re-consent action based on a specified length of time or the active date of an agreement revision. An environment supports up to 100 agreement resources.

    Only the user's latest consent information is kept in the API. Agreement consent history is visible through audit reporting events. For more information about audit reporting, refer to Audit Activities.

    For example, to search for the consent history for a specific user to an agreement using the audit activities API, the query filter looks like this:

    recordedat ge "2020-12-11T22:13:41.838Z" and recordedat le "2021-06-09T21:13:41.838Z" and resources.type eq "user" and resources.id eq "<user-id>" and (action.type eq "AGREEMENT_CONSENT.ACCEPTED")
    

    To search for consent history for an agreement (showing consents for all users), the query filter looks like this:

    recordedat ge "2020-12-11T22:11:54.484Z" and recordedat le "2021-06-09T21:11:54.484Z" and resources.id eq "<agreement-id>" and (action.type eq "AGREEMENT_CONSENT.ACCEPTED")
    

    Agreements events generated

    Refer to Audit Reporting Events for the events generated.

    Use Cases

    Agreements Resources

    The agreements API defines the top level configuration for all the languages resources associated with the agreement. It implements functions to create, read, update, and delete agreement resources.

    Agreements data model

    Property Type Required? Mutable? Description
    consentCountsUpdatedAt Date N/A Read-Only The time the consent count metric was last updated. This value is typically updated once every 24 hours.
    description String Optional Mutable The description of the agreement.
    enabled Boolean Required Mutable The current enabled state of the agreement. The agreement must support the default language to be enabled. It cannot be disabled if it is referenced by a sign-on action. When an agreement is disabled, it is not used anywhere that it is configured across PingOne.
    environment.id String N/A Read-Only A string that specifies the environment associated with the agreement.
    expiredUserConsents Integer Required Read-Only The number of users who have consented to the agreement, but their consent has expired. This value is last calculated at the consentCountsUpdatedAt time.
    id String N/A Read-Only The agreement ID.
    name String Required Mutable The name of the agreement resource.
    reconsentPeriodDays Float Optional Mutable The number of days until a consent to this agreement expires.
    totalUserConsents Integer Required Read-Only The total number of users who have consented to the agreement. This value is last calculated at the consentCountsUpdatedAt time.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Agreement


    Read All Agreements


    Read One Agreement


    Update Agreement


    Delete Agreement

    Agreement Languages Resources

    Agreement languages define the configuration for the locale and for the configuration that applies to all revision resources associated with the language.

    Agreement languages are defined by either the language code (for example, en) or the combination of language code and country code (for example, en-gb). For identifying languages, the API follows the tags for identifying languages described in RFC_4646. For selecting a language code to use in an agreement, the API follows the matching of language tags described in RFC_4647.

    The end user's language selection for the consent agreement is determined by these attributes in the following priority: (1) the user's preferred locale, (2) the browser locale, or (3) the default language for the environment.

    The agreement languages service implements functions to create, read, update, and delete agreement language resources.

    Agreement languages data model

    Property Type Required? Mutable? Description
    agreement String Required Read-Only A UUID that specifies the agreement resource associated with this language resource.
    currentRevision String Optional Read-Only A UUID that specifies the current revision associated with this language resource. The current revision is the one shown to users for new consents in the language.
    displayName String Required Mutable Used as the title of the agreement for the language presented to the user.
    enabled Date Required/Optional Mutable Maps directly with a language being enabled or displayed for the environment within the platform. When running Create Language, enabled value will be false whether or not this property is included. If the language is disabled at the environment level, this property if always false.
    id String Required Read-Only UUID that specifies the language ID.
    locale String Required Mutable The tag for identifying the language resource associated with this agreement consent (for example, en-US). For more information about language tags, refer to Tags for Identifying Languages.
    userExperience.acceptCheckboxText String Optional Mutable The text next to the "accept" checkbox in the end user interface. Accepted character are unicode letters, combining marks, numeric characters, whitespace, and punctuation characters (regex: ^[\p{L}\p{M}\p{N}\p{Zs}\p{P}]+$).
    userExperience.continueButtonText String Optional Mutable The text of the "continue" button in the end user interface. Accepted character are unicode letters, combining marks, numeric characters, whitespace, and punctuation characters (regex: ^[\p{L}\p{M}\p{N}\p{Zs}\p{P}]+$).
    userExperience.declineButtonText String Optional Mutable The text of the "decline" button in the end user interface. Accepted character are unicode letters, combining marks, numeric characters, whitespace, and punctuation characters (regex: ^[\p{L}\p{M}\p{N}\p{Zs}\p{P}]+$).

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Language


    Read All Languages


    Read One Language


    Update Language


    Delete Language

    Agreement Revisions Resources

    Agreement revisions define the specific version text (the agreement content) to manage the lifecycle of the agreement to which users provide consent.

    A revision resource allows you to update the content for an agreement language. (A language can have up to 100 associated revisions.) The revision must have a value specified for the effectiveDate property, and when showing content to a user for an agreement language, the content associated with a revision with an effective date closest to the current date is shown. The revision can be configured to force the user to consent again to the agreement.

    The revisions service implements functions to create, read, and delete agreement revision resources. Agreement revision resources cannot be updated. If an agreement revision needs to be updated, a new agreement revision should be created. In addition, agreement revision resources that have become effective cannot be deleted, which ensures that consent data is preserved.

    Revision data model

    Property Type Required? Mutable? Description
    agreement String Required Read-Only The UUID for the agreement resource for this revision.
    contentType String Required Immutable The content type of text. Options are text/html and text/plain, as defined by rfc-6838 and Media Types/text. This attribute is supported in POST requests only.
    effectiveAt Date Required Mutable The start date that the revision is presented to users. This property value can be modified only if the current value is a date that has not already passed. The effective date must be unique for each language agreement, and the property value can be the present date or a future date only.
    id String Required Read-Only The revision ID.
    language String Required Mutable A UUID that specifies the language resource associated with this revision.
    notValidAfter Date Optional Read-Only Specifies whether the revision is still valid in the context of all revisions for a language. This property is calculated dynamically at read time, taking into consideration the agreement language, the language enabled property, and the agreement enabled property. When a new revision is added, the notValidAfter property values for all other previous revisions might be impacted. For example, if a new revision becomes effective and it forces reconsent, then all older revisions are no longer valid.
    requiresReconsent Boolean Required Mutable Whether the user is required to provide consent to the language revision after it becomes effective.
    text String Required Immutable Text or HTML for the revision. HTML support includes:
    • tags - italicize, bold, links, headers, paragraph, line breaks
    • link (a) tags - allow href, style, target attributes
    • block tags (p, b, h) - allow style and align attributes
    This attribute is supported in POST requests only. For more information, refer to contentType.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Revision


    Read All Revisions


    Read One Revision


    Delete Revision

    Migrate existing external agreement consents to PingOne

    This topic provides guidance on how to load existing user agreement consents into PingOne. It assumes that your users and agreements are already loaded into PingOne. For information about creating and managing users, refer to Users.

    In this topic, the following terms are used to describe the PingOne and external entities:

    • External user: A user record outside of PingOne.

    • External agreement: An agreement that exists outside of PingOne to which external users have provided consent.

    • External agreement consent: A user agreement consent record outside of PingOne.

    • PingOne user: The user in PingOne. You should have a way to correlate each external user to the corresponding PingOne user.

    • PingOne agreement: An agreement in PingOne. Each of your external agreements should have a corresponding PingOne agreement.

    • PingOne agreement consent: A user agreement consent record in PingOne.

    Migrate external agreement consents

    Follow these steps to load one existing external user agreement consent into PingOne:

    Step 1: Get information from the external existing consent record

    Extract the following information from your existing agreement consent record. You will need this information to complete Step 2:

    • userId

      The existing external consent should be associated with an external user. Correlate that external user to a PingOne user. The userId is that PingOne user's id.

    • agreementId

      The existing external agreement consent should be associated with an external agreement. Correlate that external agreement to a PingOne agreement. The agreementId is that PingOne agreement's id.

    • languageId

      The existing consent should be associated with a language. Correlate that to a PingOne agreement language. This is the PingOne agreement language languageId property value needed in the API request you will run in Step 2.

    • revisionId

      The most recent effective revision ID associated with the PingOne agreement language. This is the PingOne agreement revision revisionId property value needed in the API request you will run in Step 2.

    • consentedAt

      This can be either the external agreement consent time or the current time. If you want to make sure your users do not have to consent again, you might need to modify the PingOne agreement's reconsent period property.

    Step 2: Create the user's PingOne agreement consent

    To create the user's corresponding PingOne agreement consent, you can make requests to the following PingOne endpoint: POST {{apiPath}}/environments/{{envID}}/users/{{userID}}/agreementConsents/{{agreementID}}. You will need the information for the external agreement consent you collected in Step 1.

    The POST {{apiPath}}/environments/{{envID}}/users/{{userID}}/agreementConsents/{{agreementID}} request uses a Content-Type header with a value of application/vnd.pingidentity.consent.accept+json to initiate the consent accept action.

    The request body for this request requires the following properties:

    {
    	language: { id: "{{languageID}}" },
    	revision: { id: "{{revisionID}}" },
    	consentedAt: "{{date}}"
    }
    

    The languageID property value is the ID of the language resource associated with the agreement revision. The revisionID is the PingOne current active agreement revision ID.

    For more information about the POST {{apiPath}}/environments/{{envID}}/users/{{userID}}/agreementConsents/{{agreementConsentID}} request, refer to Accept Agreement.

    To load multiple existing external user agreement consents into PingOne, you can perform this operation over your existing external agreement consents and load each one at a time. Please ensure you account for API rate limits.

    Alerting

    The Alerting service delivers warnings to administrators' email addresses regarding changes in resource states that can cause service disruptions. By default, each alert is sent only once. The Alerting service filters out any duplicate alerts.

    For administrators to receive these alerts, you must configure the alert channel to use for each environment. Currently, email is the only supported type of alert channel. Use the Alerting service endpoints to configure the alert channel.

    Alert channel data model

    Property Type Required? Mutable? Description
    addresses String[] Required Mutable The administrator email addresses to send the alerts to.
    channelType String Required Mutable Alert channel type. Currently, this must be EMAIL.
    alertName String Optional Mutable The name to assign to the alert channel.
    environment.id String Required Immutable Unique ID of the environment.
    excludeAlertTypes String[] Optional Mutable Administrators will not be emailed alerts of these types. If empty, no alert types are excluded. Possible values are those listed for includeAlertTypes.
    id String N/A Read-only Unique ID of the alert channel.
    includeSeverities String[] Optional Mutable Filters alerts by severity. If empty, all severities are included. Possible values are INFO, WARNING, and ERROR.
    includeAlertTypes String[] Optional Mutable Use the includeAlertTypes array to specify the alert types you want to create. If empty, all alert types are included. Possible values are: CERTIFICATE_EXPIRED, CERTIFICATE_EXPIRING, GATEWAY_VERSION_DEPRECATED, GATEWAY_VERSION_DEPRECATING , KEY_PAIR_EXPIRED, KEY_PAIR_EXPIRING, LICENSE_90_PERCENT_USER_SOFT_LIMIT, LICENSE_EXPIRED, LICENSE_EXPIRING, LICENSE_ROTATED, LICENSE_USER_HARD_LIMIT_EXCEEDED, LICENSE_USER_SOFT_LIMIT_EXCEEDED, RATE_LIMIT_EXCEEDED , RATE_LIMIT_WARNING, RISK_CONFIGURATION, SUSPICIOUS_TRAFFIC.

    Alert events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Alert Channel (Email)


    Read All Alert Channels per Environment


    Update Alert Channel


    Delete Alert Channel

    Bill of Materials (BOM)

    PingOne environments serve as the container for the products and services that are licensed for a specific customer deployment. The Bill of Materials (BOM) service references the products and standalone shared services associated with an environment, functioning like a product registry for the environment. You can optionally add up to five custom bookmarks for each product in the BOM. Users will be able to access these bookmarks from the PingOne dashboard.

    The Bill of Materials service is closely associated with the Environments and Licensing services. A PingOne environment contains the configuration options for a deployment, which can include any (or all) Ping Identity products. PingOne supports multiple environments, and each environment can have its own deployment configuration. You can use the Bill of Materials (BOM) service to retrieve a specified environment's BOM to show product details in the environment's current configuration. The service also includes a supported action to update the BOM with additional licensed PingOne products (or non-PingOne Ping Identity products) to fine-tune the environment's deployment capabilities.

    You need the Environment Admin role to get the Bill Of Materials for an environment. For more information about roles, refer to Roles.

    Bill of Materials data model

    Property Type Required? Mutable? Description
    _links Object N/A Read-only HAL links.
    _links.href String N/A Read-only HAL link.
    _embedded Object N/A Read-only HAL embedded resources.
    solutionType String Optional Immutable The solution type selected when creating the environment. Ignored on PUT operations. The following values are supported:
    CIAM_TRIAL. The Customer trial experience. Indicates the Customer solution type, and the Solution Designer was selected.
    WF_TRIAL. The Workforce trial experience. Indicates the Workforce solution type, and the Solution Designer was selected.
    CUSTOMER. Indicates the Customer solution type was selected. This solution type uses PingOne MFA, rather than PingID.
    WORKFORCE. Indicates the Workforce solution type was selected. This solution type uses PingID, rather than PingOne MFA.
    products Array Required Immutable The products that comprise the environment.
    createdAt Date Time N/A Read-only Date and time the resource was created.
    updatedAt Date Time N/A Read-only Date and time the resource was last updated.

    Products data model

    Property Type Required? Mutable? Description
    id String Required Immutable The ID of the product. Ignored on PUT operations.
    type String Required Immutable The Ping Identity product type.
    Options for PingOne platform products are PING_ONE_MFA, PING_ONE_RISK (this name also represents the PingOne Protect product), PING_ONE_DAVINCI, PING_ONE_VERIFY, PING_ONE_CREDENTIALS, PING_ONE_AUTHORIZE, PING_ONE_PROVISIONING, PING_ONE_ID (v2 customers), and PING_ONE_BASE.
    The PING_ONE_BASE product represents the default set of services that an environment can use on the PingOne platform.
    Options for other Ping Identity products are PING_FEDERATE, PING_ACCESS, PING_DIRECTORY, PING_DATA_SYNC, PING_DATA_GOVERNANCE, PING_ONE_FOR_ENTERPRISE, PING_ID (v1 customers), PING_ID_SDK, PING_CENTRAL, PING_INTELLIGENCE, PING_ONE_FOR_SAAS, and PING_AUTHORIZE.
    description String Optional Mutable Description of the product or standalone service.
    console.href String Optional Mutable Link to your administrative console for the product, whether the product is in the PingOne platform, PingCloud, a private cloud, or on-premises. If specified, must be an RFC 2396-compliant URI with a maximum length of 1024 characters.
    softwareLicense Object Optional Immutable The Ping software license associated with this product.
    softwareLicense.id String Optional Immutable The UUID of the Ping software license associated with this product. This is not the SFDC external ID.
    deployment Object Optional Immutable The external resource associated with this product, containing state and settings related to the external resource.
    deployment.id String Optional Immutable The ID of the external resource associated with this product.
    bookmarks String[] Optional Mutable Custom bookmarks. Maximum of five bookmarks per product.
    bookmarks.name String Optional Mutable Name of the custom bookmark. The name must be unique among the product bookmarks and be 50 characters or fewer.
    bookmarks.href String Optional Mutable A valid URL for the bookmark.
    tags String[] Optional Mutable The set of tags for the PingOne products to be initially configured. The currently supported value is "DAVINCI_MINIMAL" (only valid when the product type is PING_ONE_DAVINCI). This indicates that DaVinci is to be configured with a minimal set of resources.

    Bill of Materials events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 Internal server error.

    Read One Bill of Materials


    Update Bill of Materials

    Branding

    The Branding service enables you to customize the display of your environment in the PingOne admin console for your organization, including both your organization's identifying information, as well as thematic display elements.

    Branding settings

    The Branding settings configure the company name and logo associated with an environment.

    Branding themes

    The Branding themes configure the thematic details, such as layout, color, and images (refer also to the Images service).

    Branding events generated

    Refer to Audit Reporting Events for the events generated.

    Branding Settings

    Branding settings control the default branding configuration applied to the environment, specifying the company name and default logo associated with an environment ID. If a branding configuration is not specified, the authentication sign-on screens use Ping Identity branding.

    Branding settings data model

    Property Type Required? Mutable? Description
    companyName String Optional Mutable The company name associated with the specified environment.
    logo Object Optional Mutable Contains the logo references.
    logo.href String Required Mutable The URL or fully qualified path to the logo file used for branding. Required when logo is specified.
    logo.id String Required Mutable The ID of the logo image. Required when logo is specified.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 Unexpected server error.

    Read Branding Settings


    Update Branding Settings

    Branding Themes

    Branding themes control the layout, color, and images for the authentication sign-on screens associated with a specified environment. PingOne provides several branding template themes that can be used as-is, or as a starting point for further customization. If a branding theme is not specified, the sign-on screens use Ping Identity default branding.

    Branding template configurations

    PingOne provides the following branding theme configurations. A branding theme template must be specified in the template property when creating a new branding theme resource:

    default

      {
        "name": "default",
        "color": {
          "button": "#2996cc",
          "buttonText": "#ffffff",
          "bodyText": "#686f77",
          "headingText": "#686f77",
          "link": "#2996cc",
          "card": "#ffffff",
          "background": "#ededed"
        },
        "image": {
          "background": ""
        },
        "meta": {
          "displayName": "Ping Default"
        }
      }
    

    focus

    {
        "name": "focus",
        "color": {
          "button": "#cb0020",
          "buttonText": "#ffffff",
          "bodyText": "#4a4a4a",
          "headingText": "#cb0020",
          "link": "#2996cc",
          "card": "#fcfcfc",
          "background": "#ededed"
        },
        "image": {
          "background": ""
        },
        "meta": {
          "displayName": "Focus"
        }
      }
    

    mural

    {
        "name": "mural",
        "color": {
          "button": "#61b375",
          "buttonText": "#ffffff",
          "bodyText": "#000000",
          "headingText": "#000000",
          "link": "#2996cc",
          "card": "#fcfcfc",
          "background": ""
        },
        "image": {
          "background": "https://assets.pingone.com/ux/branding-themes/0.1.0/mural/bg.jpg"
        },
        "meta": {
          "displayName": "Mural",
          "cssLink": "https://assets.pingone.com/ux/branding-themes/0.1.0/mural/mural.css"
        }
      }
    

    slate

    {
        "name": "slate",
        "color": {
          "button": "#fcfcfc",
          "buttonText": "#4a4a4a",
          "bodyText": "#4a4a4a",
          "headingText": "#4a4a4a",
          "link": "#4a4a4a",
          "card": "#fcfcfc",
          "background": ""
        },
        "image": {
          "background": "https://assets.pingone.com/ux/branding-themes/0.1.0/slate/bg.jpg"
        },
        "meta": {
          "displayName": "Slate",
          "cssLink": "https://assets.pingone.com/ux/branding-themes/0.1.0/slate/slate.css"
        }
      }
    

    split

    {
        "name": "split",
        "color": {
          "button": "#263956",
          "buttonText": "#ffffff",
          "bodyText": "#263956",
          "headingText": "#686f77",
          "link": "#2996cc",
          "card": "#fcfcfc",
          "background": "#2996cc"
        },
        "image": {
          "background": ""
        },
        "meta": {
          "displayName": "Split"
        }
      }
    

    Branding themes data model

    Property Type Required? Mutable? Description
    configuration.backgroundColor String Required Mutable The background color for the theme. It must be a valid hexadecimal color code, and it is a required property when configuration.backgroundType is set to COLOR.
    configuration.backgroundImage.href String Required Mutable The URL or fully qualified path to the background image file used for branding. This is a required property when configuration.backgroundType is set to IMAGE.
    configuration.backgroundImage.id String Required Immutable The ID of the background image.
    configuration.backgroundOutlineColor String Optional Mutable For PingOne Neo verification presentation screen, the outline color of background objects for the branding theme. It must be a valid hexadecimal color code. Defaults to #A5B9C5.
    configuration.backgroundType String Required Mutable The background type for the theme. Options are NONE, COLOR, IMAGE, DEFAULT.
    configuration.bodyTextColor String Optional Mutable The body text color for the theme. It must be a valid hexadecimal color code.
    configuration.buttonColor String Optional Mutable The button color for the theme. It must be a valid hexadecimal color code.
    configuration.buttonTextColor String Optional Mutable The button text color for the branding theme. It must be a valid hexadecimal color code.
    configuration.cardColor String Optional Mutable The card color for the branding theme. It must be a valid hexadecimal color code.
    configuration.footer String Optional Mutable The footer of the branding theme.
    configuration.foregroundHighlightColor String Optional Mutable For PingOne Neo verification presentation screen, the highlight color of the foreground object for the branding theme. It must be a valid hexadecimal color code. Defaults to #C6D9FF.
    configuration.foregroundMainColor String Optional Mutable For PingOne Neo verification presentation screen, the outline color of the foreground object for the branding theme. It must be a valid hexadecimal color code. Defaults to #4462ED.
    configuration.headingTextColor String Optional Mutable The heading text color for the branding theme. It must be a valid hexadecimal color code.
    configuration.linkTextColor String Optional Mutable The hyperlink text color for the branding theme. It must be a valid hexadecimal color code.
    configuration.logo.href String Required Mutable The URL or fully qualified path to the logo file used for branding. This is a required property when configuration.logoType is set to IMAGE.
    configuration.logo.id String Required Immutable The ID of the logo image.
    configuration.logoType String Required Mutable The type of format used for the image. Options are IMAGE and NONE.
    configuration.name String Optional Mutable The name of the branding theme.
    default Boolean Required Mutable Specifies whether this theme is the environment's default branding configuration.
    environment.id String Required Immutable The environment resource's unique identifier associated with the branding theme.
    id String Required Immutable The ID of the branding configuration resource.
    template String Required Mutable The template name of the branding theme associated with the environment. Options are default, focus, mural, slate, and split.

    Locations of configuration attributes backgroundOutlineColor, foregroundMainColor, and foregroundHighlightColor in the PingOne Neo Verify application.

    PingOne Neo verification theme color locations

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 Unexpected server error.

    Create Branding Theme


    Read Branding Themes


    Read One Branding Theme


    Read Branding Theme Default


    Update Branding Theme


    Update Branding Theme Default


    Delete Branding Theme

    Capabilities

    The capabilities service provides operations to determine what an organization or an environment is capable of doing within PingOne with respect to:

    • The organization's current PingOne license.

    • The current utilization of PingOne resources.

    • The current PingOne system limits.

    • The products and services included in the environment's bill of materials.

    The Capabilities service is closely associated with the Licenses and Bill of Materials (BOM) services. The PingOne license and BOM identify the Ping Identity products associated with your organization and environment, but these services do not enumerate the specific actions you can perform. You can use the capabilities service to check the capabilities provided by the current license and the environment's BOM. For example, if the organization-level capability canCreateEnvironment is set to true, it shows that the license grants you the capability to create new environments. Likewise, there can be numerous capabilities at the environment level, depending on the products in the BOM. The following list shows some of the actions that you might be able to perform:

    "canUseCredentials": false,
    "canUseCredentialsPushNotifications": false,
    "canUseCustomSchema": true,
    "canUseDaVinciAdminPortal": true,
    

    In this case, you can implement a custom user schema and you can access the DaVinci admin portal, but you cannot perform actions that use credentials or credential-based push notifications.

    Capabilities events generated

    Refer to Audit Reporting Events for the events generated.

    Organization capabilities data model

    Property Type Required? Mutable? Description
    assignableLicenses.allowProduction Boolean N/A Read-only Whether the license allows production environments.
    assignableLicenses.beginsAt Date N/A Read-only When the license period starts.
    assignableLicenses.expiresAt Date N/A Read-only When the license period ends.
    assignableLicenses.id String N/A Read-only The license ID for a license that can be assigned to the organization.
    assignableLicenses.name String N/A Read-only The name of a license that can be assigned to the organization.
    assignableLicenses.supportedRegions Array [String] N/A Read-only The names of the supported regions for a license that can be assigned to the organization.
    canContactSupport Boolean N/A Read-only Whether the organization can contact PingOne support.
    canCreateEnvironment Boolean N/A Read-only Whether the organization can create an environment. A return value of false specifies that the organization's maximum number of environments has been reached.
    canCreateEphemeralTrialLicenses Boolean N/A Read-only Whether the organization can create short-term trial licenses.
    canUsePlatform Boolean N/A Read-only The status of the associated license. Return values are true (ACTIVE) and false (TERMINATED).
    organizationId String N/A Read-only The ID of the organization.

    Environment capabilities data model

    Property Type Required? Mutable? Description
    canAddResources Boolean N/A Read-only Whether the license supports creation of resources in the specified environment.
    canAssignUsersRoles Boolean N/A Read-only Whether the license supports role assignments in the specified environment.
    canContactSupport Boolean N/A Read-only Whether the license allows contact of PingOne Support.
    canCreateConnections Boolean N/A Read-only Whether the license supports creation of a application connections in the specified environment.
    canCreateCustomDomain Boolean N/A Read-only Whether the license supports creation of a custom domain in the specified environment.
    canPromoteToProd Boolean N/A Read-only Whether the environment's type property can be promoted from SANDBOX to PRODUCTION.
    canSendMfaNotificationsOutsideWhitelist Boolean N/A Read-only Whether the license supports sending notifications outside of the environment's whitelist.
    canSendPasswordManagementNotifications Boolean N/A Read-only Whether the license supports sending password management notifications.
    canSendVerificationFlowNotifications Boolean N/A Read-only Whether the license supports sending verification flow notifications.
    canUseAadhaar Boolean N/A Read-only Whether the license supports using Aadhaar verification transactions.
    canUseAamva Boolean N/A Read-only Whether the license supports using additional verification support with American Association of Motor Vehicle Administrators (AAMVA).
    canUseAccountProtection Boolean N/A Read-only Whether the license supports using account protection.
    canUseAccountTakeoverDetection Boolean N/A Read-only Whether the license supports using account takeover detection.
    canUseApiAccessManagement Boolean N/A Read-only Whether the license supports using API Access Management services.
    canUseBotMaliciousDeviceDetection Boolean N/A Read-only Whether the license supports using malicious BOT device detection capabilities.
    canUseCredentialSharingDetection Boolean N/A Read-only Whether the license supports using credential sharing detection capabilities.
    canUseCredentials Boolean N/A Read-only Whether the license supports using credentials services.
    canUseCredentialsPushNotifications Boolean N/A Read-only Whether the license supports using credentials push notifications services.
    canUseCustomSchema Boolean N/A Read-only Whether the license supports using custom schema tributes in the specified environment.
    canUseDataBasedVerifications Boolean N/A Read-only Whether the license supports using data-based identity verification from TransUnion for the U.S.`
    canUseDaVinciAdminPortal Boolean N/A Read-only Whether the license supports using the DaVinci admin portal.
    canUseDataAnalyticsSupport Boolean N/A Read-only Whether the license supports using data analytics support services.
    canUseDataBasedVerifications Boolean N/A Read-only Whether the license supports using data-based identity verification services provided by TransUnion.
    canUseDaVinciAdminPortal Boolean N/A Read-only Whether the license supports using the DaVinci admin portal.
    canUseDigitalVerifications Boolean N/A Read-only Whether the license supports using digital verifications services.
    canUseDocumentMatch Boolean N/A Read-only Whether the license supports using document match services.
    canUseDynamicAuthorization Boolean N/A Read-only Whether the license supports using dynamic authorization services.
    canUseEmailOtp Boolean N/A Read-only Whether the license supports using email OTP capabilities.
    canUseFaceMatch Boolean N/A Read-only Whether the license supports using face match capabilities.
    canUseFraudDataEnrichment Boolean N/A Read-only Whether the license supports using fraud data enrichment capabilities.
    canUseIdentities Boolean N/A Read-only Whether the license supports using identities.
    canUseIdentityProviders Boolean N/A Read-only Whether the license supports using external identity providers in the specified environment.
    canUseInboundProvisioning Boolean N/A Read-only Whether the license supports using inbound provisioning services.
    canUseIntelligence Boolean N/A Read-only Whether the license supports using PingIntellegence capabilities in the specified environment. This capability applies to the PingOne Platform and PingOne MFA products.
    canUseIntelligenceAdvancedPredictors Boolean N/A Read-only Whether the license supports using PingIntellegence advanced predictors capabilities in the specified environment. This capability applies to the PingOne Platform and PingOne MFA products.
    canUseIntelligenceAnonymousNetworkDetection Boolean N/A Read-only Whether the license supports using PingIntellegence anonymous network detection capabilities in the specified environment. This capability applies to the PingOne Platform and PingOne MFA products.
    canUseIntelligenceDataConsent Boolean N/A Mutable Whether the customer consents to user and event behavior analytics (UEBA) collection capabilities in the specified environment. This capability applies to the PingOne Protect product.
    canUseIntelligenceGeoVelocity Boolean N/A Read-only Whether the license supports using PingIntellegence geovelocity capabilities in the specified environment when a geovelocity anomaly is detected. This capability applies to the PingOne Platform and PingOne MFA products.
    canUseIntelligenceProtect Boolean N/A Read-only Whether the license supports using protect capabilities in the specified environment. This capability applies to the PingOne Protect product.
    canUseIntelligenceReputation Boolean N/A Read-only Whether the license supports using PingIntellegence reputation capabilities in the specified environment. This capability applies to the PingOne Platform and PingOne MFA products.
    canUseIntelligenceRisk Boolean N/A Read-only Whether the license supports using Risk capabilities in the specified environment. This capability applies to the PingOne Protect product.
    canUseKerberosGateway Boolean N/A Read-only Whether the license supports using Kerberos gateway services.
    canUseLdapGateway Boolean N/A Read-only Whether the license supports using LDAP gateway services.
    canUseManualIDStepUpInspection Boolean N/A Read-only Whether the license supports using manual ID step-up inspection services.
    canUseManualIdInspection Boolean N/A Read-only Whether the license supports using manual ID inspection services.
    canUseMfa Boolean N/A Read-only Whether the license supports using MFA in the specified environment.
    canUseMfaFido2Devices Boolean N/A Read-only Whether the license supports MFA operations on FIDO2 devices.
    canUseMfaPushNotifications Boolean N/A Read-only Whether the license supports MFA push authentication for native applications in the specified environment.
    canUseMfaVoiceOtp Boolean N/A Read-only Whether the license supports MFA voice OTP for native applications in the specified environment.
    canUseMyAccount Boolean N/A Read-only Whether the license supports using the My Account capabilities in the specified environment.
    canUseNewAccountFraudDetection Boolean N/A Read-only Whether the license supports using new account fraud detection capabilities in the specified environment.
    canUseOrchestration Boolean N/A Read-only Whether the license supports using orchestration capabilities in the specified environment.
    canUsePasswordManagement Boolean N/A Read-only Whether the license supports using password management capabilities in the specified environment.
    canUsePasswordOnlyAuthentication Boolean N/A Read-only Whether the license supports using password only login capabilities in the specified environment.
    canUsePasswordPolicy Boolean N/A Read-only Whether the license supports using password policies in the specified environment.
    canUsePlatform Boolean N/A Read-only The status of the associated license. Return values are true (ACTIVE) and false (TERMINATED).
    canUseProtectTransactions Boolean N/A Read-only Whether the license supports using protect transaction capabilities in the specified environment.
    canUseProvisioning Boolean N/A Read-only Whether the license supports using provisioning capabilities in the specified environment.
    canUseRadiusGateway Boolean N/A Read-only Whether the license supports using radius gateway services.
    canUseSmsOtp Boolean N/A Read-only Whether the license supports using SMS OTP capabilities.
    canUseTotp Boolean N/A Read-only Whether the license supports using TOTP capabilities.
    canUseVerificationFlow Boolean N/A Read-only Whether the license supports using verification flows in the specified environment.
    canUseVerify Boolean N/A Read-only Whether the license supports using Verify in the specified environment.
    canUseVerifyPushNotifications Boolean N/A Read-only Whether the license supports using verify push notifictions capabilities in the specified environment.
    canUseVerifyVoice Boolean N/A Read-only Whether the license supports using verify voice capabilities in the specified environment.
    canUseVoiceBiometrics Boolean N/A Read-only Whether the license supports using biometric voice capabilities in the specified environment.
    canUseUniversalCapture Boolean N/A Read-only Whether the license supports using universal capture capabilities in the specified environment.
    canUsersUpdateSelf Boolean N/A Read-only Whether the license supports allowing users to update their own profile.
    environmentId String N/A Read-only The ID of the environment.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    You need Organization Admin role or the Environment Admin role to get the capabilities for an organization or an environment, respectively. For more information about roles, refer to Roles.


    Read Organization Capabilities


    Read Environment Capabilities

    Certificate Management

    The certificate management service manages two types of records, keys and certificates. Keys represent a key pair that consists of a private key and a public key. A certificate represents the electronic document used to verify the owner of the public key. This service supports FIPS 140-2 Level 1 compliant security algorithms to generate key pairs, and manages:

    • Customer-provided certificates
    • Customer-provided signing and encryption keys
    • PingOne-generated certificates (PKI)
    • PingOne-generated signing and encryption keys
    • Key rotation policies

    The certificate management service also manages encryption and decryption operations, as well as signing and validation operations.

    To use any of the PingOne signing and encryption features, you'll need to either provide a certificate you've generated, or configure the options for a PingOne-signed certificate. When uploading certificates, the certificate must be valid at the time of upload. You cannot upload a certificate before its validity period begins (the certificate's NotBefore date), or after it expires (the certificate's NotAfter date). The private key must be unencrypted. You cannot upload a private key that is protected by a password or passphrase. The certificate, private key, and certificate chain must all be PEM-encoded unless uploading a PKCS12 file format.

    Default organization and environment certificates

    The certificate management service creates default certificates for PingOne organization, and environment resources.

    Default organization certificate

    The certificate management service listens for the "create organization" event, and when the organization is created, the certificate management service creates a default intermediate CA signing certificate for the organization resource. This default org certificate is used to sign all environment certificates.

    The default organization certificate includes the following values:

    Property Value
    version V3 (2)
    serialNumber Secure Random generated
    algorithmID sha256WithRSAEncryption
    issuer commonName: Ping Identity v2; organizationalUnit: www.pingidentity.com; organization: Ping Identity Corporation; country: US
    subject commonName: value; Organization Name: value; organizationalUnit: value; organization: value; country: value
    validity not before: current date, not after: 1 year from current date
    extensions none

    Default environment certificate

    The service also listens for "create environment" events and creates the default key and certificate for the environment resource. The default organization certificate signs all environment certificates.

    The default environment certificate includes the following values:

    Property Value
    version V3 (2)
    serialNumber Secure Random generated
    algorithmID sha256WithRSAEncryption

    Default environment key

    The default environment key includes the following values:

    Property Value
    algorithm RSA
    validity period 1 year
    key length 2048

    Certificate management data model

    Property Type Required? Mutable? Description
    algorithm String Required Immutable The key algorithm. Options are RSA, EC, and UNKNOWN.
    createdAt Date N/A Read-only The time the resource was created.
    default Boolean Required Mutable Indicates whether this is the default key for the specified environment.
    environment.id String Required Immutable Specifies the environment resource's unique identifier.
    expiresAt Date N/A Read-only The time the key resource expires.
    id String Required Immutable The resource's unique identifier.
    issuerDN String Required Mutable The distinguished name (DN) of the certificate issuer.
    keyLength Integer Required Immutable The key length. For RSA keys, options are 2048, 3072, 4096, and 7680. For elliptical curve (EC) keys, options are 224, 256, 384, and 521.
    name String Optional Mutable The resource name.
    organization.id String Required Immutable The organization resource's unique identifier.
    serialNumber Integer Required Immutable The serial number of the key or certificate.
    signatureAlgorithm String Required Immutable The signature algorithm of the key. Options are SHA256withRSA and SHA512withRSA.
    startsAt Date Required Immutable The time the validity period starts.
    status String N/A Read-only The status of the key. Options are VALID, EXPIRED, NOT_YET_VALID, and REVOKED. If the current time is within 2 weeks of the expiration date, the status is EXPIRING.
    subjectDN String Required Immutable The DN of the subject being secured.
    trustChain String[] Optional Mutable An array of PEM-encoded X509 Certificates that are in the trust chain of the key's chain of trust.
    usageType String Required Mutable Specifies how the certificate is used. Options are ENCRYPTION, SIGNING, ISSUANCE, SSL_TLS, and OUTBOUND_MTLS. ISSUANCE keys are used as part of another key's trust chain, and are used to sign other keys. Certificate Revocation Lists (CRL) are published against these keys. SSL_TLS keys are used to protect internet protocol domains (such as, a Custom Domain you've configured in PingOne). OUTBOUND_MTLS keys are used to enable mutual TLS (mTLS) authentication with a subscription service.
    validityPeriod Integer Required Immutable The number of days the key is valid.

    Certificates and keystore events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    404 The requested resource was not found.

    Key Rotation Policies

    The certificate management service supports automatically rotating key pairs. Administrators can update certificates with minimal intervention, eliminating many common configuration errors.

    Resources called key rotation policies (KRPs) are exported through the PingOne API by the Certificate Management service. KRPs manage a set of key pairs that are created and rotated on a scheduled basis. These key pairs are referred to as KrpKeys to distinguish them from existing key pair resources. The cryptographic details of KrpKeys are managed by a specification attached to the KRP. The specification includes settings such as algorithm, key length, validity duration period, and distinguished name (DN). This specification and the rotation schedule are mutable after creation. Generated KrpKeys are always self-signed with no extraordinary extensions.

    When an environment is created, PingOne creates an initial KRP configuration object as the default KRP. You can can create additional KRPs using the POST {{apiPath}}/environments/{{envID}}/keyRotationPolicies operation. There is no UI to manage KRPs in the PingOne admin console. PingOne allows up to five KRPs per environment. You won't be able to create a new KRP if the environment already has five KRPs. You cannot delete the default KRP for an environment. A DELETE operation won't succeed if the environment has only one KRP.

    At any given time, a KrpKey has one of three designations: PREVIOUS, CURRENT, or NEXT. When created, a KRP has two KrpKeys with designations CURRENT and NEXT, respectively. After a period of time defined by a KRP's rotation schedule, a new KrpKey is created and designated as NEXT. The KrpKey previously designated as NEXT transitions to CURRENT, and the KrpKey previously designated as CURRENT transitions to PREVIOUS.

    A KRP exports another operation to list all KrpKeys that it manages. This is a read-only operation that returns a JSON Web Key set (JWKS) formatted file containing all public keys associated with a KrpKey managed by a KRP. This allows downstream clients to cache any public keys for use during signature validation. This operation is public and does not require an authentication token.

    Key Rotation Policy data model

    Property Type Required? Mutable? Description
    algorithm String Required Mutable The algorithm this KRP applies to generated KrpKeys. RSA is currently the only supported value.
    currentKeyId UUID N/A Read-only The kid (key identifier) of the KrpKey designated as CURRENT.
    default Boolean Optional Mutable When creating or updating a KRP, setting this value to true designates the new or updated KRP as the default. The prior KRP is then set to false. Any attempts to update the default KRP to false are ignored.
    dn String Required Mutable The DN this KRP will apply to generated KrpKeys. Is applied as both issuerDN and subjectDN because generated KrpKeys are self-signed.
    id UUID N/A Read-only Unique identifier of the KRP.
    environment.id UUID N/A Read-only Unique identifier of the environment that the KRP belongs to.
    keyLength Integer Required Mutable The number of bytes of a cryptographic key this KRP will apply to generated KrpKeys.
    name String Required Mutable Human-readable name displayed in the admin console.
    nextKeyId UUID N/A Read-only The kid (key identifier) of the KrpKey designated as NEXT.
    rotatedAt Date N/A Read-only The last time this KRP was rotated.
    rotationPeriod Integer Optional Mutable The number of days to elapse before this KRP rotates KrpKeys. The default value is 90 days. The minimum value is 30 days. The maximum value is 1 day less than the validityPeriod value.
    signatureAlgorithm String Required Mutable The signature algorithm this KRP will apply to generated KrpKeys. SHA256withRSA is currently the only supported value.
    usageType String Required Mutable How the KRP will be used, pertaining to what operations the KRP supports. The only valid value for initial release is SIGNING.
    validityPeriod Integer Required Mutable Controls the expiration date of each KrpKey certificate that appears in the KRP’s JSON Web Key Set (JWKS). Certificates are valid starting when the KrpKey becomes CURRENT and ending after the value specified here. The minimum value is 31 (days), the maximum value is 36500 (days = 10 years). The default value is 365 days.

    Signing Request data model

    Property Type Required? Mutable? Description
    document String Required Mutable Base64-encoded binary document to sign.
    signatureAlgorithm String Optional Mutable If present, this value overrides the signatureAlgorithm setting of the CURRENT KrpKey. SHA256withRSA is currently the only supported value.

    Signing Response data model

    Property Type Required? Mutable? Description
    key Object N/A Read-only KrpKey delegated to perform the sign operation. This KrpKey is always designated as CURRENT rotation state.
    key.id UUID N/A Read-only Unique identifier of the KrpKey.
    signature String N/A Read-only Base64-encoded signature (MAC) as the result of the signing operation.
    signatureAlgorithm String N/A Read-only The signature algorithm used to perform the sign operation. SHA256withRSA is currently the only supported value.
    Response codes
    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    404 The requested resource was not found.
    500 An unexpected error occurred.

    Create Key Rotation Policy


    Get Key Rotation Policies


    Get JWKS for Key Rotation Policy


    Update Key Rotation Policy


    Delete Key Rotation Policy


    Create Key


    Create Key with PKCS12 File


    Create Certificate with PKCS7 or PEM File


    Get Keys


    Get Key


    Get Key Applications


    Get Certificates


    Get Certificate


    Get Certificate Applications


    Export Public Key (PKCS7 DER)


    Export Public Key (X509 PEM)


    Export a Certificate Signing Request (CSR)


    Update Key


    Import Certificate Authority (CA) Response to a CSR


    Delete Key


    Delete Certificate

    Custom Domains

    PingOne supports the mapping of customer-owned and controlled domain names that are used to access user interfaces and services. You have the ability to route your own domain name alias to PingOne hosts, removing all references to "pingone" in the URLs (including the environment ID).

    Companies typically consider domain names associated with their company as essential and valuable brand assets. They do not want vendor domains visible on sites visited by their customers. If a request to a vendor is visible to their customers, such as authentication requests to Ping Identity, companies want the domain in that request to be a corporate domain and not a vendor domain (for example: auth.pingone.com).

    The custom domain feature enables such domain substitution.

    Custom domains affect only the authorization endpoints on https://auth.pingone.com and the web verification endpoint on https://apps.pingone.com. Some examples when a custom domain is configured:

    • https://auth.pingone.com/{{envID}}/* becomes https://{{customDomain}}/*.

    • https://auth.pingone.asia/{{envID}}/as/authorize becomes https://{{customDomain}}/as/authorize.

    Custom domains are not applicable to:

    • api.pingone

    • scim-api.pingone

    • orchestrate-api.pingone

    • uploads*.pingone

    Custom domains can be applied to:

    • https://apps.pingone.com/{{envID}}/myapps/ becomes https://{{customDomain}}/myapps.

    • https://apps.pingone.com/{{envID}}/myaccount/ becomes https://{{customDomain}}/myaccount.

    • https://apps.pingone.com/{{envID}}/signon/?flowId={{flowID}} becomes https://{{customDomain}}/signon/?flowId={{flowID}}

    • https://apps.pingone.com/{{envID}}/verify/verify-webapp/index.html becomes https://{{customDomain}}/verify/verify-webapp/index.html.

    • The https://auth.pingone.com domain. For example:

      • https://auth.pingone.com/{{envID}}/* becomes {{customDomain}}/*.

      • https://auth.pingone.asia/{{envID}}/as/authorize becomes {{customDomain}}/as/authorize.

    • The https://apps.pingone.com domain. For example:

      • https://apps.pingone.com/{{envID}}/myapps/ becomes {{customDomain}}/myapps.

      • https://apps.pingone.com/{{envID}}/myaccount/ becomes {{customDomain}}/myaccount.

      • https://apps.pingone.com/{{envID}}/signon/?flowId={{flowID}} becomes {{customDomain}}/signon/?flowId={{flowID}}

    For example, if your company domain is acme.com and you want to use auth.acme.com for your custom domain, you can create a custom domain resource, passing in auth.acme.com. When the custom domain resource is created, the status value is set to VERIFICATION_REQUIRED and the response returns a canonicalName property value that looks similar to this: 1234-abcd-5678-efgh.edge1.pingone.com. However, before you can verify the domain, you must first create a record with the Domain Name System (DNS) to describe how traffic is routed for the domain. The DNS record identifies the domain, and it requires a CNAME record value, which is a name-value pair consisting of your domain name pointing to the PingOne canonicalName property value returned by the create request. In this example, the CNAME record resolves auth.acme.com to the canonical name, 1234-abcd-5678-efgh.edge1.pingone.com.

    After defining the CNAME record in the Domain Name System, you can verify the domain using the POST {{apiPath}}/environments/{{envID}}/customDomains/{{customDomainID}} request with the application/vnd.pingidentity.domainName.verify+json custom media type (and an empty request body). Be aware that after entering the CNAME record, it can take some time to propagate to the DNS servers, which can result in a request failure during this period. When successful, the response returns a status of SSL_CERTIFICATE_REQUIRED, which requires an SSL certificate import action.

    To import the certificate, you can run the POST {{apiPath}}/environments/{{envID}}/customDomains/{{customDomainID}} request again using the application/vnd.pingidentity.certificate.import+json custom media type in the request header. The body for this request must specify the certificate, the certificate chain, and the private key. If successful, the response returns a status of ACTIVE to indicate that the custom domain has been verified and is active. Again, be aware that it can take some time before the custom domain is operational.

    If you do not have an SSL certificate for the custom domain, refer to Generate a CSR for custom domains below for information about generating an SSL certificate.

    For web-based verification, PingOne Verify service permits custom domains for the webVerificationUrl returned by the Create Verify Transaction request. The service then serves the web verification single-page app (SPA) from verify.customer-domain.com instead of apps.pingone.com. The service also uses that domain in all SMS messages, email messages, and the QR code during web verification. The custom domain status must be ACTIVE and certificate must be unexpired.

    Generate a CSR for custom domains

    If you use a custom domain, you need to create the custom domain resource in PingOne and import the SSL certificate used by the custom domain resource. In brief, the steps in PingOne to implement a custom domain are:

    1. Create the custom domain resource (for example, auth.acme.com).

    2. Create a CNAME record in the acme.com DNS for auth.acme.com that points to the canonical name when the custom domain was created.

    3. If you do not have an SSL certificate, outside of PingOne, generate a certificate for auth.acme.com (a certificated request that is signed by a certificate authority), which results in a private key, certificate chain, and certificate.

    4. Import the SSL certificate (chain, cert, private key).

    Generate an SSL certificate

    If you do not have an SSL certificate, which is referenced in step 3, follow these steps to create the trusted SSL certificate for the custom domain:

    1. Open (or install) openssl on your computer.

    2. Enter the following openssl command:

      openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

    3. Enter the following certificate signing request (CSR) information at the prompt:

      • Common Name (CN)
      • Organization
      • Organization Unit (OU)
      • City (or Locality)
      • State (or Province)
      • Country
    4. Submit your CSR to a Certificate Authority (CA) for validation.

    After validation, the CA returns the trusted SSL certificate, which you can import to complete and enable the custom domain. For information about custom domains, refer to Custom Domains.

    Custom domains data model

    Property Type Required? Mutable? Description
    certificate Object N/A Read-only Contains information about the SSL certificate used by this custom domain. If this property is not present, it indicates that an SSL certificate has not been setup for this custom domain.
    canonicalName String N/A Read-only The UUID of the domain name used as the value of the CNAME record in the customer's DNS. In a response, PingOne resolves this to ".edge1.pingone.com".
    certificate.expiresAt Date N/A Read-only The time when the certificate expires.
    domainName String Required Immutable The resource name, which must be provided and must be unique within an environment (for example, auth.shopco.com).
    environment.id String Required Immutable The UUID of the environment associated with the resource.
    id String N/A Read-only The UUID of the custom domain.
    mtlsEnabled Boolean Optional Mutable A boolean that specifies whether the custom domain supports the use of mTLS when establishing connections to PingOne.
    status String N/A Read-only The status of the custom domain. Options are ACTIVE, VERIFICATION_REQUIRED, and SSL_CERTIFICATE_REQUIRED.

    SSL certificate import request data model

    Property Type Required? Mutable? Description
    certificate String Required Mutable The PEM-encoded certificate to import. The following validation is performed on the certificate:
    • It must not be expired.
    • It MUST not be self signed.
    • The custom domain name MUST match one of the subject alternative name (SAN) values on the certificate.
    intermediateCertificates String Required Mutable The PEM-encoded certificate chain.
    privateKey String Required Mutable The PEM-encoded, unencrypted private key that matches the certificate's public key.

    Custom domain events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Domain


    Verify Domain


    Import Certificate


    Read All Domains


    Read One Domain


    Update Domain


    Delete Domain

    Environments

    Every organization contains at least one environment resource. In large global enterprises, there can be several environments. These environments are often based on region, or they serve as the defining entity to segregate enterprise operations by functionality, staging environments, or configurations.

    An environment also identifies the products and services that are enabled to address the deployment requirements. For example, an environment can identify enabled PingOne services that are hosted on the PingOne platform, such as PingOne MFA and PingOne Protect. The environment can also identify supported non-PingOne products, such as PingFederate and PingAccess.

    An environment is the primary subdivision of an organization and contains the core resources on which all identity services are built.

    You can learn more about environments in Environment Properties.

    Environment types

    There are two supported environment types:

    • PRODUCTION

      These environments contain the actual identities managed by your business. You must have a non-Trial license to create or promote an environment to the PRODUCTION type. Any long-standing environments, even those used for testing and staging, should be configured as PRODUCTION to minimize the risk of data loss. PRODUCTION environments cannot be immediately deleted, but must transition through a soft delete state with a waiting period before completing the delete operation (hard delete). Refer to Deleting environments below.

    • SANDBOX

      These environments are temporary configurations used primarily for configuration testing. Sandbox environments can be immediately deleted using the DELETE {{apiPath}}/environments/{{envID}} request. A Sandbox environment cannot be restored.

    Environments and product types

    You'll find the product types (both PingOne and non-PingOne) that can be associated with a new environment in the type property of the Bill of Materials Products data model.

    Roles and environments

    You need the Environment Admin role to perform operations on environment resources. To create environments, you must have either an Organization Admin role or an Environment Admin role at the organization level. An Environment Admin role at the environment level (applicable to a specific environment) cannot create new environments.

    The role assignment scope determines the domain of the role. For example, the following role assignment resource shows that this Environment Admin role has a scope that applies only to an environment. An actor with this Environment Admin role cannot create a new environment.

    "scope": {
        "id": "{{envID}}",
        "type": "ENVIRONMENT"
    },
    "role": {
        "id": "{{environmentAdminRoleID}}"
    }
    
    

    Conversely, an actor with an Environment Admin role assignment scope that specifies the organization resource can create new environments. For example, the scope id for the following role assignment designates an organization resource ID as the scope domain. An Environment Admin with this role assignment scope has permission to create new environments.

    "scope": {
        "id": "{{orgID}}",
        "type": "ORGANIZATION"
    },
    "role": {
        "id": "{{environmentAdminRoleID}}"
    }
    
    

    For additional information about role assignment scopes, refer to Application role assignments and User role assignments.

    Deleting environments

    You can delete a PRODUCTION environment if you have the Environment Admin role at the organization level, or the Organization Admin role. To delete an environment, use the Update Environment Status request, and set the status to DELETE_PENDING. This is called a soft delete. An environment that's been soft-deleted is not operational.

    SANDBOX environments are intended to be temporary, and are immediately deleted by calling the DELETE {{apiPath}}/environments/{{envID}} request. These environments cannot be restored.

    An Production environment with a status of DELETE_PENDING is automatically set to a waiting period before complete deletion is possible. The waiting period duration is the time the environment was set to DELETE_PENDING (reflected in the softDeletedAt value) plus a period of 30 days. When the waiting period has elapsed, you can then call the Delete Environment request to fully delete (hard delete) the environment. The time remaining for a hard delete to be possible is reflected in the hardDeleteAllowed At value. If at the time of the hard delete attempt the waiting period has not elapsed, the Delete Environment request will throw an error with the time the environment can be hard-deleted.

    Restoring environments

    You can restore a Production environment having a DELETE_PENDING status if you have the Environment Admin role at the organization level, or the Organization Admin role. To restore an environment, use the Update Environment Status request, and set the status to ACTIVE. You'll also need to specify your PingOne license ID.

    Environments data model

    Property Type Required? Mutable? Description
    billOfMaterials Object Optional Mutable The Bill of Materials for the environment. This is an optional property. Create requests that do not specify this property receive a default PingOne Bill of Materials on creation. For more information, refer to Bill of Materials.
    billOfMaterials.products[0] Array Optional Mutable Products that specify the PingOne and non-PingOne products and services that are associated with this environment deployment.
    billOfMaterials.products[0].id String Required Immutable The Product's ID.
    billOfMaterials.products[0].type String Optional Mutable The Product type. Options for PingOne products are PING_ONE_MFA, PING_ONE_RISK, PING_ONE_PROVISIONING, and PING_ONE_BASE. Options for non-PingOne product are PING_FEDERATE, PING_ACCESS, PING_DIRECTORY, PING_DATA_SYNC, PING_DATA_GOVERNANCE, PING_ONE_FOR_ENTERPRISE, PING_ID, PING_ID_SDK, PING_CENTRAL, and PING_INTELLIGENCE.
    billOfMaterials.products[0].description String Optional Mutable The product's description.
    billOfMaterials.products[0].console String Optional Mutable The URL to the product's admin console.
    billOfMaterials.products[0].softwareLicense.id String Optional Immutable The software license ID associated with this product.
    billOfMaterials.products[0].deployment.id String Optional Immutable The external resource ID associated with this product, containing state and settings information related to the external resource associated with this product.
    createdAt Date N/A Read-only The time the resource was created.
    description String Optional Mutable The description of the population.
    hardDeletedAllowedAt Date N/A Read-only The time when the soft-deleted Production environment (set to DELETE_PENDING status) can be completely deleted (a hard delete). When a soft-deleted environment is restored, this value is cleared.
    icon String Optional Mutable The URL referencing the image to use for the environment icon. The supported image types are JPEG/JPG, PNG, and GIF.
    id String Required Immutable The resource's unique identifier.
    license.id String Required Immutable The active license associated with this environment. This property is required only if your organization has more than one active license.
    name String Required Mutable The environment name, which must be provided and must be unique within an organization.
    organization.id String Optional Immutable The organization resource's unique identifier associated with the environment.
    region String Required Immutable The region in which this environment will be used. The value is set when the environment is created and cannot be updated. Options are NA, CA, EU, AU, SG, or AP.
    softDeletedAt Date N/A Read-only The time the Production environment was set to the DELETE_PENDING status. When a soft-deleted environment is restored, this value is cleared.
    status String Optional* Mutable The status of an environment. (*Required for the Update Environment Status request.) This can be: null, ACTIVE and DELETE_PENDING (soft-delete). The maximum number of Production environments that can be in the DELETE_PENDING state is set to 100.
    type String Required Mutable The type of environment to use. Options are PRODUCTION and SANDBOX.
    updatedAt Date N/A Read-only The time the environment was last updated.

    Filtering data

    GET requests that return environment resources support SCIM filtering expressions. The query filter can be appended to the request URL to fine-tune the response data. For example, the following filter returns only the environments in which the name attribute value starts with the letter "S":

    https://api.pingone.com/v1/environments?filter=name%20sw%20%22S%22
    
    

    These SCIM operators can be applied to the following attributes:

    • sw (starts with)

      Supported attributes: name

    • eq (equal to)

      Supported attributes: id, organization.id, license.id, status

    • and (logical AND)

      Supported attributes: Used to connect multiple filters on any attribute.

    For more information about SCIM syntax and operators, refer to Conventions.

    Environment events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Early Access Features

    You can easily choose to add PingOne early access features to an environment using a single request to opt-in or opt-out of a selected feature or features. This enables you to try out new PingOne capabilities prior to release in a sandbox or development environment. You also have the opportunity to let us know whether the new features adequately address the needs of your organization.

    You can choose to:

    • Opt-in or opt-out (the default) to an early access feature or features for a specified environment.
    • Opt-out of a early access feature or features to which you'd previously chosen to opt-in.
    • Opt-in to an early access feature or features for an environment in which the prior existing feature or features also exist. The early access features will not overwrite an existing feature, and will be identified as early access. [?? True?]

    All opt-in and opt-out events are available in the PingOne audit log.

    The API interfaces for the Early Access service are: Read Early Access Features and Update Early Access Features.

    Early Access Features data model

    Property Type Required? Mutable? Description
    name String Required Immutable The name of the early access feature.
    description String Optional Mutable The description of the early access feature.
    segmentKey String Required Immutable The UUID of the early access feature.
    value Boolean Required Mutable The opt-in or opt-out designation. If true you're indicating to opt-in to the early access feature. Defaults to false.

    Read Early Access Features


    Update Early Access Features


    Create Environment


    Read All Environments


    Update Environment Status


    Read One Environment


    Update Environment


    Update Environment Type


    Delete Environment

    Flow Policies

    The flow policies endpoint identifies the DaVinci flow policy resources defined in the specified environment. It provides operations to list all flow policies in the environment or get one flow policy specified by its flow policy ID in the request URL.

    Flow policies are associated with DaVinci applications. A flow policy can have one or more DaVinci-defined flows associated with it.

    Flow policies data model

    Property Type Required? Mutable? Description
    application Object Required Read only An object that specifies the application information associated with the flow policy resource.
    application.id String Required Read only The unique identifier of the application resource associated with the flow policy.
    application.name String Required Read only The name of the application resource associated with the flow policy.
    enabled Boolean Required Read only A boolean that specifies whether the flow policy is enabled.
    environment.id String Required Read only The environment resource's unique identifier associated with the flow policy.
    id String Required Read only The flow policy resource's unique identifier.
    name String Required Read only The flow policy resource name.
    trigger Object Optional Mutable An object that specifies the predefined trigger that can initiate the flow.
    trigger.type String Required Mutable A string that specifies the trigger type. This property is required if the trigger property is set. Options include AUTHENTICATION.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    404 The requested resource was not found.

    Read All Flow Policies


    Read One Flow Policy

    Forms

    The forms API, which supports the form builder interface in the PingOne Admin Console, provides tools for administrators to create custom forms presented to users during the authentication workflow. This capability allows administrators to:

    • Define the interactive fields and the corresponding data to be collected during a registration or sign-on flow, which could include text inputs, checkboxes, dropdowns, and radio buttons.

    • Define the user experience that they want to deliver to the customer, such as field ordering, labeling, control over input validation and error feedback, and support for contextual or formatting items such as text (headers, explanatory text), and dividers.

    The supported CUSTOM form type gives you the flexibility to create custom forms without having to write HTML. This type also allows the form to be built with fields that do not map specifically to PingOne directory attributes. You can create forms for registration, password reset, password recovery, and many other use cases.

    Translatable keys

    You can add translatable keys for any user-facing text in your forms, including the input field labels, button labels, and rich text. After adding these keys, the text can be translated based on the end user's browser settings for preferred languages.

    Forms data model

    Property Type Required? Mutable? Description
    created Date N/A Read-only The date the resouce was created (ISO-8061 format).
    category String Required Mutable A string that specifies the type of form. Options are REGISTRATION, SELF_SERVICE, PROGRESSIVE_PROFILING, and CUSTOM. The CUSTOM and REGISTRATION form types allow the form to be built with fields that do not map specifically to the PingOne directory attributes. This property is read-only for updates.
    cols Integer Optional Mutable An integer that specifies the number of columns in the form (min = 1; max = 4).
    components Object Required Mutable An object that specifies the form configuration elements.
    description String Optional Mutable A string that specifies the description of the form.
    embedded Object N/A Read-only An object that specifies the list of forms resources (and their properties) associated with the current environment.
    environment.id String N/A Read-only A string that specifies the environment's unique identifier.
    fieldTypes Object Optional Read-only A read-only object that specifies the list of the FormField types in the form. For details, refer to FormField data model.
    id String N/A Read-only A string that specifies the resource's unique identifier.
    languageBundle Object Optional Mutable An object that provides a map of i18n keys to their translations. This object includes both the keys and their default translations. The PingOne language management service finds this object, and creates the new keys for translation for this form.
    markOptional Boolean Required Mutable A boolean that specifies whether optional fields are highlighted in the rendered form.
    markRequired Boolean Required Mutable A boolean that specifies whether required fields are highlighted in the rendered form.
    modified Date N/A Read-only The time the resource was last updated.
    name String Required Mutable A string that specifies the form name, which must be provided and must be unique within an environment.
    passwordAutoCompleteEnabled Boolean Required Mutable A boolean that specifies whether the password auto-complete feature is enabled.
    showPasswordRequirements Boolean Optional Mutable A boolean that specifies whether to return the password requirements during a DaVinci flow. A form with a new password field does not show the password policy information automatically in the response. To return the password policy information, the value of this property must be set to true.
    textAutoCompleteEnabled Boolean Required Mutable A boolean that specifies whether the text auto-complete feature is enabled.
    translationMethod String Optional Mutable A string that specifies how to translate the text strings in the form. Options are TRANSLATE, DEFAULT_VALUE (to omit translating the form), and KEY (for debugging the form).

    Form components data model

    Property Type Required? Mutable? Description
    fields Object Required Mutable A list of form fields that specifies the form fields that make up the form.

    FormField data model

    • FormElement represents a FormField of types TEXT, PASSWORD, RADIO, CHECKBOX, DROPDOWN, COMBOBOX.
    • FormItemWithIcon represents a FormField of type SLATE_TEXTBLOB.
    • FormElementPasswordVerify represents a FormField of type PASSWORD_VERIFY.
    • FormSubmit represents a FormField of type SUBMIT_BUTTON.
    • FormFlowLink represents FormField of type FLOW_LINK.
    • FormFlowButton represents a FormField of type FLOW_BUTTON.
    • FormRecaptchaV2 represents a FormField of type RECAPTCHA_V2.
    • FormQrCode represents a FormField of type QR_CODE.
    • FormPolling represents a FormField of type POLLING.
    • FormFIDO2 represents a FormField of type FIDO2.
    • FormAgreement represents a FormField of type AGREEMENT.
    Property Type Required? Mutable? Description
    position Object Required Mutable An object containing field position information.
    position.col Integer Required Mutable An integer that specifies the number of columns (min = 1; max = 4).
    position.row Integer Required Mutable An integer that specifies the number of rows (maximum number is 50).
    position.width Integer Optional Mutable An integer that specifies the width of the field (in percentage).
    type String Required Mutable A string that specifies the type of the field. Options are TEXT, PASSWORD, PASSWORD_VERIFY, PHONE_NUMBER, RADIO, CHECKBOX, DROPDOWN, COMBOBOX, DIVIDER, EMPTY_FIELD, TEXTBLOB (Deprecated), SLATE_TEXTBLOB, SUBMIT_BUTTON, ERROR_DISPLAY, FLOW_LINK, FLOW_BUTTON, SOCIAL_LOGIN_BUTTON, and RECAPTCHA_V2, QR_CODE, DEVICE_ENROLLMENT, DEVICE_REGISTRATION, DEVICE_AUTHENTICATION, POLLING, FIDO2, SINGLE_CHECKBOX, AGREEMENT.
    visibility Object Optional Mutable An object that specifies the visibility settings for a form field.
    visibility.type String Optional Mutable A string that specifies the visibility behavior for the field. Options are ALWAYS_VISIBLE, SHOW_BY_DEFAULT, and HIDE_BY_DEFAULT. If visibility is set, this property is required.
    visibility.key String Optional Mutable A non-unique string associated with the field when visibility is evaluated by DaVinci at runtime. If the visibility.type property is set to SHOW_BY_DEFAULT or HIDE_BY_DEFAULT, then this property is required.

    FormElement data model

    Property Type Required? Mutable? Description
    isAttributeDisabled Boolean Optional Read-only A boolean that specifies whether the linked directory attribute is disabled.
    key String Required Mutable A string that specifies a unique identifier for the FormElement in the list.
    label String Optional Mutable A string that specifies the field's label.
    labelMode String Optional Mutable A string that specifies how the label is rendered. Options are DEFAULT and FLOAT.
    layout String Optional Mutable The layout orientation associated with the element. Options are HORIZONTAL and VERTICAL. This property is required when the element type is RADIO or CHECKBOX.
    options Array[] Optional Mutable An array of strings that specifies the unique list of options. This is a required property when the type is RADIO, CHECKBOX, COMBOBOX, or DROPDOWN. The POST endpoint accepts a list of strings, at which will create a list of FormElementOptions with matching labels and values.
    otherOptionEnabled Boolean Optional Mutable A boolean that specifies whether other options are available, enabling users to specify a custom value that is not one of the predefined options. This property is valid for RADIO, CHECKBOX, or DROPDOWN types.
    otherOptionKey String Optional Mutable A string that specifies the key associated with the other option.
    otherOptionlabel String Optional Mutable A string that specifies the label for a custom or "other" choice in a list.
    otherOptionInputlabel String Optional Mutable A string that specifies the label placeholder text for the other option.
    otherOptionAttributeDisabled Boolean Optional Mutable A boolean that specifies whether the other option is disabled.
    required Boolean Required Mutable A boolean that specifies whether the field is required.
    validation Object Optional Mutable An object containing validation data for the field. This is a required property when the type is TEXT.
    validation.regex String Optional Mutable A string that specifies a validation regular expression. The expression must be a valid regular expression string. This is a required property when the validation type is CUSTOM.
    validation.type String Optional Mutable A string that specifies the validation type. Options are NONE, EMAIL, and CUSTOM. This is a required property when the field type is TEXT.
    validation.errorMessage String Optional Mutable A string that specifies the error message to be displayed when the field validation fails.

    FormElementOption data model

    Property Type Required? Mutable? Description
    label String Required Mutable A string that specifies the label shown to the end user for this option.
    value String Required Mutable A string that specifies the value of the field if this option is selected.

    FormItem data model

    Property Type Required? Mutable? Description
    content String Optional Mutable A string that specifies the field content.

    FormItemWithIcon data model

    Property Type Required? Mutable? Description
    icon.type String Required Mutable A string that specifies the icon type. Options are NONE, AGREEMENT, ALERT, CALL, FAILURE, FINGERPRINT, LINK, MAIL, MOBILE_PHONE, PASSKEY, SUCCESS, QR_CODE, TEXT_MESSAGE, and USB_KEY.
    icon.size String Required Mutable A string that specifies the icon size. Options are SMALL, MEDIUM, and LARGE.

    FormElementPasswordVerify data model

    The FormElementPasswordVerify object is an extension of FormElement and contains all of the same fields in FormElement as well as those listed below.

    Property Type Required? Mutable? Description
    labelPasswordVerify String Optional Mutable A string that specifies the label for the verify password field.

    FormSubmit and FormFlowButton data model

    Property Type Required? Mutable? Description
    label String Required Mutable A string that specifies the button label.
    styles.width Integer Optional Mutable An integer that specifies the button width.
    styles.WidthUnit Integer Optional Mutable An integer that specifies the button width unit. Options are PERCENT and PIXELS.
    styles.alignment String Optional Mutable A string that specifies the button alignment. Options are LEFT, RIGHT, and CENTER.
    styles.padding Object Optional Mutable A string that specifies the button padding. Options are styles.padding.top, styles.padding.left, styles.padding.right, and styles.padding.bottom.
    styles.padding.top Integer Optional Mutable A string that specifies the top padding. Value must be between -100 to 100.
    styles.padding.left Integer Optional Mutable A string that specifies the left padding. Value must be between -100 to 100.
    styles.padding.right Integer Optional Mutable A string that specifies the right padding. Value must be between -100 to 100.
    styles.padding.bottom Integer Optional Mutable A string that specifies the bottom padding. Value must be between -100 to 100.
    styles.backgroundColor String Optional Mutable A string that specifies the button background color. The value must be a valid hexadecimal color.
    styles.textColor String Optional Mutable A string that specifies the button text color. The value must be a valid hexadecimal color.
    styles.borderColor String Optional Mutable A string that specifies the button border color. The value must be a valid hexadecimal color.
    styles.enabled Boolean Optional Mutable A boolean that specifies whether the button is enabled.
    styles.displayDefaultThemeButtonBackgroundColor Boolean Optional Mutable A boolean that specifies whether the button uses the default theme's background color.
    styles.displayDefaultThemeButtonBorderColor Boolean Optional Mutable A boolean that specifies whether the button uses the default theme's border color.
    styles.displayDefaultThemeButtonTextColor Boolean Optional Mutable A boolean that specifies whether the button uses the default theme's text color.

    FormLinkCustom data model

    Property Type Required? Mutable? Description
    label String Required Mutable A string that specifies the link label.
    styles.alignment String Optional Mutable A string that specifies the link alignment. Options are LEFT, RIGHT, and CENTER.
    styles.textColor String Optional Mutable A string that specifies the link text color. The value must be a valid hexadecimal color.
    styles.enabled Boolean Optional Mutable A boolean that specifies whether the link is enabled.
    styles.padding Object Optional Mutable A string that specifies the link padding. Options are styles.padding.top, styles.padding.left, styles.padding.right, and styles.padding.bottom.
    styles.padding.top Integer Optional Mutable A string that specifies the top padding. Value must be between -100 to 100.
    styles.padding.left Integer Optional Mutable A string that specifies the left padding. Value must be between -100 to 100.
    styles.padding.right Integer Optional Mutable A string that specifies the right padding. Value must be between -100 to 100.
    styles.padding.bottom Integer Optional Mutable A string that specifies the bottom padding. Value must be between -100 to 100.
    styles.displayDefaultThemeLinkColor Boolean Optional Mutable A boolean that specifies whether the default theme's link color is enabled.

    FormReCAPTCHA V2 data model

    Property Type Required? Mutable? Description
    size String Required Mutable A string that specifies the reCAPTCHA size. Options are NORMAL and COMPACT.
    theme String Required Mutable A string that specifies the reCAPTCHA theme. Options are LIGHT and DARK.
    alignment String Required Mutable A string that specifies the reCAPTCHA alignment. Options are LEFT, RIGHT, and CENTER.

    FormQrCode data model

    Property Type Required? Mutable? Description
    alignment String Required Mutable A string that specifies the QR code alignment. Options are LEFT, RIGHT, and CENTER.
    size String Required Mutable A string that specifies the QR code size. Options are SMALL, MEDIUM, and LARGE.
    fallbackText String Optional Mutable A string that specifies the text label for fallback under the QR code.

    FormPolling data model

    Property Type Required? Mutable? Description
    pollingAppearance String Required Mutable A string that specifies the polling activity indicator appearance. Options are NONE, DOTS, and SPINNER.
    size String Required Mutable A string that specifies the polling activity indicator size. Options are SMALL, MEDIUM, and LARGE.

    FormFIDO2 data model

    Property Type Required? Mutable? Description
    trigger String Required Mutable A string that specifies the FIDO2 UI trigger type. Options are BUTTON and AUTOMATIC.
    action String Required Mutable A string that specifies the FIDO2 action. Options are REGISTER and AUTHENTICATE.
    label String Required Mutable A string that specifies the text label for the FIDO2 button.

    SingleCheckbox data model

    Property Type Required? Mutable? Description
    appearance String Required Mutable A string that specifies the checkbox appearance. Options are CHECKBOX and SWITCH.
    errorMessage String Optional Mutable A string that specifies the message to display if validation fails.
    inputType String Required Mutable A string that specifies the type of field. Value should be set to BOOLEAN.

    FormAgreement data model

    Property Type Required? Mutable? Description
    inputType String Required Mutable A string that specifies the type of field. Value should be set to READ_ONLY_TEXT.
    titleEnabled Boolean Required Mutable Specifies whether the title is enabled.
    agreement.id String Optional Mutable An identifier that specifies the ID of the agreement.
    agreement.useDynamicAgreement Boolean Optional Mutable An agreement option that specifies whether to use the agreement identified in the DaVinci form node.

    FormSocialLoginButton data model

    Property Type Required? Mutable? Description
    idpName String Required Mutable A string that specifies the external identity provider name.
    idpType String Required Mutable A string that specifies the external identity provider type. Options are FACEBOOK, GOOGLE, LINKEDIN_OIDC, LINKEDIN (Deprecated), OPENID_CONNECT, APPLE, AMAZON, TWITTER, YAHOO, PAYPAL, MICROSOFT, GITHUB, and SAML.
    idpId String Required Mutable A string that specifies the external identity provider's ID.
    idpEnabled Boolean Optional Mutable A boolean that specifies whether the external identity provider is enabled.
    iconSrc String Optional Mutable A string that specifies the external edentity provider's image icon URL.
    label String Required Mutable A string that specifies the social login button label.
    styles.alignment String Optional Mutable A string that specifies the social login button alignment. Options are LEFT, RIGHT, and CENTER.
    styles.textColor String Optional Mutable A string that specifies the social login button text color.
    styles.enabled Boolean Optional Mutable A boolean that specifies whether the social login button is enabled.
    styles.width Integer Optional Mutable An integer that specifies the button width.
    styles.widthUnit Integer Optional Mutable An integer that specifies the button width unit. Options are PERCENT and PIXELS.
    styles.padding Object Optional Mutable A string that specifies the button padding. Options are styles.padding.top, styles.padding.left, styles.padding.right, and styles.padding.bottom.
    styles.padding.top Integer Optional Mutable A string that specifies the top padding. Value must be between -100 to 100.
    styles.padding.left Integer Optional Mutable A string that specifies the left padding. Value must be between -100 to 100.
    styles.padding.right Integer Optional Mutable A string that specifies the right padding. Value must be between -100 to 100.
    styles.padding.bottom Integer Optional Mutable A string that specifies the bottom padding. Value must be between -100 to 100.
    idpType String Required Mutable A string that specifies the external identity provider type. Options are FACEBOOK, GOOGLE, LINKEDIN_OIDC, LINKEDIN (Deprecated), OPENID_CONNECT, APPLE, AMAZON, TWITTER, YAHOO, PAYPAL, MICROSOFT, GITHUB, and SAML.
    styles.textColor String Optional Mutable A string that specifies the button text color. The value must be a valid hexadecimal color.
    styles.borderColor String Optional Mutable A string that specifies the button border color. The value must be a valid hexadecimal color.
    styles.enabled Boolean Optional Mutable A boolean that specifies whether the button is enabled.
    styles.displayDefaultThemeButtonBackgroundColor Boolean Optional Mutable A boolean that specifies whether the button uses the default theme's background color.
    styles.displayDefaultThemeButtonBorderColor Boolean Optional Mutable A boolean that specifies whether the button uses the default theme's border color.
    styles.displayDefaultThemeButtonTextColor Boolean Optional Mutable A boolean that specifies whether the button uses the default theme's text color.
    width Integer Optional Mutable An integer that specifies the button width.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Custom Form


    Import Form


    Export Form


    Read One Form


    Read Forms


    Update Form


    Delete One Form

    Forms Recaptcha

    The Recaptcha configuration API provides support for a Recaptcha V2 field in a form definition. It includes operations to read, update, and delete the environment's Recaptcha configuration.

    Recaptcha V2 data model

    Property Description
    created The time the configuration was created.
    environment.id A string that specifies the environment's unique identifier.
    modified The time the configuration was last updated.
    siteKey A string that specifies the public site key for the Recaptcha configuration provided by Google. This is a required property.
    secretKey A string that specifies the confidential secret key for the Recaptcha configuration provided by Google. This is a required property.

    Response codes

    Code Message
    200 Successful operation.
    204 No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.

    Read Recaptcha Configuration


    Update Recaptcha Configuration


    Delete Recaptcha Configuration

    Gateway Management

    A PingOne gateway connects resources in a remote security domain (such as, an on-premises datacenter or a hosted private cloud) with a PingOne environment. Gateways give you the ability to tie your organizations on-premise resources into PingOne.

    You can create gateway resources in PingOne, and then manage the gateways from PingOne. There are gateway endpoints to return information about the health of the gateway, errors generated by the gateway, and gateway instance runtime metrics.

    Once you've created the gateway in PingOne, users in the remote directory are created through the gateway as PingOne users the first time they sign on to PingOne.

    The following resources are managed through the PingOne Gateway service:

    Gateways and gateway instances

    To create the communication linkage between PingOne and your remote directory, you need to deploy software in your infrastructure that can communicate with both PingOne and your remote directory. There are two parts to successfully getting the software in place:

    1. Configuring a gateway in PingOne.

    2. Running a Docker instance that's configured for the PingOne gateway in your on-premise or cloud-hosted environment. The running Docker container is known as a gateway instance. For testing purposes, a single gateway instance is sufficient, but for production deployments, multiple gateway instances should be deployed for high availability.

    See Gateways and Gateway Instances for more information.

    Gateway credentials

    The gateway instance running within your infrastructure authenticates with PingOne through gateway credentials. Gateway credentials are supplied to a gateway instance at startup. A gateway credential is like a password, so it needs to be protected. For security reasons, PingOne doesn't store the gateway credentials that you've generated, though you can always create new gateway credentials in the PingOne admin console. Multiple gateway instances can use the same gateway credentials. For more information about gateway credentials, see Gateway Credentials.

    Gateway role assignments

    If you're using PingFederate, you can manage gateway access to PingOne resources using PingOne's role-based access control (RBAC) model to assign a role to the gateway. See Gateway Role Assignments for more information.

    Gateways

    Gateway resources provide the communication linkage between PingOne and your remote directory. Use these requests to manage gateway resources, including the request body properties required to create a PingFederate connection.

    Gateway base data model

    Property Type Required? Mutable? Description
    credentials Object[] Optional Mutable An array of objects that specifies the list of gateway credentials. The objects have information about the credential and these are the credentials that gateway instances use or could be actively using. The maximum number of credentials is five. If there are no gateway credentials specified for a gateway, this property is not present.
    description String Optional Mutable Specifies the description of the resource.
    _embedded.instances Object[] Optional Mutable An array of gateway instances. Active instances are returned for the gateway resource when expand=instances is specified in the request.
    enabled Boolean Required Mutable Indicates whether the gateway is enabled.
    environment.id String Required Immutable The unique identifier for the environment associated with the resource.
    id String Required Immutable The resource’s unique identifier.
    name String Required Mutable The resource name, which must be provided and must be unique within an environment. Valid characters are any Unicode letter, mark, numeric character, forward slash, dot, apostrophe, underscore, space, or hyphen.
    supportedVersions Object Optional Mutable The LDAP gateway versions associated with this gateway resource. This information is returned on a GET {{apiPath}}/environments/{{envID}}/gateways request, and it is used to trigger alerts if the gateway tries to connect with an unsupported version (or a version that is not the latest or recommended version).
    supportedVersions.version String Optional Mutable The gateway version number.
    supportedVersions.image String Optional Mutable Identifies the gateway image path.
    supportedVersions.recommended Boolean Optional Mutable Indicates whether this is the recommended LDAP gateway version.
    supportedVersions.latest Boolean Optional Mutable Indicates whether this is the latest LDAP gateway version.
    type String Required Immutable The type of gateway resource. Options are LDAP, API_GATEWAY_INTEGRATION, PING_FEDERATE, RADIUS, and AUTHORIZE.

    Gateway LDAP data model

    Property Type Required? Mutable? Description
    bindDN String Required Mutable The distinguished name information to bind to the LDAP database (for example, uid=pingone,dc=example,dc=com).
    bindPassword String Required Mutable The Bind password for the LDAP database.
    connectionSecurity String Optional Mutable The connection security type. Options are None, TLS, and StartTLS. The default value is None.
    followReferrals Boolean Optional Mutable Defaults to false if the payload does not contain the property. If set to true, PingOne sends LDAP queries per referrals it receives from the LDAP servers.
    kerberos Object Optional Mutable Contains the Kerberos authentication settings. Set this to null to disable Kerberos authentication.
    kerberos.serviceAccountPassword String Optional Mutable The password for the Kerberos service account.
    kerberos.serviceAccountUserPrincipalName String Required Mutable The Kerberos service account user principal name (for example, "username@domain.com").
    kerberos.minutesToRetainPreviousCredentials Integer Optional Mutable The number of minutes for which the previous credentials are persisted.
    serversHostAndPort String[] Required Mutable The LDAP server host name and port number (for example, ["ds1.example.com:389", "ds2.example.com:389"]).
    userTypes Object[] Required Mutable The userTypes properties for the users to be provisioned in PingOne. userTypes specifies which user properties in PingOne correspond to the user properties in an external LDAP directory. You can use an LDAP browser to view the user properties in the external LDAP directory.
    userTypes.allowPasswordChanges Boolean Optional Mutable Defaults to false if this property isn't specified in the request. If false, the user cannot change the password in the remote LDAP directory. In this case, operations for forgotten passwords or resetting of passwords are not available to a user referencing this gateway.
    userTypes.updateUserOnSuccessfulAuthentication Boolean Optional Mutable If set to true, when users sign on through an LDAP Gateway client, user attributes are updated based on responses from the LDAP server. Defaults to false if this property isn't specified in the request.
    userTypes.id UUID Required Mutable Identifies the user type. This correlates to the password.external.gateway.userType.id User property.
    userTypes.name String Required Mutable The name of the user type.
    userTypes.newUserLookup Object Optional Mutable The configurations for initially authenticating new users who will be migrated to PingOne. Note: If there are multiple users having the same user name, only the first user processed is provisioned.
    userTypes.newUserLookup.attributeMappings Object[] Required Mutable A list of objects supplying a mapping of PingOne attributes to external LDAP attributes. One of the entries must be a mapping for "username”. This is required for the PingOne user schema.
    userTypes.newUserLookup.attributeMappings.name String Required Mutable The PingOne username attribute. See Users properties for the complete list of PingOne user attributes.
    userTypes.newUserLookup.attributeMappings.value Object Required Mutable A placeholder reference to the corresponding external LDAP attribute for name.
    userTypes.newUserLookup.ldapFilterPattern String Optional Mutable The LDAP user search filter to use to match users against the entered user identifier at login. For example, (((uid=${identifier})(mail=${identifier})). Alternatively, this can be a search against the user directory.
    userTypes.newUserLookup.population String Optional Mutable The PingOne population to use to create user entries during lookup.
    userTypes.newUserLookup.population.id UUID Optional Immutable The ID of the population to use to create user entries during lookup.
    userTypes.orderedCorrelationAttributes Object[] Optional Mutable A map of name-value entries used to persist the external LDAP directory attributes.
    userTypes.passwordAuthority String Required Mutable This can be either PING_ONE or LDAP. If set to PING_ONE, PingOne authenticates with the external directory initially, then PingOne authenticates all subsequent sign-ons.
    userTypes.searchBaseDn String Optional Mutable The LDAP base domain name (DN) for this user type.
    validateTlsCertificates Boolean Optional Mutable Indicates whether or not to trust all SSL certificates (defaults to true). If this value is false, TLS certificates are not validated. When the value is set to true, only certificates that are signed by the default JVM CAs, or the CA certs that the customer has uploaded to the certificate service are trusted.
    vendor String Required Immutable The LDAP vendor. Options are PingDirectory, Microsoft Active Directory, Oracle Directory Server Enterprise Edition, Oracle Unified Directory, CA Directory, OpenDJ Directory Server, IBM (Tivoli) Security Directory Server, and LDAPv3-compliant Directory Server.

    Gateway RADIUS data model

    Property Type Required? Mutable? Description
    davinci.policy.id String Required Mutable The ID of the Davinci flow policy to use.
    defaultSharedSecret String Optional Mutable Value to use for the shared secret if the shared secret is not provided for one or more of the RADIUS clients specified.
    networkPolicyServer Object Optional Mutable If specified, the RADIUS gateway authenticates using the MS-CHAP v2 or EAP-MSCHAP v2 protocol.
    networkPolicyServer.ip String Required Mutable The IP address of the Network Policy Server (NPS).
    networkPolicyServer.port Integer Required Mutable The port number of the NPS.
    radiusClients Object[] Required Mutable Collection of RADIUS clients.
    radiusClients.blastRadiusMitigation Object Optional Mutable The blastRadiusMitigation object contains two optional fields that can be used to block Blast RADIUS attacks. Since these two options use different approaches to deal with the same issue, you should not set more than one of them to true. If both are set to true, an error is returned.
    radiusClients.blastRadiusMitigation.requireMsgAuth Boolean Optional Mutable Set requireMsgAuth to true to require that all requests from the client include the Message-Authenticator attribute. Any requests without the attribute will be ignored.
    radiusClients.blastRadiusMitigation.limitProxyState Boolean Optional Mutable For older clients that don't support sending the Message-Authenticator attribute, you can set limitProxyState to true. This instructs the gateway to ignore requests that don't contain the Message-Authenticator attribute but contain the Proxy-State attribute.
    radiusClients.ip String Required Mutable The IP of the RADIUS client.
    radiusClients.sharedSecret String Optional Mutable The shared secret for the RADIUS client. If this value is not provided, the shared secret specified with defaultSharedSecret is used. If you are not providing a shared secret for the client, leave out sharedSecret or set it to null.

    Authorize gateway data model

    Property Type Required? Mutable? Description
    authorizationVersionId UUID Required Mutable A string that specifies the ID of the Authorization Version deployed to any gateway instances associated with this Authorize gateway. Versioning allows independent development and deployment of policies.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create LDAP Gateway


    Create PingFederate Connection


    Create RADIUS Gateway


    Create API Gateway Integration


    Create Authorize Gateway


    Read All Gateways


    Read One Gateway


    Read All Authorize Gateways


    Read One Authorize Gateway


    Update LDAP Gateway


    Update RADIUS Gateway


    Update Authorize Gateway


    Delete Gateway

    Gateway Credentials

    The gateway instance running within your infrastructure authenticates with PingOne through a gateway credential. The examples that follow show common actions to create and manage gateway credentials.

    You need the Environment Admin role to perform operations on gateway entities.

    Gateway credentials data model

    Property Type Required? Mutable? Description
    createdAt Date N/A Read-only The date the credential was created in Coordinated Universal Time (UTC).
    id String N/A Read-only The auto-generated ID for this credential. This is the JWT's jti claim.
    lastUsedAt Date N/A Read-only The date the credential was last used in UTC.
    token String N/A Read-only The signed JWT for the gateway credential. This property is present only when the gateway credential is created.
    Gateway credentials token claims

    The gateway credential includes the following claims:

    Claim Type Description
    aud String The names of resources that this token is intended for (for example, https://api.pingone.com).
    authUrl String The authorization server URL (for example, https://auth.pingone.com).
    consoleUrl String The admin console URL (for example, https://console.pingone.com).
    environmentId String The environment ID of the authenticated user or application.
    environmentName String The name of the PingOne environment.
    gatewayId String The PingOne gateway ID.
    gatewayName String The name of the PingOne gateway.
    gatewayType String The PingOne gateway type. Options are LDAP, API_GATEWAY_INTEGRATION, PING_FEDERATE, RADIUS, and AUTHORIZE.
    iat Integer The timestamp, measured in the number of seconds since January 1, 1970, UTC, indicating when this token was originally issued, as defined in JWT RFC7519.
    iss String The per-environment issue URI: wss://gateways.pingone.com.
    jti String The UUID for the token.
    organizationId String The PingOne organization ID of the authenticated user or application.
    organizationName String The name of the PingOne organization.
    region String The target region's name.
    targetClusterEnvironment String The name of the PingOne target cluster environment.
    targetGeography String The target's region. Options are NA, CA, EU, AU, SG, or AP.
    Response codes
    Code Message
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Gateway Credentials


    Read All Gateway Credentials


    Read One Gateway Credential


    Delete Gateway Credentials

    Gateway Instances

    Use these data models and requests to find and manage gateway instances resources.

    Gateway instance view data model

    A gateway instance represents a single Docker container that runs on-premise with the configuration for a gateway. PingOne provides a read-only view of the gateway's status and identifying information.

    Property Type Required? Mutable? Description
    connected Boolean N/A Read-only Indicates whether or not the gateway instance has one or more connections.
    credential.id String N/A Read-only The ID of the credential used by the gateway instance to create a websocket connection. The ID of the credential is the gateway credential's jti claim.
    currentErrors String[] N/A Read-only The messages that are maintained by the gateway instance.
    gateway.id String Required Immutable The UUID for the gateway.
    healthStatus Enum N/A Read-only Indicates whether or not the gateway is in a healthy state. Options are HEALTHY, UNHEALTHY.
    hostname String N/A Read-only The hostname of the container running in the customer's infrastructure.
    id String Required Immutable The instance ID of the gateway. The gateway instance ID is created by the gateway when it starts up.
    initializedAt Date N/A Read-only When the gateway was initialized (when the first connect to PingOne was made).
    lastReportedAt Date N/A Read-only The last reported timestamp, heartbeat, or other message.
    version Object N/A Read-only Contains the version of the gateway running for the instance.
    version.versionNumber String N//A Read-only The version number of the gateway running for the instance.
    version.updateStatus Enum N/A Read-only One of the following values:
    • AT_LATEST: The gateway instance's version is at or after the supported version marked latest.
    • UPGRADE_AVAILABLE: The gateway instance's version is at the supported version that is marked recommended but there is a later supported version marked recommended.
    • UPGRADE_RECOMMENDED: The gateway instance's version is at a known version but the version is not marked as recommended or latest. The version has greater than 30 days support.
    • UPGRADE_REQUIRED: The gateway instance's version is at a known version but the version is not marked as recommended or latest. The version has support ending within the next month.
    • NOT_SUPPORTED: The gateway instance's version is not known or supported.

    Gateway LDAP instance data model

    Property Type Required? Mutable? Description
    busyPercentage Integer N/A Read-only The gateway instance's busy percentage. When this percentage is high, then more instances should be added.
    operationsPerSecond Integer N/A Read-only The recent throughput of the gateway instance.
    responseTimeMillis Integer N/A Read-only The processing time of the gateway instance in milliseconds.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Read All Gateway Instances


    Read One Gateway Instance


    Read All Authorize Gateway Instances

    Gateway Role Assignments

    The gateway role assignments service provides functionality to assign role assignments to a gateway so that the gateway can access the PingOne services it needs. Only gateway resources with a type property value of PING_FEDERATE can have assigned built-in roles.

    Use these data models and requests to manage gateway role assignments. For more information, refer to Roles.

    Role assignment scopes can be:

    • Organization

    • Environment

    • Population

    • Application

    Gateway role assignments data model

    Property Type Required? Mutable? Description
    gateway.id String Required Immutable The UUID for the gateway.
    environment.id String Required Immutable The environment associated with the gateway.
    id String N/A Read-only The gateway role assignment ID.
    role.id String Required Immutable The role ID.
    scope.id String Required Immutable The role assignment scope ID. When this is an application ID, because an application ID is guarenteed to be globally unique (across all environments), the application ID here eliminates the need to also specify the application environment ID.
    scope.type String Required Immutable The type of resource defining the scope of the Role assignment. Options are ORGANIZATION, ENVIRONMENT, and POPULATION, APPLICATION.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Gateway Role Assignments


    Read Gateway Role Assignments


    Read One Gateway Role Assignment


    Delete Gateway Role Assignment

    Images

    Use the Images service to associate a custom image with an environment:

    • For use with logos for the Branding service.
    • For icons displayed in the PingOne dock.

    Images data model

    Property Type Required? Mutable? Description
    createdAt String N/A Read-only The time the resource was created.
    environment.id String N/A Read-only The environment resource's unique identifier.
    id String N/A Read-only The resource's unique identifier.
    targets.height String Required Mutable The height of the image (in pixels).
    targets.href String Optional Mutable The URL or fully qualified path to the image source file.
    targets.id String Optional Mutable The UUID of the target image.
    targets.type String Optional Mutable The type of format used for the image. Options are jpg, png, and gif.
    targets.width String Optional Mutable The width of the image (in pixels).

    Image events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.

    Create Image


    Read Image


    Delete Image

    Language Management

    The Languages service supplies operations to create, read, update, and delete languages resources within a specified environment. Language resources are used by the PingOne UI (such as, terms-of-service agreements, and notifications services) to present UI elements in a designated language.

    For more information about the Languages service, refer to Languages in the PingOne Admin Guide.

    The Languages service is comprised of:

    Languages

    The languages endpoints enable you to create, read, update and delete language resources. For more information refer to Languages.

    Language Localization Status

    The status endpoints enable you to create, read, update and delete language localization status resources. For more information refer to Language Localization Status.

    Language Translations

    The translations endpoints enable you to view the UI string translations for a specified language, and to update localized strings for UI elements in the specified language.

    Language events generated

    Refer to Audit Reporting Events for the events generated.

    Languages

    There are 239 language codes in the ISO standard language code table. This service supports a maximum of fourteen (14) languages resources at one time. The languages service supports the following input and output data model properties for languages resources.

    Languages input data model

    Property Type Required? Mutable? Description
    default Boolean Required Mutable Specifies whether this language is the default for the environment. This property value must be set to false when creating a language resource. It can be set to true only after the language is enabled and after the localization of an agreement resource is complete when agreements are used for the environment.
    enabled Boolean Required Mutable Specifies whether this language is enabled for the environment. This property value must be set to false when creating a language.
    environment.id String Required Immutable The environment resource's unique identifier associated with the resource.
    id String Required Immutable The resource's unique identifier.
    locale String Required Mutable An ISO standard language code. For more information about standard language codes, refer to ISO Language Code Table.
    name String Optional Mutable The language name. If omitted, the ISO standard name is used.

    Languages output data model

    Property Type Required? Mutable? Description
    createdAt Date N/A Read-only The time the language resource was created.
    customerAdded Boolean Optional Mutable Specifies whether this language was added by a customer administrator.
    default Boolean Required Mutable Specifies whether this language is the default for the environment. This property value must be set to false when creating a language resource. It can be set to true only after the language is enabled and after the localization of an agreement resource is complete when agreements are used for the environment.
    enabled Boolean Required Mutable Specifies whether this language is enabled for the environment. This property value must be set to false when creating a language.
    environment.id String Required Immutable The environment resource's unique identifier associated with the resource.
    id String Required Immutable The resource's unique identifier.
    locale String Required Mutable An ISO standard language code. For more information about standard language codes, refer to ISO Language Code Table.
    name String Optional Mutable The language name. If omitted, the ISO standard name is used.
    updatedAt Date N/A Read-only The time the language resource was last updated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Language


    Read Languages


    Read One Language


    Update Language


    Delete Language

    Language Localization Status

    The scope of language localization in PingOne is limited to end-user facing resources such as sign-on screens, registration agreements, notifications, and any other communications with end users. Localization is not applicable to administrator communications.

    The languages service supports the following data model properties for language localization status resources.

    Languages localization status data model

    Property Type Required? Mutable? Description
    createdAt Date N/A Read-only The time the language localization status resource was created.
    environment.id String Required Immutable The environment resource's unique identifier associated with the resource.
    id String Required Immutable The resource's unique identifier.
    locale.id String Required Immutable The locale ID.
    service String Required Mutable The name of the service associated with this resource.
    updatedAt Date N/A Read-only The time the language localization status resource was last updated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Language Localization Status


    Read Language Localization Status


    Read One Language Localization Status


    Update Language Localization Status


    Delete Language Localization Status

    Language Translations

    The translations endpoint supplies operations to view the custom string translations for a specified language, and to update localized strings for UI elements in the specified language.

    The response for a GET request returns the embedded resources that supply UI strings in English, and the associated localized string content in the specified language. Here's a sample of a localized string (in French) for the Cancel button in the flow-ui module used in a UI page:

        "_embedded": {
            "translations": [
                {
                    "id": "3e90224d-9036-4d78-badb-65e98f4fc944",
                    "key": "flow-ui.button.cancel",
                    "shortKey": "button.cancel",
                    "referenceText": "Cancel",
                    "translatedText": "Annuler"
                },
    
    

    PingOne support UI string translations for the following languages:

    Locale Language
    de German
    en English
    es Spanish
    fr French
    fr-CA French (Canadian)
    it Italian
    ja Japanese
    ko Korean
    nl Dutch
    pt Portuguese
    ru Russian
    th Thai
    tr Turkish
    zh Chinese
    cs Czech

    Languages translation request data model

    For PUT requests, the following properties are required in the request body.

    Property Type Required? Mutable? Description
    key String Required Mutable A string that specifies the page and name of the interface element to be localized (for example, flow-ui.button.cancel).
    translatedText String Required Mutable A string that specifies the translated string text associated with the interface element.

    Languages translation response data model

    For GET requests, the data model returns the following information about the specified language's localized strings.

    Property Type Description
    translations.id String The translation ID for a specific string.
    translations.key String The page and name of the interface element to be localized (for example, flow-ui.button.cancel).
    translations.shortKey String The interace element only (for example, button.cancel).
    translations.referenceText String The English string text associated with the interface element.
    translations.translatedText String The translated string text associated with the interface element.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Translation


    Read Translation


    Update Translation


    Delete Translation

    Licenses

    The Licenses service manages license assignments at the organization level and enforcement of licensing limits at the environment level. Organizations can have multiple licenses, including multiple active licenses. You can use the licenses endpoints to view your organization's licenses, check which licenses are active (or terminated), and check the allowed PingOne platform entitlements supported by the license.

    Each environment is associated with one license only. The property values of the license resource specify the licensing boundaries. The license identifies the organization that owns the license, the licensing package type, and the expiration date for the license. The following entitlements are also defined in the licensing package:

    For environments:

    • Allow or deny production environments
    • Designate the maximum number of environments allowed by the organization
    • Designate the allowed regions

    For users and applications:

    • Set the maximum number of users for the environment

    License data model

    Property Type Required? Mutable? Description
    assignedEnvironmentsCount Integer N/A Read-only The total number of environments associated with this license.
    authorize.allowApiAccessManagement Boolean N/A Read-only Indicates whether to enable the PingOne Authorize API access management feature.
    authorize.allowDynamicAuthorization Boolean N/A Read-only Indicates whether to enable the PingOne Authorize dynamic authorization feature.
    beginsAt Date Required Mutable The date and time this license begins.
    environments.allowConnections Boolean Required Mutable Indicates whether the license supports creation of application connections in the specified environment.
    environments.allowCustomDomain Boolean N/A Read-only Indicates whether the license supports creation of a custom domain in the specified environment.
    environments.allowCustomSchema Boolean N/A Read-only Indicates whether the license supports using custom schema attributes in the specified environment.
    environments.allowProduction Boolean N/A Read-only Indicates whether production environments are allowed.
    environments.max Integer N/A Read-only The maximum number of environments allowed.
    environments.regions String N/A Read-only The allowed regions associated with environments. Options are NA, CA, EU, AU, SG, or AP.
    expiresAt Date Required Mutable The date and time this license expires. TRIAL licenses stop access to PingOne services at expiration. All other licenses trigger an event to send a notification when the license expires but do not block services.
    id String N/A Read-only The license resource's unique identifier.
    intelligence.allowGeoVelocity Boolean N/A Read-only Indicates whether to use the intelligence geo-velocity feature. For TRIAL (unpaid) licenses, the default value is true. For ADMIN, GLOBAL, RISK, and MFARISK, the default value is true.
    intelligence.allowAnonymousNetworkDetection Boolean N/A Read-only Indicates whether to use the intelligence anonymous network detection feature. For TRIAL (unpaid) licenses, the default value is true. For ADMIN, GLOBAL, RISK, and MFARISK, the default value is true.
    intelligence.allowReputation Boolean N/A Read-only Indicates whether to use the intelligence IP reputation feature. For TRIAL (unpaid) licenses, the default value is true. For ADMIN, GLOBAL, RISK, and MFARISK, the default value is true.
    intelligence.allowDataConsent Boolean N/A Read-only Indicates whether the customer has opted in to allow user and event behavior analytics (UEBA) data collection.
    intelligence.allowRisk Boolean N/A Read-only Indicates whether your license permits you to configure risk features such as sign-on policies that include rules to detect anomalous changes to your locations (such as impossible travel). This capability is supported for TRIAL, RISK, and MFARISK license packages. Note: The sharing of user data to enable our machine-learning engine, which is integral to PingOne Protect, is captured in the license property license.intelligence.allowDataConsent, but it is not set to true by default in any license package. This license capability always requires active consent by the customer before it can be enabled, and if consent is given, then it allows the full scope of intelligence features included in PingOne Protect (and PingOne Protect plus MFA).
    intelligence.allowIntelligenceProtect Boolean N/A Read-only Indicates whether your license permits you to configure protect features. Note: The sharing of user data to enable our machine-learning engine, which is integral to PingOne Protect, is captured in the license property license.intelligence.allowDataConsent, but it is not set to true by default in any license package. This license capability always requires active consent by the customer before it can be enabled, and if consent is given, then it allows the full scope of intelligence features included in PingOne Protect (and PingOne Protect plus MFA).
    intelligence.numberOfProtectTransactions Integer N/A Read-only Indicates the number of protect transactions allowed.
    mfa.allowPushNotification Boolean N/A Read-only Indicates whether push notifications are allowed. For TRIAL (unpaid) licenses, the default value is true. For other license package types, adoption of the feature determines the default value.
    mfa.allowMfaNotificationsOutsideWhitelist Boolean Required Immutable Indicates whether the license supports sending notifications outside of the environment's whitelist.
    mfa.allowFido2Devices Boolean N/A Read-only Indicates whether FIDO2 devices are allowed. For TRIAL (unpaid) licenses, the default value is true. For other license package types, adoption of the feature determines the default value.
    name String Required Mutable A string that specifies a descriptive name for the license. This is a required property in a license name update request. Valid characters consists of any Unicode letter, mark, numeric character, forward slash, dot, apostrophe, underscore, space, or hyphen. The maximum length of a name is 255 characters.
    organization.id String N/A Read-only The organization resource's unique identifier associated with the license.
    package String Required Mutable A string that specifies the license template on which this license is based. This is a required property. Options are TRIAL, STANDARD, PREMIUM, MFA, RISK, MFARISK, and GLOBAL. These values are not fixed.
    replacesLicense.id String Optional Immutable The license ID of the license that is replaced by this license.
    replacedByLicense.id String Optional Immutable The license ID of the license that replaces this license.
    status String Required Mutable The status of the license. Options are ACTIVE, EXPIRED, and FUTURE.
    terminatesAt Date Optional Mutable The exact date and time when this license terminates access to PingOne services. This attribute can be added to any licensing package.
    users.allowPasswordManagementNotifications Boolean Required Mutable Indicates whether the license supports sending password management notifications.
    users.allowIdentityProviders Boolean N/A Read-only Indicates whether the license supports using external identity providers in the specified environment.
    users.allowMyAccount Boolean N/A Read-only Indicates whether the license supports using My Account capabilities in the specified environment.
    users.allowPasswordManagementNotifications Boolean N/A Read-only Indicates whether the license supports using password management capabilities in the specified environment.
    users.allowPasswordOnlyAuthentication Boolean N/A Read-only Indicates whether the license supports using password only login capabilities in the specified environment.
    users.allowPasswordPolicy Boolean N/A Read-only Indicates whether the license supports using password policies in the specified environment.
    users.allowProvisioning Boolean N/A Read-only Indicates whether the license supports using provisioning capabilities in the specified environment.
    users.allowRoleAssignment Boolean N/A Read-only Indicates whether the license supports role assignments in the specified environment.
    users.users.allowVerificationFlow Boolean N/A Read-only Indicates whether the license supports using verification flows in the specified environment.
    users.allowUpdateSelf Boolean N/A Read-only Indicates whether the license supports allowing users to update their own profile.
    users.entitledToSupport Boolean N/A Read-only Indicates whether the license allows PingOne support.
    users.max Integer N/A Read-only The maximum number of users allowed per environment.
    users.annualActiveIncluded Integer N/A Read-only A soft limit on the number of active identities across all environments on the license per year. This property is not visible if a value is not provided at the time the license is created.
    users.monthlyActiveIncluded Integer N/A Read-only A soft limit on the number of active identities across all environments on the license per month. This property is not visible if a value is not provided at the time the license is created.
    verify.allowPushNotifications Boolean N/A Read-only Indicates whether to enable the PingOne Verify push notifications feature.
    verify.allowDocumentMatch Boolean N/A Read-only Indicates whether to enable the PingOne Verify document matching feature.
    verify.allowFaceMatch Boolean N/A Read-only Indicates whether to enable the PingOne Verify face matching feature.
    verify.allowManualIdInspection Boolean N/A Read-only Indicates whether to enable the PingOne Verify `manual ID inspection feature.
    verify.numberOfDataVerifications Integer N/A Read-only The maximum number of digital verifications allowed per environment. A value greater than 0 enables the feature.
    verify.numberOfDigitalVerifications Integer N/A Read-only The maximum number of digital verifications allowed per environment.
    verify.numberOfUniversalCapture Integer N/A Read-only The maximum number of universal captures allowed per environment.
    verify.numberOfAAMVA Integer N/A Read-only The maximum number of AAMVA allowed per environment.
    verify.numberOfVoiceBiometrics Integer N/A Read-only The maximum number of voice biometrics allowed per environment.

    License events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Read All Licenses


    Read One License


    Read One License Name


    Update One License Name

    Notifications

    The following section provides API reference information about the PingOne platform's notification services:

    • Notifications Templates

      Endpoints to manage notifications templates and email, voice, SMS, and push notifications contents.

    • Notifications Settings

      Endpoints to configure specific notifications settings for an identified environment.

    • Notifications Settings (SMTP)

      Endpoints to configure specific notifications settings for the organization's own SMTP service to send email notifications for each environment, instead of the built-in email service of PingOne.

    • Notifications Policies

      Endpoints to define notification policies to limit the use of SMS/voice and email notifications for pairing and authentication.

    • Phone Delivery Settings

      Endpoints to configure different accounts which could be used for sending an SMS or voice message.

    • Trusted Email Domains

      Endpoints to configure up to 50 trusted email domains for each environment.

    • Trusted Email Addresses

      Endpoints to configure up to 10 trusted email address for an existing trusted email domain.

    • Send Notifications

      Endpoints to send test notifications to a mobile application.

    Notifications Templates

    The templates endpoints manage notifications templates and notifications contents. Each content is based on one specific template. Each template can be associated with multiple contents.

    Each environment has a set of predefined notifications templates it can access. A template represents a specific process flow, for example, device_pairing or strong_authentication, that requires a notification. Each template defines the deliveryMethods (Email, SMS, Voice, WhatsApp, or Push) that it supports. You can read templates with this API, but you cannot create, update, or delete them.

    Notifications templates settings

    Template name ID Description Delivery methods Supported predefined variables Dynamic variables allowed
    Credential Issued credential_issued Users will receive this message when a credential is issued to them SMS, Email, Push credential.name (optional), user.username (optional), user.name.given (optional), user.name.family (optional) No
    Credential Revoked credential_revoked Users will receive this message when a credential they have is revoked SMS, Email, Push credential.name (optional), user.username (optional), user.name.given (optional), user.name.family (optional) No
    Credential Updated credential_updated Users will receive this message when a credential they have is updated SMS, Email, Push credential.name (optional), user.username (optional), user.name.given (optional), user.name.family (optional) No
    Credential Verification Push credential_verification Users' digital wallet will receive this message as a pushed notification of creation of a credential verification session Push None No
    Device pairing device_pairing Users will receive this message to pair their device for strong authentication SMS, Email, Voice, WhatsApp otp (required), user.username (optional), user.name.given (optional), user.name.family (optional), current-year (optional). For WhatsApp content, only otp is supported. Yes (for delivery methods other than WhatsApp)
    Digital Wallet Pairing digital_wallet_pairing Users will receive this message to setup and pair a digital wallet. SMS, Email app.open.url (required), user.username (optional), user.name.given (optional), user.name.family (optional) No
    Email Address Verification (Admin) email_verification_admin Admins will receive this message to verify their email address Email code (required), user.username (optional), user.name.given (optional), user.name.family (optional) No
    Email Address Verification (User) email_verification_user Users will receive this message to verify their email address Email code (required), user.username (optional), user.name.given (optional), user.name.family (optional) No
    Email and Phone Verification for Verify email_phone_verification Users will receive this message to verify their phone number or email address for a verify transaction SMS, Email otp (required), user.username (optional), user.name.given (optional), user.name.family (optional) No
    General general Use this multi-purpose template to create custom notifications SMS, Email, Voice user.username (optional), user.name.given (optional), user.name.family (optional), current-year (optional) Yes
    ID Verification id_verification Users will receive this message to verify their email address SMS, Email app.open.url (required), user.username (optional), user.name.given (optional), user.name.family (optional) No
    New Device Paired new_device_paired When a new device is paired, a notification will be sent to the user that a device has been registered to their account SMS, Email device.name (required), org.name (optional), report.fraud (optional) - inserts a link for reporting fraudulent pairing attempts No
    Password Recovery recovery_code_template Users who need to reset their password will receive this message Email code.value (required), user.username (optional), user.name.given (optional), user.name.family (optional) No
    Strong Authentication strong_authentication Users will receive this message for strong authentication SMS, Email, Push, Voice, WhatsApp otp (required for SMS, Email, Voice), user.username (optional), user.name.given (optional), user.name.family (optional), current-year (optional). For WhatsApp content, only otp is supported. Yes (for delivery methods other than WhatsApp)
    Transaction transaction Users will receive this message for transaction approval SMS, Email, Push, Voice otp (required for SMS, Email, Voice), user.username (optional), user.name.given (optional), user.name.family (optional) Yes
    Verification Code verification_code_template Users will receive this message to verify their email address Email code.value (required), user.username (optional), user.name.given (optional), user.name.family (optional) No

    A content defines one message text choice for a notification. Each content is always associated with one template and has one deliveryMethod and one locale. Each template comes with one predefined default content for each of its supported deliveryMethods. You cannot delete or update the default contents with this API. However, you can create custom contents for a template (up to 1000 custom contents per template). To create custom contents, refer to Creating custom contents.

    Notification templates assignment and initiation

    A notification template is defined for a specifc process flow to convey information about the process flow to its user. Typically, a service provides a request that can assign a specific variant or a specific locale or both (for more information on variants and locales, refer to Creating custom contents) for a notification used by its process flow. For example, Create Credential Issuance Rule has a notification.template object that can set the notification template variant and locale for notifications sent when a user credential is created, updated, or revoked through Apply Credential Issuance Rule Staged Changes or its automated equivalent.

    In this table, the notification template in Template name is assigned a variant or locale in the request in Defined by and the supported process flow begins with the request in Initiated by.

    Template name Defined by Initiated by
    credential_issued Create Credential Issuance Rule or Update Credential Issuance Rule Apply Credential Issuance Rule Staged Changes or its automated equivalent when the issuance rule's automation.issue is PERIODIC.
    credential_issued Create a User Credential Create a User Credential
    credential_revoked Create Credential Issuance Rule or Update Credential Issuance Rule Apply Credential Issuance Rule Staged Changes or its automated equivalent when the issuance rule's automation.revoke is PERIODIC.
    credential_updated Create Credential Issuance Rule or Update Credential Issuance Rule Apply Credential Issuance Rule Staged Changes or its automated equivalent when the issuance rule's automation.update is PERIODIC.
    credential_updated Update a User Credential Update a User Credential
    credential_verification Create Credential Verification Session (NATIVE - Push Notification) Create Credential Verification Session (NATIVE - Push Notification)
    device_pairing Defined by the flow status. Initiated by the DEVICE_SELECTION_REQUIRED flow status.
    digital_wallet_pairing Create Digital Wallet Create Digital Wallet
    email_phone_verification Create Verify Policy or Update Verify Policy, but cannot define a locale. Create Verify Transaction
    email_verification_admin Defined by the flow status. Initiated by the VERIFICATION_REQUIRED flow status. Refer to Send Email Verification (Code).
    email_verification_user Defined by the flow status. Initiated by the VERIFICATION_REQUIRED flow status. Refer to Send Email Verification (Code).
    general Defined by the flow status. Initiated by a flow status that sends a one-time passcode through email, SMS, or voice.
    id_verification Cannot define a variant or locale Create Verify Transaction
    new_device_paired Add the notifications property to the Create MFA User Device request. Refer to MFA Devices.
    recovery_code_template Defined by the flow status. Initiated by the RECOVERY_CODE_REQUIRED flow status. The user initiated a password.forgot flow action and a recovery code must be sent.
    strong_authentication Defined by the flow status. Initiated by an MFA flow status that sends a push notification on mobile apps or a one-time passcode through email, SMS, or voice.
    transaction Defined by the pi.template property in an authorize request's request property JWT. Initiated by the authorize request. Refer to Authorize (Transaction Approval).
    verification_code_template Defined by the flow status. Initiated by the VERIFICATION_REQUIRED flow status. Refer to Register User.

    Runtime logic for content selection

    Each content, whether default or custom, is associated with one template, one deliveryMethod, one locale, and optionally, one variant (for more information on variants, refer to Creating custom contents). When a request for content is executed at runtime, it includes a template, deliveryMethod, and optionally a variant.

    When determining the language to use for a notification, PingOne uses the following logic:

    • The preferred language is determined by:

      1. Checking first if locale is specified in the API request, for example, in the notification.template.locale property for POST {{apiPath}}/environments/{{envID}}/users/{{userID}}/devices.
      2. If locale was not specified in the request, the preferred language that was set for the user in PingOne is used.
      3. If there is no preferred language set for the user in PingOne, the Accept-Language header in the request is checked.
      4. If the Accept-Language header does not indicate a language preference, the default language for the PingOne environment is used.
    • Once the language preference has been determined, PingOne checks if there is a notification content that matches. If there is not an exact match, PingOne uses the best match (based on the language, ignoring the region) if available. For example, es-ES falls back to es.

    • For voice notifications, PingOne uses the best matching language based on the supported languages of the provider (Twilio, Syniverse, or a custom provider).

    • The locale property supports the syntax defined for the Accept-Language header in Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, including the use of quality values.

    Content language selection examples
    Content
    available
    languages
    Voice
    provider
    support
    User
    preferred
    language
    Locale
    in the
    request
    Resulting
    notification
    language
    Description
    fr-CA
    it(default)
    fr-CA
    it
    en
    fr-CA fr-CA fr-CA User's preference and locale in the request match an available language in the content templates
    fr-CA
    it(default)
    fr-CA
    it
    en
    es es it Default content language used: neither user's preference nor locale in the request match an available content language
    fr-CA
    it(default)
    fr-CA
    it
    en
    es it Default content language used: no locale in the request, and no match of user's preference with available content languages
    fr-CA
    it(default)
    fr-CA
    it
    en
    es it Default content language used: no definition for user's preference, and no match of locale in the request with available content languages
    fr-CA
    it(default)
    fr-CA
    it
    en
    it Default content language used: no definition for both user's preference locale in the request
    fr-CA
    it(default)
    fr-CA
    it
    en
    es fr-CA fr-CA Locale in the request used: user's preference does not match an available language in the content templates, but the locale in the request does
    fr
    it(default)
    fr
    it
    en
    es fr-CA fr User preferred language doesn't match any of the available contents' locales, but locale in the request has a close match to an available content's locale (fr ~= fr-CA).
    fr-CA
    it
    fr-CA
    it
    en
    es es en Both user preferred language and locale in the request don't match an available content's locale and there's no available content for the environment's default language. Falling back to English.
    fr
    it(default)
    es
    fr
    it
    en
    fr es SMS,email,push:es
    Voice:fr
    User preferred language matches an available content's locale (es). For notifications of type SMS, Email and Push, es will be used.
    Since es is not a supported voice language, for Voice notifications, fr will be used, since it matches the locale in the request and is also supported for text-to-speech.

    Creating custom contents

    Add and update custom contents with POST {{apiPath}}/environments/{{envID}}/templates/{{templateName}}/contents and PUT {{apiPath}}/environments/{{envID}}/templates/{{templateName}}/contents/{{contentID}}. Each content is associated with one template and has one deliveryMethod and one ISO language code (locale). You can define multiple custom contents for each template + deliveryMethod + locale combination with the variant property.

    Variants

    If you have more than one custom content that uses the same template, deliveryMethod, and locale, these contents must have different values for the variant property. The variant property holds the unique user-defined name for each content variant that uses the same template + deliveryMethod + locale combination.

    variant values can be reused by contents across different template + deliveryMethod + locale combinations. They need to be unique within the same template + deliveryMethod + locale combination only. As a best practice, use the same variant value for contents with the same message text. For example, the variant value variant_A can be used by a content with the strong_authentication + email + en combination and also by a content with the strong_authentication + push + en combination. For two contents that both use the strong_authentication + email + en combination though, if one content uses the variant value of variant_A, the other content must use a variant value such as variant_B.

    Use PATCH environments/{{envID}}/templates/{{templateName}}/contents?filter=variant eq {{variantName}} to bulk update the variant value in contents with the same variant value. Use DELETE environments/{{envID}}/templates/{{templateName}}/contents?filter=variant eq {{variantName}} to bulk delete contents with the same variant value.

    Variables

    Variables are placeholders for values that change depending on the context. For example:

    • The SMS content is Hi ${user.username}! Your one time passcode is ${otp}.
    • The ${user.username} variable has a value of John.
    • The ${otp} variable has a value of 548263.

    The resulting message is:
    Hi John! Your one time passcode is 548263, which includes the variable values John and 548263.

    Predefined variables

    If a template includes predefined variables, the template lists which variables can be optionally used in its contents and which variables are required in its contents. For example, user.username can be optionally used by strong_authentication contents, while otp is required for all SMS, Voice and Email contents.

    "variables": {
        "user.username": {
            "required": false
        },
        "otp": {
            "required": true,
            "requiredForDeliveryMethods": [
                "SMS",
                "Voice",
                "Email"
            ]
        }
    }
    

    Dynamic variables

    In addition to predefined variables, most templates also allow dynamic variables. If a template has the property allowDynamicVariables set to true, its contents can contain any user-defined variable in the format ${variable_name}.

    Filtering result data

    You can filter GET {{apiPath}}/environments/{{envID}}/templates and GET {{apiPath}}/environments/{{envID}}/templates/{{templateName}}/contents results by applying a SCIM filtering expression to the request URL. For large collections, a filtering expression appended to the query returns a targeted, more useful data set. For example, the following URL-encoded SCIM filter returns templates created before 2018-07-30 and updated after 2018-08-30:

    https://api.pingone.com/v1/environments/5caa81af-ec05-41ff-a709-c7378007a99c/templates?filter=(createdAt%20lt%20%222018-08-30%22)%20and%20(updatedAt%20gt%20%222018-07-30%22)%20
    

    SCIM operators can be applied to the following attributes:

    Collection Attribute Supported
    Templates and contents collections createdAt
    • eq (equals)
    • ne (not equals)
    • gt (greater than)
    • ge (greater than or equals)
    • lt (less than)
    • le (less than or equals)
    Templates and contents collections updatedAt
    • eq (equals)
    • ne (not equals)
    • gt (greater than)
    • ge (greater than or equals)
    • lt (less than)
    • le (less than or equals)
    Contents collections default
    • eq (equals)
    Contents collections locale
    • eq (equals)
    • sw (starts with)
    Contents collections deliveryMethod
    • eq (equals)
    Contents collections variant
    • eq (equals)
    • sw (starts with)

    Additionally, the logical and and or operators may be used for building compound expressions.

    Ordering result data

    You can order the collections returned by the GET collection endpoints according to the createdAt and updatedAt attribute. Ordering by any attribute returns the collection in a descending order. Using the attribute with the "-" prefix returns the collection ordered in descending order. For example, the following URL returns all the templates ordered by ascending creation date:

    https://api.pingone.com/v1/environments/5caa81af-ec05-41ff-a709-c7378007a99c/templates?order=-createdAt
    

    For more information about SCIM syntax and operators, refer to Conventions.

    Properties

    Template Properties
    Property Type Required? Mutable? Description
    id String Required Immutable The template id.
    displayName String Required Mutable The template's display name.
    deliveryMethods Array Required Mutable The delivery methods supported for this template. Valid values are SMS, Voice, Email, and Push.
    createdAt Date N/A Read only The time the resource was created.
    updatedAt Date N/A Read only The time the resource was last updated.
    description String Optional Mutable The description of the template.
    variables Object Required Mutable Lists the variables you can use in each template content. The required property indicates whether the variable is required in template content. If required is true, the requiredForDeliveryMethods property lists the deliveryMethods types that require the variable. Note that if required is true, but requiredForDeliveryMethods is not returned, all deliveryMethods types are required. For more information, refer to Variables.
    allowDynamicVariables Boolean Required Mutable Specifies whether dynamic variables can be used in the template's contents. For more information, refer to Dynamic variables.
    Content Properties
    Property Type Required? Mutable? Description
    body String Required/Optional Mutable Only required when deliveryMethod is Email or Push. The email or push text (maximum 400 characters for push text). Email text cannot be larger than 100 kB. Email text can contain HTML. If supported, this can include variables.
    charset String Optional Mutable Relevant when deliveryMethod is Email. If not specified, UTF-8 is the default value.
    content String Required/Optional Mutable Only required when deliveryMethod is SMS or Voice. The SMS or voice text.
    • SMS: UC-2 encoding is used for text that contains non GSM-7 characters. UC-2 encoded text cannot exceed 67 characters. GSM-7 encoded text cannot exceed 153 characters. If supported, it can include variables.
    • Voice: Limited to 1Kb characters.
      The following substitution place holders can be embedded in the message:
      • <pause1sec>: Pauses the message narration for 1 second.
        The pause interval <pause1sec> cannot be modified. To pause the message narration for more than one second, repeat multiple <pause1sec> occurrences in succession, according to the desired pause interval duration. For example, <pause1sec><pause1sec><pause1sec> pauses the message narration for three seconds.
      • <sayCharValue> .. </sayCharValue>: Reads the character name of each character of the enclosed string separately.
      • <repeatMessage val=x> .. </repeatMessage>: Narrates the enclosed text <val> number of times.
      In the following message example, ${otp} is assigned the value "123456", and ${email} is assigned the value "joe@bxz.com":
      Hello <pause1sec> your authentication code is 
      <sayCharValue>${otp}</sayCharValue>
      <repeatMessage val=2> I repeat your code is
      <sayCharValue>${otp}</sayCharValue>
      </repeatMessage> <pause1sec>
      Mail <sayCharValue>${email}</sayCharValue> for help
      The narrated message on the voice call sounds like:
      HELLO <1 second silence> YOUR AUTHENTICATION CODE IS 
      ONE TWO THREE FOUR FIVE SIX
      I REPEAT YOUR CODE IS ONE TWO THREE FOUR FIVE SIX
      I REPEAT YOUR CODE IS ONE TWO THREE FOUR FIVE SIX <1 second silence>
      MAIL JAY OH EE AT BEE EX ZEE DOT SEE OH EM FOR HELP
    createdAt Date N/A Read only The time the resource was created.
    default Boolean Optional Mutable Specifies whether the template is a predefined default template.
    deliveryMethod String Required Immutable The content's delivery method. Possible values are Email, SMS, Voice, Push, and WhatsApp. Cannot be changed after it is initially set in POST {{apiPath}}/environments/{{envID}}/templates/{{templateName}}/contents.
    emailContentType String Optional Mutable Relevant when deliveryMethod is Email. If not specified, text/html is the default value.
    from.address String Optional Mutable Relevant when deliveryMethod is Email.
    The sender email address.
    If the environment uses the Ping Identity email sender, or if the address field is empty, the address "noreply@pingidentity.com" is used.
    You can configure other email sender addresses per environment.
    Refer to Note for details.
    from.name String Optional Mutable Relevant when deliveryMethod is Email.
    The email's sender name.
    If the environment uses the Ping Identity email sender, the name "PingOne" is used.
    You can configure other email sender names per environment.
    Refer to Note for details.
    id String N/A Read only The template id.
    locale String Required Immutable A valid case-insensitive locale, complying with the ISO-639 language code and ISO-3166 country code standards:
    • Two-character language code, for example, "en".
    • Two-character language code followed by a two-character country code, separated by an underscore or dash, for example: "en_GB", "en-GB".
    Cannot be changed after it is initially set in POST {{apiPath}}/environments/{{envID}}/templates/{{templateName}}/contents.
    pushCategory String Optional Mutable For Push content, you can specify what type of banner should be displayed to the user. The available options are:
    • BANNER_BUTTONS - the banner contains both Approve and Deny buttons
    • WITHOUT_BANNER_BUTTONS - when the user clicks the banner, they are taken to an application that contains the necessary approval controls.
    • APPROVE_AND_OPEN_APP - when the Approve button is clicked, authentication is completed and the user is taken to the relevant application.
    If this parameter is not provided, the default is BANNER_BUTTONS. Note that to use the non-default push banners, you must implement them in your application code, using the PingOne SDK. For details, refer to the README for iOS and the README for Android.
    replyTo.address String Optional Mutable Relevant when deliveryMethod is Email.
    The "reply to" email address.
    If the environment uses the Ping Identity email sender, or if the address field is empty, the address "noreply@pingidentity.com" is used.
    You can configure other email "reply to" addresses per environment.
    Refer to Note for details.
    replyTo.name String Optional Mutable Relevant when deliveryMethod is Email.
    The email's "reply to" name.
    If the environment uses the Ping Identity email sender, the name "PingOne" is used.
    You can configure other email "reply to" names per environment.
    Refer to Note for details.
    sender String Optional Mutable Relevant when deliveryMethod is SMS. The SMS sender ID. This property can contain only alphanumeric characters and spaces, and its length cannot exceed 11 characters. In some countries, it is impossible to send an SMS with an alphanumeric sender ID. For those countries, the sender ID must be empty. For SMS recipients in specific countries, refer to Twilio's documentation on International support for Alphanumeric Sender ID.
    subject String Optional Mutable Relevant when deliveryMethod is Email. The email's subject line. Cannot exceed 256 characters. If supported, can include variables.
    template.id String N/A Read only The ID of the template type, for example, device_pairing or transaction.
    title String Optional Mutable Relevant when deliveryMethod is Push. The push title (maximum 200 characters). If supported, this can include variables.
    twilioVerifyTemplate.id String Optional Mutable The Twilio ID of the Verify template to use. Can be included when using Twilio Verify.
    twilioVerifyTemplate.locale String Optional Mutable The locale of the Verify template to use. Required if you have specified a value for twilioVerifyTemplate.id.
    updatedAt Date N/A Read only The time the resource was last updated.
    variant String Optional Mutable Holds the unique user-defined name for each content variant that uses the same template + deliveryMethod + locale combination. This property is case insensitive and has a limit of 100 characters. For more information, refer to Creating custom contents.
    voice String Optional Mutable Relevant only if deliveryMethod is Voice. Options are Alice, Man, or Woman.
    Voice OTP supports vendor-specific voices.
    • Supported Twilio voices:
      • Man, Woman
        Supported locales (default: en):
        en, en_GB, es, fr, de
      • Alice (Twilio only)
        Supported locales (default: en US):
        da_DK, de_DE, en_AU, en_CA, en_GB, en_US, ca_ES, es_ES, es_MX, fi_FI, fr_CA, fr_FR, it_IT, ja_JP, ko_KR, nb_NO, nl_NL, pl_PL, pt_BR, pt_PT, ru_RU, sv_SE, zh_CN, zh_HK, zh_TW
      • Amazon Polly
        cy_GB, ro_RO, is_IS, hi_IN tr_TR
    • Supported Syniverse voices:
      • Man, Woman
        Supported locales:
        en_US, en_GB, es_ES, es_US, fr_FR, de_DE, it_IT, en_AU, da_DK, is_IS, nl_NL, pl_PL, pt_BR, pt_PT, ru_RU, ja_JP
      • Woman only
        Supported locales:
        cmn_CN, cy_GB, en_IN, fr_CA, hi_IN, nb_NO, ro_RO, sv_SE, tr_TR, ko_KR, ar
    whatsAppTemplate Object Required Mutable Required when creating content for WhatsApp delivery. Contains the necessary information for identifying the WhatsApp template that should be used for the content. Use {{apiPath}}/environments/{{envID}}/notificationsSettings/instantMessagingDeliverySettings/whatsApp?expand=whatsAppTemplates to get the details of all the available WhatsApp templates, as shown in the Read WhatsApp Delivery Settings (including templates) example. Note that the object returned for each template is identical in structure to the structure of the whatsAppTemplate object, so template details can be copied directly from that response.
    whatsAppTemplate.category String Optional Mutable If included, should be set to AUTHENTICATION.
    whatsAppTemplate.id String Required Mutable The WhatsApp-provided ID of the template.
    whatsAppTemplate.language String Required Mutable The language of the template.
    whatsAppTemplate.name String Required Mutable The name of the template.

    Notifications Templates events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Email Content


    Create WhatsApp Content


    Create SMS Content


    Create SMS Content (including Twilio Verify template)


    Create Voice Content


    Create Push Content


    Read All Templates


    Read All Contents


    Read One Template


    Read One Content


    Update WhatsApp Content


    Update Email Content


    Update SMS Content


    Update Voice Content


    Update Push Content


    Delete Content


    Patch Bulk Variant Contents


    Delete Bulk Variant Contents

    Notifications Settings

    The notifications settings endpoints provide the ability to configure specific notifications settings for each environment. They implement operations to read, update and reset the settings for the environment.

    Configure an SMS/Voice provider fallback chain

    The sequence of SMS/Voice providers in smsProvidersFallbackChain comprises the notification fallback sequence, in the event of a primary or subsequent provider failing to send the notification.

    1. The providers must be configured in the Phone Delivery Settings resource.
    2. Update the notifications setting resource by using the PUT {{apiPath}}/environments/{{envID}}/notificationsSettings/ operation. For example, to define your own provider (represented here as TwilioPhoneDeliverySettingsId) as the primary provider, and Ping's Twilio account as the fallback:
    {
        "smsProvidersFallbackChain": [ "TwilioPhoneDeliverySettingsId", "PINGONE_TWILIO" ]
    }
    

    Notifications settings properties

    Property Type Required? Mutable? Description
    emailProviderFallbackChain Array Optional Mutable For email notifications, you can use the Ping server or a customer server/provider that you have defined. If you defined a custom server/provider and want to switch to the Ping server, send an update request and include the emailProviderFallbackChain array with the single value PINGONE_EMAIL. To switch back to your custom server/provider, send an update request and include emailProviderFallbackChain as an empty array.
    environment.id String Required Immutable The environment resource’s unique identifier.
    from.name String Optional Mutable The email's "from" name.
    Refer to Note for details.
    from.address String Optional Mutable The email's "from" address. This value must be a trusted email address.
    Refer to Note for details.
    replyTo.name String Optional Mutable The email's "reply to" name.
    Refer to Note for details.
    replyTo.address String Optional Mutable The email's "reply to" address. This value must be a trusted email address.
    Refer to Note for details.
    smsProvidersFallbackChain Array Optional Mutable A comma-separated list that represents the execution order of different SMS/Voice providers configured for the environment. The providers and their accounts' configurations are represented in the list by the ID of the corresponding PhoneDeliverySettings resource. The only provider which is not represented by a PhoneDeliverySettingsId is the PingOne Twilio provider. The PingOne Twilio provider is represented by the "PINGONE_TWILIO" string. If the smsProvidersFallbackChain list is empty, an SMS or voice message will be sent using the default Ping Twilio account. Otherwise, an SMS or voice message will be sent using the first provider in the list. If the server fails to queue the message using that provider, it will use the next provider in the list to try to send the message. This process will go on until there are no more providers in the list. If the server failed to send the message using all providers, the notification status is set to FAILED.
    updatedAt Date N/A Read-Only The time the resource was last updated.

    Notifications settings events generated

    Refer to Audit Reporting Events for the events generated.

    Notifications settings response codes
    Code Message
    200 Successful operation.
    201 Successfully created.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Read Notifications Settings


    Update Notifications Settings


    Delete Notifications Settings

    Notification Policies

    You can define notification policies to limit the use of SMS/voice and email notifications for pairing and authentication.

    Parameters for creating/updating notification policies

    Property Type Required? Mutable? Description
    cooldownConfiguration Object Optional Mutable Include the cooldownConfiguration object in the request if you want to specify a period of time that users must wait before requesting an additional notification such as an additional OTP.
    cooldownConfiguration.email Object Required Mutable Required if you have included the cooldownConfiguration object. Contains the notification cooldown period settings for email notifications.
    cooldownConfiguration.sms Object Required Mutable Required if you have included the cooldownConfiguration object. Contains the notification cooldown period settings for sms notifications.
    cooldownConfiguration.voice Object Required Mutable Required if you have included the cooldownConfiguration object. Contains the notification cooldown period settings for voice notifications.
    cooldownConfiguration.whatsApp Object Required Mutable Required if you have included the cooldownConfiguration object. Contains the notification cooldown period settings for whatsApp notifications.
    cooldownConfiguration.(authentication method).enabled Boolean Required Mutable Set to true if you want to specify notification cooldown periods for the authentication method. Set to false if you don't want notification cooldown periods for this authentication method.
    cooldownConfiguration.(authentication method).periods Array Required/Optional Mutable Required if cooldownConfiguration.(authentication method).enabled is true. Use the periods array to specify the amount of time the user has to wait before requesting another notification such as another OTP. The array should contain three objects: the time to wait before the first retry, the time to wait before the second retry, and the time to wait before any subsequent retries.
    cooldownConfiguration.(authentication method).periods[].duration Integer Required/Optional Mutable Required if cooldownConfiguration.(authentication method).enabled is true. Used in conjunction with timeUnit to specify the waiting period. Minimum is ten seconds, maximum is ten minutes.
    cooldownConfiguration.(authentication method).periods[].timeUnit String Required/Optional Mutable Required if cooldownConfiguration.(authentication method).enabled is true. Used in conjunction with duration to specify the waiting period. Can be set to SECONDS or MINUTES.
    cooldownConfiguration.(authentication method).groupBy String Optional Mutable Since bad actors may try to target multiple users at a single email address or phone number, by default the cooldown settings (both waiting period and maximum retries) are applied to the email address or phone number. If you want the settings to be applied at the single-user level for the address/number, include the groupBy parameter in the request and set it to USER_ID.
    cooldownConfiguration.(authentication method).resendLimit Integer Required/Optional Mutable Required if cooldownConfiguration.(authentication method).enabled is true. The maximum number of requests that a user can send to receive another notification, such as another OTP, before they are blocked for 30 minutes.
    countryLimit Object Optional Mutable You can use the countryLimit object to limit the countries where you can send SMS and voice notifications.
    countryLimit.type String Required/Optional Mutable Determines the kind of limitation being defined. The possible values are
    • NONE
    • ALLOWED - allows SMS/Voice notifications only for the countries specified with countryLimit.countries
    • DENIED - denies SMS/Voice notifications for the countries specified with countryLimit.countries
    countryLimit.deliveryMethods Array Optional Mutable The delivery methods that the defined limitation should be applied to. Content of the array can be SMS, Voice, or both. If the parameter is not provided, the default is SMS and Voice.
    countryLimit.countries Array Required/Optional Mutable The countries where the specified methods should be allowed or denied. Use the two-letter country codes from ISO 3166-1.
    createdAt Date N/A Read-only The date and time the notification policy was created.
    default Boolean Optional Mutable Indication of whether this policy is the default notification policy for the environment. If the parameter is not provided, the value used is false
    environment.id String N/A Read-only The ID of the PingOne environment that contains the notification policy.
    id String N/A Read-only The ID generated for the notification policy when it was created.
    name String Required Mutable The name to use for the notification policy. Must be unique among the notification policies in the environment.
    providerConfiguration Object Optional Mutable If you have defined more than one custom provider, you can use the providerConfiguration object to specify the provider preference to use for different countries and for the different methods (SMS and Voice).
    providerConfiguration.conditions Array Optional Mutable Each element in the conditions array represents the provider fallback order to use for a specific group of countries for the specified methods (SMS and/or Voice). Note that in addition to any country-specific orders specified, the array must contain a fallback order without the countries array in the object. This order is used for all countries that were not specified in one of the other fallback orders defined.
    providerConfiguration.conditions[].deliveryMethods Array Optional Mutable The authentication methods that the fallback order should be used for. The array can contain VOICE, SMS, or both.
    providerConfiguration.conditions[].countries Array Optional Mutable The countries for which the fallback order should be used. Use the two-letter country codes from ISO 3166-1.
    providerConfiguration.conditions[].fallbackChain Array Optional Mutable An array containing the IDs of the defined custom providers, in the order that they should be used if available.
    providerConfiguration.conditions[].fallbackChain.id String Optional Mutable The ID of one of the defined custom providers. This is the ID that is returned when you create the provider using the phoneDeliverySettings endpoint or when you run the GET request with that endpoint to retrieve the details of all the providers.
    quotas Array Required Mutable Collection of objects that define the SMS/voice and email limits. Each object contain the following elements: type, deliveryMethods, total. Note that instead of total, you can use the pair of fields: claimed and unclaimed.
    quotas[].type String Required Mutable Specifies whether the limit defined is per-user or per environment. Value must be either USER or ENVIRONMENT.
    quotas[].deliveryMethods Array Required Mutable The delivery methods for which the limit is being defined. The value can be Email or SMS,Voice. When you use the SMS, Voice option, it means that the combined total of SMS and voice notifications must be below the limit defined. If you are limiting both email and SMS/voice, each limit should be represented by a different object in the quotas array, for example:
    "quotas": [{"type": "USER","deliveryMethods": ["SMS","Voice"],"total": 30},{"type": "USER","deliveryMethods": ["Email"],"total": 30}]
    quotas[].total Integer Required/Optional Mutable The maximum number of notifications allowed per day.
    quotas[].claimed Integer Required/Optional Mutable The maximum number of notifications that can be received and responded to each day. Used in conjunction with unclaimed in place of the single field total.
    quotas[].unclaimed Integer Required/Optional Mutable The maximum number of notifications that can be received and not responded to each day. Used in conjunction with claimed in place of the single field total.
    updatedAt Date N/A Read-only The date and time the notification policy was last updated.

    When you create/update a notification policy, the response also includes the following information:

    • id - the ID assigned to the notification policy
    • createdAt - date and time when the policy was created
    • updatedAt - date and time when the policy was updated

    Notification Policy events generated

    Refer to Audit Reporting Events for the events generated.


    Create Notification Policy / Environment


    Create Notification Policy / Environment (using custom providers)


    Create Notification Policy / User


    Create Notification Policy / user - claimed, unclaimed (instead of total)


    Update Notification Policy (with custom provider preference)


    Read All Notification Policies


    Read One Notification Policy


    Update Notification Policy


    Delete Notification Policy


    Reset Notification Quotas

    Notifications Settings (SMTP)

    The SMTP notifications settings endpoints provide the ability to configure the organization's own SMTP service to send email notifications for each environment, instead of the built-in email service of PingOne. These endpoints implement operations to read, update and reset the SMTP notification settings for the environment.

    Notifications settings (SMTP) properties

    Property Type Mutability Description
    host String Mutable The organization's SMTP server.
    port String Mutable The port used by the organization's SMTP server to send emails. The default port is 465.
    protocol String Read-only The SMTP protocol used by the organization. Ports 25, 2525, and 587 use SMTP. All other ports use SMTPS.
    username String Mutable The organization's SMTP server username.
    password String Write-only The organization's SMTP server password. Encrypted.
    environment.id String Read-only The environment resource's unique identifier.
    from.name String Mutable The email's "from" name .
    from.address String Mutable The email's "from" address.
    replyTo.name String Mutable The email's "reply to" name.
    replyTo.address String Mutable The email's "reply to" address.

    Notifications settings (SMTP) events generated

    Refer to Audit Reporting Events for the events generated.


    Read Notifications Settings (SMTP)


    Update Notifications Settings (SMTP)


    Delete Notifications Settings (SMTP)

    Email Delivery Settings

    Use the emailDeliverySettings endpoint to configure the sending of notifications via an external email service.

    Note that you can only have a single set of email delivery settings for an environment, whether it be a custom SMTP mail server or an external email service.

    Email delivery settings data model

    Property Type Required? Mutable? Description
    authentication Object Required Mutable Contains the information for authenticating with the email provider.
    authentication.authToken String Required Mutable If you specified BEARER as the authentication method, use authToken to provide the bearer token to use.
    authentication.authUrl String Required Mutable The URL of the authorization server that provides the access token.
    Required when authentication.method=OAUTH2
    authentication.clientAuthenticationMethod String N/A Read-only The method used for sending the client ID and secret. Returned in responses for custom providers that require OAuth 2 authentication. Currently, value returned is always BASIC_AUTH_HEADER.
    authentication.clientId String Required Mutable The client's public identifier.
    Required when authentication.method=OAUTH2
    authentication.clientSecret String Required Mutable The client's secret.
    Required when authentication.method=OAUTH2
    authentication.grantType String N/A Read-only The grant type used. Returned in responses for custom providers that require OAuth 2 authentication. Currently, value returned is always CLIENT_CREDENTIALS.
    authentication.headerName String Required Mutable The name of the custom header used for authentication.
    Required when authentication.method=CUSTOM_HEADER
    authentication.headerValue String Required Mutable The value to use for the custom header used for authentication.
    Required when authentication.method=CUSTOM_HEADER
    authentication.method String Required Mutable The custom provider account's authentication method. Possible values:
    • BASIC - username/password
    • BEARER - bearer token
    • OAUTH2 - OAuth 2
    • CUSTOM_HEADER - authentication using a custom header
    authentication.password String Required Mutable If you specified BASIC as the authentication method, use password to provide the password for authenticating with the email provider.
    authentication.username String Required Mutable If you specified BASIC as the authentication method, use username to provide the username for authenticating with the email provider.
    environment.id String N/A Read-only The environment's unique identifier.
    from Object Optional Mutable Contains the "from" information to use for the notifications.
    from.name String Optional Mutable The "from" name to use in the notifications that are sent.
    from.address String Optional Mutable The "from" address to use in the notifications that are sent.
    name String Required Mutable Name to use to identify the provider.
    protocol String Required Immutable Set to HTTP when configuring an external email provider.
    provider String Required Immutable Must be set to CUSTOM_PROVIDER.
    replyTo Object Optional Mutable Contains the "reply-to" information to use for the notifications.
    replyTo.name String Optional Mutable The "reply-to" name to use in the notifications that are sent.
    replyTo.address String Optional Mutable The "reply-to" address to use in the notifications that are sent.
    requests Array Required Mutable Contains the object that is used to configure the API requests sent to the email provider.
    requests[].body String Required Mutable Required if method is set to POST. Use body to provide the content of the body for the request sent to the email provider. The body that you define must include the mandatory PingOne variables for notifications: ${from}, ${to}, and ${message}. You can also include any optional notification variables.
    If you are including the header content-type: application/json in requests[].headers:
    • The content of requests[].body must be valid JSON
    • You must enclose the JSON object in quotation marks and escape all quotation marks within the string, for example, "{\"From\": \"${from}\",\"To\": \"${to}\",\"message2\": \"${message}\"}".
    requests[].deliveryMethod String Required Immutable Should be set to EMAIL.
    requests[].headers Object Required Mutable Use this object to specify the headers that your email provider's API expects.
    requests[].method String Required Mutable Use method to specify the type of API request the email provider requires. Valid values are GET and POST.
    requests[].url String Required Mutable Use url to specify the endpoint for your email provider, for example, https://api.example.com/email. If method is set to GET, append to the URL the various query parameters that the email provider's API requires. The URL must also include the required PingOne variables, as described for the body parameter.
    updatedAt Date N/A Read-only The date and time the email delivery settings were last updated.

    Create Custom Email Provider


    Read Custom Email Provider

    Phone Delivery Settings

    The phone delivery settings endpoints provide the ability to configure different accounts which could be used for sending an SMS or voice message. They implement operations to create, update, read and delete phone delivery settings resources for an environment.

    Phone delivery settings properties

    Property Type Required? Mutable? Description
    createdAt Date N/A Read-only The time the resource was created.
    environment.id String Required Immutable The relationship of the phone delivery settings to the environment.
    id String Required Immutable The auto-generated ID of the phone delivery settings.
    provider String Required Immutable The provider to use for phone delivery service. Possible values:
    • CUSTOM_TWILIO: Uses the default PingOne provider (Twilio / Vonage) as the SMS/voice provider.
    • CUSTOM_SYNIVERSE: Specifies that your Syniverse account is the SMS/voice provider.
    • CUSTOM_TWILIO_VERIFY: Uses Twilio Verify.
    • CUSTOM_PROVIDER: Uses the custom SMS provider that you defined (if you want to use a provider other than the default PingOne provider or Syniverse).
    updatedAt Date N/A Read-only The time the resource was last updated.

    Custom provider phone delivery settings properties (Twilio or Syniverse)

    The phoneDeliverySettings instance that supports your Twilio or Syniverse custom provider phone delivery accounts.

    Property Type Required? Mutable? Description
    authToken String Required Immutable The secret key of the Twilio or Syniverse account.
    createdAt Date N/A Read-only The time the resource was created.
    environment.id String Required Immutable The relationship of the phone delivery settings to the environment.
    id String Required Immutable The auto-generated ID of the phone delivery settings.
    name String Optional Mutable The name you want to use for the provider.
    numbers Array Required Mutable A collection of Twilio or Syniverse numbers to use when sending a notification. The array uses the properties in the Custom provider phone number properties data model. If left blank, returns the numbers from the Twilio or Syniverse service.
    provider String Required Immutable The ID of the provider of phone delivery service. In this case it has the value CUSTOM_TWILIO, CUSTOM_SYNIVERSE, or CUSTOM_TWILIO_VERIFY.
    sid String Required Immutable The public ID of the Twilio account.
    Relevant to Twilio only.
    updatedAt Date N/A Read-only The time the resource was last updated.
    verifyServiceId String Optional Mutable The Twilio Verify service ID. Required when you are using Twilio Verify.

    Custom provider phone delivery settings properties (excluding Twilio and Syniverse)

    The phoneDeliverySettings instance that supports your custom provider phone delivery accounts (excluding Twilio and Syniverse).

    Property Type Required? Mutable? Description
    authentication Object Required Mutable Contains the information for authenticating with the provider.
    authentication.authToken String Required Mutable The authentication token for the custom provider account.
    Required when authentication.method=BEARER
    authentication.authUrl String Required Mutable The URL of the authorization server that provides the access token.
    Required when authentication.method=OAUTH2
    authentication.clientAuthenticationMethod String N/A Read-only The method used for sending the client ID and secret. Returned in responses for custom providers that require OAuth 2 authentication. Currently, value returned is always BASIC_AUTH_HEADER.
    authentication.clientId String Required Mutable The client's public identifier.
    Required when authentication.method=OAUTH2
    authentication.clientSecret String Required Mutable The client's secret.
    Required when authentication.method=OAUTH2
    authentication.grantType String N/A Read-only The grant type used. Returned in responses for custom providers that require OAuth 2 authentication. Currently, value returned is always CLIENT_CREDENTIALS.
    authentication.headerName String Required Mutable The name of the custom header used for authentication.
    Required when authentication.method=CUSTOM_HEADER
    authentication.headerValue String Required Mutable The value to use for the custom header used for authentication.
    Required when authentication.method=CUSTOM_HEADER
    authentication.method String Required Mutable The custom provider account's authentication method. Possible values:
    • BASIC - username/password
    • BEARER - bearer token
    • OAUTH2 - OAuth 2
    • CUSTOM_HEADER - authentication using a custom header
    authentication.password String Required Mutable The password for the custom provider account.
    Required when authentication.method=BASIC
    authentication.username String Required Mutable The username for the custom provider account.
    Required when authentication.method=BASIC
    name String Required Mutable The customer provider's name.
    numbers Array Required Mutable A collection of Twilio or Syniverse numbers to use when sending a notification. The array uses the properties in the Custom provider phone number properties data model.
    requests.afterTag String Optional Mutable For voice OTP notifications only.
    A closing tag which is commonly used by custom providers for defining a pause between each number in the OTP number string.
    Possible value: </Say> <Pause length="1"/>
    requests.beforeTag String Optional Mutable For voice OTP notifications only.
    An opening tag which is commonly used by custom providers for defining a pause between each number in the OTP number string.
    Possible value: <Say>
    requests.body String Optional Mutable The notification's request body. This property is required when requests.method is set to POST. The body should include the ${to} and ${message} mandatory variables. The ${from} variable is required if the numbers attribute is set, and any object in the number array is selected. For example:
    messageType=ARN&message=${message}&phoneNumber=${to}&sender=${from}
    In addition, you can use the following optional variables:
    • ${voice} - the type of voice configured for notifications
    • ${locale} - locale
    • ${otp} - OTP
    • ${user.user.name} - user's username
    • ${user.name.given} - user's given name
    • ${user.name.family} - user's family name
    You can also use dynamic variables in the body. For more information, refer to Dynamic variables.
    requests.deliveryMethod String Required Mutable The notification's delivery method. Possible value:
    • SMS
    • VOICE
    requests.headers String[] Optional Mutable The notification's request header, matching the format of the request body. When the request.method value is POST, it can be one of:
    • Form
      (content-type=application/x-www-form-urlencoded)
    • JSON
      (content-type=application/json)
    Otherwise, custom header values are also allowed.
    requests.method String Required Mutable The type of HTTP request method. Possible values:
    • GET
    • POST
    requests.phoneNumberFormat String Required Mutable The phone number format. Possible values:
    • FULL (default)
      The phone number format with a leading + sign, in the E.164 standard format.
      For example: +14155552671
    • NUMBER_ONLY
      The phone number format without a leading + sign, in the E.164 standard format.
      For example: 14155552671
    requests.url String Required Mutable The provider's remote gateway or customer gateway URL.
    • For requests using the POST method, use the provider's remote gateway URL.
    • For requests using the GET method, use the provider's remote gateway URL, including the ${to} and ${message} mandatory variables. The ${from} variable is required if the numbers attribute is set, and any object in the number array is selected. For example:
      https://api.transmitsms.com/send-sms.json?to=${to}&from=${from}&message=${message}"

    Custom provider phone number properties

    Property Type Required? Mutable? Description
    available Boolean Required Mutable Specifies whether the number is currently available in the provider account.
    capabilities String[] Required Mutable A collection of the phone delivery service capabilities. Possible values: VOICE, SMS. Refer to the Phone delivery capabilities properties data model.
    createdAt Date N/A Read-only The time the resource was created.
    number String Required Mutable The phone number, toll-free number or short code.
    selected Boolean Required Mutable Specifies whether the number is selected by the admin for sending messages.
    supportedCountries String[] Required Mutable Specifies the number's supported countries for notification recipients, depending on the phone number type:
    • SHORT_CODE: A collection containing a single 2-character ISO country code, for example, US, GB, CA.
      If the custom provider is of type=CUSTOM_PROVIDER, supportedCountries must not be empty or null.
      For other custom provider types, if supportedCountries is null (empty is not supported), the specified short code number can only be used to dispatch notifications to United States recipient numbers.
    • TOLL_FREE: A collection of valid 2-character country ISO codes, for example, US, GB, CA.
      If the custom provider is of type=CUSTOM_PROVIDER, supportedCountries must not be empty or null.
      For other custom provider types, if supportedCountries is null (empty is not supported), the specified toll-free number can only be used to dispatch notifications to United States recipient numbers.
    • PHONE_NUMBER: supportedCountries can not be specified.
    If an SMS template has an alphanumeric sender ID and also has short code, the sender ID will be used for destination countries that support both alphanumeric senders and short codes. For Unites States and Canada that don't support alphanumeric sender IDs, a short code will be used if both an alphanumeric sender and a short code are specified.
    type String Required Mutable The type of phone number. Possible values: SHORT_CODE, TOLL_FREE, PHONE_NUMBER

    Phone delivery capabilities properties
    Property Type Required? Mutable? Description
    capability String Required Mutable The type of phone delivery service capability. Possible values: VOICE, SMS.

    Phone delivery events generated

    Refer to Audit Reporting Events for the events generated.

    Phone delivery settings response codes
    Code Message
    200 Successful operation.
    201 Successfully created.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Configure your custom phone delivery vendor account (Twilio or Syniverse)

    1. Create a custom Twilio or Syniverse phone delivery settings resource using the POST {{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings operation. Twilio:
    {
      "sid": "someSid",
      "authToken": "someAuthToken",
      "provider": "CUSTOM_TWILIO"
    }
    

    For Syniverse, remove the sid property in the above example, and set "provider": "CUSTOM_SYNIVERSE".

    1. Use the PUT {{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings/{{phoneDeliverySettingID}} to select the numbers you would like to use for sending messages, by marking them as selected. The Twilio example is as follows:
    {
      "id": "someTwilioPhoneDeliverySettingsId",
      "sid": "someSid",
      "provider": "CUSTOM_TWILIO",
      "numbers": [
        {
          "type": "SHORT_CODE",
          "capabilities": [
            "SMS"
          ],
          "selected": true,
          "available": true,
          "number": "894546"
        },
        {
          "type": "TOLL_FREE",
          "capabilities": [
            "SMS"
          ],
          "selected": false,
          "available": true,
          "number": "+18544440098"
        },
        {
          "type": "PHONE_NUMBER",
          "capabilities": [
            "SMS",
            "VOICE"
          ],
          "selected": true,
          "available": true,
          "number": "+172544440091"
        }
      ]
    }
    

    For Syniverse, remove the sid property in the above example, and set "provider": "CUSTOM_SYNIVERSE".

    The sequence of SMS/Voice providers in the notification settings resource's smsProvidersFallbackChain comprises the notification fallback sequence, in the event of a primary or subsequent provider failing to send a notification. Refer to Notifications Settings for details on configuring an SMS/Voice provider fallback chain.

    Configure your custom phone delivery vendor account (excluding Twilio and Syniverse)

    Create a custom phone delivery settings resource using the POST {{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings operation. Create phone delivery settings:

    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <insert access token>' \
    --data-raw '{
      "name": "Custom Provider Name",
      "provider":"CUSTOM_PROVIDER",
      "authentication":{
          "method":"BASIC",
          "username":"<username>",
          "password":"<password>"
        },
      "requests":[{
          "deliveryMethod":"SMS",
          "url":"<Custom provider API URL>",
          "method":"POST",
          "body":"messageType=ARN&message=${message}&phoneNumber=${to}&sender=${from}"
        }],
        "numbers":[{"type":"PHONE_NUMBER","number":"+1 222 333","capabilities":["SMS"]}]
    }'
    

    After the admin has updated the provider configuration, PingOne will send the following POST request to your gateway every time a user signs up, logs in, adds a new device, or issues another SMS or voice notification:

    curl --request POST '<Custom provider API URL>' \
    --header 'content-type: application/json' \
    --header 'Authorization: Basic QUN...YQ==' \
    --data-raw '{ 
       "message": "<notification message>",
       "to": "<user phone number>",
       "from": "<sender phone number>"
     }'
    
    

    Create Phone Delivery Settings (custom)


    Create Phone Delivery Settings (custom, OAUTH2)


    Create Phone Delivery Settings (Twilio Verify)


    Create Phone Delivery Settings (custom, custom header)


    Create Phone Delivery Settings (Twilio)


    Create Phone Delivery Settings (Syniverse)


    Read One Phone Delivery Settings (include Verify templates)


    Read All Phone Delivery Settings


    Read One Phone Delivery Settings


    Update Phone Delivery Settings


    Update Phone Delivery Settings (Twilio)


    Delete Phone Delivery Settings

    Trusted Email Domains

    PingOne supports the ability to configure up to 50 trusted email domains for each environment. A trusted email domain with its associated email addresses enable PingOne to send emails on your organization's behalf. To implement a trusted email domain, you'll need to add DNS records and setup DKIM and SPF.

    To create and manage trusted email addresses associated with your trusted email domain, refer to Trusted email addresses.

    Trusted email domain properties

    Property Type Required? Mutable? Description
    id String Required Immutable The auto-generated ID of the email domain.
    domainName String Required Mutable A string that specifies the resource name, which must be provided and must be unique within an environment (for example, auth.shopco.com). Wildcards are NOT supported.
    environment.id String Required Immutable The environment resource's unique identifier associated with the resource.

    Trusted email domain ownership properties

    Property Type Required? Mutable? Description
    environmentDnsRecord Object N/A Read-only environmentDnsRecord contains a key-value pair for a text record that reflects the association of the domain with the specific PingOne environment. If you add this record to your DNS, any sender email address belonging to the domain is set to active status as soon as you create it, with no need for a verification email. In addition to key and value, the object contains a status field. In the initial call to check ownership status, status is returned with the value VERIFICATION_REQUIRED. If you add the record to your DNS, the next time you use the ownership endpoint to check ownership status, the value returned for status will be ACTIVE.
    regions Object[] Required Immutable The regions collection specifies the properties for the 4 AWS SES regions that are used for sending email for the environment. The regions are determined by the geography where this environment was provisioned (North America, Canada, Europe & Asia-Pacific). Each item in the regions collection is an object with these properties:
    • name: The name of the region.
    • status: The status of the email domain ownership. Possible values:
      • ACTIVE
      • VERIFICATION_REQUIRED
    • key: Record name.
    • value: Record value.
    type String Required Mutable The type of DNS record, with the value "TXT".

    Trusted email domain DKIM properties

    Property Type Required? Mutable? Description
    type String Required Mutable The type of DNS record, with the value "CNAME".
    regions Object[] Required Immutable The regions collection specifies the properties for the 4 AWS SES regions that are used for sending email for the environment. The regions are determined by the geography where this environment was provisioned (North America, Canada, Europe & Asia-Pacific). Each item in the regions collection is an object with these properties:
    • name: The name of the region.
    • status: The status of the email domain ownership. Possible values:
      • ACTIVE
      • VERIFICATION_REQUIRED
    • tokens: A collection of key and value pairs. Each item in the tokens collection is an object with these properties:
      • key: Record name.
      • value: Record value.

    Trusted email domain SPF properties

    Property Type Required? Mutable? Description
    type String Required Mutable The type of DNS record, with the value "TXT".
    status String Required Mutable The status of the email domain ownership. Possible values:
    • ACTIVE
    • VERIFICATION_REQUIRED
    key String Required Mutable Record name.
    value String Required Mutable Record value.

    Trusted email domains events generated

    Refer to Audit Reporting Events for the events generated.

    Trusted email domains response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Trusted Email Domain


    Read All Trusted Email Domains


    Read One Trusted Email Domain


    Read Trusted Email Domain Ownership Status


    Read Trusted Email Domain DKIM Status


    Read Trusted Email Domain SPF Status


    Delete Trusted Email Domain

    Trusted Email Addresses

    PingOne supports the ability to configure up to 10 trusted email address for an existing trusted email domain. Refer to Trusted email domains.

    Trusted email addresses properties

    Property Type Required? Mutable? Description
    id String Required Immutable The auto generated ID of the trusted email address.
    environment.id String Required Immutable The environment resource's unique identifier associated with the resource.
    emailDomain.id String Required Immutable The trusted email domain resource's unique identifier associated with the resource.
    emailAddress String Required Mutable The trusted email address, for example john.smith@shopco.com.
    status String Required Mutable The status of the trusted email address. Possible values:
    • ACTIVE
    • VERIFICATION_REQUIRED

    Trusted email address activation request properties

    Property Type Required? Mutable? Description
    verificationCode String Required Immutable A string that specifies a one-time passcode sent to the trusted email address.

    Trusted email addresses events generated

    Refer to Audit Reporting Events for the events generated.

    Trusted email addresses response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Trusted Email Address


    Read All Trusted Email Addresses


    Read One Trusted Email Address


    Activate Trusted Email Address


    Resend Verification Code To Email


    Delete Trusted Email Address

    Send Notification

    You can use the notifications endpoint to send a test notification to a mobile application by including the query parameter sync=true.

    {{apiPath}}/environments/{{envID}}/notifications?sync=true

    Send Notifications data model

    Property Type? Required? Mutable? Description
    application.id Sting Required Immutable The ID of the mobile application associated with the push message.
    body String Required Immutable The text for the body of the push message.
    createdAt Date N/A Read-only The time the resource was created.
    data.type String Required Immutable Must be set to DRY for the test to work correctly.
    deliveryMethod String Required Immutable The messaging service to be used. Should be one of the following values: GOOGLE, HUAWEI, IOS.
    environment.id String N/A Read-only The ID of the relevant PingOne environment.
    id String N/A Read-only The ID of the resource created.
    policy.id String N/A Read-only The ID of the notification policy.
    pushToken String Required Immutable The push token for the relevant application on the device.
    status String N/A Read-only The result of the test push. If the push succeeded, value will be SENT. If there was a problem, a standard error response will be returned, containing details of the cause.
    title String Required Immutable The title for the push message.
    updatedAt Date N/A Read-only The time the resource was last updated.
    vendor String N/A Read-only The type of push credential used. Will be APNS (for Apple), FCM_HTTP_V1 (for Google), HMS (for Huawei), or FCM (used previously for Google, no longer supported).

    Test Push Notifications

    Instant Messaging Delivery Settings

    Use the /instantMessagingDeliverySettings/whatsApp endpoint to configure the sending of PingOne notifications via WhatsApp.

    WhatsApp delivery settings data model

    Property Type Required? Mutable? Description
    appId String Required Mutable The ID of the WhatsApp app you are using for sending the notifications.
    appSecret String Required Mutable The secret for the WhatsApp app you are using for sending the notifications.
    createdAt Date N/A Read-only Date and time that the delivery settings were created.
    environment.id String N/A Read-only The ID of the PingOne environment.
    id String N/A Read-only The ID assigned to the delivery settings.
    numbers[] Array Optional Mutable The numbers array is included in the response when creating WhatsApp settings. It contains information about the various phone numbers available for use with the app ID that was specified in the creation request. If there is more than one number available for the app, a second PUT request can be run to specify the number to use for sending notifications. To specify the number to use, include the numbers array in your request, set numbers[].selected to true, and specify the number ID with numbers[].numberId or the number itself with numbers[].number.
    numbers[].available Boolean N/A Read-only Specifies whether the number is currently available in the account.
    numbers[].capabilities Array N/A Read-only For WhatsApmp settings, will always consist of a single element, WHATSAPP.
    numbers[].createdAt Date N/A Read-only The time the resource was created.
    numbers[].number String Required Mutable The number for sending notifications.
    numbers[].numberId String Required Mutable The ID of the number for sending notifications.
    numbers[].qualityRating String N/A Read-only The current WhatsApp quality rating for the number.
    numbers[].selected Boolean Required Mutable Set to true when specifying a specific number to use for sending notifications.
    numbers[].type String N/A Read-only For WhatsApp settings, the value returned is WHATSAPP.
    numbers[].verifiedName String N/A Read-only The verified name for the number.
    provider String Required Mutable For configuring WhatsApp settings, set the value to CUSTOM_WHATSAPP.
    userAccessToken String Required Mutable The access token for the WhatsApp business account.
    whatsAppAccountBusinessId String Required Mutable The ID of the WhatsApp business account.
    status String N/A Read-only The status of the creation of the delivery settings. In the response to the create request, the value is Pending. Status changes to Created after the configuration has been completed.
    type String N/A Read-only For WhatsApp settings, the value returned is WHATSAPP.
    updatedAt Date N/A Read-only Date and time that the delivery settings were last updated.
    whatsAppTemplate Object N/A Read-only Included in the response if you included expand=whatsAppTemplates as a query parameter when getting the WhatsApp delivery settings. Refer to the Read WhatsApp Delivery Settings (including templates) example.
    whatsAppTemplate.category String N/A Read-only The category of the template. Currently will always be AUTHENTICATION.
    whatsAppTemplate.id String N/A Read-only The WhatsApp-provided ID of the template.
    whatsAppTemplate.language String N/A Read-only The language of the template.
    whatsAppTemplate.name String N/A Read-only The name of the template.

    Create WhatsApp Delivery Settings


    Create WhatsApp Delivery Settings (specify number)


    Read WhatsApp Delivery Settings


    Read WhatsApp Delivery Settings (including templates)

    Organizations

    PingOne uses an organization-based model to define tenant accounts and their related entities. The organization is the top-level identifier. It defines your entire enterprise within the PingOne platform. The organizations endpoints provide functions to read organizations resources.

    Learn more about organizations in Introduction to PingOne, in the PingOne Admin Guide.

    Organzations data model

    Property Type Required? Mutable? Description
    createdAt Date N/A Read-only The time the resource was created.
    description String Optional Mutable The description of the organization.
    id String Required Immutable The resource's unique identifier.
    name String Required Mutable The organization name, which must be provided and must be unique among all organizations in PingOne.
    billingConnections.id String Required Immutable The list of the BillingConnection resource IDs for the organization.
    type String Required Mutable The organization type. If the organization has any paid licenses, the type property value is set to PAID. Otherwise, the property value is set to TRIAL.
    updatedAt Date N/A Read-only The time the resource was last updated.

    Organizations events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Read All Organizations


    Read One Organization

    Populations

    In PingOne, populations are similar to an organizational unit (OU) and are used to simplify user and policy management within a given environment. For example, you can create a population for similar types of users, such as those in a particular region or job function, and assign those users a unique password policy.

    The /environments/{{envID}}/populations endpoint provides operations to create, read, update, and delete population resources within a specified environment.

    Before you can create users, you must have at least one existing population. When you create a user, you can assign them to a specified population. If you do not specify a population, PingOne adds the new user to the default population. You can configure any population to be the default population, either at the time of creation or at a later time.

    Individual users cannot belong to more than one population within a PingOne environment. However, you can move users to a different population within the existing environment.

    Learn more in Populations, in the PingOne Admin Guide.

    Populations data model

    Property Type Required? Mutable? Description
    alternatveIdentifiers String[] Optional Mutable Alternative identifiers that can be used to search for populations besides name.
    createdAt Date N/A Read-only The time the resource was created.
    default String Required Mutable The population to use as the default population for the environment. Only one population per environment can be the default. New users are assigned to the default population if it exists, and the Population ID is not provided in the Create User request.
    description String Optional Mutable The description of the population.
    environment.id String Required Immutable The environment resource's unique identifier associated with the population.
    id String Required/Optional Immutable The resource's unique identifier. This is optional if you're setting PingOne as the default identity provider using PUT Update Population Default IdP.
    name String Required Mutable The population name, which must be provided and must be unique within an environment.
    preferredLanguage String Optional Mutable The language locale for the population. If absent, the environment default is used.
    updatedAt Date N/A Read-only The time the resource was last updated.
    userCount Integer N/A Read-only The number of users that belong to the population.
    passwordPolicy Object Optional Mutable The object reference to the password policy resource.
    passwordPolicy.id String Optional Immutable The ID of the password policy that is used for this population. If absent, the environment's default is used.
    theme Object Optional Mutable The object reference to the theme resource.
    theme.id String Optional Immutable The ID of the theme to use for the population. If absent, the environment's default is used.

    Populations events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Population


    Read All Populations


    Read One Population


    Read One Population Default IdP


    Update Population


    Update Population Default IdP


    Delete Population

    Rate Limiting

    We use rate limiting for all PingOne multi-tenant products. This ensures PingOne services' availability to all tenants is not degraded due to attacks, or to any one tenant's excessive volume of requests or messages. Rate limits are defined per License, and shared by all environments assigned to that license. As opposed to PingOne usage entitlements that limit active user transactions per year, rate limiting affects the number of API requests you're allowed to make per second. The rate limits can also simplify your load testing by reducing the necessary scope. Refer to Load Testing for more information. Refer also to PingOne Platform Limits for limits applied to services and their resources.

    We've defined base rate limits that are intended to be sufficient for most tenants’ usage requirements. These base rate limits apply to all tenants. Refer to Base rate limits for details. However, through the Maximum Throughput Assurance program, you're able to purchase higher rates if needed.

    You can be alerted when traffic levels approach or exceed the limits of the license by:

    • Subscribing to rate limit alerts in the admin console. Refer to Alerts for more information.
    • Viewing events generated by the Audit service when thresholds are reached or exceeded. Refer to Audit for more information.
    • Viewing the API Usage Dashboard in the admin console to see peak usage history and trends. Refer to API Usage Dashboard for more information.

    Requests that exceed the rate limits will be rejected with the 429 error, REQUEST_LIMITED. When this error occurs, the following header is returned in the response:

    `Retry-After` 
    The delay in seconds indicating how long to wait before retrying the request. 
    

    Avoiding rate limiting issues

    Some options to consider if you're hitting rate limits:

    • Limit concurrent requests

      Check whether a client app is spawning an excessive number of concurrent requests or messages. This can cause the HTTP API requests to go over quota. To avoid this, set a limit on the number of threads used by the client app when these contribute to the total concurrent requests or messages, then adjust this limit for optimal throughput within the rate limit bounds.

    • Use message queues

      Message queues can be useful to control the rate of requests. Multiple operations can push messages to the queue, and you can implement throttlers to remain within the rate limits. If you hit a rate limit, you can adjust throttling, and resubmit the request.

    • Client-side throttling

      Implement client-side throttling to restrict the volume of requests or messages sent by the client app.

    IP allow listing data model

    Property Type Required? Mutable? Description
    id String N/A Read-only The UUID of the rate limit configuration.
    createdAt String N/A Read-only The date and time the rate limit configuration was created.
    updatedAt String N/A Read-only The date and time the rate limit configuration was updated.
    type String Required Immutable The type of rate limit configuration. Currently, the only type supported is "WHITELIST", indicating that the IP address in value is to be excluded from rate limiting.
    value String Required Immutable The IP address (v4 or v6), or a CIDR range, for the IP address or addresses to be excluded.

    Base rate limits

    The base rate limits apply to all tenants, and are intended to cover the majority of usage requirements. Refer to the Maximum Throughput Assurance program to increase the base limits if needed.

    A rate limit group comprises a set of related API endpoints, and defines the base rate limits for all requests made to these endpoints per tenant. A product can have multiple rate limit groups, but an endpoint belongs only to one rate limit group.

    The occurrences of an asterisk (*) in the Endpoint Patterns information shown in the following table indicate all patterns for an endpoint, the associated methods, and the associated header Content-Type.

    PingOne Product/Service Rate Limit Group
    name (code)
    Maximum API Requests
    (Base Rates)
    Endpoint Patterns
    All Products Analytics API Rate
    (rlgAnalyticsRpm)
    600/minute /environments/*/activeIdentityCounts; method: *, type: *
    /environments/*/applicationSignons; method: *, type: *
    /environments/*/dataExplorations/*/entries; method: *, type: *
    /environments/*/dataExplorations/*; method: *, type: *
    /environments/*/dataExplorations; method: *, type: *
    /environments/*/decisionEndpoints/*/recentDecisions/*; method: *, type: *
    /environments/*/decisionEndpoints/*/recentDecisions; method: *, type: *
    /environments/*/metrics/activeIdentityCounts; method: *, type: *
    /environments/*/totalIdentities; method: *, type: *
    /environments/*/userActivities; method: *, type: *
    /organizations/*/licenses/*/metrics/activeIdentityCounts; method: *, type: *
    All Products Audit API Rate
    (rlgAuditRps)
    10/second /environments/*/activities/*; method: *, type: *
    /environments/*/activities; method: *, type: *
    All Products Configuration
    (rlgConfigRpm)
    600/minute /*/saml20/metadata/*; method: *, type: *
    /*/saml20/sp/metadata/*; method: *, type: *
    /environments/*/adminConfig; method: *, type: *
    /environments/*/alertChannels/*; method: *, type: *
    /environments/*/alertChannels; method: *, type: *
    /environments/*/apiServers/*/deployment; method: *, type: *
    /environments/*/apiServers/*/operations/*; method: *, type: *
    /environments/*/apiServers/*/operations; method: *, type: *
    /environments/*/apiServers/*; method: *, type: *
    /environments/*/apiServers; method: *, type: *
    /environments/*/applicationResources/*/permissions/*; method: *, type: *
    /environments/*/applicationResources/*/permissions; method: *, type: *
    /environments/*/applicationResources/*; method: *, type: *
    /environments/*/applicationResources; method: *, type: *
    /environments/*/applicationRoles/*/assignments; method: *, type: *
    /environments/*/applicationRoles/*/permissions/*; method: *, type: *
    /environments/*/applicationRoles/*/permissions; method: *, type: *
    /environments/*/applicationRoles/*/users/*; method: *, type: *
    /environments/*/applicationRoles/*/users; method: *, type: *
    /environments/*/applicationRoles/*; method: *, type: *
    /environments/*/applicationRoles; method: *, type: *
    /environments/*/applications/*/attributes/*; method: *, type: *
    /environments/*/applications/*/attributes; method: *, type: *
    /environments/*/applications/*/flowPolicyAssignments/*; method: *, type: *
    /environments/*/applications/*/flowPolicyAssignments; method: *, type: *
    /environments/*/applications/*/grants/*; method: *, type: *
    /environments/*/applications/*/grants; method: *, type: *
    /environments/*/applications/*/pushCredentials/*; method: *, type: *
    /environments/*/applications/*/pushCredentials; method: *, type: *
    /environments/*/applications/*/roleAssignments/*; method: *, type: *
    /environments/*/applications/*/roleAssignments; method: *, type: *
    /environments/*/applications/*/secret; method: *, type: *
    /environments/*/applications/*/signOnPolicyAssignments/*; method: *, type: *
    /environments/*/applications/*/signOnPolicyAssignments; method: *, type: *
    /environments/*/applications/*; method: *, type: *
    /environments/*/applications; method: *, type: *
    /environments/*/authorizationVersions/*; method: *, type: *
    /environments/*/authorizationVersions; method: *, type: *
    /environments/*/billOfMaterials; method: *, type: *
    /environments/*/brandingSettings; method: *, type: *
    /environments/*/capabilities; method: *, type: *
    /environments/*/certificates/*/applications; method: *, type: *
    /environments/*/certificates/*; method: *, type: *
    /environments/*/certificates; method: *, type: *
    /environments/*/connectorInstances/*; method: *, type: *
    /environments/*/connectorInstances; method: *, type: *
    /environments/*/connectors/*/details; method: *, type: *
    /environments/*/connectors/*; method: *, type: *
    /environments/*/connectors; method: *, type: *
    /environments/*/customDomains/*; method: *, type: *
    /environments/*/customDomains; method: *, type: *
    /environments/*/davinciApplications/*/flowPolicies/*/events; method: *, type: *
    /environments/*/davinciApplications/*/flowPolicies/*; method: *, type: *
    /environments/*/davinciApplications/*/flowPolicies; method: *, type: *
    /environments/*/davinciApplications/*/key; method: *, type: *
    /environments/*/davinciApplications/*/secret; method: *, type: *
    /environments/*/davinciApplications/*; method: *, type: *
    /environments/*/davinciApplications; method: *, type: *
    /environments/*/decisionEndpoints; method: *, type: *
    /environments/*/deviceAuthenticationPolicies/*; method: *, type: *
    /environments/*/deviceAuthenticationPolicies; method: *, type: *
    /environments/*/digitalWalletApplications/*; method: *, type: *
    /environments/*/digitalWalletApplications; method: *, type: *
    /environments/*/earlyAccessFeatures; method: *, type: *
    /environments/*/emailDomains/*/dkim; method: *, type: *
    /environments/*/emailDomains/*/ownership; method: *, type: *
    /environments/*/emailDomains/*/spf; method: *, type: *
    /environments/*/emailDomains/*/trustedEmails/*; method: *, type: *
    /environments/*/emailDomains/*/trustedEmails; method: *, type: *
    /environments/*/emailDomains/*; method: *, type: *
    /environments/*/emailDomains; method: *, type: *
    /environments/*/externalOAuthServers/*; method: *, type: *
    /environments/*/externalOAuthServers; method: *, type: *
    /environments/*/fido2Policies/*; method: *, type: *
    /environments/*/fido2Policies; method: *, type: *
    /environments/*/fidoDevicesMetadata/*; method: *, type: *
    /environments/*/fidoDevicesMetadata; method: *, type: *
    /environments/*/flowPolicies/*; method: *, type: *
    /environments/*/flowPolicies; method: *, type: *
    /environments/*/flows/*/enabled; method: *, type: *
    /environments/*/flows/*/versions/*/alias; method: *, type: *
    /environments/*/flows/*/versions/*/details; method: *, type: *
    /environments/*/flows/*/versions/*; method: *, type: *
    /environments/*/flows/*/versions; method: *, type: *
    /environments/*/flows/*; method: *, type: *
    /environments/*/flows; method: *, type: *
    /environments/*/forms/*; method: *, type: *
    /environments/*/forms; method: *, type: *
    /environments/*/gateways/*/credentials/*; method: *, type: *
    /environments/*/gateways/*/credentials; method: *, type: *
    /environments/*/gateways/*/instances/*; method: *, type: *
    /environments/*/gateways/*/instances; method: *, type: *
    /environments/*/gateways/*/roleAssignments/*; method: *, type: *
    /environments/*/gateways/*/roleAssignments; method: *, type: *
    /environments/*/gateways/*; method: *, type: *
    /environments/*/gateways; method: *, type: *
    /environments/*/groups/*/roleAssignments/*; method: *, type: *
    /environments/*/groups/*/roleAssignments; method: *, type: *
    /environments/*/groups/*/syncedRules/*; method: *, type: *
    /environments/*/groups/*/syncedRules; method: *, type: *
    /environments/*/identityProviders/*/attributes/*; method: *, type: *
    /environments/*/identityProviders/*/attributes; method: *, type: *
    /environments/*/identityProviders/*; method: *, type: *
    /environments/*/identityProviders; method: *, type: *
    /environments/*/integrations/*/versions/*/asset; method: *, type: *
    /environments/*/integrations/*/versions/*/attributes/*; method: *, type: *
    /environments/*/integrations/*/versions/*/attributes; method: *, type: *
    /environments/*/integrations/*/versions/*; method: *, type: *
    /environments/*/integrations/*/versions; method: *, type: *
    /environments/*/integrations/*; method: *, type: *
    /environments/*/integrations; method: *, type: *
    /environments/*/languages/*/status/*; method: *, type: *
    /environments/*/languages/*/status; method: *, type: *
    /environments/*/languages; method: *, type: *
    /environments/*/mfaSettings; method: *, type: *
    /environments/*/notificationsPolicies/*; method: *, type: *
    /environments/*/notificationsPolicies; method: *, type: *
    /environments/*/notificationsSettings/emailDeliverySettings; method: *, type: *
    /environments/*/notificationsSettings/instantMessagingDeliverySettings/*; method: *, type: *
    /environments/*/notificationsSettings/phoneDeliverySettings/*; method: *, type: *
    /environments/*/notificationsSettings/phoneDeliverySettings; method: *, type: *
    /environments/*/notificationsSettings; method: *, type: *
    /environments/*/oathJobs/*; method: *, type: *
    /environments/*/oathJobs; method: *, type: *
    /environments/*/oathTokens/*; method: *, type: *
    /environments/*/oathTokens; method: *, type: *
    /environments/*/presentationSessions/*/credentialData; method: *, type: *
    /environments/*/presentationSessions/*/sessionData; method: *, type: *
    /environments/*/presentationSessions/*; method: *, type: *
    /environments/*/presentationSessions; method: *, type: *
    /environments/*/propagation/mappings/*; method: *, type: *
    /environments/*/propagation/plans/*/rules; method: *, type: *
    /environments/*/propagation/plans/*; method: *, type: *
    /environments/*/propagation/plans; method: *, type: *
    /environments/*/propagation/revisions/*; method: *, type: *
    /environments/*/propagation/revisions; method: *, type: *
    /environments/*/propagation/rules/*/mappings; method: *, type: *
    /environments/*/propagation/rules/*/syncedGroups/*; method: *, type: *
    /environments/*/propagation/rules/*/syncedGroups; method: *, type: *
    /environments/*/propagation/rules/*; method: *, type: *
    /environments/*/propagation/rules; method: *, type: *
    /environments/*/propagation/storeMetadata/*; method: *, type: *
    /environments/*/propagation/stores/*; method: *, type: *
    /environments/*/propagation/stores/connection/status; method: *, type: *
    /environments/*/propagation/stores; method: *, type: *
    /environments/*/rateLimitIpConfigs/*; method: *, type: *
    /environments/*/rateLimitIpConfigs; method: *, type: *
    /environments/*/recaptchaV2Config; method: *, type: *
    /environments/*/resources/*/applicationPermissions; method: *, type: *
    /environments/*/resources/*/applicationResources/*; method: *, type: *
    /environments/*/resources/*/applicationResources; method: *, type: *
    /environments/*/resources/*/attributes/*; method: *, type: *
    /environments/*/resources/*/attributes; method: *, type: *
    /environments/*/resources/*/scopes/*; method: *, type: *
    /environments/*/resources/*/scopes; method: *, type: *
    /environments/*/resources/*/secret; method: *, type: *
    /environments/*/resources/*; method: *, type: *
    /environments/*/resources; method: *, type: *
    /environments/*/riskPolicySets/*; method: *, type: *
    /environments/*/riskPolicySets; method: *, type: *
    /environments/*/riskPredictors/*; method: *, type: *
    /environments/*/riskPredictors; method: *, type: *
    /environments/*/roles/*; method: *, type: *
    /environments/*/roles; method: *, type: *
    /environments/*/schemas/*/attributes/*; method: *, type: *
    /environments/*/schemas/*/attributes; method: *, type: *
    /environments/*/schemas/*; method: *, type: *
    /environments/*/schemas; method: *, type: *
    /environments/*/signOnPolicies/*/actions/*; method: *, type: *
    /environments/*/signOnPolicies/*/actions; method: *, type: *
    /environments/*/signOnPolicies/*; method: *, type: *
    /environments/*/signOnPolicies; method: *, type: *
    /environments/*/status; method: *, type: *
    /environments/*/subscriptions/*; method: *, type: *
    /environments/*/subscriptions; method: *, type: *
    /environments/*/templates/*/contents/*; method: *, type: *
    /environments/*/templates/*/contents; method: *, type: *
    /environments/*/templates/*; method: *, type: *
    /environments/*/templates; method: *, type: *
    /environments/*/themes; method: *, type: *
    /environments/*/type; method: *, type: *
    /environments/*/uiTemplates/*; method: *, type: *
    /environments/*/uiTemplates; method: *, type: *
    /environments/*/users/*/applicationRoles/*; method: *, type: *
    /environments/*/users/*/applicationRoles; method: *, type: *
    /environments/*/users/*/notifications/*; method: *, type: *
    /environments/*/users/*/notifications/quota; method: *, type: *
    /environments/*/users/*/oathTokens/*; method: *, type: *
    /environments/*/users/*/syncedRules/*; method: *, type: *
    /environments/*/users/*/syncedRules; method: *, type: *
    /environments/*/users/*/syncedStores/*; method: *, type: *
    /environments/*/users/*/syncedStores; method: *, type: *
    /environments/*/variables/*; method: *, type: *
    /environments/*/variables; method: *, type: *
    /environments/*; method: *, type: *
    /environments; method: *, type: *
    /organizations/*/capabilities; method: *, type: *
    /organizations/*/licenses/*/name; method: *, type: *
    /organizations/*/licenses/*; method: *, type: *
    /organizations/*/licenses; method: *, type: *
    /organizations/*; method: *, type: *
    /organizations; method: *, type: *
    /roles/*; method: *, type: *
    /roles; method: *, type: *
    Authorize Authorization API Rate
    (rlgAuthzRps)
    150/second /environments/*/decisionEndpoints/*; method: *, type: *
    Authorize Authorization Bulk API Rate
    (rlgAuthzBulkRps)
    50/second /environments/*/decisionEndpoints/*; method: POST, type: application/vnd.pingidentity.decisionengine.authorize.bulk+json
    Credentials Credentials Issuance and Check API Rate
    (rlgCredRpm)
    30/minute /environments/*/credentialIssuerProfile; method: *, type: *
    /environments/*/credentialTypes/*/issuanceRules/*/stagedChanges/*; method: *, type: *
    /environments/*/credentialTypes/*/issuanceRules/*/stagedChanges; method: *, type: *
    /environments/*/credentialTypes/*/issuanceRules/*/usageCounts; method: *, type: *
    /environments/*/credentialTypes/*/issuanceRules/*/usageDetails; method: *, type: *
    /environments/*/credentialTypes/*/issuanceRules/*; method: *, type: *
    /environments/*/credentialTypes/*/issuanceRules; method: *, type: *
    /environments/*/credentialTypes/*/versions/*; method: *, type: *
    /environments/*/credentialTypes/*/versions; method: *, type: *
    /environments/*/credentialTypes/*; method: *, type: *
    /environments/*/credentialTypes; method: *, type: *
    /environments/*/users/*/credentials/*/provisionedCredentials; method: *, type: *
    /environments/*/users/*/credentials/*; method: *, type: *
    /environments/*/users/*/credentials; method: *, type: *
    /environments/*/users/*/digitalWallets/*/provisionedCredentials; method: *, type: *
    /environments/*/users/*/digitalWallets/*; method: *, type: *
    /environments/*/users/*/digitalWallets; method: *, type: *
    DaVinci Flow Execution (post-start) Rate
    (rlgDvFlowExecRps)
    100/second /*/davinci/connections/*/capabilities/*; method: *, type: *
    DaVinci Flow Progression and Callbacks
    (rlgDvFlowCallbackRps)
    100/second Not explicitly mapped to endpoints
    DaVinci Flow Start (Invocation) Rate
    (rlgDvFlowStartRps)
    100/second /*/davinci/policy/*/start; method: *, type: *
    /v1/company/*/policy/*/start; method: *, type: *
    /v1/company/*/request/*/status; method: *, type: *
    /v1/company/*/sdktoken; method: *, type: *
    Directory Bulk Data Import
    (rlgDirBulkRps)
    10/second Not explicitly mapped to endpoints
    Directory Data Read Rate
    (rlgDirAccessRps)
    100/second /environments/*/groups/*; method: *, type: *
    /environments/*/groups; method: *, type: *
    /environments/*/passwordPolicies/*; method: *, type: *
    /environments/*/passwordPolicies; method: *, type: *
    /environments/*/populations/*/defaultIdentityProvider; method: *, type: *
    /environments/*/populations/*; method: *, type: *
    /environments/*/populations; method: *, type: *
    /environments/*/propagation/provisioningSyncs/*; method: *, type: *
    /environments/*/schemas/*/attributes/*; method: GET, type: *
    /environments/*/schemas/*/attributes; method: GET, type: *
    /environments/*/schemas/*; method: GET, type: *
    /environments/*/schemas; method: GET, type: *
    /environments/*/users/*/agreementConsents/*; method: *, type: *
    /environments/*/users/*/agreementConsents; method: *, type: *
    /environments/*/users/*/bypassMFA; method: *, type: *
    /environments/*/users/*/emailVerification; method: *, type: *
    /environments/*/users/*/enabled; method: *, type: *
    /environments/*/users/*/identityProvider; method: *, type: *
    /environments/*/users/*/linkedAccounts/*; method: *, type: *
    /environments/*/users/*/linkedAccounts; method: *, type: *
    /environments/*/users/*/memberOfGroups/*; method: *, type: *
    /environments/*/users/*/mfaEnabled; method: *, type: *
    /environments/*/users/*/oauthConsents/*; method: *, type: *
    /environments/*/users/*/oauthConsents; method: *, type: *
    /environments/*/users/*/password; method: *, type: *
    /environments/*/users/*/population; method: *, type: *
    /environments/*/users/*/roleAssignments/*; method: *, type: *
    /environments/*/users/*/roleAssignments; method: *, type: *
    /environments/*/users/*; method: *, type: *
    /environments/*/users; method: *, type: *
    /environments/*/v2/DirectMappedUsers/*; method: *, type: *
    /environments/*/v2/DirectMappedUsers/.search; method: *, type: *
    /environments/*/v2/DirectMappedUsers; method: *, type: *
    /environments/*/v2/ResourceTypes; method: *, type: *
    /environments/*/v2/Schemas; method: *, type: *
    /environments/*/v2/ServiceProviderConfig; method: *, type: *
    /environments/*/v2/Users/*; method: *, type: *
    /environments/*/v2/Users/.search; method: *, type: *
    /environments/*/v2/Users; method: *, type: *
    Directory Directory Fixed Rate
    (rlgDirFixedRps)
    50/second /environments/*/groups/*/memberOfGroups/*; method: *, type: *
    /environments/*/groups/*/memberOfGroups; method: *, type: *
    /environments/*/groups/*; method: DELETE, type: *
    /environments/*/groups/*; method: PUT, type: *
    /environments/*/populations/*/defaultIdentityProvider; method: GET, type: *
    /environments/*/populations/*/defaultIdentityProvider; method: PUT, type: *
    /environments/*/populations/*; method: DELETE, type: *
    /environments/*/populations/*; method: PUT, type: *
    /environments/*/populations; method: POST, type: *
    /environments/*/users/*/enabled; method: PUT, type: *
    /environments/*/users/*/memberOfGroups; method: *, type: *
    /environments/*/users/*/mfaEnabled; method: PUT, type: *
    /environments/*/users/*/population; method: PUT, type: *
    Directory Directory Write Rate
    (rlgDirWriteRps)
    50/second /environments/*/groups; method: POST, type: *
    /environments/*/users/*; method: DELETE, type: *
    /environments/*/users/*; method: PATCH, type: *
    /environments/*/users/*; method: POST, type: *
    /environments/*/users/*; method: PUT, type: *
    /environments/*/users; method: POST, type: *
    /environments/*/v2/DirectMappedUsers/*; method: DELETE, type: *
    /environments/*/v2/DirectMappedUsers/*; method: PATCH, type: *
    /environments/*/v2/DirectMappedUsers/*; method: PUT, type: *
    /environments/*/v2/DirectMappedUsers; method: POST, type: *
    /environments/*/v2/Users/*; method: DELETE, type: *
    /environments/*/v2/Users/*; method: PATCH, type: *
    /environments/*/v2/Users/*; method: PUT, type: *
    /environments/*/v2/Users; method: POST, type: *
    MFA MFA API Rate
    (rlgMfaRps)
    100/second /*/authenticationCodes; method: *, type: *
    /*/deviceAuthentications; method: *, type: *
    /environments/*/applications/*/pushCredentials/*; method: GET, type: *
    /environments/*/applications/*/pushCredentials; method: GET, type: *
    /environments/*/deviceAuthenticationPolicies; method: GET, type: *
    /environments/*/mfaSettings; method: GET, type: *
    /environments/*/notifications; method: *, type: *
    /environments/*/signOnPolicies/*/actions; method: GET, type: *
    /environments/*/signOnPolicies; method: GET, type: *
    /environments/*/users/*/devices/*/logs; method: *, type: *
    /environments/*/users/*/devices/*/nickname; method: *, type: *
    /environments/*/users/*/devices/*; method: *, type: *
    /environments/*/users/*/devices; method: *, type: *
    /environments/*/users/*/pairingKeys; method: *, type: *
    MFA MFA Fixed Rate
    (rlgMfaFixedRps)
    100/second Not explicitly mapped to endpoints
    MFA MFA Polling Rate
    (rlgMfaPollingRps)
    500/second /*/authenticationCodes/*; method: *, type: *
    /*/deviceAuthentications/*; method: *, type: *
    /environments/*/users/*/pairingKeys/*; method: *, type: *
    Privilege Privilege API Rate
    (rlgPrivilegeRps)
    20/second Not explicitly mapped to endpoints
    Protect Risk API Rate
    (rlgRiskEvalsRps)
    100/second /environments/*/riskEvaluations/*/event; method: *, type: *
    /environments/*/riskEvaluations/*; method: *, type: *
    /environments/*/riskEvaluations; method: *, type: *
    /environments/*/riskFeedback; method: *, type: *
    SSO SSO API Rate
    (rlgAuthnRps)
    300/second /*/.well-known/oauth-authorization-server/as; method: *, type: *
    /*/as/.well-known/openid-configuration; method: *, type: *
    /*/as/device_authorization; method: *, type: *
    /*/as/idpSignoff; method: *, type: *
    /*/as/introspect; method: *, type: *
    /*/as/jwks; method: *, type: *
    /*/as/par; method: *, type: *
    /*/as/resume; method: *, type: *
    /*/as/revoke; method: *, type: *
    /*/as/signoff; method: *, type: *
    /*/as/token; method: *, type: *
    /*/as/userinfo; method: *, type: *
    /*/device/*; method: *, type: *
    /*/device; method: *, type: *
    /*/flows/*/kerberos; method: *, type: *
    /*/flows/*; method: *, type: *
    /*/rp/authenticate; method: *, type: *
    /*/rp/callback/*; method: *, type: *
    /*/saml20/idp/slo; method: *, type: *
    /*/saml20/idp/sso; method: *, type: *
    /*/saml20/idp/startsso; method: *, type: *
    /*/saml20/resume; method: *, type: *
    /*/saml20/sp/acs; method: *, type: *
    /*/saml20/sp/sso; method: *, type: *
    /.well-known/oauth-authorization-server/*/as; method: *, type: *
    /environments/*/agreements/*/languages/*/revisions/*; method: *, type: *
    /environments/*/agreements/*/languages/*/revisions; method: *, type: *
    /environments/*/agreements/*/languages/*; method: *, type: *
    /environments/*/agreements/*/languages; method: *, type: *
    /environments/*/agreements/*; method: *, type: *
    /environments/*/agreements; method: *, type: *
    /environments/*/applications/*/attributes/*; method: GET, type: *
    /environments/*/applications/*/attributes; method: GET, type: *
    /environments/*/applications/*/flowPolicyAssignments/*; method: GET, type: *
    /environments/*/applications/*/flowPolicyAssignments; method: GET, type: *
    /environments/*/applications/*/grants/*; method: GET, type: *
    /environments/*/applications/*/grants; method: GET, type: *
    /environments/*/applications/*/roleAssignments/*; method: GET, type: *
    /environments/*/applications/*/roleAssignments; method: GET, type: *
    /environments/*/applications/*/secret; method: GET, type: *
    /environments/*/applications/*/signOnPolicyAssignments/*; method: GET, type: *
    /environments/*/applications/*/signOnPolicyAssignments; method: GET, type: *
    /environments/*/applications/*; method: GET, type: *
    /environments/*/applications; method: GET, type: *
    /environments/*/images/*; method: *, type: *
    /environments/*/images; method: *, type: *
    /environments/*/keyRotationPolicies/*/jwks; method: *, type: *
    /environments/*/keyRotationPolicies/*; method: *, type: *
    /environments/*/keyRotationPolicies; method: *, type: *
    /environments/*/keys/*/applications; method: *, type: *
    /environments/*/keys/*/csr; method: *, type: *
    /environments/*/keys/*; method: *, type: *
    /environments/*/keys; method: *, type: *
    /environments/*/languages/*; method: *, type: *
    /environments/*/sessions/*; method: *, type: *
    /environments/*/sessions/me; method: *, type: *
    /environments/*/sessions; method: *, type: *
    /environments/*/themes/*/default; method: *, type: *
    /environments/*/themes/*; method: *, type: *
    /environments/*/translations/*; method: *, type: *
    /environments/*/users/*/sessions/*; method: *, type: *
    /environments/*/users/*/sessions; method: *, type: *
    SSO SSO Start Rate
    (rlgAuthnStartRps)
    50/second /*/as/authorize; method: *, type: *
    SSO Token Check Rate
    (rlgTokenCheckRps)
    100/second Not explicitly mapped to endpoints
    Verify Verification API Rate
    (rlgVerifyRpm)
    350/minute /environments/*/users/*/dataBasedIdentityVerification; method: *, type: *
    /environments/*/users/*/identityRecordMatching; method: *, type: *
    /environments/*/users/*/referenceData/*; method: *, type: *
    /environments/*/users/*/referenceData; method: *, type: *
    /environments/*/users/*/resetVerification; method: *, type: *
    /environments/*/users/*/verifyTransactions/*/appEvents/*; method: *, type: *
    /environments/*/users/*/verifyTransactions/*/appEvents; method: *, type: *
    /environments/*/users/*/verifyTransactions/*/documents/*; method: *, type: *
    /environments/*/users/*/verifyTransactions/*/documents; method: *, type: *
    /environments/*/users/*/verifyTransactions/*/metaData/*; method: *, type: *
    /environments/*/users/*/verifyTransactions/*/metaData; method: *, type: *
    /environments/*/users/*/verifyTransactions/*/verifiedData/*; method: *, type: *
    /environments/*/users/*/verifyTransactions/*/verifiedData; method: *, type: *
    /environments/*/users/*/verifyTransactions/*; method: *, type: *
    /environments/*/users/*/verifyTransactions; method: *, type: *
    /environments/*/verifyPolicies/*; method: *, type: *
    /environments/*/verifyPolicies; method: *, type: *
    /environments/*/voicePhrases/*/contents/*; method: *, type: *
    /environments/*/voicePhrases/*/contents; method: *, type: *
    /environments/*/voicePhrases/*; method: *, type: *
    /environments/*/voicePhrases; method: *, type: *

    Create Rate Limit Configuration


    Read All Rate Limit Configurations


    Read One Rate Limit Configuration


    Delete Rate Limit Configuration

    Resources

    A resource entity in PingOne can be one of the following types: OPENID_CONNECT, PING_ONE_API, or CUSTOM. Only the CUSTOM resource type can be created. The OPENID_CONNECT type specifies the built-in platform resource for OpenID Connect. The PING_ONE_API type specifies the built-in platform resource for PingOne. When you define an application in PingOne and specify its resource grant, you identify the protected endpoints that users can access when they sign on to that application.

    For custom resources, the Resources service models external resource servers that use PingOne to protect their APIs. The custom resource is the audience of access tokens generated by PingOne. For example, an application called Photo Archive uses a resource grant to the server, https://api.photoarchive.com, that provides APIs for users to interact with their photos. You can use the PingOne resources service to define the https://api.photoarchive.com as a custom resource and specify the scopes (permissions) that users get from authenticating and receiving an access token. In this scenario, when a user signs on, the PingOne authorization server returns an access token, giving the user permissions associated with the custom resource, such as permission:view-photos, permission:upload-photos, permission:edit-photos, or permission:delete-photos.

    You need the Environment Admin or the Client Application Developer roles to perform operations on resources.

    Resource Operations

    The /resources endpoint provides operations to create, read, update, and delete resource entities. The examples that follow show common actions to find and manage resources entities.

    You need the Environment Admin or the Client Application Developer roles to perform operations on resources entities.

    Resources data model

    Property Type Required? Mutable? Description
    accessTokenValiditySeconds Integer Required Mutable The number of seconds that the access token is valid. If a value is not specified, the default is 3600. The minimum value is 300 seconds (5 minutes); the maximum value is 2592000 seconds (30 days).
    applicationPermissionsSettings Object Optional Mutable An object that specifies whether to add application permissions to access tokens generated by PingOne.
    applicationPermissionsSettings.claimEnabled Boolean Optional Mutable A setting to enable application permission claims in the access token. If this property is omitted, the value is set to false.
    audience String Required Mutable A URL without a fragment or "@ObjectName" and must not contain "pingone" or "pingidentity" (for example, https://api.myresource.com). If a URL is not specified, the resource name is used. The value that you set here is returned in the audience claim in the token. For more information, refer to Token Introspection (Resource ID and Secret).
    createdAt Date N/A Read only The time the resource was created.
    description String Optional Mutable Description of the resource.
    environment.id String Required Immutable The environment resource's unique identifier associated with the resource.
    id String Required Immutable The resource's unique identifier.
    name String Required Immutable The resource name, which must be provided and must be unique within an environment.
    introspectEndpointAuthMethod String Required Mutable The authentication methods supported by the token endpoint. Options are NONE, CLIENT_SECRET_BASIC, CLIENT_SECRET_POST, CLIENT_SECRET_JWT, and PRIVATE_KEY_JWT. Applicable only to custom resources.
    type String Required Mutable The type of resource. Options are OPENID_CONNECT, PING_ONE_API, and CUSTOM. Only the CUSTOM resource type can be created. OPENID_CONNECT specifies the built-in platform resource for OpenID Connect. PING_ONE_API specifies the built-in platform resource for PingOne.
    updatedAt Date N/A Read only The time the resource was last updated.

    Resources core attribute data model

    Property Type Required? Mutable? Description
    sub String Required Mutable The core claim for the new resource. The default value is ${user.id}.

    Resources events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Resource


    Read All Resources


    Read One Resource


    Update Resource


    Delete Resource

    Resource Scopes

    Resources have scopes, and applications can request an access token that is associated with specific scopes when the token is granted. The endpoint enforces access through the encoded representation of the scopes in the access token. The endpoint decodes the token to determine the permissions allowed for the application.

    Scopes define the permissions for an application or a user. The scopes associated with the actor determine the resources that the actor can access. For example, an actor with a PingOne API resource access token that includes the p1:read:user scope has read access to view their own user resource data.

    Custom resource scopes

    You can define a custom resource, such as https://api.photos.com that has associated scopes, such as edit:photos, upload:photos, and delete:photos. The POST {{apiPath}}/environments/{{envID}}/resources/{{resourceID}}/scopes endpoint defines a new scope associated with the https://api.photos.com custom resource, which is identified by the {{resourceID}} variable in the request URL. The new custom scope grants actors access to otherwise resources on the https://api.photos.com custom resource server.

    PingOne resource scopes

    The PingOne API is one of two predefined resources in the PingOne platform. The PingOne API resource has several predefined self-management scopes associated with it that grant users access to PingOne resources. The self-management scopes specified in an authorization request, such as p1:update:user or p1:reset:userPassword identify the resources that end user can access to perform self-management actions. For a list of PingOne API self-management scopes, refer to PingOne self-management scopes.

    Resource scopes and access tokens

    Scopes from the PingOne API resource (https://api.pingone.com), cannot be included in an access token with scopes from another custom resource such as https://api.photos.com. However, you can include the platform's predefined OpenID Connect resource (openid) scopes in an access token along with scopes from PingOne. For more information about OpenID Connect scopes, refer to OpenID Connect (OIDC) scopes.

    With custom resource scopes, the default application configuration allows scopes from one custom resource, with or without the platform's predefined OpenID Connect resource (openid) scopes in an access token. However, if the appplication configuration sets the requestScopesForMultipleResourcesEnabled OIDC property to true, then the application accepts scopes from multiple custom resources. For example if Resource1 defines scopeR1-a and Resource2 defines scopeR2-a, then an authorize request for an app with requestScopesForMultipleResourcesEnabled enabled supports a scope parameter of:

    --data-urlencode 'scope=openid scopeR1-a scopeR2-a'.

    For use cases in which an application requests scopes from multiple custom resources, the following settings and attribute mappings must be consistent among custom resources for PingOne to complete the request:

    • The access token's time to live value must be the same across the requested custom resources. Otherwise, the request returns an error.

    • The mapping configuration of the sub attribute must be the same across the requested custom resources. Otherwise, the request returns an error.

    • Attributes defined in the requested custom resources can share the same attribute name (overlapping attributes), use unique attribute names (non-overlapping attributes), or contain a mixture of overlapping and non-overlapping attributes.

      • For overlapping attributes, mapping configurations must be the same. Otherwise, the request returns an error.

      • For non-overlapping attributes, mapping configurations can be the same or different.

      • The attributes in the resulting access tokens are a union of all the attributes defined in the requested custom resources.

    • Scope names must be unique across all custom resources that can be requested at the same time by admin-enabled applications.

    • If an environment includes PingOne Authorize, when defining a custom resource, if the admin chooses to include user permissions in access tokens, the admin must ensure that permission names are unique across all custom resources that can be requested at the same time by admin-enabled applications.

    PingOne access control scopes

    Most PingOne API scopes cannot be modified. However, user scopes such as the p1:read:user and p1:update:user can be modified to add or remove user schema attributes. In addition, PingOne supports custom PingOne access control scopes that use the syntax p1:read:user:{suffix} and p1:update:user:{suffix} for these two platform scopes. These custom PingOne scopes designate a specific set of user schema attributes, which is often a subset of attributes that the user is allowed to read or update. For example, a p1:update:user:email-only scope could remove all other user schema attributes except the user's email address. A user with this scope could update only their email address. All other visible attributes would not allow modification. For more information, refer to Access services through scopes and roles.

    Scopes and authorize requests

    The following authorization request shows a authorization_code grant type, in which the p1:read:user scope is specified, ensuring that this permission is encoded into the returned access token:

    curl --request GET \
      --url 'https://auth.pingone.com/{{envID}}/as/authorize?response_type=code&client_id={{appID}}&redirect_uri={{redirect_uri}}&scope=p1:read:user&acr_values=Single_Factor'
    
    

    You can specify more than one scope (from the same resource or from the openid resource) in the authorization request by adding additional scope names separated by spaces.

    curl --request GET \
      --url 'https://auth.pingone.com/{{envID}}/as/authorize?response_type=code&client_id={{appID}}&redirect_uri={{redirect_uri}}&scope=p1:read:user p1:update:user:email-only p1:reset:userPassword&acr_values=Single_Factor'
    
    

    The examples that follow show common actions to find and manage resource scope entities. You need the Client Application Developer role to perform operations on resources entities.

    For more information about scopes, refer to Configure access through scopes and roles.

    Adding mapped claims to an ID token or userinfo

    If the resource's type property is OPENID_CONNECT, you can add scopes to the resource that include custom mapped claims. The mappedClaims property in the POST {{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes request specifies the IDs of the resource attributes to add to the scope.

    For example, the OpenID Connect profile scope includes the following predefined profile claims: name, given_name, family_name, middle_name, nickname, preferred_username, picture, zoneinfo, locale, updated_at, profile, website, gender, and birthdate. If you add the ID for a predefined claim that already exists in the scope, such as given_name, it is ignored in the response. However, if you add the predefined phone_number attribute to the profile scope, the ID for the phone_number attribute is returned in the mappedClaims property in the response.

        "mappedClaims": [
            "579dc6f8-bf83-43ae-816c-324506b5de21"
        ],
    

    You can add custom claims to an OpenID Connect scope that you define using the Create Resource Attribute endpoint. The create request can include the idToken and userInfo properties to designate (globally) whether the claim should be added to the ID token and returned by the userinfo endpoint. You can specify that the idToken anduserInfo properties are both true, one can be true and the other false, but both properties cannot be set to false.

    Resource scopes data model

    Property Type Required? Mutable? Description
    createdAt Date N/A Read-only The time the resource was created.
    description String Optional Mutable The description of the scope.
    environment.id String Required Immutable The environment resource's unique identifier associated with the resource.
    id String Required Immutable The scope resource's unique identifier.
    mappedClaims String[] Optional Mutable A list of custom resource attribute IDs. This property applies only for the resource with its type property set to OPENID_CONNECT. Moreover, this property does not display predefined OpenID Connect (OIDC) mappings, such as the email claim in the OIDC email scope or the name claim in the profile scope. You can create custom attributes, and these custom attributes can be added to mappedClaims and will display in the response.
    name String Required Mutable The resource scope name. Scope names are only unique for the resource and not the environment.
    resource.id String Required Immutable The unique identifier of the resource entity associated with the scope.
    schemaAttributes String[] Optional Mutable The user schema attributes that can be read or updated for the specified PingOne access control scope. The value is an array of schema attribute paths (such as username, name.given, shirtSize) that the scope controls. This property is supported only for the p1:read:user, p1:update:user and p1:read:user:{suffix} and p1:update:user:{suffix} scopes. No other PingOne platform scopes allow this behavior. Any attributes not listed in the attribute array are excluded from the read or update action. The wildcard path (*) in the array includes all attributes and cannot be used in conjunction with any other user schema attribute paths.
    updatedAt Date N/A Read-only The time the resource was last updated.

    Resource scopes events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Custom resource scope


    Create PingOne access control scope


    Create OpenID Connect resource scope


    Read All Scopes (Resource)


    Read One Scope


    Update Scope


    Update PingOne access control scope


    Delete Scope

    Resource Attributes

    PingOne access tokens are signed JWTs (JSON Web Tokens) that include identity claims about and attributes of the requestor, usually a user identity. The resource attributes service lets you customize the content of access tokens by adding custom attributes and their values. This is a great way to convey additional information about the user to applications. Custom attributes have a cumulative length constraint of 16 Kb. Refer to Custom attributes in Schemas for more information.

    Resource attributes are essentially custom identity claims associated with a resource. For example, suppose the clothing.preferences resource with scope sizes provides "clothing size" user claims in the token. By default, the sizes scope does not include a t-shirt size user claim. To include the user.tshirtSize user attribute as a user claim in the token, a resource attribute entity can be created that associates the tshirtSize attribute with the clothing.preferences resource. Then, for token requests to clothing.preferences with scope sizes, the tshirtSize user claim is included in the token. If the attribute is multiValued, then the claim will be an array of values. The following diagram shows the workflow:

    Resource attributes custom identity claims

    For information about an access token's core claims, refer to Access token claims. A token's core identity claims cannot be modified or deleted.

    Advanced resource attribute mapping

    You can use PingOne's expression language for advanced attribute mappings of a custom resource or the OpenID Connect resource. The supported expression language is an augmentation of SpEL. SpEL is a powerful expression language used for querying and manipulating an object graph at runtime.

    Resource attributes data model

    Property Type Required? Mutable? Description
    idToken Boolean Optional Mutable A boolean that specifies whether the attribute mapping should be available in the ID Token. This property is applicable only when the application's protocol property is OPENID_CONNECT. If omitted, the default is true. Note that the idToken and userInfo properties cannot both be set to false. At least one of these properties must have a value of true.
    userInfo Boolean Optional Mutable A boolean that specifies whether the attribute mapping should be available through the /as/userinfo endpoint. This property is applicable only when the application's protocol property is OPENID_CONNECT. If omitted, the default is true. Note that the idToken and userInfo properties cannot both be set to false. At least one of these properties must have a value of true.
    name String Required Mutable A string that specifies the name of the custom resource attribute to be included in the access token. The following are reserved names and cannot be used. These reserved names are applicable only when the resource's type property is OPENID_CONNECT:
    • acr
    • amr
    • aud
    • auth_time
    • client_id
    • env
    • exp
    • iat
    • iss
    • jti
    • org
    • p1.* (any name starting with the p1. prefix)
    • scope
    • sid
    • sub
    type String Optional Read-only A string that specifies the type of resource attribute. Options are:
    • CORE: The claim is required and cannot not be removed.
    • CUSTOM: The claim is not a CORE attribute. All created attributes are of this type.
    • PREDEFINED: A designation for predefined OIDC resource attributes such as given_name. These attributes cannot be removed; however, they can be modified.
    value String Required Mutable A string that specifies the value of the custom resource attribute. This value can be a placeholder that references an attribute in the user schema, expressed as "${user.path.to.value}", or it can be a static string. Placeholders must be valid, enabled attributes in the environment's user schema. Examples fo valid values are: "${user.email}", "${user.name.family}", and "myClaimValueString".

    Advanced resource attribute mapping events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Resource Attribute


    Read All Resource Attributes


    Read One Resource Attribute


    Update Resource Attribute


    Delete Resource Attribute

    Resource Secret

    The client secret endpoint is available to users or worker resources only if they have a superset of the resource's role assignments.

    Access to the resource's client secret is restricted based on the accessing user's or resource's role assignments. For example, if a client has the Environment Admin role, an actor with an Identity Admin role cannot see the client secret. This restriction addresses privilege escalation issues by preventing the Identity Admin user from doing things with the client that the Identity Admin role assignment does not allow.

    Best practices

    • Do not store a resource's client secret in applications that are publicly available.

    • For security purposes, regenerate client secrets regularly.

    • If you suspect a resource's client secret has been compromised, generate a new client secret immediately.

    Resource client secret data model

    Property Type Required? Mutable? Description
    environment.id String Read-only The environment associated with the resource.
    previous Object Optional Read only An object that specifies the resource's previous secret, when it expires, and when it was last used.
    previous.secret String N/A Read only A string that specifies the resource's previous secret. This property is returned in the response if the previous secret is not expired.
    previous.expiresAt Timestamp Optional Read only A timestamp that specifies how long this secret is saved (and can be used) before it expires. Supported time range is 1 minute to 30 days.
    previous.lastUsed Timestamp Optional Read only A timestamp that specifies when the previous secret was last used.
    secret String N/A Read-only An auto-generated resource client secret. Possible characters are a-z, A-Z, 0-9, -, ., _, ~. The secret has a minimum length of 64 characters per SHA-512 requirements when using the HS512 algorithm to sign ID tokens using the secret as the key.

    Resource client secret events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Resource Client Secret


    Read Resource Client Secret


    Delete Previous Resource Client Secret

    Application Resources

    The PingOne Authorize {{apiPath}}/environments/{{envID}}/resources/{{resourceID}}/applicationResources endpoint provides operations to create, read, update, and delete application resources in PingOne.

    API application resources data model

    Property Type? Required? Mutable? Description
    description String Optional Mutable The application resource's description.
    id String N/A Read only The resource's unique identifier.
    name String Required Mutable The application resource name. The name value must be unique.
    parent Object N/A Read only The application resource's parent.
    parent.type String N/A Read only The application resource's parent type. Options are PING_ONE_RESOURCE.
    parent.id String N/A Read only The application resource's parent ID.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Application Resource


    Read All Application Resources


    Read One Application Resource


    Update Application Resource


    Delete Application Resource

    Application Resources Permissions

    The PingOne Authorize {{apiPath}}/environments/{{envID}}/resources/{{resourceID}}/applicationPermissions endpoint provides operations to read application resource permissions on the specified PingOne resource identified by its ID in the request URL.

    Application resources permissions data model

    Property Type? Required? Mutable? Description
    action String Required Mutable The action associated with this permission.
    description String Optional Mutable The resource's description.
    id String N/A Read only The resource's unique identifier.
    key String N/A Read only The resource.name:action pair of the permission.
    resource Object N/A Read only An object that identifies the associated application resource.
    resource.id String N/A Read only The ID for the associated application resource.
    resource.name String N/A Read only The name of the associated application resource.
    resourceServer.id String N/A Read only The ID for the associated application resource server.
    resourceServer.environment.id String N/A Read only The ID for the environment associated with the application resource server.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Read Application Permissions

    Roles Management

    The ability to perform an action in PingOne is determined by Role-Based Access Control (RBAC). For example, when you initiate a request to a PingOne endpoint, you must have the role required by the endpoint to execute the request. You'll notice that our endpoint documentation uses icons to indicate the role or roles needed to access the endpoint (refer to Read All Built-in Admin Roles for an example).

    You can assign a PingOne role to:

    • Users, PingOne admins, or (for custom roles) groups.

    • PingOne Worker Apps.

    • PingOne Gateways for PingFederate. Only gateways having a type property of PING_FEDERATE can be assigned a role. Refer to Gateway Role Assignments for more information.

    Users who aren't an admin or Client Application Developer cannot be assigned a role, so have no access to the APIs, nor permissions to execute actions on behalf of another user.

    When assigning admin roles, you cannot assign roles that you do not have yourself, with the following exceptions:

    • You can assign the read-only variants of built-in roles that are assigned to you.

    • You can assign custom roles that have been configured to allow assignment by a role that's assigned to you.

    As a best practice, assign the minimum role or roles needed for the admin to perform their tasks. Refer to Assigning a user role for more information.

    PingOne supports the following types of roles:

    • Built-in Admin Roles

      These roles are predefined in the platform. The permissions associated with PingOne roles are managed by the platform. Common PingOne roles are Organization Admin, Environment Admin, Identity Data Admin, and Client Application Developer.

    • Custom Admin Roles

      These roles are environment-level resources that consist of a set of permissions that can be edited by administrators. A custom role can be assigned to a user or admin group for a specific scope.

    • PingOne Authorize Application Roles

      These roles are part of the PingOne Authorize capability. You must have the PingOne Authorize product capability activated in your license to access these endpoints. Application roles define custom roles and permissions within PingOne to protect external application resources.

    Built-in Admin Roles

    These roles and the associated permissions are predefined (built-in) for PingOne:

    Role Icon Abbr. Can Assign
    Organization Admin Organization Admin role ORG Environment Admin
    Environment Admin Environment Admin role ENV All roles except Organization Admin
    Identity Data Admin Identity Data Admin role IDA Identity Data Admin, Identity Data Read-Only Admin, Help Desk Admin
    DaVinci Admin DaVinci Admin role DVA DaVinci Admin, DaVinci Read-Only Admin
    Custom Role Admin Custom Role Admin role ROLE None
    Application Owner Application Owner role APP-O None
    Identity Data Read-Only Admin Identity Data Read Only role IDA-R None
    Configuration Read-Only Admin Configuration Read Only role CFA-R None
    DaVinci Read-Only Admin DaVinci Admin Read Only role DVA-R None
    Client Application Developer Client Application Developer role APP None
    Help Desk Admin Help Desk Admin role HDA None

    Advanced Identity Cloud

    These roles and the associated permissions are predefined (built-in) for PingOne support of Advanced Identity Cloud:

    Role Abbr. Can Assign
    Advanced Identity Cloud Super Admin AIC-SUPER Advanced Identity Cloud Super Admin, Advanced Identity Cloud Tenant Admin
    Advanced Identity Cloud Tenant Admin AIC-TENANT None

    Roles and Permissions

    Refer to PingOne Role Permissions for the PingOne roles and their permissions.

    Refer to PingFederate SSO admin permissions for the applicable PingFederate roles.

    Automatic role assignments

    Role assignments determine access to PingOne APIs. When an application or user creates a new PingOne resource over which roles can be assigned, they are assigned all possible roles that can be assigned for the environment or population. For example, if an actor creates a new environment, the actor receives the Environment Admin, Identity Data Admin, and the Client Application Developer roles over that new environment. If the actor already has an existing organization-level Environment Admin role, the Environment Admin role would not be assigned again to the actor. Likewise, if the actor creates a new population, the actor receives the Identity Data Admin role automatically (unless the actor already has that assigned role).

    Users and applications cannot create actors that have more privileges than the user or application itself. For example, to create a user or an application that has Environment Admin privileges, the actor assigning roles must also have Environment Admin privileges. The actor (user or application) assigning roles must have the permissions that they are trying to assign. The requesting user or application must have the same (or broader) role assignments as the target actor's role assignments.

    When creating PingOne resources, the following roles are assigned to the actor automatically when these PingOne entities are created:

    • Environments

      Environment Admin: Assigned for the created environment at the environment level, if the actor does not already have the Environment Admin role at the parent organization level.

      Identity Data Admin: Assigned for the created environment at the environment level.

      Client Application Developer: Assigned for the created environment at the environment level.

    • Populations

      Identity Data Admin: Assigned for the created population at the population level, if the actor does not already have the Identity Data Admin role at the parent environment level.

    Roles data model

    Property Type Required? Mutable? Description
    actor.id String Required Immutable The ID of the actor.
    actor.environmentId String Required Immutable The ID of the environment in which the actor exists.
    actor.type String Required Immutable The type of the actor. Options are users and clients.
    description String Optional Immutable The description of the resource.
    environment.id String N/A Read-only The environment resource's unique identifier associated with the resource.
    id String N/A Read-only The resource's unique identifier.
    name String Required Immutable The resource name.
    role.applicableTo String Required Immutable The scope types to which the role can be applied. Options are ORGANIZATION, ENVIRONMENT, and POPULATION.
    role.description String Optional Mutable The description of the role.
    role.id String N/A Read-only The ID of the role.
    role.permissions String Required Immutable The set of permissions assigned to the role.
    role.permissions.classifier String Required Immutable The resource for which the permission is applicable.
    role.permissions.description String Optional Mutable The description of what the permission enables for the role.
    role.permissions.id String Optional Mutable The ID of a permission associated with this role.
    role.scope.id String Required Mutable A string that specifies the ID of the role assignment scope.
    role.scope.type String Required Immutable The type of resource defining the scope of the role assignment. Options are PLATFORM, ORGANIZATION, ENVIRONMENT, POPULATION, and ACTOR.
    type String Required Immutable The type of resource. Options are PLATFORM and CUSTOM.

    Roles events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Read All Built-in Admin Roles


    Read One Built-in Admin Role

    Custom Admin Roles

    A custom admin role is an environment-level resource that consists of a set of permissions that can be edited by administrators. A custom role can be assigned to an individual user, group, worker application, or PingFederate Gateway for a specific jurisdiction (scope). The jurisdiction can be at the organization level, environment level, or population level. The role assignment also specifies the assignee, the actor who is assigned the role for the designated jurisdiction.

    Custom admin role assignments

    Role assignments for custom roles follow these common scenarios:

    1. The admin assigns the custom role to someone in the same environment because they have that custom role.

    2. The admin assigns a custom role to someone in the same environment because the role they have is specified in the canBeAssignedBy attribute of the custom role.

    3. The admin assigns a custom role to someone in a different environment because the role and actor exist in a different environment. This is possible because the admin assigning has scope (juristiction) over the different environment through a PingOne role, which is specified in the custom role's canBeAssignedBy property.

    To summarize these scenarios, the actor can assign a custom role to others for a specific jurisdiction only if one or more of the following conditions are true:

    • The actor already has the same role for the jurisdiction or parent jurisdiction.

    • The actor has a role that is specified in the canBeAssignedBy property of the custom role for the jurisdiction or parent jurisdiction.

    For additional examples on assigning custom roles, refer to Custom Roles Scenarios In the PingOne Admin Guide.

    Custom admin role restrictions

    There are additional restrictions for using custom admin roles (these restrictions do not apply to the built-in roles).

    • Custom admin roles are not supported for PingOne Davinci at this time.

    • Custom admin roles can only be assigned at the organization level to users, groups, applications, and gateways in the administrators environment.

    • Custom roles created in any non-administrators environment can only be assigned against resources within that environment (or the entire environment).

    Roles and Permissions

    Refer to PingOne Role Permissions for the PingOne roles and their permissions.

    Refer to PingOne Permissions by Identifier for all permissions.

    Filtering data

    The Read All Custom Admin Roles request supports SCIM filtering expressions. The query filter can be appended to the request URL to fine-tune the response data. For example, the following filter returns only the custom roles:

    GET {{apiPath}}/environment/{{envID}}/roles?filter=%28type+eq+%22CUSTOM%22%29

    These SCIM operators can be applied to the following attributes:

    eq (equal to)

    Supported attributes: type

    Custom administrator roles data model

    Property Type Required? Mutable? Description
    applicableTo String[] Required Immutable The scope types to which the role can be applied. Options are ORGANIZATION, ENVIRONMENT, POPULATION, and APPLICATION.
    canAssign Object Read only Immutable A relationship that specifies if an actor is assigned the current custom role for a jurisdiction, then the actor can assign any of this set of roles to another actor for the same jurisdiction or sub-jurisdiction. This capability is dreived from the canBeAssignedBy property.
    canBeAssignedBy Object Required Mutable A relationship that determines whether a user assigned to one of this set of roles for a jurisdiction can assign the current custom role to another user for the same jurisdiction or sub-jurisdiction.
    description String Optional Mmutable The description of the role.
    environment.id String N/A Read-only The environment resource's unique identifier associated with the resource.
    id String N/A Read-only The resource's unique identifier.
    name String Required Mutable The role name.
    permissions String Required Mutable The set of permissions assigned to the role.
    type String N/A Read only A value that indicates whether the role is a built-in role or a custom role. Options are PLATFORM and CUSTOM.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Create Custom Admin Role


    Read All Custom Admin Roles


    Read One Custom Admin Role


    Update Custom Admin Role


    Delete Custom Admin Role

    Sessions

    The Sessions service enables you to create and manage sessions for either specified or unspecified (anonymous) users. Anonymous sessions are short-lived sessions that are created while the user authentication process occurs.

    Session token cookies can be handled through a browser or, for non-browser authentication flows, in the same manner as a browser, by saving the cookies when returned in an HTTP response from PingOne, and including the cookies on subsequent requests. Whenever possible, use the cookie handling features of the development platform, HTTP client library, or both.

    Refer to User Sessions for interfaces on the Users endpoint, and Best Practices: Session Management for best practices.

    PingOne sessions have the following characteristics:

    • Sessions are created (always) when a user signs on through PingOne and an existing session does not exist for the client.

    • A session is tied to all applications that the user signed into on that client (browser).

    • Sessions are identified through a session cookie when a user signs on (calls the authorize endpoint).

    • Sessions are associated with an entire SSO session, which includes all applications using the session.

    • A sign-off action terminates the entire SSO session and logs the user out of all applications using the session.

    Sign-off and sessions

    When the GET /{{envID}}/as/signoff endpoint is invoked, the sign-off operation ends the user's SSO session, which signs them out of all applications using that session. This endpoint can take an id_token_hint parameter to provide information about the user's current authenticated session. The session token must be an id_token type to complete the sign-off action successfully.

    For more information, refer to Signoff in the PingOne Platform API Reference.

    Token revocation and sessions

    When the POST /{{envID}}/as/revoke endpoint is invoked, the token revocation operation revokes the specified token, but leaves the SSO session intact. This endpoint revokes tokens of type access_token and refresh_token. It does not support revocation of tokens of type id_token.

    The tokens to be revoked must be an access_token or refresh_token for a custom resource. Tokens issued for the PingOne API resource may not be revoked.

    For more information, refer to Token Revocation in the PingOne Platform API Reference.

    Session tokens and PingOne flows

    For PingOne flows, the session token cookies establish the user's authentication session, and maintain the flow session, allowing the flow to redirect back to the authorization server to get the token.

    For flows started through the Read Flow endpoint, a session token cookie is set only after the identity of the user has been partially established. For example, if the sign-on policy specifies identifier first and MFA actions, the cookie is set after the user is identified through a user lookup action, and the user supplies the correct password. For a flow initiated in a browser that already has a valid session token cookie, calling the flow requires the session token cookie, which can be passed in as a request header.

    Typical authentication flow for the Sessions service

    Typical sessions authentication flow

    Session data model

    Property Type Required? Mutable? Description
    activeAt Date Required Mutable The time of last user activity for this session (such as, completing a flow, or an application activity like validating a token).
    browser.name String N/A Read-only The name of the browser.
    browser.version String N/A Read-only The version of the browser.
    createdAt Date N/A Read-only The time the resource was created.
    device.type String N/A Read-only The type of remote device.
    environment.id String N/A Read-only The UUID for the environment.
    expiresAt Date N/A Read-only The date and time the session will expire, based on the values for 'idleTimeoutInMinutes' and activeAt.
    id String N/A Read-only The unique identifier for the session.
    idleTimeoutInMinutes Integer Optional (for POST) Mutable This is required for a PUT operation. The maximum idle time in minutes after which the session will become invald. This is used to evaluate expiresAt, based on the activeAt value. For POST operations to create a session, the idle timeout for an anonymous session defaults to 30 minutes (the maximum for anonymous sessions). The idle timeout for user-specified sessions defaults to 30 days, with a maximum of 365 days. The minimum idle timeout value for any session is 1 minute. Sessions are automatically removed after the idle timeout.
    lastSignOn Object Required Mutable Contains information about the most recent sign-on events. Null if the user isn't identified.
    lastSignOn.at String N/A Read-only The last time the user signed on using one or more authenticators.
    lastSignOn.remoteIp String Required Mutable The IP address of the remote device used during the last sign-on.
    lastSignOn.policy Object N/A Read-only The Flow Policy UUID.
    lastSignOn.policy.id String N/A Read-only The Policy associated with the last completed sign-on by the lastSignOn.authenticator.
    lastSignOn.policy.type String N/A Read-only This is either DAVINCI or PINGONE.
    lastSignOn.authenticators String[] Required Mutable The authenticators used during the last sign-on.
    lastSignOn.withAuthenticator Map Required Mutable Details for all authenticators used in a session, and each authenticator's most recent sign-on activity.
    lastSignOn.withAuthenticator.
    authenticator
    String Required Mutable The name of the authenticator. The names are generally Authentication Method Reference (AMR) values (such as, pwd, mfa). Values other than AMR values are also supported. The values must be lowercase alpha characters with a maximum length of 10.
    lastSignOn.withAuthenticator.
    authenticator.at
    Date Required Mutable The last time the authenticator was used for sign-on.
    lastSignOn.withAuthenticator.
    authenticator.policy
    Object Required Mutable The Flow Policy UUID.
    lastSignOn.withAuthenticator.
    authenticator.policy.id
    String Required Mutable The Policy associated with the last completed sign-on by the lastSignOn.authenticator. If lastSignOn.withAuthenticator.authenticator.policy.type is PINGONE, this value is a UUID. If lastSignOn.withAuthenticator.authenticator.policy.type is DAVINCI, this value must be 32 lowercase HEX characters.
    lastSignOn.withAuthenticator.
    authenticator.policy.type
    String Required Mutable This is either DAVINCI or PINGONE.
    locations Object[] N/A Read-only Contains the attributes identifying the user location. Only the last 5 locations are maintained.
    location.at Date N/A Read-only The last time the user signed on.
    location.remoteIp String N/A Read-only The IP address of the remote device used during the last sign-on.
    location.city String N/A Read-only The city resolved from the IP address.
    location.state String N/A Read-only The state resolved from the IP address.
    location.region String N/A Read-only The region resolved from the IP address.
    location.country String N/A Read-only The country resolved from the IP address.
    operatingSystem.name String N/A Read-only The name of the operating system.
    operatingSystem.version String N/A Read-only The operating system version.
    remoteIp String Optional Mutable IP address used to perform any activity that extends the session (for activities other than sign-on). If specified, this value is appended to the location history as location.remoteIp, with the activeAt value as the value of location.at. This setting cannot be retrieved in a JSON response directly, as it's incorporated into location history.
    token String Optional Mutable Required for Update Session By Session Token. The token associated with the session for use with the session token cookie. For a POST operation, you need to specify this if you intend to use any of the /me (Session Token) endpoints. This is a UUID value, and must be unique to the environment. For Update Session By ID, if the session token is specified in the request, it is discarded. The session token can be changed only using Update Session By Session Token.
    user.id String Optional Immutable The UUID for the user associated with the session. This can be null until authentication is completed. Once set, this value can't be changed. If user.Id is specified for a session, you need to supply authenticator information in the lastSignOn object. If user.id isn't specified, the lastSignOn object is null, and any values assigned to the lastSignOn object are ignored.
    userAgent String Required Mutable The raw user agent string from the user agent header of the request that initiated the flow.

    Create Session


    Reset Authentication Session by Session ID


    Reset Authentication Session by Session Token


    Read Session By ID


    Read Session By Session Token


    Update Session By ID


    Update Session By Session Token


    Delete Session By ID


    Delete Session By Session Token

    Sign-On Policies

    Sign-on policies (identified in the PingOne UI as "Authentication Policy") determine the account authentication flow users must complete to access applications secured by PingOne services.

    Sign-on policies are defined by their associated actions. For example, the LOGIN action prompts users for a username and password. The MULTI_FACTOR_AUTHENTICATION action prompts users to complete a second authentication action, such as entering a one-time passcode received on a registered device or accepting a push confirmation on a registered native device.

    For more information about sign-on policies, refer to Authentication policies in the PingOne Admin Guide.

    An application's sign-on policy determines the flow states and the corresponding actions required to complete an authentication workflow. The following diagram shows the PingOne platform sign-on policy selection logic:

    Sign-on policy selection logic

    When the authentication workflow begins, the flow gets the list of sign-on policies assigned to the application and evaluates the policy conditions that must be met to complete sign on. The sign-on policy evaluation logic is shown in the diagram below:

    Sign-on policy evaluation logic

    Sign-on policies

    The /environments/{{envID}}/signOnPolicies endpoint provides operations to create, read, update, and delete sign-on policies.

    For more information, refer to Sign-On Policies.

    Sign-on policy actions

    The /environments/{{envID}}/signOnPolicies/{{policyID}}/actions endpoint provides operations to create, read, update, and delete sign-on policy actions.

    For more information, refer to Sign-On Policy Actions.

    Sign-On Policies Operations

    The sign-on policies endpoints provide common operations to create and manage sign-on policies resources.

    You need the Environment Admin role to perform operations on sign-on policy resources.

    Sign-on policies data model

    Property Type Required? Mutable? Description
    createdAt Date N/A Read-only The time the resource was created.
    default Boolean Required Mutable Indicates whether this sign-on policy is the environment's default that is used by applications that do not have application-specific sign-on policy assignments. This property can only be set to true, in which case the isDefault property of all other sign-on policies are set to false.
    description String Optional Mutable The description of the sign-on policy.
    environment.id String Required Immutable The environment resource's unique identifier associated with the sign-on policy.
    id String N/A Read-only The sign-on policy resource's unique identifier.
    name String Required Mutable Rhe resource name. The name must be unique within the environment, and can consist of either a string of alphanumeric letters, underscore, hyphen, period: ^[a-zA-Z0-9_.-]+$ or an absolute URI if the string contains a ":" character.
    updatedAt Date N/A Read-only The time the resource was last updated.

    Sign-on policies events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes
    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    404 The requested resource was not found.

    Create Sign-On Policy


    Read All Sign-On Policies


    Read One Sign-On Policy


    Update Sign-On Policy


    Delete Sign-On Policy

    Sign-On Policy Actions

    Sign-on policy actions specify the particular sign-on action and the conditions that determine when the action is executed. PingOne supports the following sign-on policy actions:

    • LOGIN

      An action that prompts users for a username and password.

      If you're provisioning users from an external LDAP directory, refer to the userTypes parameter for the Gateway LDAP data model. For flow details, refer to Login action.

    • MULTI_FACTOR_AUTHENTICATION

      A two-step authentication method that prompts users to enter a one-time password received on a registered device or accept a push confirmation on a registered native device. For flow details, refer to Multi-factor (MFA) action.

    • IDENTIFIER_FIRST

      An action used to identify the user by username and determine the applicable authentication methods for this user. Identifier first flows do not result in a failed state. Any user that does not match a discovery rule will authenticate against PingOne. For flow details, refer to Identifier first action.

    • PROGRESSIVE_PROFILING

      An action to 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. For flow details, refer to Progressive profiling action.

    • IDENTITY_PROVIDER

      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. For flow details, refer to Identity provider account confirmation.

    • AGREEMENT

      An action that enforces consent to an agreement.

    Sign-on policy action conditions

    PingOne sign-on policy actions support a policy condition language that allows both logical and data rules to construct a policy condition statement. Logical rules reflect the combined result of their contained rules. A logical rule can contain other logical rules or data rules. Data rules do not contain other rules; they are used for straightforward comparison.

    Policy condition logical rules

    There are three logical operations. The JSON operators for logical rule expressions are:

    • and

      Constructed as a JSON array (for example, "and":["{rule1}", "{rule2}"]). For this expression, all rules must be true to meet the condition.

    • or

      Constructed as a JSON array (for example, "or":["{rule1}", "{rule2}"]). For this expression, at least one rule must be true to meet the condition.

    • not

      Constructed as a JSON object (for example, "not":[{inner_rule}]). For this expression, the value must not be true to meet the condition.

    The following sample shows a condition statement that uses the not logical operation:

    "condition": {
       "not": {
            "ipRange": [
                "10.1.1.1/8",
                "10.0.0.0/8"
            ],
            "contains": "${flow.request.http.remoteIp}"
        }
    }
    
    
    

    In this case, the sign-on policy associated with this condition prevents sign-on from devices that contain the remote IP address value specified by the variable ${flow.request.http.remoteIp} in the specified IP address ranges.

    The following sample shows a condition statement that uses the or logical operation to perform a data evaluation:

    "condition": {
        "or": [
            {
                "value": "${user.population.id}",
                "equals": "ae2245b4-a942-47ad-9c9c-f6be13c2266b"
            },
            {
                "value": "${user.population.id}",
                "equals": "b0f1e4af-e0d1-4677-900c-fec8a354b332"
            }
        ]
    }
    

    The sign-on policy associated with this condition allows sign-on if the actor requesting access has a population ID value of ae2245b4-a942-47ad-9c9c-f6be13c2266b or b0f1e4af-e0d1-4677-900c-fec8a354b332 (or both).

    Policy condition data rules

    Data comparisons determine whether a given property value matches a second value or meets a specified threshold. A data comparison can be a one-to-one match using the equals operator:

    {
        "value": "${user.population.id}",
        "equals": "b0f1e4af-e0d1-4677-900c-fec8a354b332"
    }
    
    

    A data comparison can also check whether a value has exceeded a specified maximum using the greater operator:

    {
      "secondsSince" : "${session.lastSignOn.withAuthenticator.mfa.at}",
      "greater" : 50400
    }
    
    

    In this case, if the condition is met (the time since the last sign-on exceeds one hour), then the user can be directed to a specific authentication action, such as re-entering a password.

    Condition variables

    The following variables can be referenced in sign-on policy action conditions:

    Property Description
    ${session.lastSignOn.withAuthenticator.pwd.at} Specifies the last successful time the password authenticator was used for sign on.
    ${session.lastSignOn.withAuthenticator.mfa.at} Specifies the last successful time an MFA authenticator was used for sign on. Options are: email, sms, voice, authenticator, user, and applications.id.
    ${flow.request.http.remoteIp} Specifies the remote IP address of the request that initiated the flow.
    ${user.*} Specifies the user attribute used in the condition. Only string core, standard, and custom attributes are supported. For complex attribute types, you must reference the sub-attribute (${user.name.firstName}).
    ${conditions.geovelocity} Specifies that an authentication request requires MFA when a geovelocity anomaly is detected. The PingIntelligence platform analyzes location data and determines whether travel time between a user's current login location and their previous login location is possible in the time frame that has elapsed since the previous login.
    ${conditions.ipRisk} Specifies that an authentication request requires MFA when the request comes from an IP address with a high risk score. The PingIntelligence platform collects and analyzes IP address data of authentication requests. An IP address is considered high risk if it may have recently been involved in malicious activities, such as DDos attacks, or spam activity. When the ipRisk condition is applied, the minScore and maxScore parameters defining the high risk score range must be supplied. Authentication requests with a risk score greater than minScore, and less than or equal tomaxScore require MFA.
    For example, if minScore is 80 and maxScore is 90:
    • An authentication request with risk score of 80 and below does not require MFA.
    • An authentication request with risk score in the range of 81 to 90 (inclusive) requires MFA.
    • An authentication request with risk score of 91 and above does not require MFA.
    The value set by the admin UI for minScore is 80, and for maxScore is 100. These are also the recommended values.
    ${conditions.anonymousNetwork} Specifies that an authentication request requires MFA when the request comes from an IP address detected as an anonymous network. The PingIntelligence platform analyzes IP address data of authentication requests. When the platform identifies an IP address as originating from an anonymous network such as an unknown VPN, proxy or anonymity communication tool such as Tor, it will invoke the MFA flow, with the exception of authentication requests originating from whitelisted IP addresses.

    Sign-on policy actions base data model

    Property Description
    conditions.ipRange A string that specifies the supported network IP addresses expressed as classless inter-domain routing (CIDR) strings.
    conditions.secondsSince An integer that specifies the maximum number of minutes to wait since the last sign on before prompting for a new sign-on action.
    environment.id A string that specifies the environment resource's unique identifier associated with the sign-on policy.
    id A string that specifies the sign-on policy assignment resource's unique identifier.
    priority An integer that specifies the order in which the policy referenced by this assignment is evaluated during an authentication flow relative to other policies. An assignment with a lower priority will be evaluated first. This is a required property.
    signOnPolicy.id A string that specifies the associated sign-on policy resource's unique identifier.
    type A string that specifies the type of action. Options are: LOGIN, MULTI_FACTOR_AUTHENTICATION, IDENTIFIER_FIRST, and PROGRESSIVE_PROFILING.

    LOGIN action data model

    Property Description
    confirmIdentityProviderAttributes A boolean that specifies whether users must confirm data returned from an identity provider prior to registration. Users can modify the data and omit non-required attributes. Modified attributes are added to the user's profile during account creation. This is an optional property. If omitted, the default value is set to false.
    enforceLockoutForIdentityProviders A boolean that if set to true and if the user's account is locked (the account.canAuthenticate attribute is set to false), then social sign on with an external identity provider is prevented.
    newUserProvisioning Enables user entries existing outside of PingOne to be provisioned in PingDirectory during login, using an external integration solution (such as a Gateway).
    newUserProvisioning.gateways Allows a set of preconfigured gateways or userType pairs that are specified in the Gateway Management schema to determine how to find and migrate user entries existing in an external directory.
    newUserProvisioning.gateways.id A string referencing the UUID for the gateway.
    newUserProvisioning.gateways.type A string identifying the type of gateway. Currently, only LDAP is supported.
    newUserProvisioning.gateways.userType A reference to the ID of the userTypes configuration set on the gateway for user account migration`.
    newUserProvisioning.gateways.userType.id A string referencing the UUID of userType.
    recovery Specifies the account recovery options.
    recovery.enabled A boolean that specifies the enabled/disabled state of the account recovery action. The default is disabled when creating a new policy. When enabled, it allows the use of the forgot password flow.
    registration Specifies the account registration options.
    registration.enabled A boolean that specifies the enabled/disabled state of the policy action. The default is disabled when creating a new policy. When enabled, it allows the use of the new user registration flow. This attribute should be set to true when implementing the social login sign-on policy option.
    registration.external A string that specifies the link to the external identity provider's identity store. This property is set when the administrator chooses to have users register in an external identity store. This can be set only when the registration.enabled property is false. This cannot be used when registration.flowDefinition is enabled.
    registration.population.id A string that specifies the population ID associated with the newly registered user.
    registration.flowDefinition A reference to a flow definition to use for user registration rather than the registration logic provided by the action. This can only be set when registration.enabled is false. This cannot be used when registration.external is enabled.
    socialProviders[0].id An array of strings that specifies the IDs of the identity providers that can be used for the social login sign-on flow.

    MULTI_FACTOR_AUTHENTICATION action data model

    Property Description
    deviceAuthenticationPolicy.id The ID of the MFA policy that should be used. This parameter is optional. If it is omitted, the default MFA policy is used.
    noDeviceMode Optional parameter. A string that specifies the device mode for the MFA flow. Options are BYPASS to allow MFA without a specified device, or BLOCK to block the MFA flow if no device is specified. To use this configuration option, the authorize request must include a signed login_hint_token property. For more information, refer to Authorize (Non-redirect and MFA Only Flows). If the parameter is not provided, the default value is BLOCK.

    IDENTIFIER_FIRST action data model

    Property Description
    confirmIdentityProviderAttributes A boolean that specifies whether users must confirm data returned from an identity provider prior to registration. Users can modify the data and omit non-required attributes. Modified attributes are added to the user's profile during account creation. This is an optional property. If omitted, the default value is set to false.
    discoveryRules.condition The list of IDP discovery rules that are evaluated in order when no user is associated with the user identifier. The maximum number of rules is 100. The condition on which this identity provider is used to authenticate the user is expressed using the PingOne policy condition language, Constrained to the following format:
    {
    "value": "${user.username}",
    "contains": "{someValue}"
    }
    enforceLockoutForIdentityProviders A boolean that if set to true and if the user's account is locked (the account.canAuthenticate attribute is set to false), then social sign on with an external identity provider is prevented.
    identityProvider.id A string that specifies the identity provider that will be used to authenticate the user if the condition is matched.
    recovery Specifies the account recovery options.
    recovery.enabled A boolean that specifies the enabled/disabled state of the account recovery action. The default is disabled when creating a new policy. When enabled, it allows the use of the forgot password flow.
    registration Specifies the account registration options.
    registration.enabled A boolean that specifies the enabled/disabled state of the policy action. The default is disabled when creating a new policy. When enabled, it allows the use of the new user registration flow. This attribute should be set to true when implementing the social login sign-on policy option.
    registration.external.href A string that specifies the link to the external identity provider's identity store. This property is set when the administrator chooses to have users register in an external identity store. This attribute can be set only when the registration.enabled property is set to false.
    registration.population.id A string that specifies the population ID associated with the newly registered user.
    socialProviders[0].id An array of strings that specifies the IDs of the identity providers that can be used for the social login sign-on flow.

    PROGRESSIVE_PROFILING action data model

    Property Description
    attributes.name A string that specifies the name and path of the user profile attribute as defined in the user schema (for example, email or address.postalCode). This property is required.
    attributes.required A boolean that specifies whether the user is required to provide a value for the attribute. This property is required.
    preventMultiplePromptsPerFlow A boolean that specifies whether the progressive profiling action will not be executed if another progressive profiling action has already been executed during the flow. This property is required.
    promptIntervalSeconds An integer that specifies how often to prompt the user to provide profile data for the configured attributes for which they do not have values. This property is required.
    promptText A string that specifies text to display to the user when prompting for attribute values. This property is required.

    AGREEMENT action data model

    Property Description
    agreement The relationship to the agreement to which the user must consent. The agreement must exist and be enabled. An agreement cannot be disabed if an action uses it. An enabled agreement must always support the default language. This property is required.
    agreement.id A string that specifies the ID of the agreement to which the user must consent. This property is required.

    IDENTITY_PROVIDER action data model

    Property Description
    acrValues A string that designates the sign-on policies included in the authorization flow request. Options can include the PingOne predefined sign-on policies, Single_Factor and Multi_Factor, or any custom defined sign-on policy names. Sign-on policy names should be listed in order of preference, and they must be assigned to the application. This property can be configured on the identity provider action and is passed to the identity provider if the identity provider is of type SAML or OPENID_CONNECT.
    entraIdEnabled An optional boolean used to specify the policy purpose. Applicable only when identityProvider.id relates to a Microsoft Identity Provider, where the Identity provider's type property value is set to MICROSOFT.
    identityProvider A reference to the external identity provider that is used to authenticate the user. This property is required.
    identityProvider.id A string that specifies the ID of the external identity provider to which the user is redirected for sign-on. This property is required.
    passUserContext A boolean that specifies whether to pass in a login hint to the identity provider on the authentication request. Based on user context, the login hint is set if (1) the user is set on the flow, and (2) the user already has an account link for the identity provider. If both of these conditions are true, then the user is sent to the identity provider with a login hint equal to their externalId for the identity provider (saved on the account link). If these conditions are not true, then the API checks see if there is an OIDC login hint on the flow. If so, that login hint is used. If none of these conditions are true, the login hint parameter is not included on the authorization request to the identity provider.
    registration Specifies the account registration options.
    registration.confirmIdentityProviderAttributes A boolean that specifies whether users must confirm data returned from an identity provider prior to registration. Users can modify the data and omit non-required attributes. Modified attributes are added to the user's profile during account creation. This is an optional property. If omitted, the default value is set to false.
    registration.enabled A boolean that specifies the enabled/disabled state of the policy action. The property is disabled by default when creating a new policy. When enabled, it allows the use of the new user registration flow. This attribute should be set to true when implementing the social login sign-on policy option.
    registration.population.id A string that specifies the population ID associated with the newly registered user.

    Sign-on policy actions events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes
    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    403 You do not have permissions or are not licensed to make this request, or your license is exceeded.
    404 The requested resource was not found.

    Create Sign-On Policy Action (LOGIN)


    Create Sign-On Policy Action (MFA)


    Create Sign-On Policy Action (IDENTIFIER_FIRST)


    Create Sign-On Policy Action (PROGRESSIVE_PROFILING)


    Create Sign-On Policy Action (AGREEMENT)


    Create Sign-On Policy Action (IDENTITY_PROVIDER)


    Read All Sign-On Policy Actions


    Read One Sign-On Policy Action


    Update Sign-On Policy Action


    Delete Sign-On Policy Action

    Identity Management

    An identity is a unique user resource within PingOne that interacts with the applications and services in the environment to which the user is assigned. The PingOne platform includes numerous services that define and configure a user identity.

    • Users and the user schema

      The users endpoints enable directory operations to create and manage user accounts, including assigning the user to a population, assigning user roles, managing passwords, managing MFA devices, unlocking a user account, managing user consents, and managing ID verification transaction records. It also supports an import capability that gives privileged applications the ability to create a new user and set the user's password.

      For more information, refer to Users.

      For information about user core attributes and about adding custom attributes to the user schema, refer to Schemas.

    • Credential Issuance

      The Credentials Issuance API provides endpoints to create custom verifiable credentials for users. The resulting credentials can then be shared with native applications. For more information, refer to PingOne Credentials.

    • Groups

      The groups API provides endpoints to create collections of users with the same access to applications. For more information, refer to Groups.

    • Identity provider management

      The identity provider endpoints manage external identity provider configurations. It enables the social login, authoritative login, and inbound SAML login features in PingOne. For more information, refer to Identity Provider Management.

    • Identity propagation

      The identity propagation API provides for configurable and audit-capable propagation of identities and their attributes between identity stores owned or managed by a customer. For more information, refer to Identity Propagation (Provisioning).

    Identity Provider Management

    The identity provider (IdP) endpoints manage external IdP configurations. It is one of several related services that enable the social login, authoritative login, and inbound SAML login features in PingOne. An external IdP configuration allows users whose accounts are linked to PingOne to authenticate and gain access to PingOne resources using the login flow and credentials provided by the external IdP.

    PingOne supports several external IdPs. IdP resources in PingOne configure the external IdP settings, which include the type of provider and the user attributes from the external IdP that are mapped to PingOne user attributes. These attributes might have one or many values assigned to them. As you might expect, mapping a single-value IdP attribute to a single-value PingOne attribute results in a PingOne attribute having the same value as the IdP attribute. Similarly, if the IdP attribute is multi-valued, the PingOne attribute value will be an array of the IdP attribute values. If the attributes are not the same format, then the following rules apply:

    • If the IdP attribute is single-valued and the PingOne attribute is multi-valued, the PingOne attribute will be a single-element array containing the value of the IdP attribute.
    • If the IdP attribute is multi-valued and the PingOne attribute is single-value, then the PingOne attribute will use the first element in the IdP attribute as its value.

    The mapping attribute placeholder value must be expressed using the following syntax in the request body:

    ${providerAttributes.<IdP attribute name>}

    Account linking

    PingOne cannot guarantee that usernames are unique for all external IdPs. To prevent users from different IdPs being treated as the same PingOne user, PingOne uses account linking. The user must have a PingOne account. When the user signs in to PingOne, an account link between the external IdP user account and their PingOne account is created.

    Account linking only applies when the user's authoritative IdP is PingOne. Account linking is not supported when the authoritative IdP is an external IdP rather than PingOne. In this case, account linking will fail. For a user to link their account with multiple external IdPs, their authoritative IdP must be set to PingOne.

    For more information about identity providers, refer to External IDPs in the PingOne Admin Guide.

    Use cases

    Base IdP data model

    Property Type Required? Mutable? Description
    description String Optional Mutable The description of the IdP.
    enabled String Required Mutable The current enabled state of the IdP. Options are ENABLED or DISABLED.
    environment.id String Required Immutable The environment associated with the IdP resource.
    icon.id String Optional Mutable The ID for the IdP icon.
    icon.href String Optional Mutable The HREF for the IdP icon.
    id String Required Immutable The resource ID.
    loginButtonIcon.id String Optional Mutable The image ID for the IdP login button icon. For Facebook, Google, and LinkedIn IdPs, updates to the login button are ignored to preserve the IdP branding rules.
    loginButtonIcon.href String Optional Mutable The HREF for the IdP login button icon image file. For Facebook, Google, and LinkedIn IdPs, updates to the login button are ignored to preserve the IdP branding rules.
    name String Required Mutable The name of the IdP.
    pkceMethod String Optional Mutable The method for PKCE. Options are NONE or S256. The default is NONE. This value auto-populates from a discovery endpoint if the OpenID Provider includes S256 in its code_challenge_methods_supported claim. The plain method is not currently supported.
    registration.population.id Object Optional Mutable An external IdP to use as authoritative. Setting this attribute gives management of linked users to the IdP and also triggers just-in-time provisioning of new users. These users are created in the population indicated with registration.population.id.
    sloBinding String Optional Mutable The binding protocol to be used for the logout response. Options are HTTP_REDIRECT or HTTP_POST. The default is HTTP_POST; existing configurations with no data default to HTTP_POST. This is an optional property.
    sloEndpoint String Optional Mutable The logout endpoint URL. This is an optional property. However, if a sloEndpoint logout endpoint URL is not defined, logout actions result in an error.
    sloResponseEndpoint String Optional Mutable The endpoint URL to submit the logout response. If a value is not provided, the sloEndpoint property value is used to submit SLO response.
    sloWindow Integer Optional Mutable Defines how long PingOne can exchange logout messages with the application, specifically a LogoutRequest from the application, since the initial request. PingOne can also send a LogoutRequest to the application when a single logout is initiated by the user from other session participants, such as an application or identity provider. This setting is per application. The SLO logout is separate from the user session logout that revokes all tokens.
    spSigning.algorithm String Optional Mutable The signing key algorithm used by PingOne. Value will depend on which key algorithm and signature algorithm you chose when creating your signing key. Possible values are SHA256withRSA, SHA384withRSA, SHA512withRSA, SHA256withECDSA, SHA384withECDSA, SHA512eithEDCSA.
    spSigning.key.id String Optional Read-only The UUID of the signing key. Refer to Adding a Certificate and Key Pair.
    type String Required Immutable The IdP type. This is a required property. Options are FACEBOOK, GOOGLE, LINKEDIN_OIDC, LINKEDIN (Deprecated), OPENID_CONNECT, APPLE, AMAZON, TWITTER, YAHOO, PAYPAL, MICROSOFT, GITHUB, and SAML.

    Mapping attributes data model

    Property Type Required? Mutable? Description
    mappingType String Optional Immutable The mapping type. Options are: CORE (This attribute is required by the schema and cannot be removed. The name and update properties cannot be changed.) or CUSTOM (All user-created attributes are of this type.)
    name String Required Mutable The user attribute, which is unique per provider. The attribute must not be defined as read only from the user schema or of type COMPLEX based on the user schema. Valid examples: username, and name.first. The following attributes may not be used: account, id, created, updated, lifecycle, mfaEnabled, and enabled.
    value String Required Mutable A placeholder referring to the attribute (or attributes) from the provider. Placeholders must be valid for the attributes returned by the IdP type and use the ${} syntax (for example, username="${email}"). For SAML, any placeholder is acceptable, and it is mapped against the attributes available in the SAML assertion after authentication. The ${samlAssertion.subject} placeholder is a special reserved placeholder used to refer to the subject name ID in the SAML assertion response.
    update String Required Mutable Indicates whether to update the user attribute in the directory with the non-empty mapped value from the IdP. Options are: EMPTY_ONLY (only update the user attribute if it has an empty value); ALWAYS (always update the user attribute value).

    Attribute type mapping rules

    User attribute type Provider JSON value type Result
    String * Valid. The value is cast at runtime, as necessary.
    Complex * Error
    Boolean Boolean Valid
    Boolean * Error
    JSON Object Valid
    JSON * Error
    JSON (sub-attribute) * Valid

    Identity provider events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 An unexpected error occurred.

    Identity Providers

    PingOne supports many of the most common external identity providers. While the POST {{apiPath}}/environments/{{envID}}/identityProviders endpoint operation used to create an identity provider resource is the same for each provider, the configuration properties and their values differ. The platform supports the following external identity provider types.

    • FACEBOOK

      Sets the external identity provider to Facebook.

    • GOOGLE

      Sets the external identity provider to Google.

    • LINKEDIN_OIDC (LINKEDIN (Deprecated)

      Sets the external identity provider to LinkedIn.

    • OPENID_CONNECT

      Sets the external identity provider to Open ID Connect.

    • APPLE

      Sets the external identity provider to Apple.

    • AMAZON

      Sets the external identity provider to Amazon.

    • X (TWITTER)

      Sets the external identity provider to X.

    • YAHOO

      Sets the external identity provider to Yahoo.

    • PAYPAL

      Sets the external identity provider to PayPal.

    • MICROSOFT

      Sets the external identity provider to Microsoft.

    • GITHUB

      Sets the external identity provider to Github.

    • SAML

      Sets the external identity provider to SAML.


    Create Identity Provider (Facebook)


    Create Identity Provider (Google)


    Create Identity Provider (LinkedIn Legacy Deprecated)


    Create Identity Provider (LinkedIn OIDC)


    Create Identity Provider (Yahoo)


    Create Identity Provider (OpenID Connect)


    Create Identity Provider (Amazon)


    Create Identity Provider (X)


    Create Identity Provider (Apple)


    Create Identity Provider (Paypal)


    Create Identity Provider (Microsoft)


    Create Identity Provider (Github)


    Create Identity Provider (SAML)


    Discover OpenID Provider Metadata


    Read All Identity Providers


    Read One Identity Provider


    Update Identity Provider


    Delete Identity Provider

    Identity Provider Attributes

    When defining an external identity provider resource, user attributes from the external identity provider are mapped to PingOne user attributes. The mapping attribute placeholder value must be expressed using the following syntax in the request body:

    ${providerAttributes.<IdP attribute name>}

    For example, the request body for the Facebook-to-PingOne email-to-email mapping looks like this, with the value attribute showing the Facebook email attribute expressed using the placeholder syntax:

    {
        "name": "email",
        "update": "EMPTY_ONLY",
        "value": "${providerAttributes.email}"
    }
    

    Create Identity Provider Attribute (Facebook)


    Create Identity Provider Attribute (Google)


    Create Identity Provider Attribute (LinkedIn Legacy Deprecated)


    Create Identity Provider Attribute (LinkedIn OIDC)


    Create Identity Provider Attribute (Yahoo)


    Create Identity Provider Attribute (OpenID Connect)


    Create Identity Provider Attribute (Amazon)


    Create Identity Provider Attribute (X)


    Create Identity Provider Attribute (PayPal)


    Create Identity Provider Attribute (Microsoft)


    Create Identity Provider Attribute (Github)


    Create Identity Provider Attribute (Apple)


    Create Identity Provider Attribute (SAML)


    Read All Identity Provider Attributes


    Read One Identity Provider Attribute


    Update Identity Provider Attribute


    Delete Identity Provider Attribute

    Identity Propagation (Provisioning)

    The identity provisioning service provides for configurable and audit-capable propagation of identities and their attributes between identity stores owned or managed by a customer.

    Companies prefer to use one identity provider, a service or on-premise software, as the single source of truth for all corporate identities. If other services or software require their own dedicated identity store, the preference is to propagate identities from the single source of truth to those other dedicated identity stores. This significantly reduces the possibility of introducing inconsistencies in identities and their associated data across all systems.

    The identity provisioning service creates connectors that permit near real-time updates from PingOne Directory to other identity stores and periodic propagation of updates from other identity stores into PingOne Directory. Other dedicated identity stores can also propagate their updates into PingOne Directory through the API requests of the PingOne SCIM service.

    You can build as many connectors as required to achieve your required use cases. For example, an existing Human Resources application is the source store for high-level identities. It propagates its core identity data to PingOne Directory via SCIM, either through an inbound SCIM connector or through the SCIM service's API. PingOne Directory provides additional identity attributes. PingOne Directory propagates appropriate identities, with needed attributes, through outbound connectors to Slack and Zoom so that new users can quickly use those productivity apps!

    An identity propagation configuration consists of:

    • Revisions

      The configuration revision instances of the state of the plan, store, rule, and mapping, entities of a configuration taken at a point in time. To reflect propagation API changes to the PingOne Admin Console, you must create a new propagation revision. For more information, refer to Propagation revisions.

    • Plans

      A collection of unidirectional provisioning relationships between pairs of identity stores. For more information, refer to Propagation plans.

    • Stores

      A connection to an identity store owned by a customer. For more information, refer to Propagation stores.

    • Store metadata

      The configuration properties for the store type. For more information, refer to Propagation store metadata.

    • Rules

      A unidirectional provisioning relationship between a subset of identities on a source identity store and a target identity store. For more information, refer to Propagation rules.

    • Mappings

      The attribute mappings associated with identity propagation rules. For more information, refer to Propagation mappings.

    Identity propagation configuration revision instances are snapshots of the state of the plan, store, rule, and mapping entities of a configuration taken at a point in time. A new configuration revision can be created at any time, capturing the current state of those resources.

    The API supports the configuration of one or more identity propagation plans on behalf of a customer environment. After configuration, the identity propagation plans are executed in response to changes on watched identity stores. Over time, identities become consistent across all watched (source) and unwatched (target) identity stores defined in an identity propagation plan. Identities are created, updated, and deleted as specified by each plan.

    Creating, modifying, or deleting an identity propagation plan can occur at any time with no effect on the contents of the source identity store, which is the PingOne directory. All actions taken by the can be audited after-the-fact. The contents of identity stores can be modified at any time by external parties, such as administrators or other automated systems. The identity propagation system detects and logs any modifications.

    The system monitors the availability of identity stores identified in the plans. If an identity store becomes unavailable, plan execution is paused until the store becomes available again.

    Identities from managed identity stores are never duplicated or stored in full by the identity propagation system or its component services. Change summaries and change orders containing some attributes of identities are stored briefly during the provisioning process and can be present in audit logs.

    Putting it all together

    To better understand how all the components of propagation work together, refer to the use case Create a Workday propagation connection. This is the most complicated propagation use case because it has additional steps unique to Workday (clearly identified in the use case). Propagation connections with other identity stores use all steps not marked as applicable only to Workday.

    Use cases

    Provisioning events generated

    Refer to Audit Reporting Events for the events generated.

    External Groups

    External groups are groups that originate outside of PingOne. An external group is created using a Just In Time (JIT) method by setting the memberOfExternalGroups property when adding a new user. Refer to the Users data model for more information.

    External group constraints

    As opposed to internal PingOne groups, there are a few things external groups cannot do:

    • Cannot set a dynamic filter.
    • Cannot have nested groups
    • Cannot edit group memberships

    Errors will occur if:

    • The total number of internal and external groups exceeds 100,000.
    • The total number of groups for a user exceeds 10,000.

    External groups data model

    Property Type Required? Description
    groups Object[] Required A batch of groups that have been changed since the last delta.
    groups.attributes Map Required A multi valued map of attribute names and values.
    groups.operation String Optional The optional source change operation. Either CREATED, UPDATED, or DELETED to be provided when the gateway agent is performing a change detection on the token starting point.
    groups.uniqueId String Required The unique identifier of the group.
    nextToken String Optional An optional token indicating this is the last batch of groups and the starting point to request changes on the next poll request.
    startToken String Optional An optional token indicating the starting point of group changes. If null all groups will eventually be received through multiple requests.

    Import External Groups

    Propagation Revisions

    Identity propagation configuration revision instances are snapshots of the state of the plan, store, rule, and mapping entities of a configuration taken at a point in time. A new configuration revision can be created at any time, capturing the current state of those resources.

    The examples that follow show common actions to find and manage identity propagation and configuration revision resources. You need the Environment Admin role to perform operations on identity propagation and configuration revision resources.

    Identity propagation revision data model

    Property Type Required? Mutable? Description
    createdAt DateTime N/A Read-only Date and time the propagation revision was created
    createdBy String N/A Read-only Unique identifier (UUID) of the actor who created the propagation revision
    environment.id String N/A Read-only Unique identifier (UUID) of the PingOne environment associated with this propagation revision
    id String N/A Read-only Unique identifier (UUID) of the propagation revision
    previousRevision.id String N/A Read-only Unique identifier (UUID) of the previous configuration revision snapshot

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Propagation Revision


    Read Latest Propagation Revision


    Read Previous Propagation Revision

    Propagation Plans

    Identity propagation plan entities represent a collection of unidirectional provisioning relationships between pairs of identity stores. At this time, a customer can define one plan per environment, owning zero or more rules, which in turn may own zero or more mappings. Deleting a plan instance must also delete all associated rule and mapping instances. A plan is recognized by the provisioning engine when it has an active status and it defines at least one rule.

    The examples that follow show common actions to find and manage identity propagation plan resources. You need the Environment Admin role to perform operations on identity propagation plan entities.

    Propagation plan data model

    Property Type Required? Mutable? Description
    environment.id String N/A Read-only Unique identifier (UUID) of the PingOne environment associated with this propagation plan
    id String N/A Read-only Unique identifier (UUID) of the propagation plan
    name String Required Mutable Unique name of the propagation plan
    status String Optional Mutable Status of the propagation plan; defaults to INACTIVE

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Plan


    Read All Plans


    Read One Plan


    Update Plan


    Delete Plan

    Propagation Stores

    Identity propagation store entities represent a connection to an identity store owned by a customer. Store instances may be associated with multiple rule entities, and must not be deleted when referred to by a rule instance.

    The examples that follow show common actions to find and manage identity propagation store resources. You need the Environment Admin role to perform operations on identity propagation store entities.

    Propagation stores are directional relative to Ping Identity.

    • For Outbound provisioning, a store in Ping Identity is the source and an outside identity store is the target. You must create an identity propagation store of type directory as the source store. Changes to users propagate near real-time - when there is a change to a user in PingOne, the target identity store is updated immediately.

    • For Inbound provisioning, a store in Ping Identity is the target and an outside identity store is the source. You must create an identity propagation store of type PingOne as the target store. Changes to users are retrieved from the source identity store by polling the remote store every 4 hours. The polling interval is not configurable. You can also use inbound SCIM for inbound user provisioning. For more information, see SCIM.

    Every propagation store is either a target store or a source store. When you create the propagation rule, you designate, by its identifier, which identity store is the source store and which identity store is the target store. For information on inbound and outbound capabilities for each connection type, see Inbound and outbound provisioning.

    Propagation store data models by store type

    Propagation store type Propagation store data models
    Propagation store base data model (common to all propagation store types)
    Aquera Propagation store Aquera configuration data model
    Azure Active Directory SAML V2.0 Propagation store Azure Active Directory SAML V2.0 configuration data model
    directory Propagation store directory configuration data model
    GitHubEMU Propagation store GitHubEMU configuration data model
    GoogleApps Propagation store GoogleApps configuration data model
    LDAP Gateway Propagation store LDAP Gateway configuration data model
    PingOne Propagation store PingOne configuration data model
    Salesforce Propagation store Salesforce configuration data model
    SalesforceContacts Propagation store SalesforceContacts configuration data model
    SCIM Propagation store SCIM configuration data model
    ServiceNow Propagation store ServiceNow configuration data model
    Slack Propagation store Slack configuration data model
    Workday Propagation store Workday configuration data model
    Zoom Propagation store Zoom configuration data model

    Propagation store base data model

    These properties are common to all propagation store types.

    Property Type Required? Mutable? Description
    configuration Object Required Mutable Configuration properties specific to each identity propagation store as described in subsequent tables.
    description String Optional Mutable A description for the identity propagation store.
    environment.id String N/A Read-only Unique identifier (UUID) of the PingOne environment associated with the propagation store.
    id String N/A Read-only Unique identifier (UUID) of the propagation store.
    image.href String Optional Mutable The URL for the identity store resource image file.
    image.id String Optional Mutable The image ID for the identity store resource.
    managed Boolean Optional Mutable Indicates whether or not to enable deprovisioning of users for a store when it is deleted. The deprovisioning occurs when a new revision is created (POST {{apiPath}}/environments/{{envID}}/propagation/revisions).
    name String Required Mutable The name of the identity store.
    populations.id (deprecated) String[] Optional Mutable Deprecated, use populations.id in Propagation Rules. Array of population resource identifiers associated with this store.
    status String Optional Mutable The status of the identity store. The default value is INACTIVE.
    syncStatus.details String N/A Read-only Details of any synchronization errors.
    syncStatus.failedCount Integer N/A Read-only A count of failed synchronization events since the last revision.
    syncStatus.failedDeprovisionCount Integer N/A Read-only A count of failed deprovisioning synchronization events since the last revision.
    syncStatus.lastSyncAt DateTime N/A Read-only The last synchronization in yyyy-MM-dd'T'HH:mm:ss.SSS'Z' format.
    syncStatus.successCount Integer N/A Read-only A count of successful synchronization events since the last revision.
    syncStatus.syncState String N/A Read-only The current state of synchronization with a propagation store or stores. Options are either SYNCING or FAILED.
    syncStatus.userTotal Integer N/A Read-only A count of users that will synchronize to the target store based on the Rule’s filter.
    syncStatus (deprecated) Object N/A Read-only Deprecated, use syncStatus in Propagation Rules. The current state of synchronization with a propagation store or stores.
    type String Required Immutable The type of the identity store and determines the required and acceptable configuration properties. It also determines the acceptable target attribute mappings. Options are Aquera, AzureActiveDirectorySAML2, directory, LdapGateway, PingOne, Salesforce, SalesforceContacts, scim, Slack, Workday, or Zoom.

    Propagation store Aquera configuration data model

    Property Type Required? Mutable? Description
    configuration.ACCESS_TOKEN String Optional Mutable A string specifying the access token for account authentication.
    configuration.AUTHENTICATION_METHOD String Required Mutable The account authentication method. For example, OAuth Bearer Token or Basic Auth.
    configuration.BASIC_AUTH_PASSWORD String Required Mutable The password for account authentication.
    configuration.BASIC_AUTH_USER String Required Mutable The user name for account authentication.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.createNewUsers (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not users are allowed to be disabled.
    configuration.disableNewUsers (deprecated) Boolean Optional Mutable Deprecated, use configuration.DISABLE_USERS. Whether or not users are allowed to be disabled.
    configuration.GROUP_NAME_SOURCE String Optional Mutable The source to use for the group name. Options are either Common Name or Distinguished Name.
    configuration.REMOVE_ACTION String Optional Mutable The action to take when deprovisioning (removing) a user. Options are either Disable or Delete.
    configuration.SCIM_URL String Required Mutable The SCIM URL.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.
    configuration.updateNewUsers (deprecated) Boolean Optional Mutable Deprecated, useconfiguration.UPDATE_USERS. Whether or not users are allowed to be updated.

    Propagation store Azure Active Directory SAML V2.0 configuration data model

    Property Type Required? Mutable? Description
    configuration.ClientId String Required Mutable The Azure Active Directory client ID.
    configuration.ClientSecret String Required Mutable The Azure Active Directory client secret.
    configuration.CREATE_NEW_USERS (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.DEPROVISION_USER_ACTION_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.REMOVE_ACTION. The action to take when deprovisioning (removing) a user. Can be Disable or Delete.
    configuration.DEPROVISION_USERS Boolean Optional Mutable Whether or not users are allowed to be deprovisioned (removed) following action specified in configuration.REMOVE_ACTION.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not users are allowed to be disabled.
    configuration.PROVISION_DISABLED_USERS_PROV_OPT Boolean Optional Mutable Whether or not disabled users can be provisioned. Defaults to true and, if used, must be set to true.
    configuration.REMOVE_ACTION String Optional Mutable The action to take when deprovisioning (removing) a user. Can be Disable or Delete.
    configuration.REMOVE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.DISABLE_USERS. Whether or not users are allowed to be disabled.
    configuration.RemoveLicensesWhenSkuIdEmpty Boolean Required Mutable Whether or not remove licenses from user when skuId is empty.
    configuration.TenantDomain String Required Mutable The account's Azure Active Directory domain.
    configuration.UPDATE_NEW_USERS (deprecated) Boolean Optional Mutable Deprecated, useconfiguration.UPDATE_USERS. Whether or not users are allowed to be updated.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.

    Propagation store directory configuration data model

    An identity propagation store of type directory has no configuration data model.

    Propagation store GitHubEMU configuration data model

    Property Type Required? Mutable? Description
    configuration.BASE_URL String Required Mutable Base URL of the target propagation store.
    configuration.CREATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.DEPROVISION_USERS Boolean Optional Mutable Whether or not users are allowed to be deprovisioned (removed) following action specified in configuration.REMOVE_ACTION.
    configuration.GROUP_MEMBERSHIP_HANDLING String Optional Mutable Defines how memberships in a group is handled when there is an existing group with the same name. Can be Overwrite, the default, or Merge.
    configuration.OAUTH_ACCESS_TOKEN String Required Mutable OAuth 2 access token.
    configuration.REMOVE_ACTION String Optional Mutable The action to take when deprovisioning (removing) a user. Can be Disable or Delete.
    configuration.REMOVE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.DEPROVISION_USERS. Whether or not users are allowed to be deprovisioned (removed) following action specified in configuration.REMOVE_ACTION.
    configuration.UPDATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.UPDATE_USERS. Whether or not users are allowed to be updated.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.

    Propagation store GoogleApps configuration data model

    Property Type Required? Mutable? Description
    configuration.APPLICATION_NAME String Required Mutable Name of the application using the store.
    configuration.CREATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.DEPROVISION_USERS Boolean Optional Mutable Whether or not users are allowed to be deprovisioned (removed) following action specified in configuration.REMOVE_ACTION.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not users are allowed to be disabled.
    configuration.DOMAIN String Required Mutable The account's domain name.
    configuration.OAUTH_ACCESS_TOKEN String Required Mutable OAuth 2 access token.
    configuration.OAUTH_CLIENT_ID String Required Mutable GoogleApps identifier of the client associated with the propagation store.
    configuration.OAUTH_CLIENT_SECRET String Required Mutable GoogleApps secret of the client associated with the propagation store.
    configuration.OAUTH_REFRESH_TOKEN String Required Mutable OAuth 2 refresh token.
    configuration.PROVISION_DISABLED_USERS_PROV_OPT Boolean Optional Mutable Whether or not disabled users can be provisioned. Defaults to true and, if used, must be set to true.
    configuration.REMOVE_ACTION String Optional Mutable The action to take when deprovisioning (removing) a user. Can be Disable or Delete.
    configuration.REMOVE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.DEPROVISION_USERS. Whether or not users are allowed to be deprovisioned (removed) following action specified in configuration.REMOVE_ACTION.
    configuration.UPDATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.UPDATE_USERS. Whether or not users are allowed to be updated.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.

    Propagation store LDAP Gateway configuration data model

    Property Type Required? Mutable? Description
    configuration.ATTRIBUTE_METADATA String Optional Mutable User-defined attribute metadata.
    configuration.CLIENT_ID String Required Mutable Identifier of the client for authentication.
    configuration.CLIENT_SECRET String Required Mutable Secret of the client for authentication.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.DELETE_USERS Boolean Optional Mutable Whether or not users are allowed to be deleted.
    configuration.ENVIRONMENT_ID String Required Immutable Identifier, a UUID, of the environment the connector services.
    configuration.GATEWAY_BASE_URL String Required Mutable Base URL of the gateway.
    configuration.GATEWAY_ID String Required Mutable Identifier of the gateway to which the connector connects.
    configuration.LDAP_TYPE String Required Immutable Type of LDAP gateway; can be PingDirectory or Microsoft Active Directory.
    configuration.OAUTH_URL String Required Mutable URL to which OAUTH requests are sent.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.

    Propagation store PingOne configuration data model

    Property Type Required? Mutable? Description
    configuration.CLIENT_ID String Optional Mutable Unique identifier (UUID) of the PingOne client associated with the propagation store.
    configuration.CLIENT_SECRET String Optional Mutable The PingOne client secret.
    configuration.CREATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.DEFAULT_AUTH_METHOD String Optional Mutable The default authentication method. Options are Email 1, SMS 1, or Voice 1.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not users are allowed to be disabled.
    configuration.ENVIRONMENT_ID Sring Required Mutable Unique identifier (UUID) of the PingOne environment associated with the propagation store.
    configuration.MFA_USER_DEVICE_MANAGEMENT String Optional Mutable How to manage MFA user devices when synchronizing. Options are either Merge with devices in PingOne or Overwrite devices in PingOne.
    configuration.PROVISION_DISABLED_USERS_PROV_OPT Boolean Optional Mutable Whether or not disabled users can be provisioned.
    configuration.REGION String Required Mutable A supported region. Options are "NA", "CA", "EU", or "AP".
    configuration.REMOVE_ACTION String Optional Mutable The action to take when deprovisioning (removing) a user. Options are either Disable or Delete.
    configuration.REMOVE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.DISABLE_USERS. Whether or not users are allowed to be disabled.
    configuration.UPDATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.UPDATE_USERS. Whether or not users are allowed to be updated.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.

    Propagation store Salesforce configuration data model

    Property Type Required? Mutable? Description
    configuration.ACCOUNT_ID String Optional Mutable The Salesforce account ID.
    configuration.CLIENT_ID String Required Mutable The Salesforce client ID.
    configuration.CLIENT_SECRET String Required Mutable The Salesforce client secret.
    configuration.CREATE_NEW_USERS (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not users are allowed to be disabled.
    configuration.ENABLE_COMMUNITIES Boolean Required Mutable Whether or not to enable Salesforce communities.
    configuration.FREEZE_USER_FLAG Boolean Required Mutable Whether the user account is frozen.
    configuration.OAUTH_ACCESS_TOKEN String Required Mutable OAuth access token for account authentication.
    configuration.OAUTH_REFRESH_TOKEN String Required Mutable OAuth refresh token for account authentication.
    configuration.PERMISSION_SET_MANAGEMENT String Required Mutable The permission sets to be merged with Salesforce.
    configuration.PROFILE_ID String Optional Mutable The Salesforce profile ID.
    configuration.PROVISION_DISABLED_USERS Boolean Optional Mutable Whether or not disabled users can be provisioned.
    configuration.SALESFORCE_DOMAIN String Required Mutable The account's salesforce.com domain.
    configuration.UPDATE_NEW_USERS (deprecated) Boolean Optional Mutable Deprecated, use configuration.UPDATE_USERS. Whether or not users are allowed to be updated.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.

    Propagation store SalesforceContacts configuration data model

    Property Type Required? Mutable? Description
    configuration.ACCOUNT_ID String Optional Mutable The Salesforce account ID.
    configuration.CLIENT_ID String Required Mutable Unique identifier (UUID) of the Salesforce client associated with the propagation store.
    configuration.CLIENT_SECRET String Required Mutable The Salesforce client secret.
    configuration.CREATE_NEW_USERS (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not users are allowed to be disabled.
    configuration.ENABLE_COMMUNITIES Boolean Optional Mutable Whether or not to enable Salesforce communities.
    configuration.FREEZE_USER_FLAG Boolean Optional Mutable Whether the user account is frozen.
    configuration.OAUTH_ACCESS_TOKEN String Required Mutable OAuth access token for account authentication.
    configuration.OAUTH_REFRESH_TOKEN String Required Mutable OAuth refresh token for account authentication.
    configuration.PERMISSION_SET_MANAGEMENT String Optional Mutable The permission sets to be merged with Salesforce.
    configuration.PROFILE_ID String Optional Mutable The Salesforce profile ID.
    configuration.PROVISION_DISABLED_USERS Boolean Optional Mutable Whether or not disabled users can be provisioned.
    configuration.RECORD_TYPE String Required Mutable The type of Salesforce record. Options are either Lead or Contact.
    configuration.SALESFORCE_DOMAIN String Required Mutable The account's salesforce.com domain.
    configuration.UPDATE_NEW_USERS (deprecated) Boolean Optional Mutable Deprecated, useconfiguration.UPDATE_USERS. Whether or not users are allowed to be updated.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.

    Propagation store SCIM configuration data model

    Property Type Required? Mutable? Description
    configuration.AUTHENTICATION_METHOD String Required Mutable The account authentication method. Can be OAuth 2 Client Credentials, OAuth 2 Bearer Token, or Basic Authentication.
    configuration.AUTHORIZATION_TYPE String Required Mutable The authorization header type.
    configuration.BASIC_AUTH_PASSWORD String Required/Optional Mutable The password for account authentication. Required when configuration.AUTHENTICATION_METHOD is Basic Authentication, otherwise optional.
    configuration.BASIC_AUTH_USER String Required/Optional Mutable The user name for account authentication. Required when configuration.AUTHENTICATION_METHOD is Basic Authentication, otherwise optional.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.createNewUsers (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not users are allowed to be disabled.
    configuration.disableNewUsers (deprecated) Boolean Optional Mutable Deprecated, use configuration.DISABLE_USERS. Whether or not users are allowed to be disabled.
    configuration.GROUP_MEMBERSHIP_HANDLING String Optional Mutable Defines how memberships in a group is handled when there is an existing group with the same name. Can be Overwrite, the default, or Merge.
    configuration.GROUP_NAME_SOURCE String Optional Mutable The source to use for the group name. Options are either Common Name or Distinguished Name.
    configuration.GROUPS_RESOURCE String Optional Mutable API endpoint path to the group entity.
    configuration.OAUTH_ACCESS_TOKEN String Required/Optional Mutable OAuth access token for account authentication. Required when configuration.AUTHENTICATION_METHOD is OAuth 2 Bearer Token, otherwise optional.
    configuration.OAUTH_CLIENT_ID String Required/Optional Mutable OAuth client ID. Required when configuration.AUTHENTICATION_METHOD is OAuth 2 Client Credentials, otherwise optional.
    configuration.OAUTH_CLIENT_SECRET String Required/Optional Mutable OAuth client secret. Required when configuration.AUTHENTICATION_METHOD is OAuth 2 Client Credentials, otherwise optional.
    configuration.OAUTH_TOKEN_REQUEST String Required/Optional Mutable OAuth token request endpoint. Required when configuration.AUTHENTICATION_METHOD is OAuth 2 Bearer Token, otherwise optional.
    configuration.REMOVE_ACTION String Optional Mutable The action to take when deprovisioning (removing) a user. Options are either Disable or Delete.
    configuration.SCHEMA_EXTENSION_URNS String Optional Mutable A comma-delimited list of schema URNS in which to look for custom attributes.
    configuration.SCIM_URL String Required Mutable The SCIM URL.
    configuration.SCIM_VERSION String Required Mutable The SCIM version.
    configuration.UNIQUE_USER_IDENTIFIER String Required Mutable Specifies the unique user identifier to use. Options are either userName or workEmail.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.
    configuration.updateNewUsers (deprecated) Boolean Optional Mutable Deprecated, use configuration.UPDATE_USERS. Whether or not users are allowed to be updated.
    configuration.USER_FILTER String Required Mutable A string that specifies a SCIM filter expression.
    configuration.USERS_RESOURCE String Required Mutable API endpoint path to the user entity.

    Propagation store ServiceNow configuration data model

    Property Type Required? Mutable? Description
    configuration.Administrator_Password String Required Mutable Password for the administrator.
    configuration.Administrator_Username String Required Mutable Username for the administrator.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.createNewUsers (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.DEPROVISION_USERS Boolean Optional Mutable Whether or not users are allowed to be deprovisioned (removed) following action specified in configuration.REMOVE_ACTION.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not new users are allowed to be disabled.
    configuration.disableNewUsers (deprecated) Boolean Optional Mutable Deprecated, use configuration.DISABLE_USERS. Whether or not users are allowed to be disabled.
    configuration.REMOVE_ACTION String Optional Mutable The action to take when deprovisioning (removing) a user. Must be set to Disable.
    configuration.ServiceNow_Instance_Name (deprecated) String Optional Mutable Deprecated, use configuration.ServiceNow_Url. Instance name for the ServiceNow account.
    configuration.ServiceNow_Url String Required Mutable The URL for the ServiceNow account.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.
    configuration.updateNewUsers (deprecated) Boolean Optional Mutable Deprecated, use configuration.UPDATE_USERS. Whether or not users are allowed to be updated.

    Propagation store Slack configuration data model

    Property Type Required? Mutable? Description
    configuration.CREATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.DEPROVISION_USERS Boolean Optional Mutable Whether or not users are allowed to be deprovisioned (removed) following action specified in configuration.REMOVE_ACTION.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not users are allowed to be disabled. Must be set to true.
    configuration.GROUP_MEMBERSHIP_HANDLING String Optional Mutable Defines how memberships in a group is handled when there is an existing group with the same name. Can be Overwrite, the default, or Merge.
    configuration.OAUTH_ACCESS_TOKEN String Required Mutable OAuth 2 access token.
    configuration.REMOVE_ACTION String Optional Mutable The action to take when deprovisioning (removing) a user. Must be set to Disable.
    configuration.REMOVE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.DEPROVISION_USERS. Whether or not users are allowed to be disabled.
    configuration.UNIQUE_USER_IDENTIFIER String Required Mutable The unique user identifier, must be either primaryEmail or userName.
    configuration.UPDATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.UPDATE_USERS. Whether or not users are allowed to be updated.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.

    Propagation store Workday configuration data model

    Property Type Required? Mutable? Description
    configuration.excludeContingentWorkers Boolean Optional Mutable Whether or not contingent workers are excluded.
    configuration.excludeEmployees Boolean Optional Mutable Whether or not employees are excluded.
    configuration.excludeInactiveWorkers Boolean Optional Mutable Whether or not inactive workers are excluded.
    configuration.host String Optional Mutable The Workday API host.
    configuration.integrationSystemIds String Optional Mutable A comma-delimited list of one or more System IDs of Workday integration systems that contain field overrides (custom attributes that exist on customers' Workday tenant).
    configuration.password String Required Mutable The password for account authentication.
    configuration.tenantId String Required Mutable The Workday tenant ID.
    configuration.username String Required Mutable The user name for account authentication.

    Propagation store Zoom configuration data model

    Property Type Required? Mutable? Description
    configuration.API_KEY (deprecated) String Required/Optional Mutable Deprecated, use configuration.OAUTH_* properties with AUTHENTICATION_METHOD of OAuth Bearer Token. The client API key. Required when AUTHENTICATION_METHOD is JWT Bearer Token, otherwise optional.
    configuration.API_SECRET (deprecated) String Required/Optional Mutable Deprecated, use configuration.OAUTH_* properties with AUTHENTICATION_METHOD of OAuth Bearer Token. The client API secret. Required when AUTHENTICATION_METHOD is JWT Bearer Token, otherwise optional.
    configuration.AUTHENTICATION_METHOD String Optional Mutable Account authentication method. Case sensitive. Can be OAuth Bearer Token or JWT Bearer Token (deprecated). Defaults to OAuth Bearer Token.
    configuration.CREATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.CREATE_USERS. Whether or not users are allowed to be created.
    configuration.CREATE_USERS Boolean Optional Mutable Whether or not users are allowed to be created.
    configuration.DEPROVISION_USERS Boolean Optional Mutable Whether or not users are allowed to be removed (deprovisioned) following the action configured in configuration.REMOVE_ACTION.
    configuration.DISABLE_USERS Boolean Optional Mutable Whether or not users are allowed to be disabled.
    configuration.OAUTH_ACCOUNT_ID String Required/Optional Mutable OAuth account identifier. Required when AUTHENTICATION_METHOD is OAuth Bearer Token, otherwise optional.
    configuration.OAUTH_CLIENT_ID String Required/Optional Mutable OAuth client identifier. Required when AUTHENTICATION_METHOD is OAuth Bearer Token, otherwise optional.
    configuration.OAUTH_CLIENT_SECRET String Required/Optional Mutable OAuth client secret. Required when AUTHENTICATION_METHOD is OAuth Bearer Token, otherwise optional.
    configuration.OAUTH_TOKEN_URL String Required/Optional Mutable OAuth token request endpoint. Required when AUTHENTICATION_METHOD is OAuth Bearer Token, otherwise optional.
    configuration.REMOVE_ACTION String Optional Mutable The action to take when removing (deprovisioning) a user. Options are either Disable or Delete.
    configuration.REMOVE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.DEPROVISION_USERS for disabling users and configuration.DEPROVISION_USERS for deleting users. Whether or not users are allowed to be disabled and deleted.
    configuration.SCIM_URL String Required Mutable The SCIM URL.
    configuration.UPDATE_USERS_PROV_OPT (deprecated) Boolean Optional Mutable Deprecated, use configuration.UPDATE_USERS. Whether or not users are allowed to be updated.
    configuration.UPDATE_USERS Boolean Optional Mutable Whether or not users are allowed to be updated.

    Error codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Store (Aquera)


    Create Store (AzureActiveDirectorySAML2)


    Create Store (directory)


    Create Store (GitHubEMU)


    Create Store (GoogleApps)


    Create Store (LdapGateway)


    Create Store (PingOne)


    Create Store (Salesforce)


    Create Store (SalesforceContacts)


    Create Store (SCIM)


    Create Store (ServiceNow)


    Create Store (Slack)


    Create Store (Workday)


    Create Store (Zoom)


    Test Connection Configuration


    Read All Stores


    Read One Store


    Read All Synced Stores for a User (deprecated)


    Read One Synced Store for a User (deprecated)


    Update Store


    Delete Store

    Propagation Store Metadata

    Identity propagation store metadata entities represent the configuration properties for the store type. The configuration attribute specifies connection information for a store. The response returns the identity store metadata, specifically the connectionProfiles and the connectionAttributes metadata. The connection profile data provides the information needed to create the identity store configuration connection, and the connection attribute metadata describes available attribute details for target identity store attribute mappings.

    The bodies for the Identity Propagation Store Metadata requests can be the store type configuration or an empty body (that is, {} and not no body at all). If there is any body content, the service attempts to use the configuration to connect to the store provider (provisioner) to get dynamic metadata, if the provisioner supports that. The body can be empty, which returns the basic static metadata, but if the configuration of the store is in the body, some provisioners support getting dynamic attribute metadata when the store provider is queried for user attributes that may include additional attributes. Examples include the maximum configurable metadata for each store type.

    For more information about identity stores, refer to Propagation stores.

    You need the Environment Admin role to perform operations on identity propagation store metadata entities.

    Propagation Store Metadata Data Model

    Property Type Required? Mutable? Description
    information Object N/A Read-only General information on the connection as described in Properties of information{}
    connectionProfiles Object[] N/A Read-only Array of objects that define different profiles for the connection, such as defining different authentication methods described in Properties of connectionProfiles[]
    attributeMetadata Object N/A Read-only List of all attributes of the connection described in Properties of attributeMetadata{}
    Properties of information{}
    Property Type Required? Mutable? Description
    baseURLRequired Boolean N/A Read-only Whether a base URL is required
    connectionInformationRequired Boolean N/A Read-only Whether connection information is required
    displayName String N/A Read-only Suggested text to show for this connection on a user interface
    identityProvider Boolean N/A Read-only Whether the store is an identity provider
    imageUrl String N/A Read-only URL to an image for the store
    key String N/A Read-only Type of connection; can be Aquera, AzureActiveDirectorySAML2, directory, PingOne, Salesforce, SalesforceContacts, scim, Slack, Workday, or Zoom
    version String N/A Read-only Version of this metadata
    Properties of connectionProfiles[]
    Property Type Required? Mutable? Description
    connectionAttributes.description String N/A Read-only Description of the attribute
    connectionAttributes.displayLabel String N/A Read-only Suggested text to show for this attribute on a user interface
    connectionAttributes.key String N/A Read-only JSON key used to retrieve the attribute value
    connectionAttributes.possibleValues String[] N/A Read-only Array of all permitted values for this attribute
    connectionAttributes.required Boolean N/A Read-only Whether the attribute is required
    connectionAttributes.sensitive Boolean N/A Read-only Whether the attribute is sensitive and requires special handling. Examples of sensitive attributes are passwords and credit card information
    connectionAttributes.typeBoolean Boolean N/A Read-only Whether the attribute is a boolean data type
    description String N/A Read-only Description of the connection
    documentationUrl String N/A Read-only URL to the documentation for the store
    name String N/A Read-only Unique name for the connection
    primary Boolean N/A Read-only Whether this is the primary identity store
    specUrl String N/A Read-only URL to the specification for the store
    Properties of attributeMetadata{}

    The attributeMetadata object contains two objects, userAttributes and groupAttributes, that merit further explanation. Each object contains any number of keys, whose values are objects and named like homeStreetAddress or workPostalCode, that represent a specific attribute of users or groups in the store of the connection. These attribute objects have properties defined in Properties of attributes within userAttributes{} and groupAttributes{} that are common to userAttributes and groupAttributes.

    Property Type Required? Mutable? Description
    capabilities.maxResources Integer N/A Read-only Maximum permitted quantity of this capability
    capabilities.type String N/A Read-only Represents the capability
    enhancements String[] N/A Read-only Array of enhancements (specific behaviors that the provisioner supports), specifically: treat membership as an attribute of a user (MEMBERSHIP_AS_USER_ATTRIBUTE); treat membership as an attribute on a group (MEMBERSHIP_AS_GROUP_ATTRIBUTE); has a get changed type that returns changes across multiple resource-sets (CAN_HANDLE_GET_ALL_CHANGED); operators supported by GET_MATCHING_USERS (OP_AND, OP_OR, OP_NOT, OP_EQ, OP_NE, OP_GT, OP_LT, OP_GTE, _LTE, OP_IN)
    userAttributes Object N/A Read-only User attributes, each an object containing the properties of the attribute
    groupAttributes Object N/A Read-only Group attributes, each an object containing the properties of the attribute
    Properties of attributes within userAttributes{} and groupAttributes{}
    Property Type Required? Mutable? Description
    attributeType String N/A Read-only Type of attribute. This can be STRING, DECIMAL, INTEGER, BOOLEAN
    byteLength Integer N/A Read-only Maximum size of the field in bytes for an INTEGER attribute
    caseSensitive Boolean N/A Read-only Whether value is case sensitive for a STRING attribute
    creatable Boolean N/A Read-only Whether the attribute can be created
    defaultValue N/A Read-only Value that is used as the attribute value if no value is provided in the request and defaultedOnCreate is true
    defaultedOnCreate Boolean N/A Read-only Whether the attribute is defaulted, requires either a provided value or defaultValue, when created
    derived Boolean N/A Read-only Whether the attribute is derived from the value of another attribute
    digits Integer N/A Read-only Maximum number of digits permitted for an INTEGER attribute
    displayName String N/A Read-only Suggested text for this attribute to show on a user interfacee
    distinguishingAttribute Boolean N/A Read-only Whether this attribute can be used as a "secondary GET" option. }
    key String N/A Read-only JSON key used to retrieve the user or group attribute value
    maxLength Integer N/A Read-only Maximum number of characters permitted for a STRING attribute
    maxNumberOfValues Integer N/A Read-only If the attribute is a collection of values (multi-valued), maximum number of values permitted
    minLength Integer N/A Read-only Minimum number of characters permitted for a STRING attribute
    minNumberOfValues Integer N/A Read-only If the attribute is a collection of values (multi-valued), minimum number of values permitted
    nillable Boolean N/A Read-only Whether the attribute value can be empty or null-valued
    ordered Boolean N/A Read-only Whether the order of the attribute collection matters
    pattern String N/A Read-only Regular expression pattern which describes the attribute
    picklistValues [] N/A Read-only Array of all permitted values for this attribute
    precision Integer N/A Read-only Maximum quantity of digits that can be stored to the right of the decimal point for a DECIMAL attribute, excludes the decimal point itself
    referenceAttribute String[] N/A Read-only Array of other names by which the attribute may be referenced, such as emailAddress for email
    requiredOnCreate Boolean N/A Read-only Whether the attribute is required when credating the connection
    requiredOnUpdate Boolean N/A Read-only Whether the attribute is required when updating the connection
    scale Integer N/A Read-only Maximum quantity of digits that can be stored to the left of the decimal for a DECIMAL attribute
    sensitive Boolean N/A Read-only Whether the attribute is sensitive and requires special handling, such as passwords and credit card information
    standard String N/A Read-only ISO standard applicable to the attribute
    type String N/A Read-only Data type of the attribute; can be STRING, DECIMAL, INTEGER, BOOLEAN
    unique Boolean N/A Read-only Whether the attribute value must be unique
    updateable Boolean N/A Read-only Whether the attribute can be updated
    Response codes
    Code Message
    201 Successfully created.
    400 The request could not be completed.

    Identity Propagation Store Metadata (Aquera)


    Identity Propagation Store Metadata (AzureActiveDirectorySAML2)


    Identity Propagation Store Metadata (directory)


    Identity Propagation Store Metadata (GitHubEMU)


    Identity Propagation Store Metadata (GoogleApps)


    Identity Propagation Store Metadata (LdapGateway)


    Identity Propagation Store Metadata (PingOne)


    Identity Propagation Store Metadata (Salesforce)


    Identity Propagation Store Metadata (SalesforceContacts)


    Identity Propagation Store Metadata (SCIM)


    Identity Propagation Store Metadata (ServiceNow)


    Identity Propagation Store Metadata (Slack)


    Identity Propagation Store Metadata (Workday)


    Identity Propagation Store Metadata (Zoom)

    Propagation Rules

    Identity propagation rule entities represent a unidirectional provisioning relationship between a subset of identities on a source identity store and a target identity store. Rules contain attribute mappings, which must be added manually. The PingOne API does not include the default attribute mappings defined by each identity store automatically.

    The PingOne Admin Console does display the default attribute mappings. When defining the connection in the Admin Console, if a rule does not have any user-defined mappings, the identity store's default mappings can be used. If at least one attribute mapping is defined in a rule, then all default mappings are ignored.

    The examples that follow show common actions to find and manage identity propagation rule resources. You need the Environment Admin role to perform operations on identity propagation rule entities.

    Propagation rule data model

    Property Type Required? Mutable? Description
    active Boolean Optional Mutable Whether this rule is active; defaults to false.
    createdAt DateTime N/A Read-only Date and time the propagation rule was created.
    configuration Object Required/Optional Mutable An Outbound LDAP configuration data object is required for outbound LDAP Gateway stores (type LdapGateway). An Inbound LDAP configuration data object is required for an inbound LDAP Gateway stores (where users user are provisioned into PingOne). Optional for all other cases and ignored if used.
    deprovision (deprecated) Boolean Optional Mutable Deprecated, use managed in Propagation Stores. Whether to enable deprovisioning of users for a store when it is deleted. The deprovisioning occurs when a new revision is created (Create Propagation Revision). Not applicable on writeback rules and ignored if used.
    description String Optional Mutable Description of the propagation rule.
    environment.id String N/A Read-only Identifier (UUID) of the PingOne environment associated with the propagation rule.
    groups Object[] Optional Mutable Array of objects, each of which contains the identifier of a group.
    groups.id String Required Mutable Identifier (UUID) of the group to include in this propagation rule.
    id String N/A Read-only Identifier (UUID) of the propagation rule.
    name String Required Mutable Unique name of the propagation rule.
    parentRule.id String Required/Optional Immutable Identifier (UUID) of the inbound propagation rule associated with this writeback propagation rule. Required for a writeback propagation rule, but should not be used with any other propagation rule.
    plan.id String Required Immutable Identifier (UUID) of the propagation plan associated with this propagation rule.
    populationExpression String Optional Mutable SCIM filter on any user attribute of the source identity store to filter the source population. Not applicable on writeback rules and ignored if used.
    populations.id (deprecated) String[] Optional Mutable Deprecated, use populationExpression. If both are present, populationExpression applies and populations.id ignored. Array of identifiers (UUID) of populations associated with this propagation rule. Not applicable on writeback rules and ignored if used.
    ruleType String Required Immutable Type of this propagation rule. Can be any type from Propagation store type of Propagation store data models by store type type.
    sourceStore.displayName String Required Immutable Name displayed in the admin console for the source identity store associated with this propagation rule.
    sourceStore.id String Required Immutable Identifier (UUID) of the source identity store associated with this propagation rule.
    sourceStore.type String Required Immutable Type of rule of the source identity store associated with this propagation rule. Can be INBOUND or OUTBOUND.
    syncStatus.failedCount Integer N/A Read-only Count of failed synchronization events since the last revision.
    syncStatus.failedDeprovisionCount Integer N/A Read-only Count of failed deprovisioning synchronization events since the last revision.
    syncStatus.groupFailedCount Integer N/A Read-only Count of failed group synchronization events since the last revision.
    syncStatus.groupSuccessCount Integer N/A Read-only Count of successful group synchronization events since the last revision.
    syncStatus.groupTotal Integer N/A Read-only Count of groups that will synchronize to the target store.
    syncStatus.lastResyncAt DateTime N/A Read-only Last rule resynchronization in yyyy-MM-dd'T'HH:mm:ss.SSS'Z' format.
    syncStatus.partialSyncTotal Integer N/A Read-only Count of users for which an account exists at the target but is out of sync with the source because onUpdate is set to false.
    syncStatus.sourceDetails String N/A Read-only Details of any source synchronization errors.
    syncStatus.sourceLastSyncAt DateTime N/A Read-only Last source synchronization in yyyy-MM-dd'T'HH:mm:ss.SSS'Z' format.
    syncStatus.sourceSyncState String N/A Read-only Current state of synchronization with a source store. Can be FAILED, POLLING, or POLL_COMPLETE.
    syncStatus.successCount Integer N/A Read-only Count of successful synchronization events since the last revision.
    syncStatus.targetDetails String N/A Read-only Details of any target synchronization errors.
    syncStatus.targetLastSyncAt DateTime N/A Read-only Last target synchronization in yyyy-MM-dd'T'HH:mm:ss.SSS'Z' format.
    syncStatus.targetSyncState String N/A Read-only Current state of synchronization with a target store. Can be SYNCING, SYNC_COMPLETE, or FAILED.
    syncStatus.unsyncTotal Integer N/A Read-only Count of users for which an account exists at the target but was not synced with the source because onCreate is set to false.
    syncStatus.userTotal Integer N/A Read-only Count of users that will synchronize to the target store based on the propagation rule's filter.
    targetStore.displayName String Required Immutable Name displayed in the admin console for the target identity store associated with this propagation rule.
    targetStore.id String Required Immutable Identifier (UUID) of the target identity store associated with this propagation rule.
    targetStore.type String Required Immutable Type of rule of the target identity store associated with this propagation rule. Can be INBOUND or OUTBOUND.
    updatedAt DateTime N/A Read-only Date and time the propagation rule was updated. Can be null.

    Synchronization states are:

    • FAILED - An error occurred polling users from the source or pushing users to the target.
    • POLL_COMPLETE - Polling has completed on the source.
    • POLLING - Store is polling for users' information from the source to be potentially synchronized.
    • SYNC_COMPLETE - Synchronization has completed on the target.
    • SYNCING - Synchronizing users to the target is successful.
    Outbound LDAP configuration data object

    This outbound LDAP configuration object is required for outbound LDAP Gateway stores (type LdapGateway). An Inbound LDAP configuration data object is required for inbound LDAP Gateway stores (where users user are provisioned into PingOne). For all other cases, optional and ignored if used.

    Property Type Required? Mutable? Description
    BASE_DN String Required Mutable The location in the LDAP directory structure where users will be created.
    RDN_ATTRIBUTE String Required Mutable Relative distinguished name is the portion of the DN (distinguished name) that uniquely identifies the user in the LDAP directory. Must be cn for Microsoft Active Directory, uid for PingDirectory.
    Inbound LDAP configuration data object

    This inbound LDAP configuration object is required for inbound LDAP Gateway stores (where users are provisioned into PingOne). An Outbound LDAP configuration data object is required for outbound LDAP Gateway stores (type LdapGateway). For all other cases, optional and ignored if used.

    If AUTHENTICATE_VIA_AD_LDAP is false, then the GATEWAY_USER_TYPE_* configuration attributes are optional and ignored if used. Note that USERS_BASE_DN is always required and unaffected by the value of AUTHENTICATE_VIA_AD_LDAP.

    AUTHENTICATE_VIA_AD_LDAP can only be true if a userTypes object is configured in the gateway as returned by Read One Gateway. The remaining configuration attributes are required and must exactly match the corresponding attribute in the userTypes array object.

    For example, the object in the userTypes array is:

    "userTypes": [
        {
            "id": "522eea26-d268-4494-a826-434a6b24f35d",
            "name": "AD user type",
            "passwordAuthority": "LDAP",
            "searchBaseDn": "OU=inbound,OU=test,OU=LdapGatewayTest,DC=ldap-test1,DC=lab",
            "orderedCorrelationAttributes": [
                "dn"
            ],
            "allowPasswordChanges": false
        }
    ],
    

    The mapping is:

    • allowPasswordChanges maps to GATEWAY_USER_TYPE_ALLOW_PASSWORD_CHANGES
    • id maps to GATEWAY_USER_TYPE_ID
    • name maps to GATEWAY_USER_TYPE_NAME
    • orderedCorrelationAttributes maps to GATEWAY_USER_TYPE_CORRELATION_ATTRIBUTES where, for multiple attributes, the JSON array of strings is converted to a single comma-separated string.
    • passwordAuthority maps to GATEWAY_USER_TYPE_PASSWORD_AUTHORITY
    Property Type Required? Mutable? Description
    AUTHENTICATE_VIA_AD_LDAP Boolean Required Mutable Whether users are authenticated using LDAP.
    GATEWAY_USER_TYPE_ALLOW_PASSWORD_CHANGES Boolean Required/Optional Mutable Whether users are permitted to change their password. Required as described in this section, optional for all other rules and ignored if used.
    GATEWAY_USER_TYPE_CORRELATION_ATTRIBUTES String Required/Optional Mutable A comma-separated string of one or more attributes. Required as described in this section, optional for all other rules and ignored if used.
    GATEWAY_USER_TYPE_ID String Required/Optional Mutable Identifier (UUID) of the user type to which this configuration applies. Required as described in this section, optional for all other rules and ignored if used.
    GATEWAY_USER_TYPE_NAME String Required/Optional Mutable Name of the user type to which this configuration applies. Required as described in this section, optional for all other rules and ignored if used.
    GATEWAY_USER_TYPE_PASSWORD_AUTHORITY String Required/Optional Mutable Password authority associated with the user type. Required as described in this section, optional for all other rules and ignored if used.
    MFA_USER_DEVICE_MANAGEMENT String Optional Mutable How incoming user devices are managed. Can be Merge with devices in PingOne, Overwrite devices in PingOne, or Do not manage devices. For more information, see Provisioning options reference.
    USERS_BASE_DN String Required Mutable The LDAP directory location from where the users will be synced into PingOne.

    Propagation synchronized rule data model

    Property Type Required? Mutable? Description
    details String N/A Read-only Details of any rule synchronization errors.
    environment.id String N/A Read-only Identifier (UUID) of the PingOne environment associated with the propagation rule.
    lastSyncAt DateTime N/A Read-only Last rule synchronization in yyyy-MM-dd'T'HH:mm:ss.SSS'Z' format.
    rule.active Boolean N/A Read-only Whether the rule is active or not.
    rule.id String N/A Read-only Identifier (UUID) of the synchronized rule.
    rule.name String N/A Read-only Name of the synchronized rule.
    sourceStore.id String N/A Read-only Identifier (UUID) of the source identity store associated with this propagation rule.
    sourceStore.name String N/A Read-only Name of the source identity store associated with this propagation rule.
    sourceStore.type String N/A Read-only Type of the source identity store associated with this propagation rule.
    status String N/A Read-only Status of the rule synchronization. Can be SUCCESS or FAILED.
    syncedMemberships Object[] N/A Read-only Array of objects describing the group memberships of the rule and its status within the group.
    syncedMemberships.details String N/A Read-only Details of any rule group synchronization errors.
    syncedMemberships.group.id String N/A Read-only Identifier (UUID) of the group of which the rule is a member.
    syncedMemberships.lastSyncAt DateTime N/A Read-only Last rule group synchronization in yyyy-MM-dd'T'HH:mm:ss.SSS'Z' format.
    syncedMemberships.status String N/A Read-only Status of the rule group synchronization. Can be SUCCESS or FAILED.
    targetStore.id String N/A Read-only Identifier (UUID) of the target identity store associated with this propagation rule.
    targetStore.name String N/A Read-only Name of the target identity store associated with this propagation rule.
    targetStore.type String N/A Read-only Type of the target identity store associated with this propagation rule.
    type String N/A Read-only Status of the rule synchronization. Can be INBOUND or OUTBOUND.

    Additional rule data models by request

    Read All Rules and Read One Plan's Rules return a Propagation rule data model modified as described in the table.

    Property Type Required? Mutable? Description
    rules Object[] N/A Read-only Array of rule objects as defined in Propagation rule data model
    rules.rule Object N/A Read-only Rule object, replaces id in Propagation rule data model
    rules.rule.id String N/A Read-only Unique identifier (UUID) of the propagation rule
    rules.rule.name String N/A Read-only Name of the propagation rule

    The requests Read All Synced Rules for a User, Read One Synced Rule for a User, Read All Synced Rules for a Group, and Read One Synced Rule for a Group return a Propagation rule data model modified as described in the table.

    Property Type Required? Mutable? Description
    syncedRules Object[] N/A Read-only Array of synchronized rule objects as defined in [Propagation rule data model]#propagation-rule-data-model)
    syncedRules.rule Object N/A Read-only Rule object, replaces id in Propagation rule data model
    syncedRules.rule.active Boolean N/A Read-only Whether the rule is active or not
    syncedRules.rule.id String N/A Read-only Unique identifier (UUID) of the propagation rule
    syncedRules.rule.name String N/A Read-only Name of the propagation rule

    The requests Read All Synced Groups for a Rule and Read One Synced Group for a Rule return a Groups data model modified as described in the table.

    Property Type Required? Mutable? Description
    syncedGroups Object[] N/A Read-only Array of synchronized group objects as defined in Groups data model
    syncedGroups.group Object N/A Read-only Group object, replaces id in Groups data model
    syncedGroups.group.id String N/A Read-only Unique identifier (UUID) of the group

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Rule


    Create Rule (Writeback)


    Read All Rules


    Read One Rule


    Read One Plan's Rules


    Read All Synced Rules for a User


    Read One Synced Rule for a User


    Read All Synced Rules for a Group


    Read One Synced Rule for a Group


    Read All Synced Groups for a Rule


    Read One Synced Group for a Rule


    Update Rule


    Delete Rule

    Propagation Mappings

    Identity propagation mapping entities represent the attribute mappings associated with identity propagation rules. A mapping entity identified an attribute in the source identity store that is mapped to an attribute in the target identity store.

    The examples that follow show common actions to find and manage identity propagation mapping resources. You need the Environment Admin role to perform operations on identity propagation mapping entities.

    Propagation mapping data model

    Property Type Required? Mutable? Description
    attributeMappingType Boolean Optional Mutable Categorizes the attribute mapping as either group or user attribute mapping.
    environment.id String N/A Read-only Identifier (UUID) of the PingOne environment for the propagation mapping
    expression String Required/Optional Mutable PingOne Expression Language (PEL) expression to create the target attribute, such as supply a literal value, reformat the source value, or combine source user attributes. Either expression or sourceAttribute is required but not both. For more information on PEL, refer to PingOne expression language
    id String N/A Read-only Identifier (UUID) of the propagation mapping
    name String Required Mutable Unique name of the propagation mapping
    rule.id String Required Immutable Identifier (UUID) of the rule to which this mapping applies
    sourceAttribute String Required/Optional Mutable Source attribute for the mapping. Either expression or sourceAttribute is required but not both.
    targetAttribute String Required Mutable Target attribute for the mapping

    Response codes

    Code Message
    200 Successful operation.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Rule Mapping


    Read One Mapping


    Read One Rule Mapping


    Update Mapping


    Delete Mapping

    SCIM

    The System for Cross-domain Identity Management (SCIM) defines an open standard protocol for identity management via HTTP in RFC 7644. The PingOne SCIM API provides support for this protocol within the PingOne platform.

    This PingOne SCIM API makes PingOne a SCIM Service Provider - the system which accepts incoming user provisioning and user update requests. Being a SCIM Client - sending identities outbound for creation in foreign systems - is separate and handled by Identity Propagation (Provisioning) via the SCIM provisioning connector.

    The PingOne SCIM API, at a high level, acts as a translation layer that receives SCIM requests to then issue as equivalent PingOne API requests, and translates PingOne API responses to SCIM-compliant responses for the user.

    PingOne supports only version 2.0 of the SCIM standard. PingOne will not support the 1.1 version of the standard, and the 1.0 version is officially deprecated.

    In the SCIM API sample requests shown in this document, the {{scimPath}} variable in the sample requests represents the regional domain for the PingOne server. Refer to PingOne API domains for more information.

    Highlights of the PingOne SCIM API

    • SCIM is an open standard used for identity management that PingOne supports.
    • Support for SCIM in PingOne is provided by an API that translates HTTP calls between the SCIM client and PingOne.
    • The URI for interacting with the PingOne SCIM API takes the form of: https://scim-api.pingone.com/environments/{{envID}}/v2/.
    • The PingOne SCIM API supports an extended version of SCIM users (that is, users with a URN of urn:ietf:params:scim:schemas:core:2.0:User) as well as "direct-mapped" users.
    • Direct-mapped users allow clients to use the PingOne SCIM API without worrying about schema resource mappings.
    • SCIM users in PingOne include a SCIM extension schema to include PingOne-specific data, such as the population identifier.
    • All user data created via the PingOne SCIM API or directly via the PingOne API can be modified or deleted by using either API, regardless of how the resource was initially created.
    • PingOne does not support some SCIM attributes, such as x509Certificates. Attempts to add or modify this data will be ignored, in accordance with the SCIM protocol.
    • The PingOne SCIM API does not support pagination. Lists of resources, such as ListResponse objects, return no more than 200 elements.
    • Groups are not supported.
    • PingOne supports SCIM POST searches that provide filtering data in a JSON body.
    • PingOne supports querying SCIM resources with attribute filters as query parameters.

    PingOne SCIM API constraints

    Some attributes are multi-valued in the SCIM standard schema, but single-valued in the PingOne schema. These SCIM attributes are emails, phoneNumbers, photos, and addresses. Because PingOne can only accept one value for these attributes, the SCIM API will reject requests that provide more than one values. However, they must still be provided as an array with only one element.

    The SCIM standard states that the HTTP 501 (Not Implemented) error code should be returned when an invalid endpoint is accessed. However, due to infrastructure limitations, invalid endpoints will return an HTTP 404 (Not Found). The exception to this is when established SCIM endpoints that are not supported by PingOne (such as /Me) are queried.

    When the PingOne SCIM API returns a list of results, it returns no more than 200 resources, and it does not page results. In other words, there is no way to see the remainder of the results. This is due to a conflict between the way the RFC describes pagination (with index-based pagination) and the way PingOne implements pagination in the PingOne API (with cursor-based pagination).

    The PingOne SCIM API supports query parameters when retrieving users. However, the service does not support these query parameters defined by the SCIM specification:

    • sortBy
    • sortOrder
    • startIndex

    Atypical behavior

    The PingOne SCIM API provides an additional user resource type called a "direct-mapped user". This can be used on its own endpoint (/DirectMappedUsers) and provides a mechanism for making SCIM calls without the need for a SCIM resource mapping. Refer to Direct-mapped Users for more information.

    Some of the default SCIM attributes are not necessarily relevant to PingOne, so they are not supported, such as x509Certificates. These attributes have been listed in a later section.

    Telephone numbers provided by clients are not forced to comply with RFC 3966. The service does not force them to be in the format +1-512-123-4567. Instead, telephone numbers are routed to PingOne as submitted.

    SCIM attributes defined in the specification

    According to Section 2.3 of RFC 7643, the type of an attribute may be one of:

    • String
    • Boolean
    • Decimal
    • Integer
    • DateTime
    • Binary
    • Reference
    • Complex

    The PingOne SCIM API's primary user type on the /v2/Users endpoint is an extension of the one described in the SCIM specification, but is mostly the same. The following Description column describes the relationship between SCIM attributes and its equivalent in the PingOne API, if applicable. It also provides a very brief summary of the purpose of each SCIM attribute. For more details, refer to sections 3.1 and 4.1.1, and 4.1.2 of RFC 7643.

    Field Type PingOne API equivalent Description
    schemas String None An array of Strings that indicates the SCIM schemas. Duplicate values MUST NOT be included.
    id String id A unique identifier for a SCIM resource. This attribute is always returned by the SCIM API, and is equivalent to the id value in the PingOne API.
    externalId String externalId An optional identifier for the resource, assigned and used by the provisioning client.
    meta Object No equivalent This information is assembled by the PingOne SCIM API itself. All sub-attributes have a mutability of readOnly. This attribute should be ignored when it is provided by clients.
    meta.resourceType String None Indicates the type of the SCIM resource, such as User or Group.
    meta.created DateTime createdAt The timestamp for when the resource was created.
    meta.lastModified DateTime updatedAt The timestamp for when the resource was last updated.
    meta.location String self.href A URI indicating the path to the SCIM resource.
    userName String username The username. This field is required when creating a user.
    name Object name (Complex) A JSON object containing components of a user's name.
    name.formatted String name.formatted The user's full name.
    name.familyName String name.family The user's family name.
    name.givenName String name.given The user's given name.
    name.middleName String name.middle The user's middle name.
    name.honorificPrefix String name.honorificPrefix A user's title. For example, Mr, Ms, Sir.
    name.honorificSuffix String name.honorificSuffix The user's suffix, such as Jr or III.
    nickName String nickname The nickname of the user. This value should not be used to represent a user's username.
    title String title The title of the user, such as Vice President or Director.
    preferredLanguage String preferredLanguage Helps PingOne match language tags to a user's language preferences. This is especially useful when processing interactions that are not directly initiated by the user.
    locale String locale Indicates the user's default location, which helps localize information such as currency or date-time formats.
    timezone DateTime timezone The user's time zone. This is set in IANA Time Zone database format.
    active Boolean enabled RFC 7644 declares that "[t]he definitive meaning of this attribute is determined by the service provider." In PingOne, this indicates whether the user is able to authenticate.
    password String password The password of the user. The PingOne SCIM API will never return this attribute under any circumstances or in any form, hashed or otherwise.
    emails Object email (String) The email addresses of the user. The PingOne SCIM API only allows a single value to be provided.
    phoneNumbers Object primaryPhone (String) The phone numbers of the user. The PingOne SCIM API only allows a single value to be provided.
    photos Object photo (Complex) A URI indicating the path to the user's image. This must be a file (such as .gif, .jpg, .png) and cannot be a web page that contains the image. The PingOne SCIM API only allows a single value to be provided.
    addresses Object address (Complex) A JSON object that contains a set of data pertaining to the user's address. The PingOne SCIM API only allows a single value to be provided.
    addresses.formatted String None The full mailing address, formatted for display or use with a mailing label. The RFC allows this attribute to contain newlines.
    addresses.streetAddress String address.streetAddress The full street address. This may include house number, street name, Post Office box. The RFC allows this attribute to contain newlines.
    addresses.locality String address.locality The city or locality.
    addresses.region String address.region The state or region.
    addresses.postalCode String address.postalCode The ZIP Code or postal code.
    addresses.country String address.countryCode The name of the country. This MUST be in ISO 3166-1 alpha-2 code format, such as US or SE.

    Additional attributes accepted by the PingOne SCIM API

    This section defines attributes that are not in the SCIM specification, but are allowed (and sometimes required) to be included in SCIM API calls to PingOne. These attributes are defined in the extension schema, urn:pingidentity:schemas:extension:2.0:PingOneUser, allowing clients to provide data custom to PingOne via the /Users endpoint without causing interoperability issues with other SCIM clients.

    Field Type PingOne API equivalent Description
    population Object population A UUID representing the population of a resource. This is required for POST operations only when the environment does not have a default population defined.

    SCIM attributes not supported by PingOne SCIM API

    Some of the default attributes in the SCIM specification do not apply to the PingOne solution. These have been listed below. As per the SCIM specification, modifications involving these attributes will be ignored. This behavior is consistent with how invalid attributes are handled by both SCIM and the PingOne API.

    Field Type Description
    groups Object Support for groups is pending.
    meta.version String The version of the resource. This is essentially the SCIM version of an HTTP ETag, which is not supported in PingOne. Hence, the PingOne SCIM API does not return this attribute.
    displayName String The user's name in a "displayable" form for an application. This field is not required.
    profileUrl String A URI indicating the path to a user's online profile. PingOne does not have an equivalent attribute for this purpose.
    userType String Identifies the relationship between the organization and the user, such as Contractor, Employee, Manager.
    ims Object Instant messaging address. PingOne does not have an equivalent attribute for this purpose.
    entitlements Object This attribute represents the user's ownership or right to certain objects.
    roles Object This attribute generally contains a list of roles for the user that "collectively represent who the user is" (citation: RFC 7643).
    x509Certificates Object Represents a list of certificates that are associated with a resource.

    PingOne SCIM API contracts

    For an example environment with an identifier of fa1afe1, the main structure of the SCIM endpoints in PingOne are URIs in the form: https://scim-api.pingone.com/environments/fa1afe1/v2/Users.

    These are main endpoints used by the PingOne SCIM API:

    • /v2/Users
    • /v2/DirectMappedUsers
    • /v2/ResourceTypes
    • /v2/Schemas
    • /v2/ServiceProviderConfig

    These endpoints are typical for the SCIM standard but are not supported. Sending requests to these endpoints will result in an HTTP 501 (Not Implemented) response.

    • /v2
    • /v2/Bulk
    • /v2/Groups
    • /v2/Me

    SCIM users and populations

    PingOne environments have a construct called populations that allow administrators to separate and maintain different types of users in the same environment. In PingOne, every user is associated with a population. As a result, PingOne must know in which population the user should be placed. To provide this information directly when creating a SCIM user (via /Users endpoint), this can be done by including the data with the extension schema:

    "urn:pingidentity:schemas:extension:2.0:PingOneUser": {
       "population": {
          "id": "5980c790-24c3-4fc6-8144-3d634abdda3a"
       }
    }
    

    A direct-mapped user can specify this information directly, just like the behavior of the PingOne API. Thus, it does not use an extension schema:

    "population": {
       "id": "5980c790-24c3-4fc6-8144-3d634abdda3a"
    }
    

    However, when a default population is defined in the PingOne environment (refer to default in Populations data model), a population is not required to be explicitly declared. By convention, if any request comes to PingOne that does not explicitly declare the population to use by default, then the user will be created in the default population. Otherwise, a population must be included in the JSON body of the request because PingOne must know with which population the user is associated.

    Lists of SCIM resources

    When multiple SCIM resources are returned in a single response, RFC 7644 states that it must be in the form of a ListResponse object. The RFC also states that pagination should be performed with a page-based implementation, but PingOne only supports cursor-based pagination. The main difference between the two is that page-based pagination requires that the client provide an index parameter, whereas cursor-based pagination provides a next link that can be used to receive the next page of resources.

    From a technical perspective, implementing page-based pagination is not feasible in the PingOne SCIM API when the underlying PingOne architecture uses a cursor-based approach. For this reason, the PingOne SCIM API does not support paging, but instead will return up to 200 results. If more than 200 results are available, the true number of results will be available in totalResults.

    SCIM Users

    A SCIM user reflects the description in RFC 7644 and relies on the SCIM resource mapping defined in the response to Read SCIM2 Schemas. This is in contrast to Direct-mapped Users, where the attribute data of direct-mapped users is given in the same scheme as the PingOne API.

    SCIM user data model

    When this data model is used with the PingOne SCIM API, the PingOne user data model is required to extend this data model with a required attribute.

    Property Type Required? Mutable? Description
    active Boolean Optional Mutable Whether the user is enabled. This attribute is set to true by default when the user is created.
    addresses Object Optional Mutable A JSON object that contains a set of data pertaining to the user's address. The PingOne SCIM API only allows a single value to be provided.
    addresses.countryCode String Optional Mutable Country name of the address. When specified, the value must be in ISO 3166-1 Alpha-2 code format; such as: US (United States) or SE (Sweden).
    addresses.locality String Optional Mutable City or locality of the address.
    addresses.postalCode String Optional Mutable ZIP Code or postal code of the address.
    addresses.region String Optional Mutable State or region of the address.
    addresses.streetAddress String Optional Mutable Full street address, which may include house number, street name, P.O. box, and multi-line extended street address information. Can contain newlines.
    created String N/A Read-only Date and time at which the user was created.
    emails String Optional Mutable User's email address.
    externalId String Optional Mutable Identifier (UUID) for the user as defined by the provisioning client. Can be explicitly set to null when updating a user to unset it. Can simplify the correlation of the user in PingOne with the user's account in another system of record. The platform does not use this directly in any way, but it is used by Ping Identity's Data Sync product.
    id String N/A Read-only Identifier (UUID) of the user.
    lastModified String N/A Read-only Date and time the user was last modified. Can be null.
    locale String Optional Mutable User's default location. Can be explicitly set to null when updating a user to unset it. This is used for purposes of localizing such items as currency, date time format, or numerical representations. If provided, a valid value is a language tag as defined in RFC 5646. For example: fr, en-US, es-419, az-Arab, man-Nkoo-GN.
    meta Object N/A Read-only This information is assembled by the PingOne SCIM API itself. All sub-attributes have a mutability of Read-only. This attribute should be ignored when it is provided by clients.
    meta.created DateTime N/A Read-only The timestamp for when the resource was created.
    meta.lastModified DateTime N/A Read-only The timestamp for when the resource was last updated.
    meta.location String N/A Read-only A URI indicating the path to the SCIM resource.
    meta.resourceType String N/A Read-only Type of the SCIM resource, such as User or Group.
    name Object Optional Mutable A JSON object containing components of a user's name.
    name.familyName String Optional Mutable Family name of the user, or last in most Western languages (for example, 'Jensen' given the full name 'Ms. Barbara J Jensen, III'). Can be explicitly set to null when updating a name to unset it. Valid characters consists of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 256 characters.
    name.formatted String Optional Mutable Fully formatted name of the user (for example 'Ms. Barbara J Jensen, III'). Can be explicitly set to null when updating a name to unset it.
    name.givenName String Optional Mutable Given name of the user, or first name in most Western languages (for example, 'Barbara' given the full name 'Ms. Barbara J Jensen, III'). Can be explicitly set to null when updating a name to unset it. Valid characters consists of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 256 characters.
    name.honorificPrefix String Optional Mutable Honorific prefix of the user (can contain more than one), or title in most Western languages (such as, 'Ms.' given the full name 'Ms. Barbara Jane Jensen, III'). Can be explicitly set to null when updating a name to unset it.
    name.honorificSuffix String Optional Mutable Honorific suffix (can contain more than one) of the user, or suffix in most Western languages (such as, 'III' given the full name 'Ms. Barbara Jane Jensen, III'). Can be explicitly set to null when updating a name to unset it.
    name.middleName String Optional Mutable Middle name (can contain more than one) of the user (such as 'Jane' given the full name 'Ms. Barbara Jane Jensen, III'). Can be explicitly set to null when updating a name to unset it. Valid characters consists of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 256 characters.
    nickname String Optional Mutable User's nickname. Can be explicitly set to null when updating a user to unset it. Valid characters consists of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 256 characters.
    password String Optional Mutable The password of the user. The PingOne SCIM API will never return this attribute under any circumstances or in any form, hashed or otherwise.
    phoneNumbers String Optional Mutable The phone numbers of the user. The specification says that this SHOULD be specified in the form of RFC 3966 (for example, +1-201-555-0123), but the PingOne SCIM API accepts telephone numbers as they are provided. Any telephone number is passed to the PingOne API, which decides if the phone number is in an acceptable form. PingOne supports a separate mobilePhone attribute, but the PingOne SCIM API only allows one number, which reflects the value of primaryPhone. Refer to PingOne SCIM API constraints for more details.
    photos.href String Optional Mutable URL that points to a resource location representing the user's image. Can be removed from a user by setting the photo attribute to null. If provided, the resource must be a file (such as a GIF, JPEG, or PNG image file) rather than a web page containing an image and must have a scheme (protocol) of http or https.
    preferredLanguage String Optional Mutable User's preferred written or spoken languages. Can be explicitly set to null when updating a user to unset it. If provided, the format of the value is the same as the HTTP Accept-Language header field (not including 'Accept-Language:') as specified in Section 5.3.5 of RFC 7231.
    timezone String Optional Mutable User's time zone. Can be explicitly set to null when updating a user to unset it. If provided, it must conform with the IANA Time Zone database format RFC 6557, for example: 'America/Los_Angeles'.
    title String Optional Mutable User's title, such as 'Vice President'. Can be explicitly set to null when updating a user to unset it.
    urn:pingidentity:
    schemas:extension:2.0:
    PingOneUser.population.id
    String Optional Mutable Identifier (UUID) of the population with which the uesr is associated. Optional if the PingOne environment defines a default population, otherwise required.
    username String Required Immutable Username, which must be provided and must be unique within an environment. The username must be a string of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 128 characters.

    PingOne user data model

    When SCIM user data model is used with this service, this data model is required to extend that data model with a required attribute. It is referenced by its URN, urn:pingidentity:schemas:extension:2.0:PingOneUser, from the schema.

    Property Type Required? Mutable? Description
    population.id String Required/Optional Immutable Identifier (UUID) for the population in which the user's identity exists. Optional if the PingOne environment defines a default population, otherwise required.

    SCIM user search data model

    Property Type Required? Mutable? Description
    filter String Optional Mutable A SCIM query. For information about SCIM syntax and operators, refer to Filtering collections.
    count Integer Optional Mutable Maximum number of users to return.

    Create SCIM User


    Read All SCIM Users (search)


    Read All SCIM Users


    Read One SCIM User


    Update SCIM User


    Patch SCIM User


    Delete SCIM User

    Direct-mapped Users

    A direct-mapped user is a type of SCIM user that does not rely on a traditional SCIM resource mapping. No central set of definitions explains how to convert SCIM attributes, such as emails (an array), to PingOne attributes, such as email (a single-valued string), or the reverse. Instead, direct-mapped users perform a direct mapping (or "pass-through") of the attribute data as provided. This is in contrast to SCIM Users, where the attribute data of the user relies on the SCIM resource mapping defined in the response to Read SCIM2 Schemas.

    This endpoint is not part of the SCIM specification. The advantage to direct-mapped users is that it allows clients to use SCIM without worrying about mapping resource definitions between their SCIM data and PingOne. This is especially useful when it comes to data stored in custom attributes.

    In the previous example, instead of constructing a SCIM emails array, a direct-mapped user can be created with a single-valued email attribute by the SCIM client. Direct-mapped users follow the attribute convention of the PingOne API. Because this is a custom PingOne SCIM resource, it is defined under the /ResourceTypes and /Schemas endpoints.

    Direct-mapped user data model

    Property Type Required? Mutable? Description
    account.canAuthenticate Boolean N/A Read-only Whether the user can authenticate at this time.
    account.lockedAt String N/A Read-only Date and time at which the account was locked, if any.
    account.secondsUntilUnlock Integer N/A Read-only Number of seconds remaining until the account will be unlocked.
    account.status String N/A Read-only Status of the account. Can be OK or LOCKED.
    account.unlockAt String N/A Read-only Date and time at which the account will be unlocked.
    accountId String Optional Mutable Identifier (UUID) of the user's account. Can be explicitly set to null when updating a user to unset it. Is organization-specific and has no special meaning within the platform.
    address.countryCode String Optional Mutable Country name of the address. When specified, the value must be in ISO 3166-1 Alpha-2 code format; such as: US (United States) or SE (Sweden).
    address.locality String Optional Mutable City or locality of the address.
    address.postalCode String Optional Mutable ZIP Code or postal code of the address.
    address.region String Optional Mutable State or region of the address.
    address.streetAddress String Optional Mutable Full street address, which may include house number, street name, P.O. box, and multi-line extended street address information. Can contain newlines.
    createdAt String N/A Read-only Date and time at which the user was created.
    email String Optional Mutable User's email address.
    emailVerified Boolean N/A Read-only Whether the email is verified.
    enabled Boolean N/A Read-only Whether the user is enabled. Set to true by default when the user is created.
    environment.id String N/A Read-only Identifier (UUID) of the environment with which the direct-mapped user is associated.
    externalId String Optional Mutable Identifier (UUID) for the user as defined by the provisioning client. Can be explicitly set to null when updating a user to unset it. Can simplify the correlation of the user in PingOne with the user's account in another system of record. The platform does not use this directly in any way, but it is used by Ping Identity's Data Sync product.
    id String N/A Read-only Identifier (UUID) of the user.
    identityProvider.id String N/A Read-only Identifier (UUID) of the trusted identity provider that is used as the authentication authority for the user. If present, the user must authenticate via this identity provider.
    identityProvider.type String N/A Read-only Type of the trusted identity provider where the user account is managed. If the type is PING_ONE, PingOne is the authentication authority.
    lastSignOn.at String N/A Read-only Date and time of the last successful login of the user.
    lastSignOn.remoteIp String N/A Read-only IP address of the last successful login of the user.
    lifecycle.status String N/A Read-only Lifecycle status for this account. Can be ACCOUNT_OK or VERIFICATION_REQUIRED. This attribute can only be set when importing a user to set the initial account status. If the initial status is set to VERIFICATION_REQUIRED and an email address is provided, a verification email is sent.
    locale String Optional Mutable User's default location. Can be explicitly set to null when updating a user to unset it. This is used for purposes of localizing such items as currency, date time format, or numerical representations. If provided, a valid value is a language tag as defined in RFC 5646. For example: fr, en-US, es-419, az-Arab, man-Nkoo-GN.
    location String N/A Read-only URL that returns thethis user object.
    memberOfGroupIDs String[] N/A Read-only Array of identifiers (UUID) of groups that a user is a member of.
    memberOfGroupNames String[] N/A Read-only Array of names of groups that a user is a member of.
    meta Object N/A Read-only This information is assembled by the PingOne SCIM API itself. All sub-attributes have a mutability of Read-only. This attribute should be ignored when it is provided by clients.
    meta.created String N/A Read-only Date and time the user was created.
    meta.lastModified String N/A Read-only Date and time the user was last modified. Can be null.
    mfaEnabled Boolean N/A Read-only Whether multi-factor authentication is enabled. Set to true by default when the user is created, unless otherwise specified for user.mfaEnabled in MFA Settings.
    mobilePhone String Optional Mutable User's mobile phone number. This might also match primaryPhone. Can be explicitly set to null when updating a user to unset it. If provided, it must consist of at least one digit and must contain no more than 32 characters.
    name.familyName String Optional Mutable Family name of the user, or last in most Western languages (for example, 'Jensen' given the full name 'Ms. Barbara J Jensen, III'). Can be explicitly set to null when updating a name to unset it. Valid characters consists of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 256 characters.
    name.formatted String Optional Mutable Fully formatted name of the user (for example 'Ms. Barbara J Jensen, III'). Can be explicitly set to null when updating a name to unset it.
    name.givenName String Optional Mutable Given name of the user, or first name in most Western languages (for example, 'Barbara' given the full name 'Ms. Barbara J Jensen, III'). Can be explicitly set to null when updating a name to unset it. Valid characters consists of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 256 characters.
    name.honorificPrefix String Optional Mutable Honorific prefix of the user (can contain more than one), or title in most Western languages (such as, 'Ms.' given the full name 'Ms. Barbara Jane Jensen, III'). Can be explicitly set to null when updating a name to unset it.
    name.honorificSuffix String Optional Mutable Honorific suffix (can contain more than one) of the user, or suffix in most Western languages (such as, 'III' given the full name 'Ms. Barbara Jane Jensen, III'). Can be explicitly set to null when updating a name to unset it.
    name.middleName String Optional Mutable Middle name (can contain more than one) of the user (such as 'Jane' given the full name 'Ms. Barbara Jane Jensen, III'). Can be explicitly set to null when updating a name to unset it. Valid characters consists of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 256 characters.
    nickname String Optional Mutable User's nickname. Can be explicitly set to null when updating a user to unset it. Valid characters consists of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 256 characters.
    password String Optional Mutable The password of the user. The PingOne SCIM API will never return this attribute under any circumstances or in any form, hashed or otherwise.
    photo.href String Optional Mutable URL that points to a resource location representing the user's image. Can be removed from a user by setting the photo attribute to null. If provided, the resource must be a file (such as a GIF, JPEG, or PNG image file) rather than a web page containing an image and must have a scheme (protocol) of http or https.
    population.id String Required/Optional Immutable Identifier (UUID) for the population in which the user's identity exists. Optional if the PingOne environment defines a default population, otherwise required.
    preferredLanguage String Optional Mutable User's preferred written or spoken languages. Can be explicitly set to null when updating a user to unset it. If provided, the format of the value is the same as the HTTP Accept-Language header field (not including 'Accept-Language:') as specified in Section 5.3.5 of RFC 7231.
    primaryPhone String Optional Mutable User's primary phone number. This might also match mobilePhone. Can be explicitly set to null when updating a user to unset it. If provided, it must consist of at least one digit and must not contain more than 32 characters.
    resourceType String Required Immutable Type of the resource. Must be DirectMappedUser for a direct-mapped user.
    schemas String[] N/A Read-only Array of URNs of schemas used.
    timezone String Optional Mutable User's time zone. Can be explicitly set to null when updating a user to unset it. If provided, it must conform with the IANA Time Zone database format RFC 6557, for example: 'America/Los_Angeles'.
    title String Optional Mutable User's title, such as 'Vice President'. Can be explicitly set to null when updating a user to unset it.
    type String Optional Mutable User's type. Can be explicitly set to null when updating a user to unset it. This attribute is organization-specific and has no special meaning within the platform. It could have values of Contractor, Employee, Intern, Temp, External, or Unknown.
    updatedAt String N/A Read-only Date and time at which the user was updated.
    username String Required Immutable Username, which must be provided and must be unique within an environment. The username must be a string of any Unicode letter, mark (such as accent, umlaut), math symbol, numeric character, or punctuation. Can contain no more than 128 characters.
    verifyStatus String N/A Read-only Whether ID Validation authentication is enabled. Can be ENABLED, DISABLED, or NOT_INITIATED. Set to NOT_INITIATED by default when the user is created.

    Direct-mapped search data model

    Property Type Required? Mutable? Description
    filter String Optional Mutable A SCIM query. For information about SCIM syntax and operators, refer to Filtering collections.
    count Integer Optional Mutable Maximum number of users to return.

    Create Direct-mapped User


    Read All Direct-mapped Users (search)


    Read All Direct-mapped Users


    Read One Direct-mapped User


    Update Direct-mapped User


    Patch Direct-mapped User


    Delete Direct-mapped User

    SCIM Operations

    The PingOne SCIM API supports retrieveing information regarding SCIM and the service itself. Specifically, you can retrieve:

    SCIM2 Resource Types data model

    Property Type Required? Mutable? Description
    schemas String[] N/A Read-only Array of schema URNs used by the service for ResourceTypes.
    totalResults Integer N/A Read-only Number of resource types returned.
    Resources Object[] N/A Read-only Array of objects that describe each resource type.
    Resources.schemas String[] N/A Read-only Array of schemas used by the resource type.
    Resources.id String N/A Read-only Unique identifier of the resource type.
    Resources.meta Object N/A Read-only This information is assembled by the PingOne SCIM API itself. All sub-attributes have a mutability of Read-only. This attribute should be ignored when it is provided by clients.
    Resources.meta.resourceType String N/A Read-only The resource type of the resource type, which is always ResourceType for this request.
    Resources.meta.location String N/A Read-only A URI indicating the path to the SCIM resource. This is generated by the PingOne SCIM API itself, and indicates the path to the resource from a SCIM client's perspective.
    Resources.name String N/A Read-only Name of the resource type.
    Resources.description String N/A Read-only Description of the resource type.
    Resources.endpoint String N/A Read-only The endpoint to reach the resource type. This is what appears in the URL after the scheme (protocol), domain, and /environment/{{environment identifier}}/v2.
    Resources.schema String[] N/A Read-only URN of the schema of the resource type.
    Resources.schemaExtensions Object[] N/A Read-only Any extension schemas used by the resource type.
    Resources.schemaExtensions.schema String N/A Read-only URN of the extension schema.
    Resources.schemaExtensions.required Boolean N/A Read-only Whether the extension schema is required for the resource type.

    Schema data model

    The response to Read SCIM2 Schemas is the definition, in JSON format, of the data models in SCIM Users and Direct-mapped Users.

    Service Provider Configuration data model

    Property Type Required? Mutable? Description
    authenticationSchemes Object[] N/A Read-only Array that specifies supported authentication scheme properties.
    authenticationSchemes.description String N/A Read-only A description of the authentication scheme.
    authenticationSchemes.documentationUri String N/A Read-only An HTTP-addressable URL pointing to the authentication scheme's usage documentation.
    authenticationSchemes.name String N/A Read-only The common authentication scheme name.
    authenticationSchemes.primary Boolean N/A Read-only Whether this scheme is the primary (preferred) authentication scheme.
    authenticationSchemes.specUri String N/A Read-only An HTTP-addressable URL pointing to the authentication scheme's specification.
    authenticationSchemes.type String N/A Read-only The authentication type. Can be oauth, oauth2, oauthbearertoken, httpbasic, or httpdigest.
    bulk.maxOperations Integer N/A Read-only Maximum number of bulk operations permitted in a request.
    bulk.maxPayloadSize Integer N/A Read-only Maximum size of a request body for bulk operations.
    bulk.supported Boolean N/A Read-only Whether bulk operations are supported.
    changePassword.supported Boolean N/A Read-only Whether changing user passwords is supported.
    etag.supported Boolean N/A Read-only Whether HTTP entity-tags are supported in the SCIM meta.version attribute.
    filter.maxResults Integer N/A Read-only Maximum number of results returned by a request.
    filter.supported Boolean N/A Read-only Whether filtering of results is supported.
    meta Object N/A Read-only This information is assembled by the PingOne SCIM API itself. All sub-attributes have a mutability of Read-only. This attribute should be ignored when it is provided by clients.
    meta.created DateTime N/A Read-only Date and time when the resource was created.
    meta.lastModified DateTime N/A Read-only Date and time when the resource was last updated.
    meta.location String N/A Read-only A URI indicating the path to the SCIM resource. This is generated by the PingOne SCIM API itself, and indicates the path to the resource from a SCIM client's perspective.
    meta.resourceType String N/A Read-only Type of the SCIM resource, which is always ServiceProviderConfig for this request.
    meta.version String N/A Read-only Version of the SCIM resource.
    patch.supported Boolean N/A Read-only Whether SCIM PATCH operations are supported.
    schemas String[] N/A Read-only Array of schemas used by the service for ServiceProviderConfig.
    sort Boolean N/A Read-only Whether sorting of results is supported.

    Read SCIM2 Resource Types


    Read SCIM2 Schemas


    Read Service Provider Configuration

    Groups

    The Groups service enables you to create collections of users having the same access to applications. You can create up to 100,000 groups per environment. There is no limit to the number of users that can belong to a group.

    Groups permissions

    If you have the Identity Data Admin role, you can perform the following operations using the PingOne APIs:

    • Create, read, update, and delete groups
    • Add users to groups
    • Delete users from groups
    • Read group memberships

    If you have the Environment Admin or Client Application Developer role, you can read groups.

    Creating groups

    Use POST {{apiPath}}/environments/{{envID}}/groups to create a new group.

    By default, groups are created per environment. Groups can also optionally be created per population. Do this by specifying a value for population.id in the body of POST {{apiPath}}/environments/{{envID}}/groups. The population.id property is read-only after it is initially set and can be set in POST {{apiPath}}/environments/{{envID}}/groups only.

    Once a group is created, the following conditions apply:

    You cannot move the group:

    • From one population to another
    • From a population to an environment
    • From an environment to a population

    Learn more about creating groups in Creating a group, in the PingOne Admin Guide. Learn more about assigning users to groups in Group Membership.

    Nesting groups

    You can nest one group inside another. The members of the nested group dynamically become members of the parent group. Do this by specifying the ID of a group within the body of a POST {{apiPath}}/environments/{{envID}}/groups/{{groupID}}/memberOfGroups operation. Nesting a group essentially creates a child-parent relationship where members of the "child" group inherit the same properties and permissions as the "parent" group.

    For example, assume an environment has three groups: Group A, Group B, and Group C. Each group has access to a single application: Group A has access to App1, Group B has access to App2, and Group C has access to App3.

    • If you nest Group B inside of Group A, then users in Group B will now have access to App1 and App2, and Group A will still only have access to App1.

    • If you nest Group C into Group B, then Group C members will inherit access to App1 (via the nested relationship of Group B to Group A), inherit access to App2 (via the nested relationship of Group C to Group B), and will retain access to App3.

    Group A - App1
        Group B - App1 & App2
            Group C - App1, App2, App3
    

    Learn more about nested groups in Nested groups, in the PingOne Admin Guide.

    Creating circular references

    You can nest parent groups inside their child groups. Continuing the example from the last section, let us assume you have another group, Group D. Group D has access to App4.

    • If you nest Group D in Group B, Group D inherits access to Group A and Group B apps.

    • If you nest Group B in Group D, creating a circular reference, then both Group B and Group C inherit access to App4.

    Group A - App1
        Group B - App1 & App2, App4
            Group C - App1, App2, App3, App4
            Group D - App1, App2, App4
                Group B - App1, App2, App4
    

    Removing nested relationship

    Use the DELETE {{apiPath}}/environments/{{envID}}/groups/{{groupID}}/memberOfGroups/{{nestedGroupID}} operation to remove the nested relationship between two groups. Members directly assigned to each group remain unchanged.

    Searching for group membership

    Documentation for the following group membership searches can be found under Users/Group Membership:

    Learn more about searching for groups in Searching for groups, in the PingOne Admin Guide.

    Filtering groups searches

    You can filter groups GET collection responses by applying a SCIM filtering expression to the request URL. For large collections, a filter expression appended to the query returns a targeted, more useful data set.

    The SCIM operators eq (equals), sw (starts with), and, and or can be used with the following group properties:

    • name
    • externalId

    The SCIM operators eq (equals), and sw (starts with) can be used with the group property:

    • displayName

    The SCIM operator eq (equals) can be used with the following group properties:

    • id
    • population.id
    • sourceId (only for external groups)

    For more information refer to Paging, ordering, and filtering collections.

    You can also use SCIM filters with GET collection requests that return user data. Refer to Users for the user properties and operators supported.

    Use Cases

    Groups data model

    Property Type Required? Mutable? Description
    customData JSON blob Optional Mutable User-defined custom data.
    description String Optional Mutable The group description.
    displayName String Optional Mutable For Just In Time (JIT) creation of external groups, it's set when a user is created or updated with memberOfExternalGroups[].name. Refer to the Users data model for more information. For internal groups it is identical to name. Groups can be filtered by displayName.
    directMemberCounts Object Optional Immutable An object containing a users (int) property. This property lists the number of users explicitly added to the group with POST {{apiPath}}/environments/{{envID}}/users/{{userID}}/memberOfGroups. Since these members were explicitly added to the group, they can be removed from the group with DELETE {{apiPath}}/environments/{{envID}}/users/{{userID}}/memberOfGroups/{{groupID}}.
    environment.id String Required Immutable The unique identifier for the environment.
    externalId String Optional Mutable A user-defined identifier for the group. Use this property to synchronize a group in PingOne with the same group in an external system. PingOne does not directly use this property. Search all groups for a specific external ID with a SCIM filter using GET {{apiPath}}/environments/{{envID}}/groups.
    id String Required Immutable The unique identifier for the group. Search all groups for a specific group ID with a SCIM filter on GET {{apiPath}}/environments/{{envID}}/groups. Retrieve all the group IDs associated with a user with GET {{apiPath}}/environments/{{envID}}/users/{{userID}}?include=memberOfGroupIDs.
    isAdmin Boolean N/A Read-only true indicates that admin role assignments are present for this group.
    name String Required Immutable The group name. A group name can be reused across populations, but the same user cannot belong to multiple groups with the same group name. Population groups cannot share a group name with an environment group. Search all groups for a specific group name with a SCIM filter on GET {{apiPath}}/environments/{{envID}}/groups. Retrieve all the group names associated with a user with GET {{apiPath}}/environments/{{envID}}/users/{{userID}}?include=memberOfGroupNames. Use this operation to determine group membership in attribute mappings for claims and assertions.
    population.id String Optional Immutable The unique identifier for the population. Set this property during group creation only. If set, membership to the group is restricted to a single population. For more information, refer to Creating groups. Search all groups for a specific population ID with a SCIM filter on GET {{apiPath}}/environments/{{envID}}/groups.
    sourceId String Optional Immutable For Just In Time (JIT) creation of external groups, it's set when a user is created or updated with memberOfExternalGroups[].sourceId. Refer to the Users data model for more information. Groups that are provisioned set this property when the groups are created. Groups can be filtered by sourceId.
    sourceType String Optional Immutable For Just In Time (JIT) creation of external groups, it's set when a user is created or updated with memberOfExternalGroups[].sourceType. Currently, this can be only "GATEWAY" or "IDP". Refer to the Users data model for more information.
    totalMemberCounts Object Optional Immutable An object containing a users (int) property. This property lists the total number of users added to the group. You must use GET {{apiPath}}/environments/{{envID}}/groups/{{groupID}} with the include=totalMemberCounts query parameter to retrieve this property. This property is not returned with a list of groups.
    type String Optional Immutable Defines the relationship of nested group membership: DIRECT or INDIRECT.
    userFilter String Optional Mutable A SCIM filter that determines which users are dynamically added to the group. Can only be used to add members of non-admin groups. For more information, refer to Group Membership.

    Group events generated

    Refer to Audit Reporting Events for the events generated.

    Groups response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Group Role Assignments

    The Group Role Assignment service allows you to assign administrative roles to a group of users, rather than having to assign roles to each user individually.

    For more information about user groups, refer to Groups.

    For more information about administrative roles, refer to Roles.

    Role assignment scopes can be:

    • Organization

    • Environment

    • Population

    • Application

    Group Role Assignment data model

    Property Type Required? Mutable? Description
    environment.id String N/A Read-only The UUID of the environment to which this group belongs.
    group.id String Required Mutable The UUID of the user group.
    readOnly Boolean Required Mutable Whether the admin roles have write permissions appropriate to their roles.
    role.id String Required Immutable The UUID of the role assigned to a group.
    scope.id String Required Immutable The role assignment scope ID. When this is an application ID, because an application ID is guarenteed to be globally unique (across all environments), the application ID here eliminates the need to also specify the application environment ID.
    scope.type String Required Mutable The type of resource defining the scope of the Role assignment. Options are ORGANIZATION, ENVIRONMENT, and POPULATION, APPLICATION.

    Create Group Role Assignment


    Read All Group Role Assignments


    Read One Group Role Assignment


    Delete Group Role Assignment


    Create Group


    Create Group Nesting


    Read All Groups


    Read One Group


    Read Group Nesting


    Update Group


    Delete Group


    Delete Group Nesting

    Password Policies

    Password policies are scoped to the environment, enabling you to set default password policies for all users in the environment. The password policies are applied to users through populations in the environment. You can assign a password policy to a population using either Update Population or Create Population. You cannot delete a password policy if it is set as the default for the environment, or is referenced by a population.

    Each environment is initialized with 3 password policies: "Standard", "Passphrase", and "Basic". The password requirements for each policy are configurable (toggled on/off in the PingOne admin console), as are the password policy rules. When updating a password policy, the password policy rules are configurable by including or excluding the rule property or properties from the payload.

    Use Cases

    The pre-defined password policies have the following requirements:

    Policy Requirements
    Basic A relaxed standard policy to allow for maximum customer flexibility. The basic password policy does not have an expiration rule. When this password policy is in effect, user passwords do not expire. Requirements include:
    The password will be checked against a list of most commonly-used passwords.
    The password must be between 8 and 255 characters.
    The password must have at least 1 of the following characters: 1234567890
    The password must have at least 1 of the following characters: abcdefghijklmnopqrstuvwxyz
    The password must have at least 1 of the following characters: ABCDEFGHIJKLMNOPQRSTUVWXYZ
    The password must have at least 1 of the following characters: ~!@#$%^&*()-_=+[]{}|;:,.<>/?
    The user's account will lockout after 5 failed attempts for 15 minutes. Repeated attempts of the same password will not be counted as failed attempts.
    Standard A standard password policy that incorporates industry best practices. Requirements include:
    The password will be checked to make sure it doesn't match strings that appear in the user's identity data.
    The password will be checked to make sure it is not too similar to the user's current password.
    The password will be checked against a list of most commonly-used passwords.
    The password cannot have more than 2 repeated characters.
    The password must have a minimum of 5 unique characters.
    The password must be between 8 and 255 characters.
    The password must have at least 1 of the following characters: 1234567890
    The password must have at least 1 of the following characters: abcdefghijklmnopqrstuvwxyz
    The password must have at least 1 of the following characters: ABCDEFGHIJKLMNOPQRSTUVWXYZ* The password must have at least 1 of the following characters: ~!@#$%^&*()-_=+[]{}|;:,.<>/?
    The password will expire every 182 days.
    Passwords can be changed after 1 day.
    6 prior passwords will be maintained in the password history count for a maximum of 365 days.
    The user's account will lockout after 5 failed attempts for 15 minutes. Repeated attempts of the same password will not be counted as failed attempts.
    Passphrase A password policy that accepts the use of passphrases. Requirements include:
    The password will be checked to make sure it doesn't match strings that appear in the user's identity data.
    The password will be checked to make sure it is not too similar to the user's current password.
    The password will be checked against a list of most commonly-used passwords.
    The password must have a complexity of at least 7 days, based on the Gibson Research Corporation Password Haystacks concept.
    The password will expire every 182 days.
    Passwords can be changed after 1 day.
    6 prior passwords will be maintained in the password history count for a maximum of 365 days.

    For information about the specific password property values set for each pre-defined password policy, refer to the response data for Read All Password Policies.

    Password policies data model

    Property Type Required? Mutable? Description
    alphabetSequenceRule.maxLength Integer Optional Mutable Maximum number of allowed sequential English letters in the password. Must be a value of 2 or 3.
    createdAt Date Required Immutable The date and time the resource was created (format ISO-8061).
    default Boolean Optional Mutable Indicates whether this password policy is enforced within the environment. When set to true, all other password policies are set to false.
    description String Optional Mutable Specifies the brief description of the password policy.
    environment.id String Required Immutable The ID of the environment resource referenced by this relationship.
    excludesCommonlyUsed Boolean Optional Mutable Set this to true to ensure the password is not one of the commonly used passwords.
    excludesProfileData Boolean Optional Mutable Set this to true to ensure the password is not an exact match for the value of any attribute in the user's profile, such as name, phone number, or address.
    history.count Integer Optional Mutable Specifies the number of prior passwords to keep for prevention of password re-use. The value must be a positive, non-zero integer.
    history.retentionDays Integer Optional Mutable The length of time to keep recent passwords for prevention of password re-use. The value must be a positive, non-zero integer.
    id String Required Immutable The password resource's unique identifier.
    length.max Integer Optional Mutable The maximum number of characters allowed for the password. Defaults to 255. This property is not enforced when not present.
    length.min Integer Optional Mutable The minimum number of characters required for the password. This can be from 8 to 32 (inclusive). Defaults to 8 characters. This property is not enforced when not present.
    lockout.durationSeconds Integer Optional Mutable The length of time before a password is automatically moved out of the lock out state. The value must be a positive, non-zero integer.
    lockout.failureCount Integer Optional Mutable The number of tries before a password is placed in the lockout state. The value must be a positive, non-zero integer.
    maxAgeDays Integer Optional Mutable The maximum number of days the same password can be used before it must be changed. Defaults to 90 days. When the maxAgeDays value is reached, it automatically resets to the assigned value. The value must be a positive, non-zero integer.
    The value must be greater than the sum of minAgeDays (if set) + 21 (the expiration warning interval for passwords).
    maxRepeatedCharacters Integer Optional Mutable The maximum number of repeated characters allowed. This property is not enforced when not present.
    minAgeDays Integer Optional Mutable The minimum number of days a password must be used before changing. The value must be a positive, non-zero integer. This property is not enforced when not present.
    minCharacters Object Optional Mutable Contains name-value pairs where the name includes all characters in the set, and the value is the minimum number of times one of the characters in the set must appear in the password. The only allowed keys are ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz, 0123456789, and ~!@#$%^&*()-_=+[]{}|;:,.<>/?. This property is not enforced when not present.
    minComplexity Integer Optional Mutable The minimum complexity of the password based on the concept of password haystacks. The value is the number of days required to exhaust the entire search space during a brute force attack. This property is not enforced when not present.
    minUniqueCharacters Integer Optional Mutable The minimum number of unique characters required. This property is not enforced when not present.
    name String Optional Mutable The name of the password policy. This value must be unique within the environment.
    notSimilarToCurrent Boolean Optional Mutable Set this to true to ensure that the proposed password is not too similar to the user's current password based on the Levenshtein distance algorithm. The value of this parameter is evaluated only for password change actions in which the user enters both the current and the new password. By design, PingOne does not know the user's current password.
    numberSequenceRule.maxLength Integer Optional Mutable Maximum number of allowed sequential numbers in the password. Must be a value of 2 or 3.
    shiftedNumberRowSequenceRule.maxLength Integer Optional Mutable Maximum number of allowed sequential symbol row characters. Must be a value of 3.
    populationCount Integer Required Immutable Returned in the response. The number of populations associated with the password policy.
    updatedAt Date Required Immutable The date and time the resource was last updated (format ISO-8061).
    qwertySequenceRule.maxLength Integer Optional Mutable Maximum number of allowed sequential QWERTY keyboard characters in the password. Must be a value of 3.

    Password policy events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Password Policy


    Read All Password Policies


    Read One Password Policy


    Update Password Policy


    Delete Password Policy

    Schemas

    The schemas endpoints give administrators the ability to customize the existing attributes of the user model or define new attributes that are not part of the default user model. For example, applications often support user profile attributes that are not defined in the PingOne core attribute set for users.

    For more information about schemas, refer to User Attributes in the PingOne Admin Guide.

    Attribute types

    There are three types of attributes that the user schema supports: core, standard, and custom. Core and standard attributes are available in the out-of-the-box user schema, and these attributes cannot be deleted. Custom attributes can be created, updated, and deleted. All types of attributes can be retrieved from a GET operation.

    The mutability rules for these three types of attributes are:

    • Core attributes (for example, id or username) cannot be modified in any way.
    • Standard attributes (for example, email, preferred language, address) cannot be modified except to configure these flags: enabled and unique.
    • Custom attributes (for example, ssn or shirtSize) can be modified except for the name, type and schema properties. The multiValued property of custom attributes can only be changed from false or null to true. The required property is ignored if included in a create request body (defaults to false) and returns an error if included in an update request body.

    The schemas service supports the following capabilities:

    • The ability to use out-of-the-box user schema custom attributes.
    • The ability to select a subset of the PingOne standard schema that is relevant for users stored in an environment.
    • The ability to add custom attributes to the schema that are used for the same purposes as PingOne default attributes.
    • The ability to add custom attributes that support multiple values.
    • The ability to define the behavior and data requirements of special attributes such as passwords, usernames, email addresses, and phone numbers.

    The request examples show common actions for working with schema resources and custom attributes. You need the Environment Admin role to read and update schema resources. Administrators with the Identity Data Admin or Client Application Developer roles can read schema resources.

    Custom attributes

    Custom attributes convey additional information about the user to applications. You can add custom attributes to the user schema to identify and store key information such as account numbers, user preferences, demographic information, and other relevant profile data required by the application. A custom attribute is a name-value pair that can reference JSON or STRING user schema attributes or a static value.

    If the custom attribute has multiple values, then the attribute will be multi-valued in the token or assertion as well. This is calculated based on the string length for all of the custom attribute values. For example, given:

    { "id": "1234", "username": "jdoe", "customA": "1234", "customB": "1234" }
    

    The cumulative custom attribute size in this case is 8. Size calculations for multi-valued and JSON custom attributes are the same. For the multi-valued custom attributes, add the length of all of the array elements. For JSON custom attributes, add the length of the JSON string. You can add a maximum of 200 custom string attributes and 200 custom JSON attributes. Bear in mind that the maximum size of the entire user profile is 16 Kb.

    An attribute can support multiple values if the multiValued property is set to true. If the multiValued property is set to false or is null, the User object will contain the attribute value as a single value. If multiValued is set to true, the value in the User object will be an array. When searches are performed on User schema data, a user will match if any value of a multiValued attribute is part of the search criteria.

    Reserved attribute names

    The following attribute names are reserved for internal use. Custom attributes cannot have the same name as these reserved attribute names.

    • password
    • devices
    • roleAssignments
    • pairingCodes
    • linkedAccounts
    • environment
    • population
    • account

    Enumerated values and regular expressions

    An attribute is enumerated if the attributes.enumeratedValues[] property is present and has at least one unarchived attributes.enumeratedValues[].value. An attributes.enumeratedValues[].value cannot be deleted, but it can be archived. If all attributes.enumeratedValues[].value objects are archived, the attributes.enumeratedValues[] property is removed from the attribute. An existing attribute cannot be made enumerated. It is possible to add attributes.enumeratedValues[] objects to an existing enumerated attribute and to unarchive existing archived values.

    A regular expression can be added to an attribute to validate the client-provided value. An attribute cannot be both regex and enumerated. However, a value matching a regular expression can be multi-valued or unique. A list of test case values that the pattern should match and should not match can also be provided to help validate that the pattern is correct.

    Schema attributes POST, PUT, PATCH data model

    Property Type Required? Mutable? Description
    description String Optional Mutable A description of the attribute. If provided, it must not be an empty string. Valid characters consists of any Unicode letter, mark (for example, accent or umlaut), numeric character, punctuation character, or space.
    displayName String Optional Mutable The display name of the attribute such as 'T-shirt size'. If provided, it must not be an empty string. Valid characters consist of any Unicode letter, mark (for example, accent or umlaut), numeric character, forward slash, dot, apostrophe, underscore, space, or hyphen.
    enabled Boolean Required Mutable Indicates whether or not the attribute is enabled. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null. Disabled attributes are ignored for POST or PUT, and are not returned for GET operations.
    enumeratedValues[] Array Optional Mutable An array of enumerated values. Maximum number of enumerations is 100.
    enumeratedValues[].value String Required Mutable A string that specifies the immutable value. Values are case sensitive; two values that differ only by case are not allowed. Required if enumeratedValues[] is set.
    enumeratedValues[].archived Boolean Optional Mutable A boolean that specifies whether the enumerated value is archived. Archived values cannot be added to a user, but existing archived values are preserved. This allows clients that read the schema to know all possible values of an attribute.
    enumeratedValues[].description String Optional Mutable A string that specifies the description of the enumerated value.
    environment.id String N/A Immutable The identifier of the environment resource referenced by this relationship.
    id String N/A Immutable The attribute's unique identifier.
    ldapAttribute String Required Immutable The unique identifier for the LDAP attribute.
    multiValued Boolean Optional Mutable A boolean that specifies whether the attribute has multiple values or a single one. This value can only change from false to true, as changing from true to false is not allowed. Maximum number of values stored is 1,000.
    name String Required Mutable The name of the attribute. The attribute name must be provided during creation, must not be empty and must not exceed 256 characters. It must also be unique within the schema for an environment. It must start with a letter and may be followed by letters, numbers or hyphens.
    regexValidation Object Optional Mutable Object representation of the optional regular expression representation of this attribute.
    regexValidation.pattern String Required Mutable A string that specifies the regular expression to which the attribute must conform. Required if regexValidation is set.
    regexValidation.requirements String Required Mutable A string that specifies a developer friendly description of the regular expression requirements. Required if regexValidation is set.
    regexValidation.valuesPatternShouldMatch Array Optional Mutable An array that specifies the list of strings matching the regular expression.
    regexValidation.valuesPatternShouldNotMatch Array Optional Mutable An array that specifies the list of strings not matching the regular expression.
    required Boolean N/A Read only Indicates whether or not the attribute is required. The value of this property for custom attributes is always false.
    schema.id String Required Immutable The identifier of the resource referenced by this relationship.
    schemaType String Required Mutable The schema type of the attribute. This can be CORE, STANDARD or CUSTOM. CORE and STANDARD attributes are supplied by default. CORE attributes cannot be updated or deleted. STANDARD attributes cannot be deleted, but their mutable properties can be updated. CUSTOM attributes can be deleted, and their mutable properties can be updated. New attributes are created with a schema type of CUSTOM.
    subAttributes Array Optional Mutable The list of sub-attributes of this attribute. Only COMPLEX attribute types can have sub-attributes, and only one-level of nesting is allowed. The leaf attribute definition must have a type of STRING or JSON. A COMPLEX attribute definition must have at least one child attribute definition.
    subAttributes.description String Optional Mutable A description of the sub-attribute. If provided, it must not be an empty string. Valid characters consists of any Unicode letter, mark (for example, accent or umlaut), numeric character, punctuation character, or space.
    subAttributes.displayName String Optional Mutable The display name of the sub-attribute such as 'T-shirt size'. If provided, it must not be an empty string. Valid characters consist of any Unicode letter, mark (for example, accent or umlaut), numeric character, forward slash, dot, apostrophe, underscore, space, or hyphen.
    subAttributes.enabled Boolean Required Mutable Indicates whether or not the sub-attribute is enabled. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null. Disabled sub-attributes are ignored for POST or PUT, and are not returned for GET operations.
    subAttributes.name String Required Mutable The name of the sub-attribute. The sub-attribute name must be provided during creation, must not be empty and must not exceed 256 characters. It must start with a letter and may be followed by letters, numbers or hyphens.
    subAttributes.required Boolean Optional Mutable Indicates whether or not the sub-attribute is required. Required attributes must be provided a value for POST and PUT. Defaults to false.
    subAttributes.schemaType String Required Mutable The schema type of the sub-attribute. This can be CORE, STANDARD or CUSTOM. CORE and STANDARD sub-attributes are supplied by default. CORE sub-attributes cannot be updated or deleted. STANDARD sub-attributes cannot be deleted, but their mutable properties can be updated. CUSTOM sub-attributes can be deleted, and their mutable properties can be updated. New sub-attributes are created with a schema type of CUSTOM.
    subAttributes.type String Optional Mutable The type of the sub-attribute. This can be STRING, JSON, BOOLEAN, or COMPLEX. If the type is not provided during creation, it defaults to STRING. COMPLEX and BOOLEAN sub-attributes cannot be created, but standard sub-attributes of those types may be updated. JSON sub-attributes are limited by size (total size must not exceed 16KB).
    subAttributes.unique Boolean Required Mutable Indicates whether or not the sub-attribute must have a unique value within the PingOne environment. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null.
    type String Optional Mutable The type of the attribute. This can be STRING, JSON, BOOLEAN, or COMPLEX. If the type is not provided during creation, it defaults to STRING. COMPLEX and BOOLEAN attributes cannot be created, but standard attributes of those types may be updated. JSON attributes are limited by size (total size must not exceed 16KB).
    unique Boolean Required Mutable Indicates whether or not the attribute must have a unique value within the PingOne environment. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null.

    Schema attributes GET response model

    Property Type Required? Mutable? Description
    attributes.description String Optional Mutable A description of the attribute. If provided, it must not be an empty string. Valid characters consists of any Unicode letter, mark (for example, accent or umlaut), numeric character, punctuation character, or space.
    attributes.displayName String Optional Mutable The display name of the attribute such as 'T-shirt size'. If provided, it must not be an empty string. Valid characters consist of any Unicode letter, mark (for example, accent or umlaut), numeric character, forward slash, dot, apostrophe, underscore, space, or hyphen.
    attributes.enabled Boolean Required Mutable Indicates whether or not the attribute is enabled. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null. Disabled attributes are ignored for POST or PUT, and are not returned for GET operations.
    attributes.environment.id String N/A Immutable The identifier of the environment resource referenced by this relationship.
    attributes.id String N/A Immutable The attribute's unique identifier.
    attributes.ldapAttribute String Required Immutable The unique identifier for the LDAP attribute.
    attributes.multiValued Boolean Optional Mutable A boolean that specifies whether the attribute has multiple values or a single one. This value can only change from false to true, as changing from true to false is not allowed. Maximum number of values stored is 1,000.
    attributes.name String Required Mutable The name of the attribute. The attribute name must be provided during creation, must not be empty and must not exceed 256 characters. It must also be unique within the schema for an environment. It must start with a letter and may be followed by letters, numbers or hyphens.
    attributes.regexValidation Object Optional Mutable Object representation of the optional regular expression representation of this attribute.
    attributes.regexValidation.pattern String Required Mutable A string that specifies the regular expression to which the attribute must conform. Required if attributes.regexValidation is set.
    attributes.regexValidation.requirements String Required Mutable A string that specifies a developer friendly description of the regular expression requirements. Required if attributes.regexValidation is set.
    attributes.regexValidation.valuesPatternShouldMatch Array Optional Mutable An array that specifies the list of strings matching the regular expression.
    attributes.regexValidation.valuesPatternShouldNotMatch Array Optional Mutable An array that specifies the list of strings not matching the regular expression.
    attributes.required Boolean Optional Mutable Indicates whether or not the attribute is required. Required attributes must be provided a value for POST and PUT. Defaults to false.
    attributes.schema.id String Required Immutable The identifier of the resource referenced by this relationship.
    attributes.schemaType String Required Mutable The schema type of the attribute. This can be CORE, STANDARD or CUSTOM. CORE and STANDARD attributes are supplied by default. CORE attributes cannot be updated or deleted. STANDARD attributes cannot be deleted, but their mutable properties can be updated. CUSTOM attributes can be deleted, and their mutable properties can be updated. New attributes are created with a schema type of CUSTOM.
    attributes.type String Optional Mutable The type of the attribute. This can be STRING, JSON, BOOLEAN, or COMPLEX. If the type is not provided during creation, it defaults to STRING. COMPLEX and BOOLEAN attributes cannot be created, but standard attributes of those types may be updated. JSON attributes are limited by size (total size must not exceed 16KB).
    attributes.unique Boolean Required Mutable Indicates whether or not the attribute must have a unique value within the PingOne environment. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null.
    attributes.subAttributes Array Optional Mutable The list of sub-attributes of this attribute. Only COMPLEX attribute types can have sub-attributes, and only one-level of nesting is allowed. The leaf attribute definition must have a type of STRING or JSON. A COMPLEX attribute definition must have at least one child attribute definition.
    attributes.subAttributes.description String Optional Mutable A description of the sub-attribute. If provided, it must not be an empty string. Valid characters consists of any Unicode letter, mark (for example, accent or umlaut), numeric character, punctuation character, or space.
    attributes.subAttributes.displayName String Optional Mutable The display name of the sub-attribute such as 'T-shirt size'. If provided, it must not be an empty string. Valid characters consist of any Unicode letter, mark (for example, accent or umlaut), numeric character, forward slash, dot, apostrophe, underscore, space, or hyphen.
    attributes.subAttributes.enabled Boolean Required Mutable Indicates whether or not the sub-attribute is enabled. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null. Disabled sub-attributes are ignored for POST or PUT, and are not returned for GET operations.
    attributes.subAttributes.name String Required Mutable The name of the sub-attribute. The sub-attribute name must be provided during creation, must not be empty and must not exceed 256 characters. It must start with a letter and may be followed by letters, numbers or hyphens.
    attributes.subAttributes.required Boolean Optional Mutable Indicates whether or not the sub-attribute is required. Required attributes must be provided a value for POST and PUT. Defaults to false.
    attributes.subAttributes.schemaType String Required Mutable The schema type of the sub-attribute. This can be CORE, STANDARD or CUSTOM. CORE and STANDARD sub-attributes are supplied by default. CORE sub-attributes cannot be updated or deleted. STANDARD sub-attributes cannot be deleted, but their mutable properties can be updated. CUSTOM sub-attributes can be deleted, and their mutable properties can be updated. New sub-attributes are created with a schema type of CUSTOM.
    attributes.subAttributes.type String Optional Mutable The type of the sub-attribute. This can be STRING, JSON, BOOLEAN, or COMPLEX. If the type is not provided during creation, it defaults to STRING. COMPLEX and BOOLEAN sub-attributes cannot be created, but standard sub-attributes of those types may be updated. JSON sub-attributes are limited by size (total size must not exceed 16KB).
    attributes.subAttributes.unique Boolean Required Mutable Indicates whether or not the sub-attribute must have a unique value within the PingOne environment. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null.
    description String Optional Mutable The description of the attribute.
    displayName String Optional Mutable The display name of the attribute such as 'T-shirt size'. If provided, it must not be an empty string. Valid characters consist of any Unicode letter, mark (for example, accent or umlaut), numeric character, forward slash, dot, apostrophe, underscore, space, or hyphen.
    enabled Boolean Required Mutable Indicates whether or not the attribute is enabled. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null. Disabled attributes are ignored for POST or PUT, and are not returned for GET operations.
    environment.id String N/A Immutable The environment resource's unique identifier.
    id String Required Immutable The attribute's unique identifier.
    multiValued Boolean Optional Mutable A boolean that specifies whether the attribute has multiple values or a single one. This value can only change from false to true, as changing from true to false is not allowed. Maximum number of values stored is 1,000.
    name String Required Mutable The attribute name.
    required Boolean Optional Mutable Indicates whether or not the attribute is required. Required attributes must be provided a value for POST and PUT. Defaults to false.
    schema.id String Optional Mutable The schema's unique identifier.
    schemaType String Required Mutable The schema type of the attribute. This can be CORE, STANDARD or CUSTOM. CORE and STANDARD attributes are supplied by default. CORE attributes cannot be updated or deleted. STANDARD attributes cannot be deleted, but their mutable properties can be updated. CUSTOM attributes can be deleted, and their mutable properties can be updated. New attributes are created with a schema type of CUSTOM.
    type String Optional Mutable The type of the attribute. This can be STRING, JSON, BOOLEAN, or COMPLEX. If the type is not provided during creation, it defaults to STRING. COMPLEX and BOOLEAN attributes cannot be created, but standard attributes of those types may be updated. JSON attributes are limited by size (total size must not exceed 16KB).
    unique Boolean Required Mutable Indicates whether or not the attribute must have a unique value within the PingOne environment. This is a required property only for POST and PUT operations, and cannot be omitted or explicitly set to null.

    Schemas GET response model

    Property Type Required? Mutable? Description
    description String Optional Mutable The description of the schema.
    environment.id String N/A Immutable The environment resource's unique identifier.
    id String Required Immutable The schema's unique identifier.
    name String Required Mutable The schema name.
    schemas.description String Optional Mutable The description of the schema.
    schemas.environment.id String Optional Mutable The unique identifier of the environment containing the schema.
    schemas.id String Optional Mutable The schema's unique identifier.
    schemas.name String Required Mutable The schema name.

    Schemas events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create Attribute


    Read All Schemas


    Read All (Schema) Attributes


    Read One Schema


    Read One Attribute


    Update Attribute (Put)


    Update Attribute (Patch)


    Delete Attribute

    Users

    A user is any end-user of the applications and services provided by the PingOne platform. Workforce users, customers, and admins are all user types. Each user is a resource with a unique identity that interacts with the applications and services in your PingOne environment.

    Every user is associated with a PingOne environment and a user population.

    The Users service lets you create, read, update, and delete user resources. You can manage user group membership, passwords, admin roles, and manage associations with external identity providers (IdPs).

    • For more information about user management, refer to Users in the PingOne Admin Guide.

    • Managing user accounts

      The base endpoint, /environment/{{envID}}/users, enables directory operations to create and manage user accounts, including assigning the user to a population, assigning user roles, and unlocking a user account. It also supports an import capability that gives privileged applications the ability to create a new user and set the user's password.

      For more information, see:

    • Password management

      The password management endpoints provide functions to set, update, unlock, and recover a user's password.

      For more information, refer to User Passwords.

    • MFA device management

      The multi-factor authentication (MFA) device endpoints enable the user's MFA capability and specify MFA devices associated with the user account.

      For more information, see:

    • User agreement consent management

      The /environments/{{envID}}/users/{{userID}}/agreementConsents endpoint provides directory operations to read, accept, and revoke an agreement associated with a user account.

      For more information, refer to User Agreement Consents.

    • User ID verification

      The /environments/{{envID}}/users/{{userID}}/verifyTransactions endpoint provides directory operations to create, read, update, and delete an ID verification transaction record associated with a user.

      For more information, refer to PingOne Verify.

    You must have the Identity Data Admin role to perform operations on users resources.

    Use Cases

    User operations

    The users endpoint provides operations to create, read, update, and delete users. It includes an import operation that gives privileged applications the ability to create a new user and set the user's password as part of the user create operation. It also includes endpoints for user verification actions.

    Users data model

    Property Type Required? Mutable? Description
    account.canAuthenticate Boolean Required Mutable Whether the user can authenticate. If the value is set to false, the account is locked or the user is disabled, and unless specified otherwise in administrative configuration, the user will be unable to authenticate.
    account.lockedAt Date N/A Read-only The time the specified user account was locked. This property might be absent if the account is unlocked or if the account was locked out automatically by failed password attempts.
    account.secondsUntilUnlock Integer N/A Read-only The number of seconds until the user's account is unlocked. This property is absent if the account is unlocked, or if it will not automatically unlock (and must be unlocked by an administrator).
    account.status String Required Mutable The account locked state. Options are LOCKED and OK.
    account.unlockAt Date N/A Read-only The time the specified user account will be unlocked. This property is absent if the account is unlocked, or if it will not automatically unlock and must be unlocked by an administrator.
    address.countryCode String Optional Mutable The country name component. When specified, the value must be in ISO 3166-1 "alpha-2" code format. For example, the country codes for the United States and Sweden are "US" and "SE", respectively. Valid characters consist of two upper-case letters (regex: [A-Z]{2}).
    address.locality String Optional Mutable The city or locality component of the address. The string can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). It can have a length of no more than 256 characters (min/max=1/256).
    address.postalCode String Optional Mutable The ZIP code or postal code component of the address. The string can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). It can have a length of no more than 40 characters (min/max=1/40).
    address.region String Optional Mutable The state, province, or region component of the address. The string can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). It can have a length of no more than 256 characters (min/max=1/256).
    address.streetAddress String Optional Mutable The full street address component, which may include house number, street name, P.O. box, and multi-line extended street address information. This attribute may contain newlines (regex: ^[\p{L}\p{M}\p{N}\p{Zs}\p{P}\n\r]*$). It can have a length of no more than 256 characters (min/max=1/256).
    bypassMFAEnabledUntil Date Required Mutable Used to define a period during which the user can bypass MFA. For details, refer to Allow MFA Bypass for User.
    canBypassMFA Boolean N/A Read-only Indicates whether the user currently has permission to bypass MFA.
    createdAt Date N/A Read-only The time the resource was created.
    email String Required Mutable The user's email address, which must be provided and valid. For more information about email address formatting, refer to section 3.4 of RFC 2822, Internet Message Format.
    emailVerified Boolean Optional Mutable Whether the user's email is verified, either as part of account verification (refer to VERIFICATION_REQUIRED in the lifecycle.status property), or as the result of a separate email verification process (refer to Verify Email (Code)).
    enabled Boolean N/A Read-only Whether the user is enabled. This attribute is set to 'true' by default when the user is created.
    environment.id String N/A Read-only The environment resource's unique identifier associated with the user.
    externalId String Optional Mutable An identifier for the user resource as defined by the provisioning client. This may be explicitly set to null when updating a user to unset it. The externalId attribute simplifies the correlation of the user in PingOne with the user's account in another system of record. The platform does not use this attribute directly in any way, but it is used by Ping Identity's Data Sync product. It can have a length of no more than 1024 characters (min/max=1/1024).
    groupMemberships.type String Optional Immutable Whether the user is a member of a group through direct assignment or indirect filtering: DIRECT or INDIRECT.
    id String N/A Read-Only The user resource's unique identifier.
    identityProvider.id String Required/Optional Mutable Identifies the external identity provider used to authenticate the user. If not provided, PingOne is the identity provider. This attribute is required if the identity provider is authoritative for just-in-time user provisioning.
    identityProvider.type String N/A Read-Only Identifies the type of identity provider used to authenticate the user. Possible values are FACEBOOK, GOOGLE, LINKEDIN_OIDC, LINKEDIN (Deprecated), OPENID_CONNECT, APPLE, AMAZON, TWITTER, YAHOO, PAYPAL, MICROSOFT, GITHUB, SAML, and PING_ONE. The default value of PING_ONE is set when a value for identityProvider.id is not provided. The PING_ONE value is the default for all pre-existing users. There is currently no search filter support for this attribute.
    invite Object N/A Read-only The invitation resource. Applicable only when a user record represents an invite.
    invite.expiresAt String N/A Read-only Date value for when the invite expires.
    lastSignOn.at Date N/A Read-only The time of the last successful login of the user through the PingOne flow API.
    lastSignOn.remoteIp String N/A Read-only The IP address of the last successful login of the user through the PingOne flow API.
    lifecycle.status String Optional Mutable The status of the account lifecycle. Options are ACCOUNT_OK and VERIFICATION_REQUIRED. This property can only be set when importing a user to set the initial account status. If omitted, the account status defaults to ACCOUNT_OK. When the initial status is set to VERIFICATION_REQUIRED, an email address is required and a verification email is sent to the email address provided. The verification code must be entered the first time the user tries to authenticate and does not expire when used for this purpose. As a result of using the verification code, the value transitions to ACCOUNT_OK. If the verification code is used within 24 hours, emailVerified was set to false, and the user's email has not changed, emailVerified also transitions to true.
    lifecycle.suppressVerificationCode Boolean Optional Write-Only Used when importing a user and the lifecycle.status is set to VERIFICATION_REQUIRED. If this property is set to true, no verification email is sent to the user. If this property is omitted or set to false, a verification email is sent to the user automatically.
    locale String Optional Mutable The user's default location. This may be explicitly set to null when updating a user to unset it. This is used for purposes of localizing such items as currency, date time format, or numerical representations. If provided, it must be a valid language tag as defined in RFC 5646. The following are example tags: fr, en-US, es-419, az-Arab, man-Nkoo-GN. The string can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). It can have a length of no more than 256 characters (min/max=1/256).
    memberOfAdminGroup Array Optional Read-only A list of groups with admin roles that include the user. Only returned when the include=memberOfAdminGroup query parameter is appended to the request URL.
    memberOfExternalGroups Object[] Optional Mutable This is used only for Just In Time (JIT) creation of external groups.
    memberOfExternalGroups.name String Required Mutable The name of the external group as it exists in the source.
    memberOfExternalGroups.sourceId String Required Mutable The ID of the external group as it exists in the source (generally a UUID).
    memberOfExternalGroups.sourceType String Required Mutable The type of the external group as it exists in the source. Currently, this can be only "GATEWAY" or "IDP".
    memberOfGroupIDs Array Optional Read-only IDs for the groups the user is a member of. This property is returned for GET {{apiPath}}/environments/{{envID}}/users/{{userID}} when the include=memberOfGroupIDs query parameter is appended to the request. This property is not returned with a list of users.
    memberOfGroupNames Array Optional Read-only Names for the groups the user is a member of. This property is returned for GET {{apiPath}}/environments/{{envID}}/users/{{userID}} when the include=memberOfGroupNames query parameter is appended to the request. This property is not returned with a list of users.
    mfaEnabled Boolean Optional Mutable Whether multi-factor authentication is enabled. This attribute is set to false by default when the user is created. You can set mfaEnabled to true with POST Create User, POST Create User (Import), or PUT Update User MFA Enabled. You cannot update mfaEnabled with PUT Update User or PATCH Update User.
    mobilePhone String Optional Mutable The user's native phone number. This might also match the primaryPhone attribute. This may be explicitly set to null when updating a user to unset it. Valid phone numbers must have at least one number and a maximum character length of 32.
    name.family String Optional Mutable The family name of the user, or Last in most Western languages (for example, 'Jensen' given the full name 'Ms. Barbara J Jensen, III'). This may be explicitly set to null when updating a name to unset it. Valid characters consist of any Unicode letter, mark (for example, accent, umlaut), space, dot, apostrophe, or hyphen (regex: ^[\p{L}\p{M}\p{N}' .-]*$). It can have a length of no more than 256 characters (min/max=1/256).
    name.formatted String Optional Mutable The fully formatted name of the user (for example 'Ms. Barbara J Jensen, III'). This can be explicitly set to null when updating a name to unset it. Valid characters consist of any Unicode letter, mark (for example, accent, umlaut), space, dot, apostrophe, or hyphen (regex: ^[\p{L}\p{M}\p{N}' .-]*$). It can have a length of no more than 256 characters (min/max=1/256).
    name.given String Optional Mutable The given name of the user, or First in most Western languages (for example, 'Barbara' given the full name 'Ms. Barbara J Jensen, III'). This may be explicitly set to null when updating a name to unset it. The string can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). It can have a length of no more than 256 characters (min/max=1/256).
    name.honorificPrefix String Optional Mutable The honorific prefix(es) of the user, or title in most Western languages (for example, 'Ms.' given the full name 'Ms. Barbara Jane Jensen, III'). This can be explicitly set to null when updating a name to unset it.
    name.honorificSuffix String Optional Mutable The honorific suffix(es) of the user, or suffix in most Western languages (for example, 'III' given the full name 'Ms. Barbara Jane Jensen, III'). This can be explicitly set to null when updating a name to unset it.
    name.middle String Optional Mutable The the middle name(s) of the user (for exmple, 'Jane' given the full name 'Ms. Barbara Jane Jensen, III'). This can be explicitly set to null when updating a name to unset it. The string can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). It can have a length of no more than 256 characters (min/max=1/256).
    nickname String Optional Mutable The user's nickname. This can be explicitly set to null when updating a user to unset it. The string can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). It can have a length of no more than 256 characters (min/max=1/256).
    Operations Array Optional Mutable A JSON array that specifies modifications to users schema attributes in a SCIM PATCH request. The Operations property is not valid in a regular PATCH request.
    Operations.op String Optional Mutable The update operation type. Options are add, replace, and remove. The Operations property can have one or more operations.op attributes specified in the request body.
    Operations.path String Optional Mutable The users schema attribute to be modified.
    Operations.value String Optional Mutable The updated value for the users schema attribute that is modified.
    password Object Optional Immutable An object that specifies the user's password. This property is never returned in the response.
    password.forceChange Boolean Optional Mutable Whether the user is forced to change the password on the next log in. If not provided, the property is set to false.
    password.value String Optional Immutable The user's password value. The string is either in cleartext or pre-encoded format.
    password.external Object Optional Immutable Maps the information relevant to the user's password, and its association to external directories.
    password.external.
    gateway
    Object Optional Mutable Contains the gateway properties. When this is value is specified, the user's password is managed in an external directory. You can set the user password using Create User (Import) or Update Password (Set).
    password.external.
    gateway.id
    String Optional Immutable The UUID of the linked gateway that references the remote directory.
    password.external.
    gateway.type
    Enumeration Optional Mutable Indicates one of the supported gateway types. For the supported types, refer to type in the Gateway base data model.
    password.external.
    gateway.userType
    String Optional Mutable A reference to a userType in the list of userTypes values for an LDAP gateway.
    password.external.
    gateway.userType.id
    String Optional Immutable The UUID of a user type in the list of userTypes for the LDAP gateway.
    password.external.
    gateway.correlationAttributes
    Object Optional Mutable Maps the external LDAP directory attributes to PingOne attributes. PingOne uses the correlationAttributes values to read the attributes from the external LDAP directory and map them to the corresponding PingOne attributes.
    photo.href String Optional Mutable The URI that is a uniform resource locator (as defined in Section 1.1.3 of RFC 3986) that points to a resource location representing the user's image. This can be removed from a user by setting the photo attribute to null. If provided, the resource must be a file (for example, a GIF, JPEG, or PNG image file) rather than a web page containing an image. It must be a valid URL that starts with the HTTP or HTTPS scheme.
    population.id String Optional Immutable The identifier of the population resource associated with the user. This property cannot be updated using PUT {{apiPath}}/environments/{{envID}}/users/{{userID}}. However, it can be updated using PUT {{apiPath}}/environments/{{envID}}/users/{{userID}}/population.
    preferredLanguage String Optional Mutable The user's preferred written or spoken languages. This may be explicitly set to null when updating a user to unset it. If provided, the format of the value must be a valid language range and the same as the HTTP Accept-Language header field (not including Accept-Language:) and is specified in Section 5.3.5 of RFC 7231. For example: en-US, en-gb;q=0.8, en;q=0.7.
    primaryPhone String Optional Mutable The user's primary phone number. This might also match the mobilePhone attribute. This may be explicitly set to null when updating a user to unset it. Valid phone numbers must have at least one number and a maximum character length of 32.
    timezone String Optional Mutable The user's time zone. This can be explicitly set to null when updating a user to unset it. If provided, it must conform with the IANA Time Zone database format RFC 6557, also known as the "Olson" time zone database format Olson-TZ for example, "America/Los_Angeles" (regex: ^\w+\/\w+$).
    title String Optional Mutable The user's title, such as "Vice President". This can be explicitly set to null when updating a user to unset it. The string can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). It can have a length of no more than 256 characters (min/max=1/256).
    type String Optional Mutable The user's type, which is optional. This can be explicitly set to null when updating a user to unset it. This attribute is organization-specific and has no special meaning within the PingOne platform. It could have values of "Contractor", "Employee", "Intern", "Temp", "External", and "Unknown". The string can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). It can have a length of no more than 256 characters (min/max=1/256).
    updatedAt Date N/A Read-only The time the resource was last updated.
    username String Required Mutable* The user name, which must be unique within an environment. This must either be a well-formed email address or another string. The string is case-insensitive, and can contain any letters, numbers, combining characters, math and currency symbols, dingbats and drawing characters, and invisible whitespace (regex: ^[\p{L}\p{M}\p{Zs}\p{S}\p{N}\p{P}]*$). Any leading whitespace is ignored. The maximum length is 128 characters. *Note: This property is immutable when PingID is part of the environment.
    verifyStatus String Required Mutable Indicates whether ID verification can be done for the user. This value can be: NOT_INITIATED (the initial value), ENABLED, or DISABLED. If the user verification status is DISABLED, a new verification status cannot be created for that user until the status is changed to ENABLED.

    Limiting and Filtering data

    You can limit the number of results returned on the Read User or Users request with the limit parameter:

    https://api.pingone.com/v1/environments/5caa81af-ec05-41ff-a709-c7378007a99c/users?limit=200
    

    Refer to Pagination for more information about use of the limit parameter, as well as other methods of controlling pagination.

    You can filter response data by applying a SCIM filtering expression to the Read User or Users request. For large collections, a filtering expression appended to the query returns a targeted, more useful data set. For example, this URL-encoded SCIM filter returns up to 200 members of the population with an ID of 60971d3b-cc5a-4601-9c44-2be541f91bf1:

    https://api.pingone.com/v1/environments/5caa81af-ec05-41ff-a709-c7378007a99c/users?limit=200&filter=population.id eq "60971d3b-cc5a-4601-9c44-2be541f91bf1"
    
    SCIM operators

    These SCIM operators can be applied to the following attributes:

    • eq (equals)

      Supported attributes: accountId, address.streetAddress, address.locality, address.region, address.postalCode, address.countryCode, email, enabled, endDate, externalId, locale, mobilePhone, name.formatted, name.given, name.middle, name.family, name.honorificPrefix, name.honorificSuffix, nickname, population.id, photo.href, preferredLanguage, primaryPhone, startDate, timezone, title, type, username, and custom attributes of type STRING

    • sw (starts with)

      Supported attributes: accountId, address.streetAddress, address.locality, address.region, address.postalCode, address.countryCode, email, enabled, externalId, locale, mobilePhone, name.formatted, name.given, name.middle, name.family, name.honorificPrefix, name.honorificSuffix, nickname, photo.href, preferredLanguage, primaryPhone, timezone, title, type, username, and custom attributes of type STRING

    • ew (ends with)

      Supported attributes: name.given, name.family, email (only for the domain specified in the address, starting with and including the symbol "@", such as "@example.com").

    • and (logical AND)

      Logical AND for building compound expressions in which both expressions are true.

    • or (logical OR)

      Logical OR for building compound expressions if either expression is true.

    • co (contains)

      Supported attributes: name.given, name.family.

    These SCIM operators are not supported: ne (not equal), pr (present, is a non-empty or non-null value), gt (greater than), ge (greater than or equal to), lt (less than), le (less than or equal to), not (logical NOT). The API does not support empty strings in a sw filtering expression. If empty strings are submitted in the request, the response returns a 400 FAILED_REQUEST with an INVALID_FILTER detail error.

    You can also use custom user schema string attributes in a filtering expression to fine-tune the user response data. For more information about custom attributes, refer to Schemas. For more information about SCIM syntax and operators, refer to Conventions.

    Expanding user population information

    The GET {{apiPath}}/environments/{{envID}}/users and GET {{apiPath}}/environments/{{envID}}/users/{{userID}} endpoints allow an expand query parameter on the population embedded resource. A query that expands population returns information about a user's associated population as an _embedded resource.

    Users events generated

    Refer to Audit Reporting Events for the events generated.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create User


    Create User (Import)


    Create User Import External Password


    Verify User


    Send/Resend User Verification Code


    Read User or Users


    Read User by ID


    Read User Identity Provider


    Update User


    Update User Identity Provider


    Update User


    Update User Using JSON Array


    Delete User

    Group Membership

    For information about creating, updating, and removing groups, including nested groups and external groups, refer to Groups.

    There are two ways to add users to a group. The first is to directly add them with the POST {{apiPath}}/environments/{{envID}}/users/{{userID}}/memberOfGroups operation. These members are included in both the directUserCounts and totalUserCounts properties.

    The second method is to dynamically add users to a group with the userFilter filter property. You can use this filter with the POST {{apiPath}}/environments/{{envID}}/groups and PUT {{apiPath}}/environments/{{envID}}/groups/{{groupID}} operations. Place the filter in the body of the request as shown in the example below:

    {
        ...
        "userFilter": "title eq \'Manager\'",
        ...
    }
    

    When the POST or PUT operations above are executed, all existing users that meet the filter criteria are dynamically added to the group. In addition, all subsequent new users that are added that meet the filter criteria are also added to the group. The filter supports all the operators and properties that are supported when searching user data. Refer to Users for a complete list. Members added in this way are included in the totalUserCounts property, but not the directUserCounts property.

    A population-level group can contain users from that population only, but an environment-level group can contain users from different populations in the same environment.

    Learn more about managing group members in Managing group membership, in the PingOne Admin Guide.

    Members directly added to a group with the POST {{apiPath}}/environments/{{envID}}/users/{{userID}}/memberOfGroups operation are removed from the group with the DELETE {{apiPath}}/environments/{{envID}}/users/{{userID}}/memberOfGroups/{{groupID}} operation.

    Members dynamically added to a group with the userFilter filter property are automatically removed from the group when the filter criteria is no longer met. You can do this by changing the filter criteria with PUT {{apiPath}}/environments/{{envID}}/groups/{{groupID}} or by changing the user data to no longer match the filter criteria. You cannot remove these members with the DELETE {{apiPath}}/environments/{{envID}}/users/{{userID}}/memberOfGroups/{{groupID}} operation.


    Add User to Group


    Remove User from Group


    Read All Users in a Group


    Read All Users in Multiple Groups


    Read All Users in a Group with Other User Attribute


    Read All Group Names for User


    Read All Group IDs for User


    Read All Group Memberships for User


    Read One Group Membership for User

    Enable Users

    The enable user settings control whether a user's ability to authenticate is activated or deactivated. This endpoint gives administrators the ability to turn on (or off) a user's active status.

    For information about users, refer to Users.

    Enable user data model

    Property Type Required? Mutable? Description
    enabled Boolean Required Mutable Specifies whether the user is enabled. This attribute is set to true by default when the user is created.
    id String Required Mutable Specifies the user resource's unique identifier.

    Response codes

    Code Message
    200 Successful operation.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Read User Enabled


    Update User Enabled

    Linked Accounts

    The linked accounts endpoints manage a user's account links to external identity provider accounts. In an authentication flow, after successful authentication at the external identity provider, a linked account resource is created to establish the connection between the user resource in the PingOne directory and that user's external identity provider account. These endpoints can also be used to view and remove linked accounts in delegated administration or self-service cases.

    Users linked accounts request data model

    Property Type Required? Mutable? Description
    attributes.{{attributeName}} Object Optional Mutable An object that specifies an optional user attribute to update when linking the user. These are mapped user attribute names and values from the external identity provider that are used to update the user.
    externalId String Required Mutable A string that specifies the external ID, which is the identifier for the user's external identity provider account.
    identityProvider.id String Required Mutable A string that specifies the external identity provider ID associated with the user to which the user has a linked account.

    Users linked accounts response data model

    Property Type Required? Mutable? Description
    environment.id String Required Read-only A string that specifies the environment associated with the user's linked account.
    externalId String Required Read-only A string that specifies the external ID, which is the identifier for the user's external identity provider account.
    id String Required Read-only A string that specifies the linked account ID associated with the user resource ID identified in the request URL.
    identityProvider.id String Required Read-only A string that specifies the external identity provider ID associated with the user to which the user has a linked account.
    user Object Required Read-only An _embedded object that specifies the user associated with the linked account.
    user.id String Required Read-only A string that specifies the user ID associated with the linked account.

    Response codes

    Code Message
    200 Successful operation.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    For linked accounts endpoint operations, you need the Identity Data Admin role to get or delete linked account resources.


    Create Linked Account


    Read Linked Accounts


    Read One Linked Account


    Delete Linked Account

    User Populations

    The user populations endpoint supports operations to read and update the population associated with a specified user.

    Users data model

    Property Type Required? Mutable? Description
    id String Required Mutable Specifies the population ID associated with the user resource ID identified in the request URL.

    Response codes

    Code Message
    200 Successful operation.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Read User Population


    Update User Population

    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

    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. This property is not returned if the user does not have a password.
    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.

    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.

    Password Check


    Password Force Change


    Password Recover


    Password Resend Recovery Code


    Password Unlock


    Read Password State


    Update Password (Self)


    Update Password (Admin)


    Update Password (Set)


    Update Password (Set Value)


    Update Password (LDAP Gateway)

    User Role Assignments

    The users role assignments endpoint implements functions to create, read, and delete the role assignments associated with user resources. For more information about roles and the permissions associated with each role, refer to Roles.

    Role assignments are defined by the role itself, and at a more granular level by the scope attribute associated with the role assignment. The role assignment scope identifies the type of platform resource that defines the scope, and the id of the specific resource to which the scope applies. The following sample shows the scope attribute, which includes the resource type and id attributes. In this case, the scope is restricted to the environment resource identified by its id.

    {
      "scope": {
       "id": "d928aa51-c194-4333-9cf5-0fd0c9b7d62f",
       "type": "ENVIRONMENT"
       }
    }   
    

    Role assignment scopes can be:

    • Organization

    • Environment

    • Population

    • Application

    Users role assignments data model

    Property Type Required? Mutable? Description
    environment.id String N/A Read-only The environment associated with the user.
    id String N/A Read-only Specifies the user role assignment ID.
    readOnly Boolean Optional Mutable Specifies whether this role assignment can be deleted by the current actor.
    role.id String Required Mutable The role ID.
    scope.id String Required Mutable The role assignment scope ID. When this is an application ID, because an application ID is guarenteed to be globally unique (across all environments), the application ID here eliminates the need to also specify the application environment ID.
    scope.type String Required Mutable The type of resource defining the scope of the Role assignment. Options are ORGANIZATION, ENVIRONMENT, and POPULATION, APPLICATION.

    Use Cases

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Create User Role Assignment


    Read Role Assignments


    Read One Role Assignment


    Delete User's Role Assignment

    User Application Role Assignments

    The users application role assignments endpoint implements functions to create, read, and delete the PingOne Authorize application role assignments associated with user resources. For more information about application roles and the permissions associated with each role, refer to PingOne Authorize Application Resources and Roles.

    Users role assignments data model

    Property Type Required? Mutable? Description
    environment.id String N/A Read only Specifies the environment associated with the user.
    id String Required Mutable Specifies the application role ID to assign to the specified user.
    name String N/A Read only Specifies the name of the application role assigned to the user.
    description String N/A Read only Specifies the description of the application role assigned to the 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 do not have access to this resource.
    404 The requested resource was not found.

    Create User Application Role Assignment


    Read User Application Role Assignments


    Delete User Application Role Assignment

    User Agreement Consents

    A user agreement consent resource is a record of a user consenting to a terms of service agreement for a specific language and revision. Only the latest consent record is available through a GET request, which shows only the current agreement consent state for (1) all the user's agreement consents, or (2) the current agreement consent state for one specific agreement.

    This service provides operations to read and update user agreement consent resources.

    You need the Environment Admin role to perform operations on user consent resources.

    Agreement consent state data model

    The properties described here identify the agreement consents associated with a specified user and current state of the agreement consent (represented by the lastConsent properties).

    Property Type Required? Mutable? Description
    agreement Object Required Mutable Specifies the agreement resource for this agreement consent.
    agreement.id String Required Mutable Specifies the UUID of the agreement resource for this agreement consent.
    language Object Required Mutable Specifies the language resource associated with this agreement consent.
    language.id String Required Mutable Specifies the language resource UUID associated with this agreement consent. If the status is ACCEPTED, then this is the language associated with the consent. For any other status value, this represents the language to which the user must consent.
    lastConsent.at DateTime N/A Read-only Specifies the date and time at which the user consented to the agreement.
    lastConsent.expiresAt DateTime N/A Read-only Specifies the date and time at which the user consent to the agreement expires.
    lastConsent.language Object N/A Read-only Specifies the language resource associated with the user's last agreement consent.
    lastConsent.language.id String N/A Read-only Specifies the language resource UUID associated with the user's last agreement consent.
    lastConsent.revision Object N/A Read-only Specifies the revision resource associated with the user's last agreement consent.
    lastConsent.revision.id String N/A Read-only Specifies the revision resource UUID associated with the user's last agreement consent.
    revision Object Required Mutable Specifies the revision resource associated with this agreement consent.
    revision.id String Required Mutable Specifies the revision resource UUID associated with this agreement consent.
    status String N/A Read-only Specifies whether the consent is valid or not, depending on the agreement, language, and revision configuration. Options are PENDING, ACCEPTED, REVOKED, EXPIRED, and AGREEMENT_DISABLED. This property value is computed dynamically when the resource is returned.
    user Object Required Mutable Specifies the user associated with this agreement consent.
    user.id String Required Mutable Specifies the UUID of the user associated with this agreement consent.

    User consent event model

    The properties described here are used with the PingOne audit reporting service to search for a user's consent history for specific agreements. For more information about the audit events to use to query a user's consent history, refer to Agreement Management.

    Property Type Required? Mutable? Description
    consentedAt DateTime Optional Mutable Specifies the date and time at which the user consented to the agreement.
    agreement Object Required Mutable Specifies the agreement resource for this agreement consent.
    agreement.id String Required Mutable Specifies the UUID of the agreement resource for this agreement consent.
    language Object Required Mutable Specifies the language resource associated with this agreement consent.
    language.id String Required Mutable Specifies the language resource UUID associated with this agreement consent.
    revision Object Required Mutable Specifies the revision resource associated with this agreement consent.
    revision.id String Required Mutable Specifies the revision resource UUID associated with this agreement consent.
    status String N/A Read-only Specifies whether the consent is valid or not, depending on the agreement, language, and revision configuration. Options are ACTIVE, INVALID, and EXPIRED. This property value is computed dynamically when the resource is returned.
    user Object Required Mutable Specifies the user associated with this agreement consent.
    user.id String Required Mutable Specifies the UUID of the user associated with this agreement consent.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Accept Agreement


    Revoke Agreement


    Read All User Agreement Consents

    User OAuth Scope Consents

    A user OAuth scope consent resource is a record of a user's OpenID Connect OAuth scope consents. The OAuth scope consent service gives end users the ability to control the user data they wish to share with third party applications. These consents granted through PingOne help enterprises build trust with customers who want to use third-party applications with the enterprise's service but want control over the data they are agreeing to share.

    This service provides operations to create, read, and update user OAuth scope consent resources. This service applies only to applications that have their protocol property set to OPENID_CONNECT.

    You need the Identity Data Admin role to perform operations on user oauth scope consent resources.

    Expanding and filtering response data

    You can expand GET {{apiPath}}/environments/{{envID}}/users{{userID}}/oauthConsents and GET {{apiPath}}/environments/{{envID}}/users/{{userID}}/oauthConsents/{{oauthConsentID}} results with the expand=applications query parameter to return additional information about the associated application in the response.

    You can filter a user's consents by application ID or by application name using the query parameters filter=application.id eq "{{appId}}" or filter=application.name eq "{{appName}}" on GET operations.

    Property Type Required? Mutable? Description
    application Relationship Optional Mutable A relationship that specifies the application associated with this OAuth scope consent.
    application.id String Optional Mutable A string that specifies the ID of the application associated with this OAuth scope consent. This property is required for applications with an application.appType property of PINGONE.
    application.name String Optional Mutable A string that specifies the name of the application associated with this OAuth scope consent. This property is required for applications with an application.appType property of EXTERNAL.
    application.appType String Optional Mutable A string that specifies the application type associated with this OAuth scope consent. Options are PINGONE and EXTERNAL.
    browser UserAgentInfo Optional Read only Information that specifies the browser used to make the consent. The UserAgentInfo object includes data for name (required) and version.
    consentedAt Date Optional Read only The time when a user consent occurs.
    device UserAgentInfo Optional Read only Information that specifies the device used to make the consent. The UserAgentInfo object includes data for the device type.
    environment.id String Optional Read only A string that specifies the ID of the environment associated with this OAuth scope consent.
    operatingSystem UserAgentInfo Optional Read only Information that specifies the operating system of the device used to make the consent. The UserAgentInfo object includes data for name (required) and version.
    scope Set Optional Mutable A set of strings that specifies the scopes associated with this OAuth scope consent.
    status String Required Mutable A string that specifies whether the consent is valid or not. Options are ACCEPTED, REVOKED, and DECLINED.
    user Relationship Optional Mutable A relationship that specifies the user associated with this OAuth scope consent.
    user.id String Optional Mutable A string that specifies the ID of the user associated with this OAuth scope consent.
    updatedAt Date Optional Read only The time when a user consent is updated.
    Response codes
    Code Message
    200 Successful operation.
    201 Created.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Record User OAuth Scope Consent


    Read All User OAuth Scope Consents

    User Accounts

    The user account management endpoint provides functionality to unlock a user account. For information about how to configure account lockout for MFA actions, refer to MFA Settings.

    Account state data model

    Property Type Required? Mutable? Description
    account.canAuthenticate Boolean Required Mutable Indicates whether the user can authenticate. If the value is set to false, the account is locked or the user is disabled, and unless specified otherwise by the administrative configuration, the user will be unable to authenticate.
    account.lockedAt Date N/A Read-only The date-time the specified user account was locked. This property might be absent if the account is unlocked or if the account was locked out automatically by failed password attempts.
    account.secondsUntilUnlock Integer Optional Read-only The number of seconds until the user's account is unlocked. This property is absent if the account is unlocked, or if it will not automatically unlock (and must be unlocked by an administrator).
    account.status String Required Mutable The account locked state. Options are LOCKED and OK.
    account.unlockAt Date Optional Mutable The time the specified user account will be unlocked. This property is absent if the account is unlocked, or if it will not automatically unlock (and must be unlocked by an administrator).

    User Account Unlock


    User Account Lock

    User Sessions

    Represents the user session associated with a flow. You can read all sessions, read a single session, or delete a single session associated with your user ID. Administrators can read all sessions for a specified user, read a single session for a specified user, or delete a user's session for the environment or population for which they have administrator privileges.

    Refer also to Sessions for interfaces on the Environment endpoint.

    User session data model

    Property Type Required? Mutable? Description
    activeAt Date N/A Read-only The last user activity time on this session (such as, completing a flow, or an application activity like validating a token).
    browser.name String N/A Read-only The name of the browser.
    browser.version String N/A Read-only The version of the browser.
    createdAt Date N/A Read-only The time the resource was created.
    device.type String N/A Read-only The type of remote device.
    environment.id String Required Immutable The UUID for the environment.
    id String Required Immutable The UUID for the user session.
    lastSignOn.at String N/A Read-only The last time the user signed on using one or more authenticators.
    lastSignOn.remoteIp String N/A Read-only The IP address of the remote device used during the last sign-on.
    locations Object[ ] N/A Read-only Contains the attributes identifying the user location. Only the last 5 locations are maintained.
    location.at Date N/A Read-only The last time the user signed on.
    location.remoteIp String N/A Read-only The IP address of the remote device used during the last sign-on.
    location.city String N/A Read-only The city resolved from the IP address.
    location.state String N/A Read-only The state resolved from the IP address.
    location.region String N/A Read-only The region resolved from the IP address.
    location.country String N/A Read-only The country resolved from the IP address.
    operatingSystem.name String N/A Read-only The name of the operating system.
    operatingSystem.version String N/A Read-only The operating system version.
    user.id String Required Immutable The UUID for the 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 do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Read All Sessions


    Read One Session


    Delete Session

    User Email Verification

    The user email verification endpoint supports operations to verify a user's email through a verification code.

    User email verification data model

    Property Type Required? Mutable? Description
    environment.id String N/A Read-only The environment associated with the user.
    user.id String N/A Read-only The user ID.
    notificationType String Required Mutable Indicates whether the notification is sent to an admin or user.
    verificationCode String Required Read-only The code sent to verify the user's email. The email verification code is 8 alphanumeric characters with a timeout of 24 hours. These attributes are not configurable.

    For more user property descriptions, refer to the Users data model.


    Send Email Verification (Code)


    Verify Email (Code)

    User Admin Invitations

    The users endpoint supports operations to send administrator invitations to users.

    User invitations data model

    Property Type Required? Mutable? Description
    invite.acceptUrl String Optional Mutable The URL where the invited user can accept the invitation.
    invite.expirationMinutes String Optional Mutable How long the invite is valid for, represented in minutes.
    invite.isAdmin Boolean Required Mutable Indicates if the invitation is an admin invitation.

    For more user property descriptions, refer to the Users data model.

    Response codes
    Code Message
    200 Successful operation.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Send Admin Invite


    Resend Admin Invite

    Metrics

    PingOne metrics provide information about platform activities. The following services give you access to platform data:

    • Activities

      Audit reporting caches incoming audit messages and provides information about audit events for a specified date range. User activities track and aggregate user-activity information on user sign-on attempts and total active user counts.

      For more information, refer to Audit Activities and User Activities.

    • Identity accounts

      Active identity counts use authentication and password-evaluation user events to determine whether an identity is active within a specified sampling period. Total identity counts provide the number of unique identities associated with a specified environment per day.

      For more information, refer to Active identity counts, Authentication per Application, and Total identities.

    • Subscriptions

      The subscription service provides an interface for third-party auditing tools to subscribe to and consume PingOne audit activity events. The service listens for translated audit activities as the source of events and transmits messages about these events to the subscribing audit application.

      For more information, refer to Subscriptions.

    Active Identity Counts

    Active identity counts gather information about identities that have completed one of the following actions successfully during a specified period of time:

    • Authentication

      The identity has completed at least one authentication flow successfully.

    • Password check

      The identity has completed at least one password check successfully.

    This service uses authentication and password-evaluation user events to determine whether an identity is active within a specified sampling period.


    Read Active Identity Counts


    Read Active Identity Counts by Date Range


    Read Active Identity Counts by License

    Audit Activities

    Audit reporting caches incoming audit messages and provides endpoints to request audit events for a specified date range. The /activities endpoint returns all audit log events over the specified period of time. The response shows complete audit entries, and it pages the returned data if the number of entries requires multiple pages.

    The following events and actors are tracked:

    • Actions

      Logs any action or activity against a defined PingOne resource. The audit message includes the ID for the resource affected by the event.

    • Actors

      Tracks the actor or agent who initiated the action. The audit message includes the unique identifier and the friendly name of the actor (end user) responsible for the event and the client used by the actor to perform the action on the resource.

    • Date and time

      The date and time the audit activity was recorded.

    • Status

      Tracks and caches the resulting status of the action. The audit message specifies the success or failure of the event, and if a failure occurred, it provides the reason for the failure.

    Audit reporting data model

    Property Description
    action.description A string that specifies the description of the action performed.
    action.type A string that specifies the type of action performed (such as authentication or password reset).
    actors.client.id A string that specifies the ID of the client.
    actors.client.name A string that specifies the name assigned to the client for PingOne sign on.
    actors.client.type A string that specifies the type of actor. Options are USER or CLIENT.
    actors.client.href A string that specifies the URL for the specified client resource.
    actors.client.environment.id A string that specifies the ID of the environment resource associated with the client.
    actors.user.id A string that specifies the ID of the user.
    actors.user.name A string that specifies the name assigned to the user for PingOne sign on.
    actors.user.href A string that specifies the URL for the specified user resource.
    actors.user.type A string that specifies the type of actor. Options are USER or CLIENT.
    actors.user.environment.id A string that specifies the ID of the environment resource associated with the user.
    actors.user.population.id A string that specifies the ID of the population resource associated with the user.
    correlationId A string that specifies a PingOne identifier for multiple messages in a transaction.
    createdAt The date and time at which the event was created (ISO 8601 format).
    id A string that specifies the ID of the audit activity event.
    internalCorrelation.sessionId A string that specifies the PingOne actor session ID.
    internalCorrelation.transactionId A string that specifies the PingOne transaction ID.
    recordedAt The date and time at which the event was recorded (ISO 8601 format).
    resources.href A string that specifies the URL for the specified resource.
    resources.id A string that specifies the ID assigned as the key for the identifier resource (such as the environment, population or event message).
    resources.name A string that can be either the user name or the name of the environment, based on the resource type.
    resources.type A string that specifies the type of resource associated with the event. Options are USER, ORGANIZATION, or ENVIRONMENT.
    resources.population.id The UUID assigned as the key for the population resource.
    result.description A string that specifies the description of the result of the operation.
    result.id A string that specifies the ID for the result of the operation.
    result.status A string that specifies the result of the operation. Options are succeeded or failed.
    source.ipAddress The IP address of the originating HTTP request.
    source.userAgent The User-Agent header value of the originating HTTP request.
    tags.adminIdentityEvent A string identifying the activity as the action of an administrator on other administrators.

    Filtering data

    The GET {{apiPath}}/environments/{{envID}}/activities and POST {{apiPath}}/environments/{{envID}}/activities requests accept SCIM filtering expressions to fine-tune the response data. For large collections, additional filtering expressions can be added to the request URL to focus on particular event types.

    The minimum filter must include:

    • A date range for the recorded event time.
    Filter Description
    recordedat lt "yyyy-MM-dd'T'HH:mm:ss.SSSZ" Audit events recorded before the specified time.
    recordedat gt "yyyy-MM-dd'T'HH:mm:ss.SSSZ" Audit events recorded after the specified time.

    For example, this SCIM filter returns audit events from the start date of "2018-01-01" and an end date of "2018-03-31":

    https://api.pingone.com/v1/environments/{{envID}}/activities?filter=recordedat gt "2018-01-01T00:00:00Z" AND recordedat lt "2018-03-31T23:59:00Z"
    
    

    The filter can also include any one of the following:

    • Population ID
    • Actor ID and optional population ID.
    • Action Type and optional population ID
    • Resource ID
    • Resource Type and optional population ID
    Filter Description
    resources.population.id eq ":id" Audit events associated with the specified population.
    actors.user.id eq ":id" Audit events performed by the specified user ID or client ID. Optionally, you can include the associated population.
    action.type Audit events recorded for the specified type of action (such as, authentication, password reset). Optionally, you can include the associated population.
    resources.id eq ":id" Audit events recorded for the specified resource.
    resources.type Audit events recorded for the specified type of resource. This can be any one of the following: ALL, USER, ENVIRONMENT, ORGANIZATION. Optionally, you can include the associated population.
    tags Audit events for the adminIdentityEvent tag. Currently, the adminIdentityEvent tag is the only one supported.

    These SCIM operators can be applied to the following attributes:

    • eq (equals)

      Supported attributes: correlationid, actors.user.id, actors.user.name, actors.client.id, action.type, resources.id, resources.type, resources.population.id, org.id, environment.id

    • gt (greater than)

      Supported attributes: recordedat

    • lt (less than)

      Supported attributes: recordedat

    • ge (greater than or equal to)

      Supported attributes: recordedat

    • le (less than or equal to)

      Supported attributes: recordedat

    • and (logical AND)

      Logical AND for building compound expressions in which both expressions are true.

    • or (logical OR)

      Logical OR for building compound expressions if either expression is true.

    For more information about SCIM syntax and operators, refer to Conventions.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.

    Read Audit Activities


    Read Audit Activities


    Read One Audit Activity

    Authentications per Application

    The authentications per application service calculates the number of successful sign-on actions for all applications in a specified environment during a specified time period. This metric shows how often applications are accessed, using authentications as the measure of the application's usage. Organizations can use this metric to:

    • Determine which applications are responsible for the highest volume of authentication requests, in rank order.

    • Refer to which applications are rarely used and are candidates for decommission.

    • Refer to the relative number of authentication requests for each connected application.

    • Determine whether an application's usage is growing or shrinking over time.

    • View the total number of authentication requests per application over time.

    The count of successful authentications is the total number of FLOW.UPDATED events with COMPLETED status during the specified period.

    For example, suppose you want to see the number of authentications (per application) per day for a three-day period starting on September 1, 2019. Requests to this service require the following filter parameter to define the query:

    • occurredAt

      Specifies the start date for the period of interest. For this example, to specify a date range starting on September 1, 2019, the value is occurredAt ge "2019-09-01T00:00:00Z".

    Requests to this service also require the following query parameters to define the query:

    • samplePeriod

      Specifies the time interval in hours. For this example, to specify a daily interval, the value is samplePeriod=24.

    • samplePeriodCount

      Specifies the number of sample periods. For this example, to specify three days of results, the value is samplePeriodCount=3.

    The authentications per application service supports limit as an optional query parameter to specify a subset of applications returned in the response. For information about limiting collections, refer to Conventions.

    Authentications per application data model

    Property Type Required? Mutable? Description
    endDate Date Required Mutable The date and time the authentication data collection ends (ISO 8601 format).
    partial Boolean Optional Mutable Indicates the partial period. When visible in the response data and set to true, this indicates that the response represents a shorter duration than requested through the samplePeriod parameter.
    signons Integer Required Mutable The number of authentications for the application identified by its application ID between the start and end dates of the sample period.
    startDate Date Required Mutable The date and time the authentication data collection starts (ISO 8601 format).

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 Internal server error.

    Read Authentications Per Application


    Read Authentications Per Application (Partial)

    Subscriptions (webhooks)

    The subscription service provides an interface for third-party auditing tools to subscribe to and consume PingOne audit activity events. The service listens for translated audit activities as the source of events and transmits messages about these events to the subscribing audit application.

    Use only IPv4 addresses for webhooks. IPv6 addresses are not fully-supported.

    For more information about subscriptions (webhooks), refer to Webhooks in the PingOne Admin Guide.

    Subscriptions data model

    Property Type Require? Mutable? Description
    createdAt Date N/A Read-only The date and time at which the subscription resource was created (ISO 8601 format).
    enabled Boolean Required Mutable Indicates whether a created or updated subscription should be active or suspended. A suspended state ("enabled":false) accumulates all matched events, but these events are not delivered until the subscription becomes active again ("enabled":true). For suspended subscriptions, events accumulate for a maximum of two weeks. Events older than two weeks are deleted. Restarted subscriptions receive the saved events (up to two weeks from the restart date).
    environment.id String Required Immutable The environment resource's unique identifier associated with the subscription.
    filterOptions.includedActionTypes String[] Required Mutable A non-empty array that specifies the list of audit events that should be matched for the subscription. Refer to Audit Reporting Events for valid audit events.
    filterOptions.includedApplications String[] Optional Mutable The list of applications (by ID) whose events are monitored by the subscription (maximum of 10 IDs in the array). If a list of applications is not provided, events are monitored for all applications in the environment.
    filterOptions.includedPopulations String[] Optional Mutable The list of populations (by ID) whose events are monitored by the subscription (maximum of 10 IDs in the array). This property matches events for users in the specified populations, as opposed to events generated in which the user in one of the populations is the actor.
    filterOptions.includedTags String[] Optional Mutable The tags that events must have to be monitored by the subscription. If tags are not specified, all events are monitored. Currently, the available tags are:
    • adminIdentityEvent. Identifies the event as the action of an administrator on other administrators.
    filterOptions.ipAddressExposed Boolean Optional Mutable Whether the IP address of an actor should be present in the source section of the event.
    filterOptions.userAgentExposed Boolean Optional Mutable Whether the User-Agent HTTP header of an event should be present in the source section of the event.
    format String Required Mutable One of the supported subscription formats. Options are:
    • ACTIVITY. Ping Activity Format. A generic JSON format. Use this if your destination doesn't support Splunk or New Relic formats.
    • SPLUNK. A Splunk-friendly format.
    • NEWRELIC. A New Relic-friendly format.
    httpEndpoint.headers String[] Required Mutable The headers applied to the outbound request (for example: "Authorization": "Basic username:password"). The purpose of these headers is for the HTTPS endpoint to authenticate the PingOne service, ensuring that the information from PingOne is from a trusted source.
    httpEndpoint.url String Required Mutable A string that specifies a valid HTTPS URL to which event messages are sent.
    id String N/A Read-only The resource's unique identifier.
    name String[] Required Mutable The subscription name.
    tlsClientAuthKeyPair.id String Optional Mutable The ID of a key to be used for outbound mutual TLS (mTLS) authentication. This key is used as a client credential to authenticate the webhook. The key must have a usageType of OUTBOUND_MTLS. Refer to Certificate management for information on creating a key. If this property is set, verifyTlsCertificates must be set to true.
    updatedAt Date N/A Read-only The date and time at which the subscription resource was last updated (ISO 8601 format).
    verifyTlsCertificates Boolean Required Mutable Indicates whether a certificates should be verified. If this property's value is set to false, then all certificates are trusted. (Setting this property's value to false introduces a security risk.) This value must be set to true if tlsClientAuthKeyPair.id is set.

    Subscription Events

    You can subscribe to any of the audit events listed in Audit Reporting Events.

    The audit events triggered by your subscription requests are also in the Audit Report Events list: SUBSCRIPTION.CREATED, SUBSCRIPTION.UPDATED, and SUBSCRIPTION.DELETED.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 The request could not be completed. You do not have access to this resource.
    404 The requested resource was not found.

    Create Subscriptions


    Read All Subscriptions


    Read One Subscription


    Update Subscription


    Delete Subscription

    Total Identities

    The total identities service retrieves the count of unique identities associated with a specified environment. The response shows the total number of users, divided into daily (24-hour) reporting periods, from the specified startDate through the endDate. The total identities count tracks the add and delete user operations to determine the changes in total number of unique identities over each 24-hour period. This service uses a SCIM query filter to control the sample size, showing the unique identity counts (on a per day basis) within the specified date range.

    Total identities data model

    Property Type Required? Mutable? Description
    date Date N/A Read-only The date and time the total identities count starts for the sampling period (ISO 8601 format).
    totalIdentities Integer N/A Read-only The total unique identities count for the sampling period.

    Response codes

    Code Message
    200 Successful operation.
    400 The request could not be completed.
    401 You do not have access to this resource.
    403 You do not have permissions or are not licensed to make this request.
    404 The requested resource was not found.
    500 Internal server error.

    Read Total Identity Counts

    User Activities

    The User Activities API returns counts for successful and failed sign-on actions as well as a count for password resets over a designated period of time. The service uses stream processors that listen to users and login_attempts events. These events are collected and presented by time period. The service supports the SCIM startDate, endDate, and sampleSize query filtering parameters to request user-activity information for a specific date range and sample size.

    User activities data model

    Property Type Required? Mutable? Description
    startDate Date N/A Read-only The start date for the activity period.
    endDate Date N/A Read-only The end date for the activity period.
    environment.id String N/A Read-only The environment resource's unique identifier.
    userSignOns.successes Integer N/A Read-only The total number of successful user sign ons for the activity period.
    userSignOns.failures Integer N/A Read-only The total number of failed user sign ons for the activity period.
    passwordResets Integer N/A Read-only The total number of password resets for the activity period.

    Response codes

    Code Message
    200 Successful operation.
    201 Successfully created.
    204 Successfully removed. No content.
    400 The request could not be completed.
    401 You do not have access to this resource.
    404 The requested resource was not found.

    Read User Activities

    Reference

    This section provides reference information for the PingOne Platform API. Topics include:

    • Error codes

      Provides a list of common PingOne top-level and detail API error messages. The error response includes a high-level error code and optional details containing specific information on how to resolve the issue.

    • Query parameter quick reference

      Provides a quick reference to show the SCIM operators that apply to a given PingOne endpoint operation. It also provides information about endpoint operations that support the limit, order, and expand filters.

    • Paging, ordering, and filtering collections

      Provides general information about paging, ordering, and filtering large collections.

    • Password encoding

      Provides the list of Key Derivation Functions (KDF) and crytographic ciphers as methods for password encoding that PingOne supports.

    • TLS and cipher suite requirements

      Provides information about TLS and cipher suite requirements for the auth.pingone.com and api.pingone.com domains.

    • External transaction and session IDs

      Provides information about custom HTTP headers across all endpoints that help track transactions in PingOne. These are optional headers to correlate with your own transactions and sessions.

    • PingOne Localization

      Provides information about localization in PingOne, including how PingOne services use the end user's browser settings as a factor to determine which language to present to users.

    • Load Testing

      Provides guidelines that will help you conduct load testing in a way that will yield accurate results based on your service level agreement (SLA) and the inherent limits of the PingOne platform.

    • PingOne Platform Limits

      A link to the topic in the PingOne Admin Guide that describes the PingOne platform limits.

    • Roles and Permissions in PingOne

      Provides a list (and descriptions) of the PingOne built-in roles, and a list of PingOne role permissions that can be used to define custom roles.

    • Audit Reporting Events

      Provides a list of all PingOne audit reporting events by event type and event name.

    The following reference topics are available in PingOne for Developers Foundations:

    • Conventions

      Includes detailed information about PingOne API requests and responses.

    • Platform security

      Lists the measures taken to ensure the continued resiliency and security of the PingOne platform, as well as measures you can take in this regard for your deployment and applications.

    Error codes

    This topic describes common PingOne top-level and detail API error messages that you might encounter when an error occurs. An error response consists of a high-level error code that must be handled by the client and optional details containing specific information on how to resolve the fault.

    The PingOne API errors return a response payload formatted as follows:

    Property Description
    id A unique identifier that is stored in log files and always included in an error response. This value can be used to track the error received by the client, with server-side activity included for troubleshooting purposes.
    code A general fault code which the client must handle to provide all exception handling routines and to localize messages for users. This code is common across all PingOne services and is human readable (such as a defined constant rather than a number). Refer to Top-level error messages for the possible codes here.
    message A short description of the error. This message is intended to assist with debugging and is returned in English only.
    target The item that caused the error (such as a form field ID or an attribute inside a JSON object).
    details Additional details about the error to help resolve the error.
    details.code A general fault code identifying further information. Refer to Detail-level error messages for the possible codes here.
    details.innererror Additional details to help the client developer resolve the fault (primarily for UI validation reasons). These attributes can be used:
    • rangeMinimumValue. Errors that failed due to range violation. This attribute represents the minimum value of the range.
    • rangeMaximumValue. The maximum range or value of an attribute.
    • allowedPattern. A regex pattern describing an acceptable input pattern.
    • allowedValues. A list describing acceptable values.
    • maximumValue. The maximum value allowed for the request.
    details.message Additional information about the error.
    details.target Additional information about the item causing the error.

    A top-level error message looks like this:

    HTTP/1.1 400 BAD REQUEST
    {
      "id" : "6c796712-0f16-4062-815a-e0a92f4a2143",
      "code" : "INVALID_DATA",
      "message" : "The request could not be completed. One or more validation errors were in the request."
    }
    

    A detail-level error message provides more information about the error. Specific codes at the detail level can be introduced by each service to reflect the actions in that service. A detail-level error message looks like this:

    HTTP/1.1 400 BAD REQUEST
    {
      "id" : "6c796712-0f16-4062-815a-e0a92f4a2143",
      "code" : "INVALID_DATA",
      "message" : "The request could not be completed. One or more validation errors were in the request.",
      "details" : [
      {
        "code" : "REQUIRED_VALUE",
        "target" : "username",
        "message" : "Username is required and cannot be empty."
      },
      {
        "code" : "INVALID_VALUE",
        "target" : "employeeType",
        "message" : "Invalid value for employee type."
        "innerError" : {
          "allowedValues" : [ "EMPLOYEE", "CONTRACTOR" ]
        }
      }
    }
    
    

    Top-level error messages

    The following table lists the top-level error messages, the response code, and common conditions that caused the error to occur.

    Code Response code Conditions Default message Examples
    INVALID _DATA 400 Valid request structure received.
    One or more data validation errors.
    Each validation error should be described in a details object.
    The request could not be completed. One or more validation errors were in the request. Create or update request with an attribute with an invalid data type.
    Data failed validation rules.
    Invalid value supplied for an enum.
    INVALID_REQUEST 400, 405 Invalid request received.
    Malformed JSON, malformed HTTP request.
    The request could not be completed. The request was malformed or invalid. The JSON structure was incorrectly formatted.
    A POST request was submitted without a required body.
    Incorrect Accept or Content-Type.
    Method not allowed on an endpoint (for example, POST to a URL that does not support POST).
    REQUEST_FAILED 400 Valid request structure received.
    Error occurred during processing of the request (not strictly validation).
    Each processing error should be described in a details object.
    The request could not be completed. There was an issue processing the request. A password check action failed.
    NOT_FOUND 404 URL specified is not found The request could not be completed. The requested resource was not found. Accessed a resource that does not exist.
    Accessed a resource that has been hidden from the user (licensing, multi-tenancy concerns).
    ACCESS_FAILED 401, 403 Request failed due to authorization issue. The request could not be completed. You do not have access to this resource. Attempted a request with and expired, invalid or missing token.
    Attempted a request where the token did not have permissions.
    Attempted a request where the token is not licensed to request, or the license was exceeded.
    REQUEST_LIMITED 429 Request was rate-limited The request could not be completed. The current rate limiting conditions are shown in the following:
    RateLimit-Limit: The requests quota in the time window.
    RateLimit-Remaining: The remaining requests quota in the current window.
    RateLimit-Reset: The time remaining in the current window, specified in seconds.
    User is over quota for the request. See Rate Limiting for more information.
    UNEXPECTED_ERROR 500 Uncaught error occurred
    Platform outage (502, 503, 500)
    There was an unexpected error with the service. Please try again later. Identifies an internal problem such as a database connectivity issue.

    Detail-level error messages

    The following table lists the detail-level error messages, the response code, and common conditions that may cause the error to occur.

    Code Response code Top-level match Conditions Default message Examples
    CONSTRAINT_VIOLATION 400 REQUEST_FAILED A request violated a service constraint. A request violates a constraint imposed by the service. An attempt to delete a Population having Users.
    EMPTY_VALUE 400 INVALID_DATA INVALID_DATA top level error.
    Request attempted to clear an optional value (needs to be explicitly set to null).
    Nulling or clearing a required value would result in a REQUIRED_VALUE error.
    The value cannot be empty. Attempted to update a value to an empty string.
    INSUFFICIENT_PERMISSIONS 403 ACCESS_FAILED The actor doesn't have the sufficient permissions to make the request. You do not have permissions, or are not licensed to make this request. Either the user or the token has insufficient permissions to make the request.
    INVALID_FILTER 400 REQUEST_FAILED REQUEST_FAILED top level error.
    Request contains a filter.
    Syntax errors in that filter expression.
    Unsupported operators included in filter expression.
    The specified filter was invalid.
    The filter attribute was invalid or does not support filtering.
    The value provided is invalid.
    Filter attribute is not filterable.
    Filter operator was invalid or not supported.
    Filter value was invalid or of a wrong type.
    INVALID_OTP 400 INVALID_DATA INVALID_DATA top level error.
    Request contains an invalid OTP.
    Wrong OTP was provided. An incorrect OTP was submitted at sign on.
    INVALID_PARAMETER 400 REQUEST_FAILED REQUEST_FAILED top level error.
    Request contains a known query string parameter.
    That parameter contains a value that can't be processed.
    A query string parameter or value is not valid for this request. Invalid cursor supplied using the "cursor" parameter.
    INVALID_TOKEN 401 ACCESS_FAILED A request contained an invalid token, authorization header, or both. The authorization token is either missing, invalid, or expired. A token wasn't present in the request.
    The Authorization header was missing.
    The token presented failed a signature check.
    The token presented contained invalid claims.
    The token isn't a Java Web Token (JWT).
    INVALID_VALUE 400 INVALID_DATA INVALID_DATA top level error. One or more issues were found in the request data.
    The attribute is immutable and can not be updated.
    Invalid value for attribute.
    Age must be a number.
    Region must be NA, CA, EU, AU, SG, or AP.
    Email must be in email format.
    LICENSE_EXCEEDED 403 ACCESS_FAILED A licensing enforcement limit was reached. The request exceeded your license limit. Licensed for five environments, has five existing environments, an attempts to create another environment.
    LIMIT_EXCEEDED 429 REQUEST_LIMITED A rate limit was reached. The request exceeded the allowed rate limit. Too many request too quickly.
    OUT_OF_RANGE 400 INVALID_DATA INVALID_DATA top level error.
    Value for attribute is out of a defined range.
    The request contains an attribute value that is outside the specified range. Age must be between 1 and 150
    Password length is too short.
    QUOTA_EXCEEDED 429 REQUEST_LIMITED A user, licensing or billing quota was exceeded. The request will exceed your quota. Daily SMS/Voice limit was exceeded.
    REQUIRED_VALUE 400 INVALID_DATA INVALID_DATA top level error.
    Request is missing a required attribute.
    The request is missing a required value. Username attribute is required to create a user.
    Region is required to create an environment.
    Attempted to update an environment and remove region.
    SIZE_LIMIT_EXCEEDED 400 INVALID_DATA INVALID_DATA top level error.
    Value for attribute is too large (either in size or length).
    The request contains an attribute value that is too large. Given name must be less than or equal to 256 characters.
    Image size must be less than 10MB.
    UNIQUENESS_VIOLATION 400 INVALID_DATA A request violated the uniqueness rule. A resource with the specified name already exists. An attempt to create a user having the same name as an existing user.
    An attempt to create an environment having the same name as an existing environment.

    Query parameter quick reference

    SCIM protocol filtering operators help you fine-tune requests that return a large number of items. The PingOne platform supports several SCIM operators. For the list of supported SCIM filtering operators, refer to Filtering collections conventions).

    Note: PingOne endpoint operations may support only a subset of SCIM filtering operators. In addition, the service may allow filtering only on specific attributes. For example, the /organizations endpoint allows filtering only on the name attribute using only the sw (starts with) operator.

    This topic provides a quick reference to show the SCIM operators that apply to a given PingOne endpoint operation. It also provides information about endpoint operations that support the limit filter, the order filter, and the expand filter. For general information about page limits and collection ordering, refer to Paging, ordering, and filtering collections. For information about resource expansion, refer to the "Link expansion" section of HTTP methods conventions).

    Endpoints that support SCIM filtering expressions

    The following endpoint operations allow filtering with the indicated attributes and operators. Refer to Filtering collections conventions for SCIM operator names and descriptions.

    Endpoint SCIM operators by attribute
    /activeIdentityCounts
    • startDate: ge
    • samplingPeriod: eq
    /activities
    • recordedat: ge, gt, le, lt
    • correlationid: eq
    • actors.client.id: eq
    • actors.user.id: eq
    • actors.user.name: eq
    • resources.id: eq
    • resources.type: eq
    • resources.population.id: eq
    • action.type: eq
    /applicationSignons
    • occurredAt: ge
    /environments
    • name: sw
    • id: eq
    • organization.id: eq
    /licenses
    • beginsAt: lt
    /populations
    • name: sw
    • id: eq
    /environment/{{envID}}/roles
    • type: eq
    /templates
    • createdAt: eq, ne, gt, ge, lt, le
    • updatedAt: eq, ne, gt, ge, lt, le
    • default: eq
    • locale: eq, sw
    • deliveryMethod: eq
    /totalIdentities
    • startDate: eq
    • endDate: eq
    /userActivities
    • startDate: eq, gt, ge, lt, le
    • endDate: eq, gt, ge, lt, le
    /users
    • enabled: eq
    • population.id: eq
    • {{customStringAttributes}}: eq, sw (refer to note below)
    • linkedAccounts[identityProvider.id eq "{{identityProviderID}}"]
    • linkedAccounts[externalId eq "{{externalID}}"]
    • memberOfGroups[id eq "{{memberOfGroupID}}"]
    • memberOfGroups[type eq "{{typeString}}"]
    /users/{{userID}}/devices
    • status: eq
    • type: eq

    Endpoints that support resource expansion

    The following endpoint operations support resource expansion using the expand={resource} filter.

    Endpoint Target resource
    /environments
    • expand=billOfMaterials
    /environments/{{envID}}
    • expand=billOfMaterials
    /environments/{{envID}}/apiServers/{{apiServerID}}/operations/{{apiServerOperationID}}
    • expand=groups
    • expand=scopes
    • expand=authenticationPolicies
    /environments/{{envID}}/applicationRoles/{{appRoleID}}/users
    • expand=user
    /environments/{{envID}}/dataExplorations
    • expand=entries
    /environments/{{envID}}/fido2Policies
    • expand=deviceAuthenticationPolicies
    /environments/{{envID}}/identityProviders/{{providerID}}
    • expand=attributes
    /resources
    • expand=scopes
    /resources/{{resourceID}}
    • expand=scopes
    /schemas/{{schemaID}}
    • expand=attributes
    /users
    • expand=populations
    /users/{{userID}}
    • expand=populations
    /users/{{userID}}/devices
    • expand=order
    • expand=typeDisplayNames
    /users/{{userID}}/linkedAccounts
    • expand=identityProviders
    /users/{{userID}}/linkedAccounts/{{linkedAccountID}}
    • expand=identityProvider
    /users/{{userID}}/password
    • expand=passwordPolicy

    Endpoints that support ordering by attribute

    The following endpoint operations support resource expansion using the order={attribute} filter.

    Endpoint Attribute
    /activeIdentityCounts
    • order=startDate
    /licenses
    • order=beginsAt
    /templates
    • order=updatedAt
    • order=createdAt
    /templates/{{templateName}}/contents
    • order=updatedAt
    • order=createdAt

    Endpoints that support page limits

    The following endpoint operations support page limits using the limit filter. Refer to Paging, ordering, and filtering collections for more information.

    Paging, ordering, and filtering collections

    Pagination

    PingOne supports cursor-based pagination to return large collections in consumable pages. When an operation supports pagination, the following conventions are used:

    • Page limits

      Page limits are requested using the limit query string. If the limit parameter value is omitted, the operation returns the lesser of the service-defined maximum page size or the number of items in the collection.

    • Self, next, and previous links

      The response body includes a self link in the _links object. If there are more pages available, the response includes a next link in the _links object. If there are previous pages of results available, the response includes a prev link in the _links object.

    • Multiple pages

      If there is more than one page, the response returns a URL-safe cursor in the cursor query string parameter for the next or prev links.

    • Response metadata

      The response can include the following metadata about the results in the body of the payload:

      • count (optional).

        Describes the number of items in the collection or result set (such as the total item count). If a response does not return a count attribute, this usually means there are many in the result set.

      • size (optional).

        Describes the size of the page of results (such as the limit or service-defined maximum page size).

    Here is a sample request that limits the collection returned to a maximum of 2.

    GET {{apiPath}}/environments/{{envID}}}/populations?limit=2 HTTP/1.1
    

    Here is the response body.

    {
     "_links" : {
      "self" : { "href" : "https://api.pingone.com/v1/environments/{{envID}}/populations?limit=2" },
      "next" : { "href" : "https://api.pingone.com/v1/environments/{{envID}}/populations?cursor=xygdhs&limit=2" }
     },
     "count" : 50,
     "size" : 2,
     "_embedded" : {
      "populations" [
       {
        "name" : "Accounting",
        "id" : "12345-aaa-12345"
       },
       {
        "name" : "Engineering",
        "id" : "12345-aaa-12346"
       }
      ]
     }
    }
    

    Ordering collections

    The PingOne API supports ordering collection results. The following conventions are used:

    • order query string

      The order query string parameter specifies the attribute used to order the results. To return a collection in descending order, prefix the attribute with a minus sign ("-"). Here is a sample of ordering on the name attribute in descending order:

      https://api.pingone.com/v1/environments/{{envID}}/variables?filter=name%20co%20%22r%22&order=-name

    • Multiple column ordering

      An operation can support ordering multiple columns in the order parameter by separating the columns with a comma. If an operation supports multiple columns, it treats the comma as a "THEN BY" directive. For example, order=dateTime,name indicates that the collection is sorted by dateTime then by name.

    Filtering collections

    Requests that return a large number of items can be filtered using the filter query string parameter. The PingOne platform supports the SCIM protocol filtering operators listed in the following table. However, a particular operation may not support all SCIM filtering operators. If a filtering operator is not supported, the operation returns 400 REQUEST_FAILED code in the response. The details section of the message returns an INVALID_FILTER code as the cause of the error.

    Operator Description Behavior
    eq equal The attribute and operator values are identical.
    ne not equal The attribute and operator values must not be identical for a match.
    co contains The entire operator value must be a substring of the attribute value for a match.
    sw starts with The entire operator value must be a substring of the attribute value, starting at the beginning of the attribute value. This criterion is satisfied if the two strings are identical.
    ew ends with The entire operator value must be a substring of the attribute value, matching at the end of the attribute value. This criterion is satisfied if the two strings are identical.
    pr present (has value) If the attribute has a non-empty or non-null value, or if it contains a non-empty node for complex attributes, there is a match.
    gt greater than If the attribute value is greater than the operator value, there is a match. The actual comparison is dependent on the attribute type. For string attribute types, this is a lexicographical comparison, and for DateTime types, it is a chronological comparison. For integer attributes, it is a comparison by numeric value.
    ge greater than or equal to If the attribute value is greater than or equal to the operator value, there is a match. The actual comparison is dependent on the attribute type. For string attribute types, this is a lexicographical comparison, and for DateTime types, it is a chronological comparison. For integer attributes, it is a comparison by numeric value.
    lt less than If the attribute value is less than the operator value, there is a match. The actual comparison is dependent on the attribute type. For string attribute types, this is a lexicographical comparison, and for DateTime types, it is a chronological comparison. For integer attributes, it is a comparison by numeric value.
    le less than or equal to If the attribute value is less than or equal to the operator value, there is a match. The actual comparison is dependent on the attribute type. For string attribute types, this is a lexicographical comparison, and for DateTime types, it is a chronological comparison. For integer attributes, it is a comparison by numeric value.

    For example, here is a sample SCIM filtering expression that returns users with a last name of "Smith" and a phone number that starts with the "512" area code:

    https://api.pingone.com/v1/environments/{{envID}}/users?filter=name.family eq "Smith" and mobilePhone sw "512"
    
    

    Here is the same filter with URL-encoding to account for spaces (%20) and quotation marks (%22):

    https://api.pingone.com/v1/environments/{{envID}}/users?filter=name.family%20eq%20%22Smith%22%20and%20mobilePhone%20sw%20%22512%22
    
    

    For more information about the SCIM Protocol Specification, refer to "Section 3.4.2.2. Filtering," in the SCIM Protocol Specification.

    Password encoding

    PingOne supports the following Key Derivation Functions (KDF) and crytographic ciphers as methods for password encoding:

    Method PingOne Identifier
    PBKDF2 {PBKDF2}
    ARGON2 {ARGON2}
    MSCrypto library {MSKCC_PBKDF2}
    Scrypt {SCRYPT}
    Scrypt RFC-7914 {SCRYPT_RFC7914}
    BCrypt {BCRYPT}
    SSHA N/A

    The PingOne identifier for the method must be pre-pended to the encoding generated. Refer to the discussion of the specific method for the format.

    The common password-encoding use cases for the PingOne Platform APIs are:

    Pre-encoded passwords

    Pre-encoded passwords must use the LDAP userPassword syntax supported by PingDirectory and other directory servers. For more information about the LDAP userPassword attribute, refer to Hashed attribute values for userPassword. Note that in this specification, the userPassword syntax represented as userpasswordvalue = cleartext-password / prefix b64-hashandsalt should be read as:

    userpasswordvalue = cleartext-password

    or

    userpasswordvalue = prefix b64-hashandsalt

    If a pre-encoded password isn't accepted by PingOne, it doesn't conform to either of these encoding schemes.

    Generating the salt

    All of the encoding methods supported by PingOne require a salt to randomize the hashed value generated by the Hash-based Message Authentication Code (HMAC) used. Use only cryptographically strong random number generators (CSPRNG) to generate the salt. You'll generally find this in the cryptography library for your language and platform. Some of the most common are:

    Language/Platform Description
    Linux and macOS The /dev/random or /dev/urandom sources.
    Windows The BCryptGenRandom function from the Cryptography API: Next Generation (CNG) or higher level cryptography libraries.
    C# System.Security.Cryptography.RandomNumberGenerator.Create() from .NET Framework or .NET Core.
    Python Either os.urandom() or the secrets library.
    Java The java.security.SecureRandom system class.
    JavaScript Either window.crypto.getRandomValues(Uint8Array) for client side (Web browser), or crypto.randomBytes() for server-side (Node.js).

    PBKDF2

    PBKDF2 is a Key Derivation Function (KDF) described in RFC 2898. The standard format is:

    key = pbkdf2(password, salt, iterations, hash-function, derived-key-length)
    

    PingOne APIs require a slightly modified version of this format, where the PingOne identifier for the encoding method is pre-pended to a Base64 encoding of the parameters:

    "{PBKDF2}" + base-64-encode(`version-hex`, `salt-length-hex`, `salt`, `iterations-hex`, `encoded-password`)
    

    Any spaces in the hex values are ignored.

    The resulting encoding that can be passed to PingOne APIs will then look similar to this:

    {PBKDF2}ARDCg7vxrqqSDV/UzQ5N9j+XJxDv0E64J9X5aHSZk4108X3esUoaKqGJePteFKJxT6qPkQ==
    

    PBKDF2 parameters for PingOne

    Spaces are ignored in the hexadecimal values.

    Parameter Description
    encoded-password The user password. The password is assumed to be encoded.
    version-hex A hexadecimal encoding of the version identifier for the PKDF2 and the HMAC combination to use. The version identifier can be any one of:
    • 00 if PBKDF2WithHmacSHA1
    • 01 if PBKDF2WithHmacSHA256
    • 02 if PBKDF2WithHmacSHA384
    • 03 if PBKDF2WithHmacSHA512
    salt-length-hex A hexadecimal encoding of the length of the salt. This must be between 8 and 127 characters in length.
    salt A securely-generated cryptographically strong random number.
    iterations-hex A hexadecimal encoding of the number of iterations to repeat the HMAC identified in version-hex (for example, 10,000). This can be between zero and 2,147,483,647. In general, use the maximum number of iterations that's acceptable for the performance of your application.

    Argon2

    Argon2 is a KDF described in RFC 9106. The standard format is similar to this:

    argon2.hash(password, type, iterations, memory, parallelism, hash_len, salt)
    

    PingOne APIs require a slightly modified version of this format:

    "{ARGON2}" + type + version, memory, iterations, parallelism
    

    The resulting encoding that can be passed to PingOne APIs will then look similar to this:

    $argon2i$v=19$m=64,t=2,p=8$d2pLMjlIUWk2eGU2OFZtVA$dr9M3P+yMs4qv/eFyh5WYw
    

    Argon2 parameters for PingOne

    Parameter Description
    password The user password to encode.
    type One of the supported Argon2 types: Argon2i, Argon2d, Argon2id.
    version Specified as v=. The current version is decimal 19. Typically, this is unspecified, and defaults to the current version.
    memory Specified as m=. The amount of memory to use in kilobytes. In general, use the maximum amount of memory that's acceptable for the performance of your application.
    iterations The number of iterations that's acceptable for the performance of your application. Typically, start with a 2 - 4 iterations, and modify this based on the desired execution time. The number of iterations must be between 1 and 2^32 − 1.
    parallelism The degree of parallelism to use is determined by the number of CPU cores on the server. Double the number of CPU cores to get the value here.
    salt A securely-generated cryptographically strong random number used to salt the specified parameters. The salt length must be between 8 and 2^32 − 1 byte.
    hash-len The desired hashed output length in bytes. Applied to the specified parameters.

    Refer to the Argon2 Hash Generator to generate examples.

    Scrypt

    Scrypt is described in RFC 7419. Like other KDFs, Scrypt is designed to be expensive, so that attacks against Scrypt-encoded passwords are also expensive. However, Scrypt is different from other KDF algorithms because it is designed to consume a substantial amount of memory during the course of encoding a password, and to require pseudorandom access to portions of that memory. This makes the cost of generating a password dependent upon memory access latency in addition to CPU performance, and reduces the ability to parallelize password cracking attempts.

    PingOne uses the "c2NyeXB0" format, where c2NyeXB0 is the base64-encoded representation of "scrypt".

    The resulting encoded string is base64-encoded, and the unencoded value always starts with the bytes "scrypt", and is "c2NyeXB0".)

    PingOne APIs require a slightly modified version of the c2NyeXB0 format, where the PingOne identifier for the encoding method is pre-pended to the formatting identifier "c2NyeXB0":

    "{Scrypt}" + base-64-encode("scrypt", the-zero-byte, logN, r, p, salt, encoded-password)
    

    Encoding details

    In the aggregated parameter values "scrypt" + the-zero-byte + logN + r + p + salt:

    • The first 16 bytes is the first half of the SHA-256 encoding.

    • Apply the HMAC-SHA-256 algorithm to the first 64 bytes

    • Append the final 32 bytes to the final encoding.

    The initialization key for the HMAC-SHA-256 algorithm is the last 32 bytes of the SCRYPT algorithm output, using the specified values for encoded-password, salt, logN, r, p, and a 64 byte block size.

    The string that can be passed to PingOne APIs will then look similar to this:

    {Scrypt}c2NyeXB0/UzQ5N9j+XJxDv0E64J9X5aHSZk4108X3esUoaKqGJePteFKJxT6qPkQ==
    

    Scrypt parameters for PingOne

    There is a 32 byte salt parameter:

    • logN is one byte
    • r and p are both 4 bytes
    • logN, r, and p use two's complement representation
    Parameter Description
    encoded-password The user password to encode. This also is assumed to be encoded by the user.
    logN A 1 byte value (two's complement) for the exponent to use for the CPU/memory cost factor. The cost factor must be a power of two, so the value of this property represents the power to which two is raised. The CPU/memory cost factor specifies the number of iterations required for encoding the password, and also affects the amount of memory required during processing. A higher cost factor requires more processing and more memory to generate a password, which makes attacks against the password more expensive. The value must be less than 128*r/8, where r represents the configured block size. The amount of memory that will be consumed in the course of generating the password is 128*2^N*r bytes, where N represents the CPU/memory cost factor exponent and r represents the configured block size.
    r A 4 byte value (two's complement) for the block size for the digest that will be used in the course of encoding passwords. Increasing the block size while keeping the CPU/memory cost factor constant will increase the amount of memory required to encode a password, but it also increases the ratio of sequential memory access to random memory access (sequential memory access is generally faster than random memory access). The value must be greater than or equal to one.
    p A 4 byte value (two's complement) for the number of times that Scrypt is to perform the entire encoding process to produce the final result. The amount of processing required to encode a password increases linearly with the value of this parameter. If an attacker uses an Scrypt implementation that supports the use of multiple threads to perform multiple encodings in parallel, then it also linearly increases the amount of memory required.
    salt A securely-generated cryptographically strong random number used to salt the specified parameters. The salt length is 32 bytes.

    Scrypt RFC-7914

    Scrypt RFC-7914 supports a configurable salt, and uses the RFC-compliant encoding scheme described in RFC 7914. It's designed to prevent GPU, FPGA, and ASIC attacks, and supercedes the older encoding scheme used by Scrypt.

    Like the older Scrypt, Scrypt RFC-7914 is designed to be expensive, so that attacks against Scrypt RFC-7914 encoded passwords are also expensive. It's designed to consume a substantial amount of memory during the course of encoding a password. This makes the cost of generating a password dependent upon memory access latency in addition to CPU performance, and reduces the ability to parallelize password cracking attempts.

    The PingOne format is:

    "{SCRYPT_RFC7914}" version, N + r + p, base-64-encode(S, P), encoded-password
    

    For each step, the memory is accessed in dependent order, so memory access speed is the bottleneck. The memory required for Scrypt RFC-7914 key derivation is calculated as:

    128*r*2^N, and must be <= 128 MiB. 
    

    Scrypt RFC-7914 parameters for PingOne

    Parameter Description
    version The Scrypt RFC-7914 algorithm version. Currently, this must be "s0".
    N The hexadecimal string for a 1 byte value (two's complement) for the exponent to use for the CPU/memory cost factor. This must be from 1-17. The cost factor must be a power of two, so the value of this property represents the power to which two is raised. The CPU/memory cost factor specifies the number of iterations required for encoding the password, and also affects the amount of memory required during processing. A higher cost factor requires more processing and more memory to generate a password, which makes attacks against the password more expensive. The value must be less than 128*r/8, where r represents the configured block size. The amount of memory that will be consumed in the course of generating the password is 128*2^N*r bytes, where N represents the CPU/memory cost factor exponent and r represents the configured block size.
    r The hexadecimal string for a 4 byte value (two's complement) for the block size for the digest that will be used in the course of encoding passwords. This must be from 1-8.Increasing the block size while keeping the CPU/memory cost factor constant will increase the amount of memory required to encode a password, but it also increases the ratio of sequential memory access to random memory access (sequential memory access is generally faster than random memory access). The value must be greater than or equal to one.
    p The hexadecimal string for a 4 byte value (two's complement) for the number of times that Scrypt RFC-7914 is to perform the entire encoding process to produce the final result. This must be 1.
    S A securely-generated cryptographically strong random number used to salt the specified parameters. The salt length is 1-64 bytes.
    P A Base64-encoded passphrase. The length is 1-32 bytes.
    encoded-password The user password, assumed to be encoded.

    An example of the use of the parameters is:

    100801 (N = 0x10 = 16, r = 0x08 = 8, p = 0x01 = 1)
    

    The string passed to PingOne APIs might then look similar to this:

    {SCRYPT_RFC7914}$s0$100801$a...=$a...=
    

    Bcrypt

    BCrypt is a KDF based on the Blowfish cipher, and incorporates the Blowfish HMAC to hash the password. The standard format is:

    key = Bcrypt(password, cost, salt)
    

    PingOne APIs require a slightly modified version of this format:

    "{BCrypt}" + "$" + algorithm + "$" + cost + "$" + base-64-encode(salt) + base-64-encode-minus-one(key0)
    

    The resulting encoding that can be passed to PingOne APIs will then look similar to this:

    {BCrypt}$2y$10$xUtlkL33uoLU3jU7M7lkNOb0PbQQ7lKNqKuJLnZa4AzvXRWSq5Vxe
    

    BCrypt parameters for PingOne

    Spaces are ignored in the hexadecimal values.

    Parameter Description
    $ The prefix indicating a parameter.
    algorithm The version of BCrypt to use. Generally, this should be "$2a". However, this can be any one of the versions: 2a, 2b, 2x, 2y. The versions 2x and 2y are relevant only if you've been using crypt_blowfish, a PHP implementation of BCrypt. The version 2b is relevant only if you've been using OpenBSD.
    cost A two digit number between 4 and 31 (inclusive). If the cost is less than 10, then prepend a zero (for example, 6 -> 06). This indicates the number of iterations to repeat the HMAC. In general, use the maximum number of iterations that's acceptable for the performance of your application.
    base-64-encode(salt) A securely-generated cryptographically strong random number.
    base-64-encode-minus-one(key0) This is the base64 encoding algorithm with the final byte of the base64 encoding removed. The argument key0 is the encrypted key (for example, BCrypt(password, cost, salt)), except the last byte is replaced with "0x00".

    MSCrypto library

    Use the Microsoft method Crypto.hashPassword() to encode passwords, then import those passwords into PingOne using the {MSKCC_PBKDF2} method.

    MSCrypto uses PBKDF2 with HMAC-SHA1, 128-bit salt, 256-bit key length, and 1000 iterations.

    PingOne APIs require this format:

    "{MSKCC_PBKDF2}" + base-64-encode(0x00 + salt + digest(password, salt-128, iterations, key-length))
    

    Any spaces in the hex values are ignored.

    The resulting encoding that can be passed to PingOne APIs will then look similar to this:

    {MSKCC_PBKDF2}ARDCg7vxrqqSDV/UzQ5N9j+XJxDv0E64J9X5aHSZk4108X3esUoaKqGJePteFKJxT6qPkQ==
    

    MSCrypto parameters for PingOne

    Spaces are ignored in the hexadecimal values.

    Parameter Description
    0x00 A byte of zeros.
    salt A securely-generated cryptographically strong random number.
    digest The PBKDF2 algorithm.
    password The user password. The password is assumed to be encoded.
    salt-128 A securely-generated cryptographically strong random number of 128 bits.
    iterations A hexadecimal encoding of the number of iterations to repeat the HMAC-SHA1 (for example, 10,000). This can be between zero and 2,147,483,647. In general, use the maximum number of iterations that's acceptable for the performance of your application.
    key-length 256 bits.

    SSHA methods

    The SSHA algorithms incorporate the SHA cryptographic hash functions to hash the password. The PingOne-specific format for all of the SSHA variants is:

    "{SSHA-variant}" + base-64-encode(digest(password + salt) + salt )
    

    The plus sign (+) indicates concatenation.

    In addition, PingOne supports the following formats for both SHA256 and SHA1. The other variants do not support these formats.

    "{SSHA-variant}" + base-64-encode( digest(password + salt) + salt )
    "{SSHA-variant}" + base-64-encode( digest(salt + password) + salt )
    

    SSHA parameters for PingOne

    Parameter Description
    SSHA-variant The SSHA variant to use. This can be one of the following: SSHA1, SSHA256, SSHA384, SSHA512.
    digest The password encoding using the specified SSHA variant.
    password The user password to encode.
    salt A securely-generated cryptographically strong random number.

    External transaction and session IDs

    In order to help track transactions, the PingOne platform supports the following custom HTTP headers across all endpoints:

    • X-Ping-External-Transaction-Id

      Represents a scope larger than a single PingOne API request. It identifies one transaction that encompasses multiple API requests to PingOne.

    • X-Ping-External-Session-Id

      Represents a scope larger than a single transaction. It identifies multiple transactions in the context of a session. For example, an end user completed an authentication request and several transactions one hour ago and now needs to re-authenticate. The session should be the same.

    You can pass these optional headers to PingOne products to correlate with your own transactions and sessions. In an audit record produced by an API request with either (or both) of these headers, the audit report includes them as translated properties. For example, the following request to update an environment includes these headers.

    curl --location --request PUT '{{apiPath}}/environments/{{envID}}' \
    --header 'Accept: */*' \
    --header 'X-Ping-External-Transaction-Id: 123456' \
    --header 'X-Ping-External-Session-Id: 987654' \
    --header 'Authorization: ••••••' \
    --data '{
        "name": "Updated-Environment-Name"
    }'
    

    The response for a GET {{apiPath}}/environments/{{envID}}/activities/{{activityID}} audit request that identifies this activity returns the values specified in these headers as externalCorrelation properties.

    {
      "_links": {
        "self": {
          "href": "{{apiPath}}/environments/{{envID}}/activities/{{activityID}}"
        }
      },
      "id": "{{activityID}}",
      "recordedAt": "2025-02-11T00:05:42.008Z",
      "createdAt": "2025-02-11T00:05:42.028Z",
      "correlationId": "96a77998-5b46-43af-b00f-d7efb2f811c2",
      "externalCorrelation": {
        "transactionId": "123456",
        "sessionId": "987654"
      },
    

    Custom header validation rules

    PingOne validates all custom HTTP headers.

    • The maximum length of the header is 100 characters. If exceeded, the header will be truncated to 100 characters.

    • Any invalid characters will be converted to underscores. The following characters are allowed:

      • Unicode letters, combining marks, numeric characters, dots, underscores, dashes
      • /, @, =, #, +

    TLS and cipher suite requirements

    Transport Layer Security

    TLS version 1.2 is supported.

    Cipher suites

    auth.pingone.com

    TLS 1.2 (suites in server-preferred order)
    • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH x25519 (eq. 3072 bits RSA)

    • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH x25519 (eq. 3072 bits RSA)

    • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8) ECDH x25519 (eq. 3072 bits RSA)

    • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH x25519 (eq. 3072 bits RSA)

    • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH x25519 (eq. 3072 bits RSA)

    api.pingone.com

    TLS 1.2 (suites in server-preferred order)
    • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH x25519 (eq. 3072 bits RSA)

    • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH x25519 (eq. 3072 bits RSA)

    • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8) ECDH x25519 (eq. 3072 bits RSA)

    • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH x25519 (eq. 3072 bits RSA)

    • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH x25519 (eq. 3072 bits RSA)

    PingOne Localization

    These PingOne services use or support language localization:

    • Agreements

      • The agreements service uses a locale property on agreement language resources to identify an enabled language in which content can be presented to end users.

      • Agreement languages must be enabled through the PingOne language management service.

    • Forms

      • The forms service uses a languageBundle property that provides a map of i18n keys to their translations.

      • Language support associated with the language bundle must be enabled through the PingOne language management service.

    • Language Management

      • An environment default language must be specified and enabled.

      • Languages that support localization of PingOne agreements, forms, and notifications content must be enabled.

    • Notifications

      • Notifications template resources use a locale property to identify an enabled language in which notification content can be presented to end users.

      • Notifications languages must be enabled through the PingOne language management service.

    • Users

      • Users resources use a locale property to localize such items as currency, date time format, or numerical representations.

      • Users resources use a preferredLanguage property to specify an end user's preferred written or spoken language. This property can be a factor in determining the language shown to end users for agreement and notification content.

    Browser settings and localization

    The following PingOne services use the end user's browser settings as a factor to determine which language to present to users.

    • The Forms service translates i18n keys based on the end user's browser settings for preferred languages. For more information, refer to Localization of forms.

    • The Agreements service uses the browser's locale setting as a factor to present localized content to users. For information about the conditions needed to use the browser's settings, refer to Localization of agreements.

    • PingOne sign-on screens, the PingOne self-service app, and the PingOne app portal also use the end user's browser settings to determine the language to present at runtime.

    DaVinci flows and localization

    DaVinci flows use the PingOne forms service to create the sign-on screens presented to end users. These screens follow the same localization runtime logic described in the forms service. For detailed information about DaVinci flows and language support, refer to Localizing flows with PingOne.

    Localization of agreements

    An agreement must support the default environment language. The condition of having "agreement content to show" requires that at least the environment's default language is configured as an agreement language resource. The agreement language resource that supports the environment's default language must be enabled. The agreement language resource can have its enabled property set to true only if there is "localized content to show" configured on its associated agreement revisions resource.

    Agreement language resources define the locale property, which applies to all agreement revision resources associated with the language.

    Agreement language resources

    The locale property on the agreement language resource specifies a tag for identifying the language resource associated with an agreement consent (for example, en-US).

    How localized agreement content is presented to users

    Agreement languages are defined by either the language code (for example, en) or the combination of language code and country code (for example, en-GB). For identifying languages, the API follows the tags for identifying languages described in RFC_4646. For selecting a language code to use in an agreement, the API follows the matching of language tags described in RFC_4647.

    When an agreement is active, languages are presented to the user in the following order:

    1. User preference: The end user receives agreement content in the language that matches the user's preferredLanguage property value.

    2. Browser preference: If the user's preferredLanguage is not configured (or enabled) as one of the supported agreement language resources for this agreement, the end user receives agreement content in the language associated with the browser's configured locale.

    3. Environment default language: If the browser's configured language is not one of the enabled agreement language resources for the agreement, then the agreement content is presented to the end user in the environment's default language.

    For more information, refer to Agreement Management.

    Localization of forms

    You can add translatable keys for any user-facing text in your forms, including the input field labels, button labels, and rich text. After adding these keys, the text can be translated based on the end user's browser settings for preferred languages.

    The form resource includes a languageBundle property that provides a map of i18n keys to their translations. This object includes both the keys and their default translations. The PingOne language management service finds this object and creates the new keys for translation for this form.

    After you have added translatable keys, you must configure which languages are enabled for translation (refer to Language Management).

    For more information, refer to Forms.

    Localization and language management

    Language resources are used by other user-interactive features in the platform (such as agreements, notifications, and forms) to present information in a designated language for a specified user.

    To present localized content to end users, that language, or a group of languages, must be enabled. In PingOne, the Language Management service supports a maximum of 14 language translation catalogs, and it provides translated string catalogs for the following languages out of the box:

    Code Language
    de German
    en English
    es Spanish
    fr French
    fr-CA French (Canadian)
    it Italian
    ja Japanese
    ko Korean
    nl Dutch
    pt Portuguese
    ru Russian
    th Thai
    tr Turkish
    zh Chinese

    Within the language service, the /translations/{{languageCode}} endpoint provides operations to view the custom string translations for a specified language and update localized strings for specified user interface elements.

    For more information, refer to Language Management.

    Localization of notifications

    Each environment has a set of predefined notifications templates it can access. A template represents a specific process flow, for example, device_pairing or strong_authentication, that requires a notification. Each template defines the deliveryMethods (Email, SMS, Voice or Push) that it supports. A content defines one message text choice for a notification. Each content is always associated with one template and has one deliveryMethod and one locale.

    Runtime logic for content selection

    Each content, whether default or custom, is associated with one template, one deliveryMethod, one locale, and optionally, one variant (For more information on variants, refer to Creating custom contents). When a request for content is executed at runtime, it includes a template, deliveryMethod, locale and, optionally, a variant.

    1. PingOne matches the best text notification content for the user based on locale and variant name.

    2. If a locale is specified on the request (for example, on the notification.template.locale property on POST {{apiPath}}/environments/{{envID}}/users/{{userID}}/devices), it overrides the user's preferred language setting.

    3. If the locale on the request (or the user's preferred locale) does not match a notification content with the exact locale, PingOne uses the best matching locale (based on the language, ignoring the region) if available. For example, es-ES falls back to es.

    4. For the locale property value, PingOne supports language tags with quality values as described in Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content.

    5. For voice notifications, PingOne uses the best matching language based on the supported languages of the provider (Twilio, Syniverse, or a custom provider).

    For more information, refer to Notifications.

    Localization and user properties

    The following properties can be set on the user resource to select the language presented to end users for some PingOne interface elements.

    • locale

      This is the user's default location. This property may be explicitly set to null when updating a user to unset it. It is used for localizing such items as currency, date time format, or numerical representations. If provided, it must be a valid language tag as defined in RFC 5646.

    • preferredLanguage

      The user's preferred written or spoken languages. This may be explicitly set to null when updating a user to unset it. If provided, the format of the value must be a valid language range and the same as the HTTP Accept-Language header field (not including Accept-Language:) and is specified in Section 5.3.5 of RFC 7231. For example: en-US, en-gb;q=0.8, en;q=0.7.

    For more information, refer to Users.

    Load Testing

    Load testing is a regular part of managing your systems and their connections to the PingOne platform, especially to test anticipated increases or surges in usage or traffic. The following guidelines will help you conduct load testing in a way that will yield accurate results based on your service level agreement (SLA) and the inherent limits of the PingOne platform. For more information, refer to Platform Limits.

    The first step in any load testing process is to create a Support Case notifying Ping Identity of the planned testing before you begin.

    Ping Identity monitors customer traffic to proactively detect attacks and other threats. Load testing can be difficult to distinguish from attacks and other malicious actions. Unannounced load testing can trigger the following:

    • Ping Identity's threat detection systems might automatically block some or all traffic from your organization. This can not only invalidate the results of your load testing, but also disrupt your production environment user experience.

    • Surges in SMS and email traffic can result in service providers restricting or shutting down all traffic from the source domains associated with those surges.

    • Both of these can degrade the reputation scores of the sending domains and IP addresses, causing Ping Identity's threat detection systems to delay, restrict, or block traffic from those sources.

    These effects can negatively impact your real end users ability to register with an email confirmation, to sign on to your PingOne environment, or to authenticate using SMS passcodes. These effects can persist for a long time after your load test, and are not quickly or easily fixed once they occur.

    Creating a Support Case well in advance of any load testing allows Ping Identity to adjust threat detection systems in advance of anticipated traffic surges. This will yield more accurate results for your load testing with minimal disruptions to your regular operations.

    Load testing guidance

    When you notify Ping Identity ahead of your load testing we can provide guidance on response times and load limits specific to your SLA, so you can know what to expect in terms of platform performance. The information we provide includes:

    • Whether it is appropriate to increase your capacity allotment beyond your current SLA.
    • Transactions per second (TPS) and response time expectations, including rate limit variations per endpoint.

    If your expected surge exceeds these limits, you can coordinate with Ping Identity to meet your needs.

    Roles and Permissions in PingOne

    The ability to perform an action in PingOne is determined by Role-Based Access Control (RBAC). For example, when you initiate a request to a PingOne endpoint, you must have the role required by the endpoint to execute the request. Roles define the permissions available to users with that role.

    Refer to PingOne Role Permissions for the PingOne roles and their permissions.

    Refer to PingFederate SSO admin permissions for the available PingFederate roles.

    Refer to PingOne Permissions by Identifier for all permissions.

    You'll notice that our endpoint documentation uses icons to indicate the role or roles needed to access the endpoint (refer to Read All Built-in Admin Roles for an example).

    The PingOne roles are:

    Role Icon Abbr. Can Assign
    Organization Admin Organization Admin role ORG Environment Admin
    Environment Admin Environment Admin role ENV All roles except Organization Admin
    Identity Data Admin Identity Data Admin role IDA Identity Data Admin, Identity Data Read-Only Admin, Help Desk Admin
    DaVinci Admin DaVinci Admin role DVA DaVinci Admin, DaVinci Read-Only Admin
    Custom Role Admin Custom Role Admin role ROLE None
    Application Owner Application Owner role APP-O None
    Identity Data Read-Only Admin Identity Data Read Only role IDA-R None
    Configuration Read-Only Admin Configuration Read Only role CFA-R None
    DaVinci Read-Only Admin DaVinci Admin Read Only role DVA-R None
    Client Application Developer Client Application Developer role APP None
    Help Desk Admin Help Desk Admin role HDA None

    PingFederate SSO Admin Permissions

    Admins can SSO from PingOne into PingFederate with the following roles:

    PingFederate System Admin

    PingFederate System admins have the following permissions:

    • Configure partner connections and most system settings, except the management of local accounts and the handling of local keys and certificates.
    • Access to PingOne administrator console.

    PingFederate Auditor

    PingFederate Auditors have the following permissions:

    • View-only permissions for all administrative functions.
    • Access to PingOne administrator console.

    PingFederate Crypto Admin

    PingFederate Crypto admins have the following permissions:

    • Manage local keys and certificates.
    • Access to PingOne administrator console.

    PingFederate Expression Admin

    PingFederate Expression admins have the following permissions:

    • Configure partner connections and most system settings, except the management of local accounts and the handling of local keys and certificates.
    • Map user attributes by using the expression language, Object-Graph Navigation Language (OGNL).
    • Access to PingOne administrator console.

    PingFederate User Admin

    PingFederate User admins have the following permissions:

    • Create users, deactivate users, change or reset passwords, and install replacement license keys.
    • View-only permissions for all administrative functions.
    • Access to PingOne administrator console.

    PingOne Role Permissions

    A permission in a row aggregates actions that can be applied to a resource within a category and lists the roles that have that permission.

    Category Permission ORG ENV IDA DVA APP‑O IDA‑R CFA‑R DVA‑R ROLE APP HDA
    Applications Create, read, update, and delete application ENV APP
    Create, read, update, and delete attribute ENV APP
    Create, read, update, and delete flow policy assignment ENV APP‑O APP
    Create, read, update, and delete grant ENV APP
    Create, read, update, and delete key rotation policy ENV
    Create, read, update, and delete resource ENV APP
    Create, read, update, and delete scope ENV APP
    Create, read, update, and delete sign-on policy assignment ENV APP‑O APP
    Issue, create, read, update, and delete certificate ENV
    Read and update application admin role assignments ENV APP
    Read application CFA‑R
    Read application admin role assignments APP‑O CFA‑R
    Read application catalog ORG ENV APP‑O CFA‑R APP
    Read application secret APP‑O CFA‑R
    Read attribute APP‑O CFA‑R
    Read flow policy assignment CFA‑R
    Read grant APP‑O CFA‑R
    Read key rotation policy CFA‑R
    Read resource APP‑O CFA‑R
    Read resources secret APP‑O CFA‑R
    Read scope APP‑O CFA‑R
    Read sign-on policy assignment CFA‑R
    Read, update, and delete application APP‑O
    Read, update, and delete application secret ENV APP
    Read, update, and delete resources secret ENV APP
    Authentication Create create test device IDA
    Create, read, and delete FIDO device metadata ENV
    Create, read, and delete adaptive access policy assignment ORG ENV APP‑O APP
    Create, read, and delete pairing key IDA
    Create, read, update, and delete FIDO policy ENV
    Create, read, update, and delete OATH token ENV
    Create, read, update, and delete adaptive access policy ORG ENV APP
    Create, read, update, and delete device authentication policy ENV
    Create, read, update, and delete password policy ENV
    Create, read, update, and delete push credentials ENV APP
    Create, read, update, and delete sessions IDA
    Create, read, update, and delete sign-on policy ENV
    Read FIDO device metadata CFA‑R
    Read FIDO policy CFA‑R
    Read MFA settings CFA‑R
    Read OATH job ENV CFA‑R
    Read OATH token CFA‑R
    Read adaptive access policy CFA‑R
    Read adaptive access policy assignment CFA‑R
    Read device authentication policy CFA‑R
    Read pairing key IDA‑R
    Read password policy IDA IDA‑R CFA‑R
    Read push credentials APP‑O CFA‑R
    Read sessions IDA‑R HDA
    Read sign-on policy APP‑O CFA‑R APP
    Read, update, and delete MFA settings ENV
    Authorization Authorize, create, read, and update decision endpoint ENV
    Authorize, create, read, update, and delete decision endpoint ORG
    Create, read, and delete application role assignments ENV IDA
    Create, read, and delete application role entries ENV IDA
    Create, read, test, update, and delete authorization attribute ORG ENV
    Create, read, test, update, and delete authorization condition ORG ENV
    Create, read, test, update, and delete authorization policy ORG ENV
    Create, read, test, update, and delete authorization rule ORG ENV
    Create, read, test, update, and delete authorization service ORG ENV
    Create, read, test, update, and delete entity ORG ENV
    Create, read, update, and delete API services ENV APP
    Create, read, update, and delete access token provider ENV APP
    Create, read, update, and delete application permissions ENV IDA
    Create, read, update, and delete application resources ENV IDA
    Create, read, update, and delete application roles ENV IDA
    Create, read, update, and delete authorization processor ORG ENV
    Create, read, update, and delete authorization statement ORG ENV
    Deploy and read API service deployment ENV APP
    Read API service deployment CFA‑R
    Read API services APP‑O CFA‑R
    Read access token provider CFA‑R
    Read application entitlements ENV IDA IDA‑R CFA‑R APP HDA
    Read application permissions IDA‑R CFA‑R APP HDA
    Read application resources IDA‑R CFA‑R APP HDA
    Read application role assignments IDA‑R CFA‑R APP HDA
    Read application role entries IDA‑R CFA‑R APP HDA
    Read application roles IDA‑R CFA‑R APP HDA
    Read authorization attribute CFA‑R
    Read authorization condition CFA‑R
    Read authorization policy CFA‑R
    Read authorization processor CFA‑R
    Read authorization rule CFA‑R
    Read authorization service CFA‑R
    Read authorization statement CFA‑R
    Read authorize gateway deployment ORG ENV CFA‑R
    Read decision endpoint CFA‑R
    Read deployment package ORG ENV CFA‑R
    Read entity CFA‑R
    Read policy version ORG ENV CFA‑R
    Read recent decisions ORG ENV CFA‑R
    Read tag CFA‑R
    Read, update, and delete tag ORG ENV
    DaVinci Create, deploy, read, update, and delete DaVinci flows DVA
    Create, read, update, and delete DaVinci UI templates DVA
    Create, read, update, and delete DaVinci applications DVA
    Create, read, update, and delete DaVinci connections DVA
    Create, read, update, and delete DaVinci flow policies DVA
    Create, read, update, and delete DaVinci variables DVA
    Export, read, revert, update, and delete DaVinci flow versions DVA
    Read DaVinci UI templates DVA‑R
    Read DaVinci applications DVA‑R
    Read DaVinci connections DVA‑R
    Read DaVinci connectors DVA DVA‑R
    Read DaVinci events DVA DVA‑R
    Read DaVinci flow policies DVA‑R
    Read DaVinci flow versions DVA‑R
    Read DaVinci flows DVA‑R
    Read DaVinci interaction events DVA DVA‑R
    Read DaVinci stats DVA DVA‑R
    Read DaVinci users DVA‑R
    Read DaVinci variables DVA‑R
    Read access token ENV CFA‑R APP
    Read flow policy ENV APP‑O CFA‑R APP
    Read, update, and delete DaVinci users DVA
    Digital Credentials Create, read, and delete verification session ENV IDA
    Create, read, and update credential issuer profile ENV IDA
    Create, read, update, and delete credential signing key ENV IDA
    Create, read, update, and delete credential type ENV IDA
    Create, read, update, and delete digital wallet ENV IDA
    Create, read, update, and delete digital wallet application ENV IDA
    Create, read, update, and delete issuance rule ENV IDA
    Create, read, update, and delete verifiable credential ENV IDA
    Read and update staged changes ENV IDA
    Read credential issuer profile IDA‑R CFA‑R
    Read credential signing key IDA‑R CFA‑R
    Read credential type IDA‑R CFA‑R
    Read digital wallet IDA‑R CFA‑R
    Read digital wallet application IDA‑R CFA‑R
    Read issuance rule IDA‑R CFA‑R
    Read staged changes IDA‑R
    Read verifiable credential IDA‑R CFA‑R
    Read verification session IDA‑R CFA‑R
    Directory Authenticate, create, read, update, and delete device IDA HDA
    Create and delete batch group membership IDA
    Create, import, invite, read, update, verify, and delete user IDA
    Create, provision, read, update, and delete group IDA
    Create, read, and delete group membership IDA
    Create, read, and delete group role assignments IDA
    Create, read, and delete user linked accounts IDA
    Create, read, update, and delete accessing device IDA
    Create, read, update, and delete custom roles ORG ROLE
    Create, read, update, and delete population ENV
    Create, read, update, and delete user (SCIM) IDA
    Create, read, update, and delete user association with accessing device IDA
    Force change, read, recover, reset, set, unlock, and validate user password IDA
    Lock and unlock user account IDA
    Read accessing device IDA‑R
    Read and update user role assignments IDA
    Read and verify user HDA
    Read custom roles ENV IDA APP‑O IDA‑R CFA‑R APP
    Read device IDA‑R
    Read group ENV APP‑O IDA‑R CFA‑R APP HDA
    Read group membership IDA‑R HDA
    Read group provisioning rule sync status ENV IDA IDA‑R CFA‑R
    Read group role assignments IDA‑R
    Read population IDA IDA‑R CFA‑R APP HDA
    Read schema IDA DVA APP‑O IDA‑R CFA‑R DVA‑R APP HDA
    Read schema (SCIM) IDA IDA‑R HDA
    Read session IDA IDA‑R HDA
    Read user IDA‑R
    Read user (LDAP gateway) IDA IDA‑R
    Read user (SCIM) IDA‑R
    Read user association with accessing device IDA‑R
    Read user linked accounts IDA‑R HDA
    Read user password IDA‑R
    Read user role assignments ENV IDA‑R CFA‑R APP HDA
    Read user target store sync status ENV IDA IDA‑R CFA‑R
    Read, update, and delete schema ENV
    Recover, reset, set, and unlock user password HDA
    Reset user quota IDA
    Update user MFA-bypass IDA
    Update user MFA-enabled IDA HDA
    Update user enabled IDA
    Update user identity provider IDA
    Update user verify status IDA
    Validate user password (LDAP gateway) IDA
    Identity Verification Create data based identity verification ENV IDA
    Create identity record matching ENV IDA
    Create, get, update, and delete document ENV IDA
    Create, read, update, and delete verify policy ENV IDA
    Create, read, update, and delete verify transactions IDA
    Create, read, update, and delete voice phrase ENV IDA
    Create, read, update, and delete voice phrase content ENV IDA
    Get and delete reference data IDA
    Get, update, and delete verified user data IDA
    Read verify policy IDA‑R CFA‑R
    Read verify transactions IDA‑R
    Read voice phrase IDA‑R CFA‑R
    Read voice phrase content IDA‑R CFA‑R
    Integrations Check connection ENV
    Create and get revision ENV
    Create and update provisioning sync orchestration ENV
    Create, read, update, and delete gateway ENV
    Create, read, update, and delete identity provider ENV APP
    Execute direct LDAP IDA
    Execute, read, and validate PingID migration ENV
    Get connection sensitive configuration ENV
    Read PingID migration IDA DVA IDA‑R CFA‑R DVA‑R ROLE APP
    Read and validate PingID migration ORG
    Read gateway CFA‑R
    Read gateway role assignments CFA‑R
    Read identity provider IDA IDA‑R CFA‑R
    Read mapping CFA‑R
    Read provisioning plan CFA‑R
    Read provisioning rule ORG IDA IDA‑R CFA‑R APP
    Read provisioning store CFA‑R
    Read, update, and delete gateway role assignments ENV
    Read, update, and delete mapping ENV
    Read, update, and delete provisioning plan ENV
    Read, update, and delete provisioning rule ENV
    Read, update, and delete provisioning store ENV
    Validate Kerberos IDA
    Monitoring Create, read, update, and delete alert delivery channel ENV
    Create, read, update, and delete subscription ENV
    Read PingID activity IDA IDA‑R HDA
    Read alert delivery channel CFA‑R
    Read audit report and event data ENV IDA IDA‑R CFA‑R
    Read authentication ORG ENV IDA IDA‑R CFA‑R APP
    Read dashboard ORG ENV IDA IDA‑R CFA‑R APP
    Read subscription CFA‑R
    Read template ORG ENV IDA IDA‑R CFA‑R APP
    Read user demographics ORG ENV IDA IDA‑R CFA‑R APP
    Organization Create and read bootstrap ORG
    Create and read deployment ORG ENV
    Create, promote, read, update, and delete environment ORG
    Promote, read, and update environment ENV
    Read console access ORG ENV IDA DVA IDA‑R CFA‑R DVA‑R APP HDA
    Read deployment IDA DVA IDA‑R CFA‑R DVA‑R ROLE APP HDA
    Read environment IDA DVA APP‑O IDA‑R CFA‑R DVA‑R ROLE APP HDA
    Read license ORG ENV IDA DVA APP‑O IDA‑R CFA‑R DVA‑R ROLE APP HDA
    Read organization ORG ENV IDA DVA APP‑O IDA‑R CFA‑R DVA‑R ROLE APP HDA
    Other Create and update advanced identity cloud orchestration ORG ENV
    Create, read, and update configuration ENV
    Create, read, update, and delete PingOne for Enterprise orchestration ORG
    Create, read, update, and delete pingintelligence orchestration ORG
    Read PingOne for Enterprise orchestration CFA‑R APP
    Read and update PingOne for Enterprise orchestration ENV
    Read and update configuration APP
    Read and update early access features ORG ENV
    Read and update pingintelligence orchestration ENV
    Read configuration CFA‑R
    Read early access features CFA‑R
    Read getting started flows ENV CFA‑R APP
    Read pingintelligence orchestration CFA‑R APP
    Promotion Create, execute, read, and delete promotion ENV
    Create, read, update, and delete promotion variable ENV
    Create, read, update, and delete snapshot ENV
    Read and update promotion configuration ENV
    Read promotion CFA‑R
    Read promotion configuration CFA‑R
    Read promotion variable CFA‑R
    Read snapshot CFA‑R
    Settings Create key ORG
    Create, read, update, and delete custom domain ENV
    Create, read, update, and delete email domain ENV
    Create, read, update, and delete key ENV
    Display environment overview ORG ENV IDA DVA APP‑O IDA‑R CFA‑R DVA‑R ROLE APP
    Display environment properties ORG ENV IDA DVA APP‑O IDA‑R CFA‑R DVA‑R ROLE APP
    Read administrator security configuration IDA IDA‑R CFA‑R APP
    Read and update administrator security configuration ORG ENV
    Read certificate IDA APP‑O IDA‑R CFA‑R APP
    Read custom domain APP‑O CFA‑R APP
    Read email domain CFA‑R
    Read key APP‑O CFA‑R APP
    Update environment license ORG
    Update mutable properties ORG
    Threat Protection Create and read exploration ORG ENV IDA IDA‑R CFA‑R APP
    Create feedback ENV IDA
    Create prediction IDA
    Create, create, read, and update evaluation IDA
    Create, read, update, and delete policy ENV
    Create, read, update, and delete predictor ENV
    Read evaluation IDA‑R
    Read policy IDA IDA‑R CFA‑R
    Read predictor IDA IDA‑R CFA‑R
    User Experience Create and read image APP‑O
    Create notification ENV
    Create, read, and delete image ENV IDA APP
    Create, read, and update OAuth consent IDA
    Create, read, update, and delete agreement ENV
    Create, read, update, and delete branding themes ENV
    Create, read, update, and delete form ENV DVA
    Create, read, update, and delete language ENV
    Create, read, update, and delete notifications policy ENV
    Create, read, update, and delete template content ENV
    Create, read, update, and delete user consent IDA
    Read OAuth consent IDA‑R
    Read agreement CFA‑R
    Read and update branding settings ENV
    Read and update language DVA
    Read branding settings DVA CFA‑R DVA‑R APP
    Read branding themes DVA CFA‑R DVA‑R APP
    Read end user UI configurations ENV CFA‑R APP
    Read form CFA‑R DVA‑R APP
    Read image IDA‑R CFA‑R HDA
    Read language CFA‑R DVA‑R
    Read notification template ENV CFA‑R
    Read notifications policy CFA‑R
    Read notifications settings CFA‑R
    Read quota ENV CFA‑R
    Read reCAPTCHA V2 configuration CFA‑R DVA‑R APP
    Read template content CFA‑R
    Read user consent IDA‑R
    Read, update, and delete notifications settings ENV
    Read, update, and delete reCAPTCHA V2 configuration ENV DVA

    Advanced Identity Cloud Support

    PingOne Permissions by Identifier

    A permission identifier is a three-part, colon-delimited string that represents the category, action, and resource to which the permission applies.

    The Special column indicates special handling of certain permissions:

    • Essential: Start building a new custom role with the minimum set of permissions needed for the role to be usable.

    • Sensitive: The permission either provides access to sensitive information, such as personal user data, or allows the bearer to perform important actions that could negatively impact the organization, such as deleting an environment.

    Identifier Permission Special
    licensing:read:license Read license information for the organization. essential
    orgmgt:read:deployment Read deployments for other Ping products in the PingOne environment. These other products might require additional configuration outside of PingOne. essential
    orgmgt:read:environment Read a list of the environments that a user belongs to. Environments are the primary subdivision of an organization. essential
    orgmgt:read:organization Read the organization that a user belongs to. A user can belong to one organization only. The organization is the top-level identifier in PingOne. essential
    admin:update:config Update the administrator security settings used for accessing the admin console. sensitive
    applications:issue:certificate Issue a new KDC certificate sensitive
    applications:read:secret Read the client secret for an application. Client secrets are used to authenticate an application with PingOne. sensitive
    applications:update:secret Create a new client secret for an application. Client secrets are used to authenticate an application with PingOne. sensitive
    applications:delete:secret Revoke the previous client secret for an application before it expires. Client secrets are used to authenticate an application with PingOne and can be revoked when a new secret is generated. sensitive
    certmgt:create:certificate Create a certificate. Certificates are security credentials that PingOne uses for encryption and signing. sensitive
    certmgt:read:certificate Read the metadata for a certificate and export the certificate as an X509 certificate. Certificates are security credentials that PingOne uses for encryption and signing. sensitive
    certmgt:update:certificate Update a certificate. Updates include making a certificate default and reassigning a certificate to an application. Certificates are security credentials that PingOne uses for encryption and signing. sensitive
    certmgt:delete:certificate Delete a certificate. Certificates are security credentials that PingOne uses for encryption and signing. sensitive
    certmgt:create:key Create a new key pair. Key pairs are security credentials that PingOne uses for encryption and signing. sensitive
    certmgt:update:key Update a key pair. Updates include making a key pair default and reassigning a key pair to an application. Key pairs are security credentials that PingOne uses for encryption and signing. sensitive
    certmgt:delete:key Delete a key pair. Key pairs are security credentials that PingOne uses for encryption and signing. sensitive
    dir:forceChange:userPassword Force a user to change their password the next time they sign on. The password state is MUST_CHANGE_PASSWORD. sensitive
    dir:recover:userPassword Reset a user's password using a recovery code. Send a recovery code. sensitive
    dir:reset:userPassword Reset a user's password without requiring a recovery code. sensitive
    dir:set:userPassword Set a user's clear text or pre-encoded password and set a user's password authority. sensitive
    dir:unlock:userPassword Unlock a user's password. The password state is PASSWORD_LOCKED_OUT. sensitive
    mfa:create:device Create an MFA device. sensitive
    mfa:update:device Update an MFA device. sensitive
    mfa:delete:device Delete an MFA device. sensitive
    orgmgt:create:environment Create an environment to include a set of services and capabilities. Define the name and description, and include license information. Environments are the primary subdivision of an organization. sensitive
    orgmgt:delete:environment Delete an environment and all of its associated resources, such as applications, users, and branding. Environments are the primary subdivision of an organization. sensitive
    permissions:update:applicationRoleAssignments Assign or revoke admin roles for an application scope. Roles are used by worker applications only. sensitive
    permissions:update:gatewayRoleAssignments Add roles and the associated permissions associated with a gateway scope. The gateway scope defines the attributes that can be accessed in the external LDAP directory. sensitive
    permissions:delete:gatewayRoleAssignments Remove roles and the associated permissions associated with a gateway scope. The gateway scope defines the attributes that can be accessed in the external LDAP directory. sensitive
    permissions:create:groupRoleAssignments Assign an admin role to a group. sensitive
    permissions:delete:groupRoleAssignments Remove an admin role from a group. sensitive
    permissions:create:roles Create a custom role for the environment. sensitive
    permissions:read:roles Read a list of custom roles for the environment. sensitive
    permissions:update:roles Update the permissions that are included in a custom role for the environment. sensitive
    permissions:delete:roles Remove a custom role from the environment. sensitive
    permissions:update:userRoleAssignments Update admin roles that are assigned to a user, including the role permissions. sensitive
    promotion:create:promotion Start the promotion of configuration details from one environment to another. This permission is required in the source environment and 'Execute promotion' is required in the target environment. sensitive
    promotion:execute:promotion Promote the environment resource configuration from one environment to another. This permission is required in the target environment and 'Create promotion' is required in the source environment. sensitive
    promotion:read:promotion Read environment promotion details, such as which environment resources were promoted from one environment to another. sensitive
    promotion:delete:promotion Cancel an in-progress environment promotion. Environment promotions are the transfer of configuration details from one environment to another. sensitive
    promotion:read:promotionConfiguration Read environment-specific configuration data for promotion. Environment promotion ensures the smooth transition of configuration data between environments. sensitive
    promotion:update:promotionConfiguration Create or update environment-specific configuration data for promotion. Environment promotion ensures the smooth transition of configuration data between environments. sensitive
    promotion:create:promotionVariable Create environment promotion variables. Promotion variables are used to define attributes that must have different values in different environments. sensitive
    promotion:read:promotionVariable Read environment promotion variables. Promotion variables are used to define attributes that must have different values in different environments. sensitive
    promotion:update:promotionVariable Update the values of promotion variables. Promotion variables are used to define attributes that must have different values in different environments. sensitive
    promotion:delete:promotionVariable Delete environment promotion variables. Promotion variables are used to define attributes that must have different values in different environments. sensitive
    promotion:create:snapshot Create snapshots of environment resources. A snapshot is a record of the configuration for the asset at a specific point in time. sensitive
    promotion:read:snapshot Read snapshots of environment resources. A snapshot is a record of the configuration for the resource at a specific point in time. sensitive
    promotion:update:snapshot Update snapshots of environment resources. A snapshot is a record of the configuration for the resource at a specific point in time. sensitive
    promotion:delete:snapshot Delete snapshots of environment resources. A snapshot is a record of the configuration for the resource at a specific point in time. sensitive
    resources:read:secret Read the client secret for a resource. Client secrets are used to authenticate a resource with PingOne. sensitive
    resources:update:secret Create a new client secret for a resource. Client secrets are used to authenticate a resource with PingOne. sensitive
    resources:delete:secret Revoke the previous client secret for an application resource before it expires. Client secrets are used to authenticate a resource with PingOne and can be revoked when a new secret is generated. sensitive
    admin:read:config Read the administrator security settings used for accessing the admin console.
    agreements:create:agreement Create an agreement that users must consent to as part of an authentication policy or flow.
    agreements:read:agreement Read agreements that users must consent to as part of an authentication policy or flow.
    agreements:update:agreement Update an agreement that users must consent to as part of an authentication policy or flow.
    agreements:delete:agreement Delete an agreement that users must consent to as part of an authentication policy or flow.
    agreements:create:oauthConsent Create a record of the user's consent to share their information with an OAuth application during an authentication flow.
    agreements:read:oauthConsent Read the OAuth consent history for a user.
    agreements:update:oauthConsent Update the recorded date for the user's consent to an OAuth application request for personal information during an authentication flow.
    agreements:create:userConsent Consent to an agreement on behalf of a particular user.
    agreements:read:userConsent Read the consent history for a user, including agreement names, language, and date of consent.
    agreements:update:userConsent Require a user to re-consent to an agreement when the agreement has been updated.
    agreements:delete:userConsent Delete consent to an agreement on behalf of a particular user.
    alerting:create:channel Create an alert channel to define the types of events that will trigger an alert and to list email addresses where the alerts will be sent.
    alerting:read:channel Read alert channels to view the types of events that will trigger an alert and the list of email addresses where the alerts will be sent.
    alerting:update:channel Update an alert channel to change the types of events that will trigger an alert or to change the email addresses where the alerts will be sent.
    alerting:delete:channel Delete an alert channel to stop sending alerts about events to a list of email addresses.
    applicationRoles:read:applicationEntitlement Query a user's entitled application permissions, which control the actions the user can take in applications and APIs. Application permissions are defined on resources and assigned through application roles.
    applicationRoles:create:applicationPermission Create permissions that represent actions that can be taken on resources in external applications.
    applicationRoles:read:applicationPermission List application permissions and read permission details, including permission descriptions, actions, and resources.
    applicationRoles:update:applicationPermission Update details for application permissions, including permission actions and descriptions.
    applicationRoles:delete:applicationPermission Delete application permissions.
    applicationRoles:create:applicationResource Create resources that represent protected features in external applications.
    applicationRoles:read:applicationResource List application resources and read resource details, including resource names and descriptions.
    applicationRoles:update:applicationResource Update details for application resources, including resource names and descriptions.
    applicationRoles:delete:applicationResource Delete application resources.
    applicationRoles:create:applicationRole Create roles that group permissions for external applications by function.
    applicationRoles:read:applicationRole List application roles and read role details, including role names and descriptions.
    applicationRoles:update:applicationRole Update details for application roles, including role names and descriptions.
    applicationRoles:delete:applicationRole Delete application roles.
    applicationRoles:create:applicationRoleAssignment Assign application roles to users to grant the associated permissions for actions in external applications.
    applicationRoles:read:applicationRoleAssignment Read application roles that are assigned to a user, including the role permissions.
    applicationRoles:delete:applicationRoleAssignment Remove application role assignments from users to revoke the associated permissions for actions in external applications.
    applicationRoles:create:applicationRoleEntry Add permissions for external applications to application roles.
    applicationRoles:read:applicationRoleEntry List permissions for an application role.
    applicationRoles:delete:applicationRoleEntry Delete permissions from application roles.
    applications:create:application Create an application in the environment.
    applications:read:application Read the settings for an application in the environment.
    applications:update:application Update the settings for an application in the environment.
    applications:delete:application Delete an application from the environment.
    applications:create:flowPolicyAssignment Assign DaVinci policies to PingOne applications. When assigned, a DaVinci policy controls which DaVinci flow a PingOne application uses for authentication.
    applications:read:flowPolicyAssignment Read the assigned DaVinci policies for any PingOne application.
    applications:update:flowPolicyAssignment Update the policy order for DaVinci policies assigned to PingOne applications. A PingOne application applies policies in their listed order from top to bottom.
    applications:delete:flowPolicyAssignment Unassign DaVinci policies from PingOne applications. When unassigned, a DaVinci policy no longer has control over the authentication experience for the PingOne application.
    applications:create:grant Assign a resource scope to an application. Resource scopes define application access to user details, such as name and email address.
    applications:read:grant Read the resource scope that is assigned to an application. Resource scopes define application access to user details, such as name and email address.
    applications:update:grant Change the resource scopes that are assigned to an application. Resource scopes define application access to user details, such as name and email address.
    applications:delete:grant Delete an assigned resource scope from an application. Resource scopes define application access to user details, such as name and email address.
    applications:create:pushCredentials Create push credentials for a mobile application.
    applications:read:pushCredentials Read push credentials for a mobile application.
    applications:update:pushCredentials Update push credentials for a mobile application.
    applications:delete:pushCredentials Delete push credentials for a mobile application.
    applications:create:signOnPolicyAssignment Assign an authentication policy that defines the sign-on requirements used to access an application.
    applications:read:signOnPolicyAssignment Read authentication policies that are assigned to an application. Authentication policies define the sign-on requirements used to access an application.
    applications:update:signOnPolicyAssignment Update the authentication policy that is assigned to an application to change the sign-on requirements used to access an application.
    applications:delete:signOnPolicyAssignment Delete an assigned authentication policy from an application. Authentication policies define the sign-on requirements used to access an application.
    audit_reporting:read:activity Access to the audit report and event content including PII.
    authn:create:sessions Create a session for a user when they complete authentication during sign-on.
    authn:read:sessions Read all sessions for a particular user.
    authn:update:sessions Update a user session when the authentication process or API request has a valid session ID cookie.
    authn:delete:sessions Delete a recent user session to sign the user out of PingOne. For example, you can delete a session if you detect suspicious activity.
    authn:create:signOnPolicy Create an authentication policy, which defines how user identities are verified at sign-on.
    authn:read:signOnPolicy Read authentication policies, which define how user identities are verified at sign-on.
    authn:update:signOnPolicy Update an authentication policy to change how user identities are verified at sign-on.
    authn:delete:signOnPolicy Delete an authentication policy.
    authz:create:accessTokenProvider Create access token providers. Providers for access tokens generated outside of PingOne are used in conjunction with API services in PingOne Authorize to control access to APIs.
    authz:read:accessTokenProvider Read details for access token providers. Providers for access tokens generated outside of PingOne are used in conjunction with API services in PingOne Authorize to control access to APIs.
    authz:update:accessTokenProvider Update access token providers. Providers for access tokens generated outside of PingOne are used in conjunction with API services in PingOne Authorize to control access to APIs.
    authz:delete:accessTokenProvider Delete access token providers. Providers for access tokens generated outside of PingOne are used in conjunction with API services in PingOne Authorize to control access to APIs.
    authz:create:adaptiveTrustPolicy Create an adaptive access policy. Adaptive access policies define contextual rules for access to applications.
    authz:read:adaptiveTrustPolicy Read configuration details for adaptive access policies. Adaptive access policies define contextual rules for access to applications.
    authz:update:adaptiveTrustPolicy Update an adaptive access policy. Adaptive access policies define contextual rules for access to applications.
    authz:delete:adaptiveTrustPolicy Delete an adaptive access policy. Adaptive access policies define contextual rules for access to applications.
    authz:create:adaptiveTrustPolicyAssignment Assign an adaptive access policy to an application. Adaptive access policies define contextual rules for access to applications.
    authz:read:adaptiveTrustPolicyAssignment Read adaptive access policy assignments for an application. Policy assignments control which policies the application uses for adaptive access.
    authz:delete:adaptiveTrustPolicyAssignment Delete adaptive access policy assignments from an application. Policy assignments control which policies the application uses for adaptive access.
    authz:create:apiServer Create an API service and associated operations, which represent an HTTP API with access control handled by PingOne Authorize.
    authz:read:apiServer Read details for an API service and its associated operations, including the name, base URLs, and directory and token source.
    authz:update:apiServer Update details for an API service and its associated operations, including the name, base URLs, and basic rules.
    authz:delete:apiServer Delete an API service and its associated operations, decision endpoint, and policy tree.
    authz:deploy:apiServerDeployment Deploy API service configuration updates and policies to the API service's decision endpoint.
    authz:read:apiServerDeployment Read an API service's deployment status.
    authz:create:authorizationAttribute Create an authorization attribute in the Trust Framework. Authorization attributes provide contextual information used in authorization decisions.
    authz:read:authorizationAttribute Read configuration details for authorization attributes in the Trust Framework. Authorization attributes provide contextual information used in authorization decisions.
    authz:test:authorizationAttribute Test an authorization attribute in the Trust Framework. Authorization attributes provide contextual information used in authorization decisions.
    authz:update:authorizationAttribute Update an authorization attribute in the Trust Framework. Authorization attributes provide contextual information used in authorization decisions.
    authz:delete:authorizationAttribute Delete an authorization attribute from the Trust Framework. Authorization attributes provide contextual information used in authorization decisions.
    authz:create:authorizationCondition Create an authorization condition in the Trust Framework. Authorization conditions use comparisons to define authorization policy logic.
    authz:read:authorizationCondition Read configuration details for authorization conditions in the Trust Framework. Authorization conditions use comparisons to define authorization policy logic.
    authz:test:authorizationCondition Test an authorization condition in the Trust Framework. Authorization conditions use comparisons to define authorization policy logic.
    authz:update:authorizationCondition Update an authorization condition in the Trust Framework. Authorization conditions use comparisons to define authorization policy logic.
    authz:delete:authorizationCondition Delete an authorization condition from the Trust Framework. Authorization conditions use comparisons to define authorization policy logic.
    authz:create:authorizationPolicy Create an authorization policy. Authorization policies define the context and logic used to control access to application resources.
    authz:read:authorizationPolicy Read configuration details for authorization policies. Authorization policies define the context and logic used to control access to application resources.
    authz:test:authorizationPolicy Test an authorization policy. Authorization policies define the context and logic used to control access to application resources.
    authz:update:authorizationPolicy Update an authorization policy. Authorization policies define the context and logic used to control access to application resources.
    authz:delete:authorizationPolicy Delete an authorization policy. Authorization policies define the context and logic used to control access to application resources.
    authz:create:authorizationProcessor Create an authorization processor in the Trust Framework. Authorization processors transform data returned from authorization attributes and services.
    authz:read:authorizationProcessor Read configuration details for authorization processors in the Trust Framework. Authorization processors transform data returned from authorization attributes and services.
    authz:update:authorizationProcessor Update an authorization processor in the Trust Framework. Authorization processors transform data returned from authorization attributes and services.
    authz:delete:authorizationProcessor Delete an authorization processor from the Trust Framework. Authorization processors transform data returned from authorization attributes and services.
    authz:create:authorizationRule Create an authorization rule. Authorization rules use conditions or in-line comparisons to define authorization policy logic.
    authz:read:authorizationRule Read configuration details for authorization rules. Authorization rules use conditions or in-line comparisons to define authorization policy logic.
    authz:test:authorizationRule Test an authorization rule. Authorization rules use conditions or in-line comparisons to define authorization policy logic.
    authz:update:authorizationRule Update an authorization rule. Authorization rules use conditions or in-line comparisons to define authorization policy logic.
    authz:delete:authorizationRule Delete an authorization rule. Authorization rules use conditions or in-line comparisons to define authorization policy logic.
    authz:create:authorizationService Create an authorization service in the Trust Framework. Authorization services connect to data sources used in authorization decisions.
    authz:read:authorizationService Read configuration details for authorization services in the Trust Framework. Authorization services connect to data sources used in authorization decisions.
    authz:test:authorizationService Test an authorization service in the Trust Framework. Authorization services connect to data sources used in authorization decisions.
    authz:update:authorizationService Update an authorization service in the Trust Framework. Authorization services connect to data sources used in authorization decisions.
    authz:delete:authorizationService Delete an authorization service from the Trust Framework. Authorization services connect to data sources used in authorization decisions.
    authz:create:authorizationStatement Create an authorization statement. Authorization statements provide additional processing instructions in authorization decisions.
    authz:read:authorizationStatement Read configuration details for authorization statements. Authorization statements provide additional processing instructions in authorization decisions.
    authz:update:authorizationStatement Update an authorization statement. Authorization statements provide additional processing instructions in authorization decisions.
    authz:delete:authorizationStatement Delete an authorization statement. Authorization statements provide additional processing instructions in authorization decisions.
    authz:read:authorizeDeployment Read PingOne Authorize Gateway Deployment
    authz:authorize:decisionendpoint Make a decision request to a decision endpoint, initiating evaluation of policies deployed to the endpoint.
    authz:create:decisionendpoint Create a decision endpoint, which provides an environment for authorization policy deployment.
    authz:read:decisionendpoint Read details for a decision endpoint, including its name, description, policy version deployed, and whether recent decisions are recorded.
    authz:update:decisionendpoint Update details for a decision endpoint, including its name, description, policy version deployed, and whether recent decisions are recorded.
    authz:delete:decisionendpoint Delete a decision endpoint and any recent decisions stored for the endpoint.
    authz:read:deploymentpackage Read the deployment package of policies and Trust Framework definitions associated with a specific authorization version.
    authz:create:entity Create an authorization service, attribute, condition, processor, policy set, policy, rule, statement, or target.
    authz:read:entity Read details about an authorization service, attribute, condition, processor, policy set, policy, rule, statement, or target.
    authz:test:entity Test an authorization service, attribute, condition, policy set, policy, or library rule.
    authz:update:entity Update an authorization service, attribute, condition, processor, policy set, policy, rule, statement, or target.
    authz:delete:entity Delete an authorization service, attribute, condition, processor, policy set, policy, rule, statement, or target.
    authz:read:recentdecisions Read details about the decision flow and elements used in recent decisions for a decision endpoint.
    authz:read:tag Read an authorization version name.
    authz:update:tag Create or update an authorization version name.
    authz:delete:tag Delete an authorization version name.
    authz:read:version Read details about an authorization version, including the entity that changed, the date and time, and the user who made the change.
    bootstrap:create:bootstrap Start a bootstrap execution for provisioning.
    bootstrap:read:bootstrap Check bootstrap execution status by invoking the GET endpoint.
    branding:update:branding Create and update branding
    branding:delete:branding Delete branding
    branding:read:brandingSettings Read the company name and logo for an environment.
    branding:update:brandingSettings Update the company name and logo for an environment.
    branding:create:customDomain Create a custom domain for the environment to personalize the user-facing PingOne service URLs.
    branding:read:customDomain Read the custom domain for the environment and see the corresponding custom service URLs. If enabled, custom domains replace pingone in the address bar.
    branding:update:customDomain Update the custom domain for the environment to renew the SSL certificate.
    branding:delete:customDomain Delete a custom domain from the environment to stop using it in the user-facing PingOne service URLs.
    branding:create:theme Create a theme to customize the colors and images used on your registration pages, sign-on pages, and verification pages for an environment.
    branding:read:theme Read the themes available for an environment. Themes dictate the colors and images used on the registration pages, sign-on pages, and verification pages for an environment.
    branding:update:theme Update a theme in an environment. Themes dictate the colors and images used on the registration pages, sign-on pages, and verification pages for an environment.
    branding:delete:theme Delete a theme from an environment. Themes dictate the customization of the colors and images used on the registration pages, sign-on pages, and verification pages for an environment.
    certmgt:read:key Read the metadata for a key pair and download it as an X509 certificate. Key pairs are security credentials that PingOne uses for encryption and signing.
    certmgt:create:krp Create a new key rotation policy in the environment. PingOne uses key rotation to automatically generate new cryptographic keys at a particular interval.
    certmgt:read:krp Read a list of key rotation policies in the environment. PingOne uses key rotation to automatically generate new cryptographic keys at a particular interval.
    certmgt:update:krp Update a key rotation policy in the environment. PingOne uses key rotation to automatically generate new cryptographic keys at a particular interval.
    certmgt:delete:krp Delete a key rotation policy from the environment. PingOne uses key rotation to automatically generate new cryptographic keys at a particular interval.
    console:display:environmentOverview View the environment overview page in the administrator console. This permission only affects visibility in the administrator console and not API access.
    console:display:environmentProperties View the environment properties page in the administrator console. This permission only affects visibility in the administrator console and not API access.
    credentialsIssuance:create:credentialSigningKey Create a credential signing key for an environment. Credential signing keys sign a verifiable credential using a customer-provided service.
    credentialsIssuance:read:credentialSigningKey Read a credential signing key for an environment. Credential signing keys sign a verifiable credential using a customer-provided service.
    credentialsIssuance:update:credentialSigningKey Update a credential signing key for an environment. Credential signing keys sign a verifiable credential using a customer-provided service.
    credentialsIssuance:delete:credentialSigningKey Delete a credential signing key for an environment. Credential signing keys sign a verifiable credential using a customer-provided service.
    credentialsIssuance:create:credentialType Create a credential type for an environment. A credential type defines a template that is used when creating or updating a user credential.
    credentialsIssuance:read:credentialType Read a credential type for an environment. A credential type defines a template that is used when creating or updating a user credential.
    credentialsIssuance:update:credentialType Update a credential type for an environment. A credential type defines a template that is used when creating or updating a user credential.
    credentialsIssuance:delete:credentialType Delete a credential type for an environment. A credential type defines a template that is used when creating or updating a user credential.
    credentialsIssuance:create:credentials Create a credential. Credentials allow providers of services to verify authenticity and accuracy of issuance and data integrity at the time of presentation.
    credentialsIssuance:read:credentials Read a credential. Credentials allow providers of services to verify authenticity and accuracy of issuance and data integrity at the time of presentation..
    credentialsIssuance:update:credentials Update a credential. Credentials allow providers of services to verify authenticity and accuracy of issuance and data integrity at the time of presentation.
    credentialsIssuance:delete:credentials Delete a credential. Credentials allow providers of services to verify authenticity and accuracy of issuance and data integrity at the time of presentation.
    credentialsIssuance:create:digitalWallet Create a digital wallet for a user. A digital wallet links an instance of a digital wallet application to a user.
    credentialsIssuance:read:digitalWallet Read a digital wallet for a user. A digital wallet links an instance of a digital wallet application to a user.
    credentialsIssuance:update:digitalWallet Updated a digital wallet for a user. A digital wallet links an instance of a digital wallet application to a user.
    credentialsIssuance:delete:digitalWallet Delete a digital wallet for a user. A digital wallet links an instance of a digital wallet application to a user.
    credentialsIssuance:create:digitalWalletApplication Create a digital wallet application. A digital wallet application defines the relationship between a user's digital wallet and a customer's PingOne application.
    credentialsIssuance:read:digitalWalletApplication Read a digital wallet application. A digital wallet application defines the relationship between a user's digital wallet and a customer's PingOne application.
    credentialsIssuance:update:digitalWalletApplication Update a digital wallet application. A digital wallet application defines the relationship between a user's digital wallet and a customer's PingOne application.
    credentialsIssuance:delete:digitalWalletApplication Delete a digital wallet application. A digital wallet application defines the relationship between a user's digital wallet and a customer's PingOne application.
    credentialsIssuance:create:issuanceRule Create an issuance rule for a credential type. Issuance rules are used to issue credentials to a specified group, population or SCIM filter.
    credentialsIssuance:read:issuanceRule Read an issuance rule for a credential type. Issuance rules are used to issue credentials to a specified group, population or SCIM filter.
    credentialsIssuance:update:issuanceRule Update an issuance rule for a credential type. Issuance rules are used to issue credentials to a specified group, population or SCIM filter.
    credentialsIssuance:delete:issuanceRule Delete an issuance rule for a credential type. Issuance rules are used to issue credentials to a specified group, population or SCIM filter.
    credentialsIssuance:create:issuerProfile Create the environment profile used for issuing user credentials.
    credentialsIssuance:read:issuerProfile Read the environment profile used for issuing user credentials.
    credentialsIssuance:update:issuerProfile Update the environment profile used for issuing user credentials.
    credentialsIssuance:read:stagedChanges Read staged changes for an issuance rule. Staged changes show actions for an issuance rule that are staged for execution.
    credentialsIssuance:update:stagedChanges Update staged changes for an issuance rule. Allows for refreshing and applying of staged actions for an issuance rule.
    credentialsVerification:create:presentationSession Create a Verification Session. Verification Sessions allow providers of services to verify authenticity and accuracy of issuance and data integrity at the time of presentation.
    credentialsVerification:read:presentationSession Read a Verification Session. Verification Sessions allow providers of services to verify authenticity and accuracy of issuance and data integrity at the time of presentation.
    credentialsVerification:delete:presentationSession Delete a Verification Session. Verification Sessions allow providers of services to verify authenticity and accuracy of issuance and data integrity at the time of presentation.
    davinci:create:applications Create DaVinci applications
    davinci:read:applications Read DaVinci applications
    davinci:update:applications Update DaVinci applications
    davinci:delete:applications Delete DaVinci applications
    davinci:create:connections Create a new DaVinci connector for an environment and make it available for use in all DaVinci flows.
    davinci:read:connections Read a list of all connectors added to an environment, including their configurations and containing DaVinci flows.
    davinci:update:connections Update the environment-level configuration of a connector instance. These changes also affect any use of the connector in DaVinci flows.
    davinci:delete:connections Delete a connector instance from an environment. This operation renders the connector instance non-functional in DaVinci flows.
    davinci:read:connectors Read DaVinci connectors
    davinci:create:constructs Create variables of any available scope in an environment or using the Variables connector in a DaVinci flow.
    davinci:read:constructs Read all variables and their values across the environment and within DaVinci flows.
    davinci:update:constructs Update any variables across the environment and within DaVinci flows.
    davinci:delete:constructs Delete any variables across the environment and within DaVinci flows.
    davinci:create:dvFlows Create or import DaVinci flows in one or more environments. Add new connectors during the import process.
    davinci:deploy:dvFlows Publish versions of DaVinci flows to make them available for use in DaVinci applications.
    davinci:read:dvFlows Read all DaVinci flows and their internal configurations. Also allows you to export flows.
    davinci:update:dvFlows Update the configuration and design of DaVinci flows and add, configure, or remove their subcomponents at the flow level.
    davinci:delete:dvFlows Delete existing DaVinci flows.
    davinci:read:dvUsers Read DaVinci users. DaVinci users are end users created during a DaVinci flow and stored in DaVinci.
    davinci:update:dvUsers Update users in DaVinci. DaVinci users are end users created during a DaVinci flow and stored in DaVinci.
    davinci:delete:dvUsers Delete users from DaVinci. DaVinci users are end users created during a DaVinci flow and stored in DaVinci.
    davinci:read:events Read auditing information for the admin portal. This includes all events that generate an audit log entry, including the creation or modification of a flow, flow policy, or connector.
    davinci:create:flowPolicies Create DaVinci flow policies
    davinci:read:flowPolicies Read DaVinci flow policies
    davinci:update:flowPolicies Update DaVinci flow policies
    davinci:delete:flowPolicies Delete DaVinci flow policies
    davinci:export:flowVersions Export DaVinci flow versions
    davinci:read:flowVersions Read DaVinci flow versions
    davinci:revert:flowVersions Revert DaVinci flow versions
    davinci:update:flowVersions Update DaVinci flow versions
    davinci:delete:flowVersions Delete DaVinci flow versions
    davinci:read:interactionEvents Read DaVinci flow analytics. Flow analytics display information about flow executions, including the nodes used, inputs, and outputs.
    davinci:read:stats Read administrator statistics about the admin portal. This includes the UI dashboard summary and data about the creation and use of flows, connectors, variables, and users.
    davinci:create:uiTemplates Create user interface templates in DaVinci. UI templates can be used in a DaVinci flow to match your company style and branding.
    davinci:read:uiTemplates Read user interface templates in DaVinci. UI templates can be used in DaVinci flows to match your company style and branding.
    davinci:update:uiTemplates Update user interface templates in DaVinci. UI templates can be used in DaVinci flows to match your company style and branding.
    davinci:delete:uiTemplates Delete user interface templates from DaVinci. The UI template can no longer be used in DaVinci flows.
    devices:create:seenDevice Create/Update accessing device
    devices:read:seenDevice Read accessing device
    devices:update:seenDevice Update accessing device
    devices:delete:seenDevice Delete accessing device
    devices:create:userSeenDevice Create user association with accessing device
    devices:read:userSeenDevice Read user association with accessing device
    devices:update:userSeenDevice Update user association with accessing device
    devices:delete:userSeenDevice Delete user association with accessing device
    dir:create:batchGroupMembership Create group memberships by batch for a user using the user ID and group IDs. Groups are used to organize a collection of user identities.
    dir:delete:batchGroupMembership Delete group memberships by batch for a user using the user ID and group IDs. Groups are used to organize a collection of user identities.
    dir:create:group Create a group in the environment. Groups are used to organize a collection of user identities.
    dir:provision:group Create Provisionable Group
    dir:read:group Read a group in the environment. Groups are used to organize a collection of user identities.
    dir:update:group Update a group, including name, description, and user filter, which defines dynamic group membership. Adding users directly requires the Group Membership permission.
    dir:delete:group Delete a group from the environment. Groups are used to organize a collection of user identities.
    dir:create:groupMembership Add a user to a group manually, rather than dynamically.
    dir:read:groupMembership Read the group membership for a user.
    dir:delete:groupMembership Delete a user or subgroup from a group.
    dir:read:groupSyncedRules get group's provisioning rule sync status
    dir:create:passwordPolicy Create a password policy for the environment. A password policy dictates the strength and complexity requirements for a password or passphrase.
    dir:read:passwordPolicy Read a list of password policies for the environment. A password policy dictates the strength and complexity requirements for a password or passphrase.
    dir:update:passwordPolicy Update a password policy for the environment. A password policy dictates the strength and complexity requirements for a password or passphrase.
    dir:delete:passwordPolicy Delete a password policy from the environment. A password policy dictates the strength and complexity requirements for a password or passphrase.
    dir:create:population Create a population in the environment. A population defines a set of users, and a user can belong to one population only.
    dir:read:population Read a list of populations in the environment. A population defines a set of users, and a user can belong to one population only.
    dir:update:population Update a population, including name and description, password policy, and population members. A population defines a set of users, and a user can belong to one population only.
    dir:delete:population Delete a population from the environment. A population defines a set of users, and a user can belong to one population only.
    dir:read:schema Read the schema for the environment, including its attributes. A schema defines the user attributes in the environment.
    dir:update:schema Update a schema, including creating, updating, and deleting attributes. A schema defines the user attributes in the environment.
    dir:delete:schema Delete a schema from the environment. A schema defines the user attributes in the environment.
    dir:create:user Create a user in the environment.
    dir:import:user Import users into the PingOne Directory. Imported users can include a password value.
    dir:invite:user Invite users
    dir:read:user Read a list of users in the environment.
    dir:update:user Update a user account, including name, email address, and other attributes.
    dir:verify:user Verify a user using a verification code. Send verification codes. Verify a user's email address and send a verification email.
    dir:delete:user Delete a user from the environment.
    dir:lock:userAccount (Probably best not to document publicly)
    dir:unlock:userAccount Unlock a user account. Locked accounts cannot sign on to PingOne.
    dir:update:userEnabled Enable or disable a user. Disabled users cannot sign on to PingOne.
    dir:update:userIdentityProvider Define the authoritative identity provider for a user. An authoritative identity provider has authority over user records and credentials.
    dir:create:userLinkedAccounts Create a linked account for a user. A linked account is tied to a third-party identity provider for authentication.
    dir:read:userLinkedAccounts Read accounts linked to a user. A linked account is tied to a third-party identity provider for authentication.
    dir:delete:userLinkedAccounts Delete a linked account for a user. A linked account is tied to a third-party identity provider for authentication.
    dir:update:userMfaBypass Specify an MFA bypass period for a user. The user will not be prompted to carry out MFA until after this period expires.
    dir:update:userMfaEnabled Update the mfaEnabled status for a user. Specify whether MFA should be enabled for a user.
    dir:read:userPassword Read a user's password state. The password state values can include OK, PASSWORD_LOCKED_OUT, and PASSWORD_EXPIRED.
    dir:validate:userPassword Validate a user's password.
    dir:read:userSyncedStores get user's target store sync status
    dir:update:userVerifyStatus Update a user's verification status.
    earlyAccess:read:features Read the early access features applicable to an environment.
    earlyAccess:update:features Opt-in or opt-out of early access features available for an environment.
    enduseruiconfig:read:configs View the Self Service and Application Portal pages.
    externalServices:create:externalService Create an external service
    externalServices:invoke:externalService Invoke an external service request
    externalServices:read:externalService Read a external service(s)
    externalServices:update:externalService Update an external service
    externalServices:delete:externalService Delete an external service
    externalServices:read:secrets Read external service secrets
    externalServices:update:secrets Update external service secrets
    flowPolicies:read:flowPolicy Read all DaVinci policies that are configured for use with PingOne applications.
    formBuilder:create:form Create a DaVinci form.
    formBuilder:read:form Get a list of available DaVinci forms.
    formBuilder:update:form Update an existing DaVinci form.
    formBuilder:delete:form Delete a DaVinci form.
    formBuilder:read:recaptchaV2Config Read the values for the Site Key and Secret Key fields of all Google reCAPTCHA verifications embedded in any DaVinci forms in a PingOne environment.
    formBuilder:update:recaptchaV2Config Update the values for the Site Key and Secret Key fields of all Google reCAPTCHA verifications embedded in any DaVinci forms in a PingOne environment.
    formBuilder:delete:recaptchaV2Config Delete the values for the Site Key and Secret Key fields of all Google reCAPTCHA verifications embedded in any DaVinci forms in a PingOne environment.
    gateways:create:gateway Create a gateway to connect your on-premise infrastructure to PingOne and authenticate user identities and data stored in an internal or external directory.
    gateways:read:gateway Read the configuration details of all PingOne gateways. Gateways connect your on-premise infrastructure to PingOne.
    gateways:update:gateway Update the settings for a PingOne gateway.
    gateways:delete:gateway Delete a gateway to remove the connection between your on-premise infrastructure and PingOne.
    globalregistry:read:console Access to PingOne administrator console.
    identityProviders:create:identityProvider Create an identity provider (IdP) resource. External IdP connections allow users to authenticate with PingOne using credentials provided by the IdP when configured as part of an authentication policy.
    identityProviders:read:identityProvider Read identity provider (IdP) resources. External IdP connections allow users to authenticate to PingOne using credentials provided by the external IdP.
    identityProviders:update:identityProvider Update an identity provider (IdP) resource to change how users authenticate to PingOne using the credentials provided by the IdP.
    identityProviders:delete:identityProvider Delete an identity provider (IdP) resource. Users will no longer be able to use the external IdP connection to authenticate using credentials provided by the IdP.
    identitycloud:create:orchestration Create an Advanced Identity Cloud orchestration in a specific environment
    identitycloud:update:orchestration Update an Advanced Identity Cloud orchestration in a specific environment
    identitycloud:admin:superadmin Grants the Super Admin role in Advanced Identity Cloud which has full access to all administrative features and can manage every aspect of this tenant, including adding other administrators.
    identitycloud:admin:tenantadmin Grants the Tenant Admin role in Advanced Identity Cloud which has full access to all administrative features, except the ability to add other administrators.
    idverifications:create:dataBasedIdentityVerification Create data-based identity verification. Data-based identity verification runs matching and fraud analysis against user data and returns all personally identifiable information (PII) and a data match confidence score.
    idverifications:create:document Submit a user-submitted document. User-submitted documents are government issued identity documents, such as a driver license or passport, used for identity verification.
    idverifications:get:document Read user-submitted documents. User-submitted documents are government issued identity documents, such as a driver license or passport, used for identity verification.
    idverifications:update:document Update a user-submitted document. User-submitted documents are government issued identity documents, such as a driver license or passport, used for identity verification.
    idverifications:delete:document Delete a user-submitted document. User-submitted documents are government issued identity documents, such as a driver license or passport, used for identity verification.
    idverifications:create:identityRecordMatching Create Identity Record Matching. Identity Record Matching compares two sets of identity data and returns a score of confidence that the data match.
    idverifications:get:referenceData Read data submitted by a user during a voice verification.
    idverifications:delete:referenceData Delete data submitted by a user during a voice verification.
    idverifications:get:verifiedUserData Read verified user data from a verification transaction.
    idverifications:update:verifiedUserData Update verified user data from a verification transaction.
    idverifications:delete:verifiedUserData Delete verified user data from a verification transaction.
    idverifications:create:verifyPolicy Create a PingOne Verify policy.
    idverifications:read:verifyPolicy Read a PingOne Verify policy.
    idverifications:update:verifyPolicy Update a PingOne Verify policy.
    idverifications:delete:verifyPolicy Delete a PingOne Verify policy.
    idverifications:create:verifyTransactions Create a user verification transaction.
    idverifications:read:verifyTransactions Read a user verification transaction.
    idverifications:update:verifyTransactions Update a user verification transaction.
    idverifications:delete:verifyTransactions Delete a user verification transaction.
    idverifications:create:voicePhrase Create the template that defines the phrase the user speaks during voice verification.
    idverifications:read:voicePhrase Read the template that defines the phrase the user speaks during voice verification.
    idverifications:update:voicePhrase Update the template that defines the phrase the user speaks during voice verification.
    idverifications:delete:voicePhrase Delete the template that defines the phrase the user speaks during voice verification.
    idverifications:create:voicePhraseContent Create the phrase that the user speaks aloud for voice verification.
    idverifications:read:voicePhraseContent Read the phrase that the user speaks aloud for voice verification.
    idverifications:update:voicePhraseContent Update the phrase that the user speaks aloud for voice verification.
    idverifications:delete:voicePhraseContent Delete the phrase that the user speaks aloud for voice verification.
    image:create:image Upload an image to PingOne for an environment. The image can be used by other services within the environment, such as user profile.
    image:read:image View any image that has been uploaded to PingOne for an environment.
    image:delete:image Delete any image that has been uploaded to PingOne for an environment.
    integrations:read:integration Read a list of product integration kits, versions, and items in the application catalog.
    langmgt:create:language Add a language to configure for an environment.
    langmgt:read:language Read a list of languages that are currently configured for an environment.
    langmgt:update:language Enable or disable a language for an environment or set a language as the default.
    langmgt:delete:language Delete a language from an environment.
    ldapGateway:execute:directLdap Allow specific clients, such as PingFederate and the PingOne DaVinci connector, to route LDAP operations through PingOne to your on-premise LDAP directories.
    ldapGateway:validate:kerberos Use Kerberos authentication through an LDAP gateway. Available only if you use Microsoft Active Directory as your LDAP directory.
    ldapGateway:read:user Read LDAP users using the LDAP gateway.
    ldapGateway:validate:userPassword Check a user's password through a PingOne LDAP gateway. LDAP gateways connect PingOne with customer-managed LDAP directories.
    licensing:update:environmentLicense Update environment licenses
    licensing:update:mutableProperties Edit the attributes for a license, including the license name or environment assignment.
    mfa:create:createTestDevice Create an MFA device for testing.
    mfa:authenticate:device Initiate device authentication.
    mfa:read:device Read MFA devices.
    mfa:create:deviceAuthenticationPolicy Create an MFA policy. MFA policies are used to define and configure the authentication methods used in your authentication policy.
    mfa:read:deviceAuthenticationPolicy Read an MFA policy. MFA policies are used to define and configure the authentication methods used in your authentication policy.
    mfa:update:deviceAuthenticationPolicy Modify an existing MFA policyUpdate an MFA policy. MFA policies are used to define and configure the authentication methods used in your authentication policy.
    mfa:delete:deviceAuthenticationPolicy Delete an MFA policy. MFA policies are used to define and configure the authentication methods used in your authentication policy.
    mfa:create:fidoDeviceMetadata Create custom FIDO device metadata.
    mfa:read:fidoDeviceMetadata Read FIDO device metadata.
    mfa:delete:fidoDeviceMetadata Delete custom FIDO device metadata.
    mfa:create:fidoPolicy Create a FIDO policy. FIDO policies define which FIDO devices and authenticators can be used for registration and authentication.
    mfa:read:fidoPolicy Read a FIDO policy. FIDO policies define which FIDO devices and authenticators can be used for registration and authentication.
    mfa:update:fidoPolicy Update a FIDO policy. FIDO policies define which FIDO devices and authenticators can be used for registration and authentication.
    mfa:delete:fidoPolicy Delete a FIDO policy. FIDO policies define which FIDO devices and authenticators can be used for registration and authentication.
    mfa:read:mfaSettings Read MFA settings.
    mfa:update:mfaSettings Update MFA settings.
    mfa:delete:mfaSettings Reset MFA settings.
    mfa:read:oathJob Retrieve an OATH Job
    mfa:create:oathToken Add an OATH token to the environment. After you add the OATH token, you can specify it as an authentication method for a specific user. Relevant only for environments that include PingID.
    mfa:read:oathToken Read an OATH token that has been added to the environment. Relevant only for environments that include PingID.
    mfa:update:oathToken Resync an OATH token that has been added to the environment. Relevant only for environments that include PingID.
    mfa:delete:oathToken Delete an OATH token from the environment. Relevant only for environments that include PingID.
    mfa:create:pairingKey Create a pairing key for an MFA device.
    mfa:read:pairingKey Read pairing keys for MFA devices.
    mfa:delete:pairingKey Delete the pairing key for an MFA device.
    notifications:create:emailDomain Create an email domain. Email domains are used for sending out email notifications to your users.
    notifications:read:emailDomain Read the email domains. Email domains are used for sending out email notifications to your users.
    notifications:update:emailDomain Update an email domain. Email domains are used for sending out email notifications to your users.
    notifications:delete:emailDomain Delete an email domain. Email domains are used for sending out email notifications to your users.
    notifications:create:notification Send an event notification to a user.
    notifications:create:notificationsPolicy Create a notification policy. Notification policies are used to limit the number of SMS/voice or email notifications that can be sent per day.
    notifications:read:notificationsPolicy Read notification policies. Notification policies are used to limit the number of SMS/voice or email notifications that can be sent per day.
    notifications:update:notificationsPolicy Update a notification policy. Notification policies are used to limit the number of SMS/voice or email notifications that can be sent per day.
    notifications:delete:notificationsPolicy Delete a notification policyDelete a notification policy. Notification policies are used to limit the number of SMS/voice or email notifications that can be sent per day.
    notifications:read:notificationsSettings Read fallback order for SMS/Voice providers and 'from' and 'reply to' fields for email notifications.
    notifications:update:notificationsSettings Update fallback order for SMS/Voice providers and reset 'from' and 'reply to' fields for email notifications.
    notifications:delete:notificationsSettings Reset fallback order for SMS/Voice providers and reset 'from' and 'reply to' fields for email notifications.
    notifications:read:quota Read the daily notification quota set in notification policy.
    notifications:read:template Read a notification template. Notification templates are used to inform users about certain events in PingOne.
    notifications:create:templateContent Create content for a notification template. Notification templates are used to inform users about some event types in PingOne.
    notifications:read:templateContent Read the content of a notification template. Notification templates are used to inform users about some event types in PingOne.
    notifications:update:templateContent Update content for a notification template. Notification templates are used to inform users about some event types in PingOne.
    notifications:delete:templateContent Delete the content of a notification template. Notification templates are used to inform users about some event types in PingOne.
    notifications:reset:userQuota Reset notifications quota
    orgmgt:create:deployment Create deployments for other Ping products in the PingOne environment. These other products might require additional configuration outside of PingOne.
    orgmgt:promote:environment Promote an environment from sandbox to production. A sandbox environment is used to test functionality before deploying to production.
    orgmgt:update:environment Update environment properties to add or remove services, change the environment name or description, or update license information. Environments are the primary subdivision of an organization.
    osmosis:check:connection Test the provisioning connection to an external identity provider before saving the configuration.
    osmosis:read:mapping Read the attribute mapping for a provisioning rule. Attribute mapping defines how attributes from an external identity store correspond to attributes in PingOne.
    osmosis:update:mapping Update the attribute mapping for a provisioning rule. Attribute mapping defines how attributes from an external identity store correspond to attributes in PingOne.
    osmosis:delete:mapping Delete an attribute mapping for a provisioning rule. Attribute mapping defines how attributes from an external identity store correspond to attributes in PingOne.
    osmosis:read:plan Read a provisioning plan. A provisioning plan is a list of all the provisioning rules in an environment.
    osmosis:update:plan Update a provisioning plan. A provisioning plan is a list of all the provisioning rules in an environment.
    osmosis:delete:plan Delete a provisioning plan. A provisioning plan is a list of all the provisioning rules in an environment.
    osmosis:create:revision Create a provisioning configuration. A provisioning configuration includes the provisioning connection and provisioning rule.
    osmosis:get:revision Read a provisioning configuration. A provisioning configuration includes the provisioning connection and provisioning rule.
    osmosis:read:rule Read a provisioning rule. A provisioning rule defines which users are provisioned and how attributes are mapped between PingOne and the external identity store.
    osmosis:update:rule Update a provisioning rule. A provisioning rule defines which users are provisioned and how attributes are mapped between PingOne and the external identity store.
    osmosis:delete:rule Delete a provisioning rule. A provisioning rule defines which users are provisioned and how attributes are mapped between PingOne and the external identity store.
    osmosis:read:store Read a provisioning connection. A provisioning connection includes authorization information for the connection type and configuration options, such as provisioning and deprovisioning actions.
    osmosis:update:store Update a provisioning connection. A provisioning connection includes authorization information for the connection type and configuration options, such as provisioning and deprovisioning actions.
    osmosis:delete:store Delete a provisioning connection. A provisioning connection includes authorization information for the connection type and configuration options, such as provisioning and deprovisioning actions.
    p14e:admin:application Used only for SSO to PingOne for Enterprise. Enables Application Administrator role with read-only access for the PingOne admin in PingOne for Enterprise. For write access, you must also add the PingOne for Enterprise Editing Access permission.
    p14e:admin:auditReport Used only for SSO to PingOne for Enterprise. Enables Audit & Report Administrator role with read-only access for the PingOne admin in PingOne for Enterprise. For write access, you must also add the PingOne for Enterprise Editing Access permission.
    p14e:admin:device Used only for SSO to PingOne for Enterprise. Enables PingID Device Administrator role with read-only access for the PingOne admin in PingOne for Enterprise. For write access, you must also add the PingOne for Enterprise Editing Access permission.
    p14e:admin:global Used only for SSO to PingOne for Enterprise. Enables Global Administrator role with read-only access for the PingOne admin in PingOne for Enterprise. For write access, you must also add the PingOne for Enterprise Editing Access permission.
    p14e:admin:identityRepository Used only for SSO to PingOne for Enterprise. Enables Identity Repository Administrator role with read-only access for the PingOne admin in PingOne for Enterprise. For write access, you must also add the PingOne for Enterprise Editing Access permission.
    p14e:admin:saas Used only for SSO to PingOne for Enterprise. Enables SaaS Administrator role with read-only access for the PingOne admin in PingOne for Enterprise. For write access, you must also add the PingOne for Enterprise Editing Access permission.
    p14e:admin:serviceUser Used only for SSO to PingOne for Enterprise. Enables Service User Administrator role with read-only access for the PingOne admin in PingOne for Enterprise. For write access, you must also add the PingOne for Enterprise Editing Access permission.
    p14e:admin:support Used only for SSO to PingOne for Enterprise. Enables Global Administrator role with read-only access for the PingOne admin in PingOne for Enterprise. For write access, you must also add the PingOne for Enterprise Editing Access permission.
    p14e:admin:update Use with a PingOne for Enterprise role permission. Enables write access for the PingOne admin in PingOne for Enterprise.
    permissions:read:applicationRoleAssignments Read admin roles that are assigned to an application scope, including the role permissions. Roles are used by worker applications only.
    permissions:read:gatewayRoleAssignments Read the list of roles and the associated permissions associated with a gateway scope. The gateway scope defines the attributes that can be accessed in the external LDAP directory.
    permissions:read:groupRoleAssignments Read the admin roles that are assigned to a group.
    permissions:read:userRoleAssignments Read admin roles that are assigned to a user, including the role permissions.
    pingenterprise:create:orchestration Creates a Orchestration flow for Ping Enterprise deployment
    pingenterprise:read:orchestration Retrieve Orchestration flow for Ping Enterprise deployment
    pingenterprise:update:orchestration Updates Orchestration flow for Ping Enterprise deployment
    pingenterprise:delete:orchestration Deletes Orchestration flow for Ping Enterprise deployment
    pingfederate:admin:auditor Used only for SSO to PingFederate. Enables the PingFederate Auditor role for the PingOne admin in PingFederate.
    pingfederate:admin:crypto Used only for SSO to PingFederate. Enables the PingFederate Crypto Administrator role for the PingOne admin in PingFederate.
    pingfederate:admin:expressions Used only for SSO to PingFederate. Enables the PingFederate Expressions Administrator role for the PingOne admin in PingFederate.
    pingfederate:admin:system Used only for SSO to PingFederate. Enables the PingFederate Administrator role for the PingOne admin in PingFederate.
    pingfederate:admin:users Used only for SSO to PingFederate. Enables the PingFederate Users Administrator role for the PingOne admin in PingFederate.
    pingid:read:activity Read PingID user last activity
    pingid:read:integration Read PingID user integrations(services)
    pingid:update:integration Update PingID user integration(service)
    pingid:execute:migration Start an integration of PingID with PingOne.
    pingid:read:migration Check the status of the integration of PingID with PingOne.
    pingid:validate:migration Validate resources such as PingID authentication policies before integrating PingID with PingOne.
    pingintelligence:create:orchestration Creates a Orchestration flow for Ping Intelligence deployment
    pingintelligence:read:orchestration Retrieve Orchestration flow for Ping Intelligence deployment
    pingintelligence:update:orchestration Updates Orchestration flow for Ping Intelligence deployment
    pingintelligence:delete:orchestration Deletes Orchestration flow for Ping Intelligence deployment
    prediction:create:prediction Create a prediction
    provisioning:get:connectionSensitiveConfiguration Read the authentication details, which can include sensitive information, for a provisioning configuration. A provisioning configuration includes the provisioning connection and provisioning rule.
    provisioning:create:provisioningSyncOrchestration Create a provisioning sync orchestration for an environment. Sync orchestration is required by the PingOne gateway to provision users inbound into PingOne.
    provisioning:update:provisioningSyncOrchestration Update a provisioning sync orchestration to allow a gateway to provision users to a PingOne environment. Sync orchestration is required by the PingOne gateway to provision users inbound into PingOne.
    radiusGateway:read:session Read radius session details for audit purposes
    resources:create:attribute Create an attribute for a custom resource. Custom resource attributes are mapped as claims in access tokens to convey additional information about their use to applications.
    resources:read:attribute Read a list of custom attributes for a resource. Custom resource attributes are mapped as claims in access tokens to convey additional information about their use to applications.
    resources:update:attribute Update an attribute for a custom resource. Custom resource attributes are mapped as claims in access tokens to convey additional information about their use to applications.
    resources:delete:attribute Delete a custom attribute from a resource. Custom resource attributes are mapped as claims in access tokens to convey additional information about their use to applications.
    resources:create:resource Create a resource. Resources are protected endpoints that applications can access using OAuth 2 authorization services.
    resources:read:resource Read the resources in the environment. Resources are protected endpoints that applications can access using OAuth 2 authorization services.
    resources:update:resource Update the configuration of a resource. Resources are the protected endpoints that applications can access using OAuth 2 authorization services.
    resources:delete:resource Delete a resource. Resources are protected endpoints that applications can access using OAuth 2 authorization services.
    resources:create:scope Create a scope for a resource. Resource scopes can be associated with applications and define application access to user details, such as name and email address.
    resources:read:scope Read the scope for a resource. Resource scopes can be associated with applications and define application access to user details, such as name and email address.
    resources:update:scope Update the scope for a resource. Resource scopes can be associated with applications and define application access to user details, such as name and email address.
    resources:delete:scope Delete a scope from a resource. Resource scopes can be associated with applications and define application access to user details, such as name and email address.
    risk:create:evaluation Create a risk evaluation, which is used to calculate the risk level and other risk-related details associated with an event.
    risk:read:evaluation Read risk evaluation details. Risk evaluations are used to calculate the risk level and other risk-related details associated with an event.
    risk:update:evaluation Update a risk evaluation with the completion status to allow the learning mechanism to improve risk evaluation precision.
    risk:create:feedback Create risk feedback
    risk:create:policy Create a risk policy for use in risk evaluations.
    risk:read:policy Read risk policies, which are used in risk evaluations.
    risk:update:policy Modify an existing risk policy. Risk policies are used in risk evaluations.
    risk:delete:policy Delete a risk policy. Risk policies are used in risk evaluations.
    risk:create:predictor Create a risk predictor for use in risk policies.
    risk:read:predictor Read risk predictors, which are used in risk policies.
    risk:update:predictor Modify an existing risk predictor for use in risk policies.
    risk:delete:predictor Delete a risk predictor. Risk predictors are used in risk policies.
    riskDetection:create:evaluation Create detection evaluations for risk service
    scim:read:schema Read the schema for the environment, including its attributes, using the SCIM API. A schema defines the user attributes in the environment.
    scim:create:user Create a user in the environment using the SCIM API.
    scim:read:user Read a list of users in the environment using the SCIM API.
    scim:update:user Update a user account, including name, email address, and other attributes, using the SCIM API.
    scim:delete:user Delete a user from the environment using the SCIM API.
    solutions:create:config Create new or reset an existing configuration for the customer or workforce Getting Started experience to assign default flows for registration, authentication, profile management, and account recovery.
    solutions:read:config Read the configuration data for the CIAM or workforce Getting Started experiences, such as the flows used for registration, authentication, profile management, and account recovery.
    solutions:update:config Update the configuration of the customer or workforce Getting Started experience to use different flows for registration, authentication, profile management, or account recovery.
    solutions:read:flow Read the list of flows available as part of the getting started experience in the admin console.
    solutions:read:token Retrieve a DaVinci access token.
    subscriptions:create:subscription Create a webhook to send event information to an external monitoring system.
    subscriptions:read:subscription Read webhook information. Webhooks are used to subscribe to events of interest in PingOne and push the event information to an external monitoring system.
    subscriptions:update:subscription Update the properties or filters for a webhook to change the information that is sent to your external monitoring system.
    subscriptions:delete:subscription Delete a webhook to stop sending event information to your external monitoring system.
    visualization:read:authentication View the Authentication dashboard. The Authentication dashboard shows a summary of sign-on activity through PingOne and additional authentication metrics for the environment.
    visualization:read:dashboard Refer to dashboards
    visualization:create:exploration Create a data exploration object for use with dashboards and report generation.
    visualization:read:exploration Read the data for a data exploration object. Data exploration objects are used with dashboards and report generation.
    visualization:read:template Read data exploration template
    visualization:read:userDemographics Read the User Demographics dashboard and user demographic data. User demographic data provides information on the distribution of users by population and operating system and browser usage by service.

    Audit Reporting Events

    To see the effects of these events for an API call, refer to the event types in the Audit Report, Audit Activities API, or Webhook stream.

    Event Type Event Name
    ACCOUNT.LINKED Account Linked
    ACCOUNT.UNLINKED Account Unlinked
    ACTION.CREATED Action Created
    ACTION.DELETED Action Deleted
    ACTION.UPDATED Action Updated
    ADVANCEDSERVICES_ORCHESTRATION.CREATION_COMPLETED Advanced Services Deployment Complete
    ADVANCEDSERVICES_ORCHESTRATION.CREATION_FAILED Advanced Services Deployment Failed
    ADVANCEDSERVICES_ORCHESTRATION.CREATION_START_FAILED Advanced Services Deployment Start Failed
    ADVANCEDSERVICES_ORCHESTRATION.CREATION_STARTED Advanced Services Deployment Started
    ADVANCEDSERVICES_ORCHESTRATION.DELETION_COMPLETED Advanced Services Deprovision Complete
    ADVANCEDSERVICES_ORCHESTRATION.DELETION_FAILED Advanced Services Deprovision Failed
    ADVANCEDSERVICES_ORCHESTRATION.DELETION_START_FAILED Advanced Services Deprovision Start Failed
    ADVANCEDSERVICES_ORCHESTRATION.DELETION_STARTED Advanced Services Deprovision Started
    AGREEMENT_CONSENT.ACCEPTED Agreement Consent Accepted
    AGREEMENT_CONSENT.REVOKED Agreement Consent Revoked
    AGREEMENT_LANGUAGE_REVISION.CREATED Agreement Language Revision Created
    AGREEMENT_LANGUAGE_REVISION.DELETED Agreement Language Revision Deleted
    AGREEMENT_LANGUAGE_REVISION.UPDATED Agreement Language Revision Updated
    AGREEMENT_LANGUAGE.CREATED Agreement Language Created
    AGREEMENT_LANGUAGE.DELETED Agreement Language Deleted
    AGREEMENT_LANGUAGE.UPDATED Agreement Language Updated
    AGREEMENT.CREATED Agreement Created
    AGREEMENT.DELETED Agreement Deleted
    AGREEMENT.UPDATED Agreement Updated
    API_ACCESS_LOG_ENTRY.HTTP_REQUEST_POLICY_EVALUATED HTTP Request Policy Evaluated
    API_ACCESS_LOG_ENTRY.HTTP_RESPONSE_POLICY_EVALUATED HTTP Response Policy Evaluated
    API_SERVER.CREATED API Service Created
    API_SERVER.DELETED API Service Deleted
    API_SERVER.POLICIES_DEPLOYED API Service Deployed
    API_SERVER.UPDATED API Service Updated
    APPLICATION.CREATED Application Created
    APPLICATION.DELETED Application Deleted
    APPLICATION.PLAY_INTEGRITY_MISCONFIGURATION Google Play Services Device Integrity Misconfiguration
    APPLICATION.UPDATED Application Updated
    ASSERTION.CHECK_FAILED Assertion Check Failed
    ASSERTION.CHECK_SUCCESS Assertion Check Success
    AUTHENTICATION_CODE.CREATED Authentication Code Created
    AUTHENTICATION_CODE.DELETED Authentication Code Deleted
    AUTHENTICATION_CODE.UPDATED Authentication Code Updated
    AUTHENTICATION.CREATED Authentication Created
    AUTHENTICATION.UPDATED Authentication Updated
    AUTHORIZE_ATTRIBUTE.CREATED Authorize Attribute Created
    AUTHORIZE_ATTRIBUTE.DELETED Authorize Attribute Deleted
    AUTHORIZE_ATTRIBUTE.UPDATED Authorize Attribute Updated
    AUTHORIZE_CONDITION.CREATED Authorize Condition Created
    AUTHORIZE_CONDITION.DELETED Authorize Condition Deleted
    AUTHORIZE_CONDITION.UPDATED Authorize Condition Updated
    AUTHORIZE_POLICY.CREATED Authorize Policy Created
    AUTHORIZE_POLICY.DELETED Authorize Policy Deleted
    AUTHORIZE_POLICY.UPDATED Authorize Policy Updated
    AUTHORIZE_PROCESSOR.CREATED Authorize Processor Created
    AUTHORIZE_PROCESSOR.DELETED Authorize Processor Deleted
    AUTHORIZE_PROCESSOR.UPDATED Authorize Processor Updated
    AUTHORIZE_SERVICE.CREATED Authorize Service Created
    AUTHORIZE_SERVICE.DELETED Authorize Service Deleted
    AUTHORIZE_SERVICE.UPDATED Authorize Service Updated
    AUTHORIZE_SHARED_ADVICE.CREATED Authorize shared Advice Created
    AUTHORIZE_SHARED_ADVICE.DELETED Authorize shared Advice Deleted
    AUTHORIZE_SHARED_ADVICE.UPDATED Authorize shared Advice Updated
    AUTHORIZE_SHARED_RULE.CREATED Authorize shared Rule Created
    AUTHORIZE_SHARED_RULE.DELETED Authorize shared Rule Deleted
    AUTHORIZE_SHARED_RULE.UPDATED Authorize shared Rule Updated
    AUTHORIZE_TAG.DELETED Authorize Tag Deleted
    AUTHORIZE_TAG.UPDATED Authorize Tag Updated
    BRANDING.DELETED Branding Deleted
    BRANDING.UPDATED Branding Updated
    CERTIFICATE.CREATED Certificate Created
    CERTIFICATE.DELETED Certificate Deleted
    CERTIFICATE.READ Certificate Read
    CERTIFICATE.UPDATED Certificate Updated
    CONTENT.CREATED Content Created
    CONTENT.DELETED Content Deleted
    CONTENT.UPDATED Content Updated
    CONTENTS.DELETED Contents Deleted
    CONTENTS.UPDATED Contents Updated
    CREDENTIAL_TYPE.CREATED Credential Type Created
    CREDENTIAL_TYPE.DELETED Credential Type Deleted
    CREDENTIAL_TYPE.UPDATED Credential Type Updated
    CUSTOM_DOMAIN.CREATED Custom Domain Created
    CUSTOM_DOMAIN.DELETED Custom Domain Deleted
    CUSTOM_DOMAIN.UPDATED Custom Domain Updated
    DAVINCI_INTERACTION.CUSTOM_ANALYTICS DaVinci Interaction Custom Analytics
    DAVINCI_INTERACTION.RECEIVE_REQUEST DaVinci Interaction Receive Request
    DAVINCI_INTERACTION.SEND_ERROR_RESPONSE DaVinci Interaction Send Error Response
    DAVINCI_INTERACTION.SEND_RESPONSE DaVinci Interaction Send Response
    DAVINCI_INTERACTION.START_INTERACTION DaVinci Interaction Started
    DECISION_ENDPOINT.CREATED Decision Endpoint Created
    DECISION_ENDPOINT.DECISION_REQUEST_EVALUATED Decision Request Evaluated
    DECISION_ENDPOINT.DELETED Decision Endpoint Deleted
    DECISION_ENDPOINT.UPDATED Decision Endpoint Updated
    DEVICE_AUTHENTICATION_POLICY.CREATED Auth Method Policy Created
    DEVICE_AUTHENTICATION_POLICY.DELETED Auth Method Policy Deleted
    DEVICE_AUTHENTICATION_POLICY.UPDATED Auth Method Policy Updated
    DEVICE_PAYLOAD.CHECK_INVALID Device Payload Check Invalid
    DEVICE_PAYLOAD.CHECK_SUCCESS Device Payload Check Success
    DEVICE.ACTIVATED Device Activated
    DEVICE.ACTIVATION_FAILED Device Activation Failed
    DEVICE.ACTIVATION_OTP_FAILED Pairing Otp Failed
    DEVICE.ACTIVATION_OTP_INVALID Pairing Otp Invalid
    DEVICE.BLOCKED Device Blocked
    DEVICE.CREATED Device Created
    DEVICE.DELETED Device Deleted
    DEVICE.FRAUD_REPORTED Fraud Reported
    DEVICE.KEY_ROTATION_FAILED Device Key Rotation Failed
    DEVICE.KEY_ROTATION_SUCCEEDED Device Key Rotation Succeeded
    DEVICE.LOCKED Device Locked
    DEVICE.LOGS_RECEIVED Device Mobile Logs Received
    DEVICE.NICKNAME_UPDATED Device Nickname Updated
    DEVICE.PAIRING_FAILED_COMPROMISED Pairing Mobile Device Failed
    DEVICE.UNBLOCKED Device Unblocked
    DEVICE.UNLOCKED Device Unlocked
    DEVICE.UPDATED Device Updated
    DEVICES.ORDER_CREATED Devices Order Created
    DEVICES.ORDER_DELETED Devices Order Deleted
    DEVICES.ORDER_UPDATED Devices Order Updated
    DIGITAL_WALLET_APPLICATION.CREATED Digital Wallet Application Created
    DIGITAL_WALLET_APPLICATION.DELETED Digital Wallet Application Deleted
    DIGITAL_WALLET_APPLICATION.UPDATED Digital Wallet Application Updated
    DIGITAL_WALLET.ACTIVE Digital Wallet Active
    DIGITAL_WALLET.DELETED Digital Wallet Deleted
    DIGITAL_WALLET.DISABLED Digital Wallet Disabled
    DIGITAL_WALLET.EXPIRED Digital Wallet Expired
    DIGITAL_WALLET.PAIRING_REQUIRED Digital Wallet Pairing Required
    DIGITAL_WALLET.UPDATED Digital Wallet Updated
    EARLY_ACCESS_FEATURE.OPT_IN Opted in to early access feature
    EARLY_ACCESS_FEATURE.OPT_OUT Opted out of early access feature
    EMAIL_DOMAIN.CREATED Email Domain Created
    EMAIL_DOMAIN.DELETED Email Domain Deleted
    ENVIRONMENT.CAPABILITIES Environment Capabilities
    ENVIRONMENT.CREATED Environment Created
    ENVIRONMENT.DELETED Environment Deleted
    ENVIRONMENT.DEMOTED Environment Demoted
    ENVIRONMENT.PROMOTED Environment Promoted
    ENVIRONMENT.UPDATED Environment Updated
    EXECUTION.SKIPPED Job Execution Skipped
    EXECUTION.TIMED_OUT Job Execution Timed Out
    FIDO_METADATA.CREATED FIDO Custom authenticator Created
    FIDO_METADATA.DELETED FIDO Custom authenticator Deleted
    FIDO_POLICY.CREATED FIDO Policy Created
    FIDO_POLICY.DELETED FIDO Policy Deleted
    FIDO_POLICY.UPDATED FIDO Policy Updated
    FLOW_DEFINITION.CREATED Flow Definition Created
    FLOW_DEFINITION.DELETED Flow Definition Deleted
    FLOW_DEFINITION.UPDATED Flow Definition Updated
    FLOW_EXECUTION.CREATED Flow Execution Created
    FLOW_EXECUTION.UPDATED Flow Execution Updated
    FLOW.CREATED Flow Started
    FLOW.DELETED Flow Completed
    FLOW.UPDATED Flow Updated
    GATEWAY_INSTANCE.CREATED Gateway Instance Created
    GATEWAY_INSTANCE.DELETED Gateway Instance Deleted
    GATEWAY_INSTANCE.UPDATED Gateway Instance Updated
    GATEWAY.CREATED Gateway Created
    GATEWAY.DELETED Gateway Deleted
    GATEWAY.UPDATED Gateway Updated
    GRANT.CREATED Grant Created
    GRANT.DELETED Grant Deleted
    GRANT.UPDATED Grant Updated
    GROUP.CREATED Group Created
    GROUP.DELETED Group Deleted
    GROUP.UPDATED Group Updated
    IDENTITY_PROVIDER.CREATED Identity Provider Created
    IDENTITY_PROVIDER.DELETED Identity Provider Deleted
    IDENTITY_PROVIDER.UPDATED Identity Provider Updated
    IDP_ATTRIBUTE.CREATED Idp Attribute Created
    IDP_ATTRIBUTE.DELETED Idp Attribute Deleted
    IDP_ATTRIBUTE.UPDATED Idp Attribute Updated
    IMAGE.ACTIVATED Image Activated
    IMAGE.CREATED Image Created
    IMAGE.DELETED Image Deleted
    INSTANT_MESSAGING_DELIVERY_SETTINGS.CREATED Instant Messaging Delivery Settings Created
    INSTANT_MESSAGING_DELIVERY_SETTINGS.DELETED Instant Messaging Delivery Settings Deleted
    INSTANT_MESSAGING_DELIVERY_SETTINGS.UPDATED Instant Messaging Delivery Settings Updated
    IP_RATE_LIMIT_THRESHOLD.EXCEEDED IP Rate Limit Threshold Exceeded
    IP_RATE_LIMIT.EXCEEDED IP Rate Limit Exceeded
    ISSUANCE_RULE.CREATED Issuance Rule Created
    ISSUANCE_RULE.DELETED Issuance Rule Deleted
    ISSUANCE_RULE.UPDATED Issuance Rule Updated
    ISSUANCE.CREATED Issuance Created
    KEY.CREATED Key Created
    KEY.DELETED Key Deleted
    KEY.READ Key Read
    KEY.UPDATED Key Updated
    KRP.CREATED Key Rotation Policy Created
    KRP.DELETED Key Rotation Policy Deleted
    KRP.ROTATED Key Rotation Policy Rotated
    KRP.UPDATED Key Rotation Policy Updated
    LICENSE_RATE_LIMIT_THRESHOLD.EXCEEDED License Rate Limit Threshold Exceeded
    LICENSE_RATE_LIMIT.EXCEEDED License Rate Limit Exceeded
    LICENSE.CREATED License Created
    LICENSE.DELETED License Deleted
    LICENSE.UPDATED License Updated
    MEMBER_OF_GROUP.CREATED Member of Group Created
    MEMBER_OF_GROUP.DELETED Member of Group Deleted
    MFA_SETTINGS.UPDATED MFA Settings Updated
    NOTIFICATION_POLICY.CREATED Notification Policy Created
    NOTIFICATION_POLICY.DELETED Notification Policy Deleted
    NOTIFICATION_POLICY.UPDATED Notification Policy Updated
    NOTIFICATION.CREATED Notification Created
    NOTIFICATION.REJECTED Notification Rejected
    NOTIFICATION.UPDATED Notification Updated
    NOTIFICATIONS_SETTINGS.UPDATED Notification Settings Updated
    OATH_TOKEN.CREATED Oath Token Created
    OATH_TOKEN.RESYNC_INVALID_OTP Oath Token Resync Failed (Invalid Passcode)
    OATH_TOKEN.RESYNC_MAX_ATTEMPTS Oath Token Resync Failed (Max Resync Attempts Exceeded)
    OATH_TOKEN.RESYNC_SUCCESS Oath Token Resync Success
    OATH_TOKEN.RESYNC_USER_NOT_PAIRED Oath Token Resync Failed (User Not Paired with Token)
    OATH_TOKEN.REVOKED Oath Token Revoked
    OATH_TOKENS_BULK.CREATED Oath Tokens Imported
    OATH_TOKENS_BULK.REVOKED Oath Tokens Revoked
    OAUTH_CONSENT.ACCEPTED OAuth Consent Accepted
    OAUTH_CONSENT.DECLINED OAuth Consent Declined
    OAUTH_CONSENT.REVOKED OAuth Consent Revoked
    ORGANIZATION.CAPABILITIES Organization Capabilities
    ORGANIZATION.CREATED Organization Created
    ORGANIZATION.DELETED Organization Deleted
    ORGANIZATION.UPDATED Organization Updated
    OTP.CHECK_FAILED Otp Check Failed
    OTP.CHECK_INVALID Otp Check Invalid
    OTP.CHECK_SUCCESS Otp Check Success
    PASSWORD.CHECK_FAILED Password Check Failed
    PASSWORD.CHECK_SUCCEEDED Password Check Succeeded
    PASSWORD.EXTERNAL_SET Password External Set
    PASSWORD.FORCE_CHANGE Password Force Change
    PASSWORD.RECOVERY Password Recovery
    PASSWORD.RESET Password Reset
    PASSWORD.SET Password Set
    PASSWORD.UNLOCKED Password Unlocked
    PASSWORD.UNSET Password Unset
    PHONE_DELIVERY_SETTINGS.CREATED Phone Delivery Settings Created
    PHONE_DELIVERY_SETTINGS.DELETED Phone Delivery Settings Deleted
    PHONE_DELIVERY_SETTINGS.UPDATED Phone Delivery Settings Updated
    POLICY.CREATED Password Policy Created
    POLICY.DELETED Password Policy Deleted
    POLICY.UPDATED Password Policy Updated
    POPULATION.CREATED Population Created
    POPULATION.DELETED Population Deleted
    POPULATION.UPDATED Population Updated
    PREVIOUS_SECRET.REVOKED Previous Secret Revoked
    PREVIOUS_SECRET.USED Previous Secret Used
    PROVISION_CREDENTIAL.ACCEPTED Provisioned Credential Accepted
    PROVISION_CREDENTIAL.CREATED Provisioned Credential Created
    PROVISION_CREDENTIAL.DELETED_FROM_WALLET Provisioned Credential Deleted From Wallet
    PROVISION_CREDENTIAL.DELETED Provisioned Credential Deleted
    PROVISION_CREDENTIAL.REJECTED Provisioned Credential Rejected
    PROVISION_CREDENTIAL.REVOKED Provisioned Credential Revoked
    PROVISIONING_CONNECTION.CREATED Provisioning Identity Connection Created
    PROVISIONING_CONNECTION.DELETED Provisioning Identity Connection Deleted
    PROVISIONING_CONNECTION.UPDATED Provisioning Identity Connection Updated
    PROVISIONING_GROUP_MEMBERSHIP_SYNC.FAILURE Provisioning Group Membership Sync Failure
    PROVISIONING_GROUP_SYNC.FAILURE Provisioning Group Sync Failure
    PROVISIONING_IDENTITY_SYNC.FAILURE Provisioning Identity Sync Failure
    PROVISIONING_MAPPING.CREATED Provisioning Mapping Created
    PROVISIONING_MAPPING.DELETED Provisioning Mapping Deleted
    PROVISIONING_MAPPING.UPDATED Provisioning Mapping Updated
    PROVISIONING_POLL.FAILURE Provisioning Poll Failure
    PROVISIONING_RULE.CREATED Provisioning Rule Created
    PROVISIONING_RULE.DELETED Provisioning Rule Deleted
    PROVISIONING_RULE.UPDATED Provisioning Rule Updated
    PROVISIONING_SYNC.FAILURE Provisioning Sync Failure
    PROVISIONING_SYNC.STARTED Provisioning Sync Started
    PUSH_CREDENTIALS.CREATED Push Credentials Created
    PUSH_CREDENTIALS.DELETED Push Credentials Deleted
    PUSH_CREDENTIALS.UPDATED Push Credentials Updated
    RADIUS_SESSION.CREATED RADIUS Session Created
    RADIUS_SESSION.UPDATED RADIUS Session Updated
    RESCUE_IDENTITY.CREATED Rescue Identity Created
    RESOURCE_ATTRIBUTE.CREATED Resource Attribute Created
    RESOURCE_ATTRIBUTE.DELETED Resource Attribute Deleted
    RESOURCE_ATTRIBUTE.UPDATED Resource Attribute Updated
    RESOURCE.CREATED Resource Created
    RESOURCE.DELETED Resource Deleted
    RESOURCE.UPDATED Resource Updated
    RISK_EVALUATION.CREATED Risk Evaluation Created
    RISK_EVALUATION.STAGING_CREATED Risk Staging Evaluation Created
    RISK_EVALUATION.UPDATED Risk Evaluation Updated
    RISK_FEEDBACK.CREATED Risk Feedback Created
    RISK_POLICY_SET.CREATED Risk Policy Created
    RISK_POLICY_SET.DELETED Risk Policy Deleted
    RISK_POLICY_SET.ORDER_UPDATED Risk Policy Order Updated
    RISK_POLICY_SET.UPDATED Risk Policy Updated
    RISK_PREDICTOR.CREATED Risk Predictor Created
    RISK_PREDICTOR.DELETED Risk Predictor Deleted
    RISK_PREDICTOR.UPDATED Risk Predictor Updated
    ROLE_ASSIGNMENT.CREATED Role Assignment Created
    ROLE_ASSIGNMENT.DELETED Role Assignment Deleted
    ROLE.CREATED Role Created
    ROLE.DELETED Role Deleted
    ROLE.UPDATED Role Updated
    SAML_ATTRIBUTE.CREATED SAML Attribute Created
    SAML_ATTRIBUTE.DELETED SAML Attribute Deleted
    SAML_ATTRIBUTE.UPDATED SAML Attribute Updated
    SCHEDULE.SKIPPED Schedule Skipped
    SCHEMA_ATTRIBUTE.CREATED Schema Attribute Created
    SCHEMA_ATTRIBUTE.DELETED Schema Attribute Deleted
    SCHEMA_ATTRIBUTE.UPDATED Schema Attribute Updated
    SCOPE.CREATED Scope Created
    SCOPE.DELETED Scope Deleted
    SCOPE.UPDATED Scope Updated
    SECRET.READ Secret Read
    SECRET.UPDATED Secret Updated
    SESSION.CREATED Session Created
    SESSION.DELETED Session Deleted
    SESSION.UPDATED Session Updated
    SETTINGS.UPDATED Settings Updated
    SIGN_ON_POLICY_ASSIGNMENT.CREATED Sign On Policy Assignment Created
    SIGN_ON_POLICY_ASSIGNMENT.DELETED Sign On Policy Assignment Deleted
    SIGN_ON_POLICY_ASSIGNMENT.UPDATED Sign On Policy Assignment Updated
    STAGED_CHANGE.COMPLETED Staged Change Completed
    STAGED_CHANGE.CREATED Staged Change Created
    STAGED_CHANGE.DELETED Staged Change Deleted
    STAGED_CHANGE.FAILED Staged Change Failed
    STAGED_CHANGE.UPDATED Staged Change Updated
    SUBSCRIPTION.CREATED Subscription Created
    SUBSCRIPTION.DELETED Subscription Deleted
    SUBSCRIPTION.UPDATED Subscription Updated
    THEME.CREATED Theme Created
    THEME.DELETED Theme Deleted
    THEME.UPDATED Theme Updated
    TRUSTED_EMAIL.ACTIVE Trusted Email Activated
    TRUSTED_EMAIL.CREATED Trusted Email Created
    TRUSTED_EMAIL.DELETED Trusted Email Deleted
    TRUSTED_EMAIL.SEND_CODE Trusted Email Send Code
    USER_CREDENTIAL.DELETED User Credential Deleted
    USER_CREDENTIAL.ISSUED User Credential Issued
    USER_CREDENTIAL.PENDING User Credential Pending
    USER_CREDENTIAL.REVOKED User Credential Revoked
    USER_CREDENTIAL.UPDATED User Credential Updated
    USER.ACCESS_ALLOWED User Access Allowed
    USER.ACCESS_DENIED User Access Denied
    USER.CREATED User Created
    USER.DELETED User Deleted
    USER.INVITE_ACCEPTED User Invite Accepted
    USER.INVITE_REVOKED User Invite Revoked
    USER.INVITE_UPDATED User Invite Updated
    USER.INVITED User Invited
    USER.KERBEROS_FAILED Kerberos Check Failed
    USER.KERBEROS_SUCCEEDED Kerberos Check Succeeded
    USER.LOCKED User Locked
    USER.MOVED User Moved
    USER.QUOTA_RESET User Quota Reset
    USER.REINVITED User Re-Invited
    USER.SLO_FAILURE User Slo Failure
    USER.SLO_PARTIAL_LOGOUT User Slo Partial Logout
    USER.SLO_REQUESTED User Slo Requested
    USER.SLO_SUCCESS User Slo Success
    USER.UNLOCKED User Unlocked
    USER.UPDATE_ON_AUTH_FAILED Attribute Updates via Gateway Failed
    USER.UPDATE_ON_AUTH_SUCCEEDED Attribute Updates via Gateway Succeeded
    USER.UPDATED User Updated
    VALIDATION_TRANSACTION.CREATED Validation Transaction Created
    VALIDATION_TRANSACTION.DELETED Validation Transaction Deleted
    VALIDATION_TRANSACTION.UPDATED Validation Transaction Updated
    VERIFY_APPEVENT.CREATED Verify App Event Created
    VERIFY_METADATA.CREATED Verify Metadata Created
    VERIFY_METADATA.DELETED Verify Metadata Deleted
    VERIFY_POLICY.CREATED Verify Policy Created
    VERIFY_POLICY.DELETED Verify Policy Deleted
    VERIFY_POLICY.UPDATED Verify Policy Updated