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.
-
Getting started with the PingOne APIs
This collection of topics helps you create your first application connection using the PingOne admin console application and get a JSON Web Token for the application you created. With your admin access token, you can make calls to the Pingone resource server.
-
Download the PingOne Postman collections
This topic includes downloads for the PingOne Platform API Postman master collection.
-
The PingOne use cases provide workflows for common PingOne configurations and sign-on flows. Each use case includes a Postman collection linked to a Run in Postman button, enabling you to load (and run) the use case collections into your Postman workspace. You can also download the workflow Postman collections used in the Workflow Library.
-
PingOne authorization and authentication APIs
These topics provide a deeper dive into PingOne platform authorization and authentication concepts and workflows. It includes detailed information about access tokens, ID tokens, user scopes, built-in roles, and sign-on flows.
-
You'll find here the documentation for the PingOne mobile SDKs. Currently, this includes the PingOne MFA SDKs, the PingOne Neo SDKs, and the PingOne Protect SDKs.
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:
|
| 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:
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.
|
| 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:
|
| 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:
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
404response is received during aGETrequest 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-Afterheader in API responses when the status code is429or503. 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-Afterheader 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), or403(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 theprompt="none"parameter, thelogin_hint_tokenrequest 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:
-
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.
-
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.
-
Click the collection's Run In Postman button.
-
At the prompt, click Fork Collection at the bottom of the dialog or click import a copy near the bottom of the dialog.

-
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.
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:
-
To integrate the PingOne platform with PingFederate, refer to Federating PingOne and PingFederate.
-
To integrate PingOne MFA with PingFederate, refer to Overview of the PingOne MFA Integration Kit.
-
To integrate PingOne Risk with PingFederate, refer to Overview of the PingOne Risk Integration Kit.
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
mobileproperty. -
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
assignActorRolesproperty. -
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 bothAPNSandFCMpush credential types. For more information, refer to Application MFA Push Credentials.
Related topics
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:
AcceptAccept-LanguageContent-LanguageContent-TypeRangeAuthorizationContent-LengthCookieCorrelation-IdOriginOrigin-CookiesRefererorReferrerX-Amz-DateX-Amz-Security-TokenX-Api-KeyX-client-versionX-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: |
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
|
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:unspecifiedurn: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:
|
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. |
Related topics
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:
|
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. |
Related topics
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:
|
| 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. |
Related topics
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. |
Related topics
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. |
Related topics
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, orapplications: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 thereadOnlyproperty 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. |
Related topics
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. |
Related topics
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:
|
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.
-
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
signOnPolicyresource 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}}/adminConfigand setting theauthenticationMethodproperty. - Require MFA for all admin sign-ons. In this case, use PingOne as the value of
authenticationMethod, set themfaStatusvalue toENFORCE, and theallowedMethodsto 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:
-
User preference: The end user receives agreement content in the language that matches the user's
preferredLanguageproperty value. -
Browser preference: If the user's
preferredLanguageis 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. -
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
Related topics
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. |
Related topics
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. |
Related topics
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:
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. |
Related topics
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:
-
userIdThe 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.
-
agreementIdThe 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.
-
languageIdThe existing consent should be associated with a language. Correlate that to a PingOne agreement language. This is the PingOne agreement language
languageIdproperty value needed in the API request you will run in Step 2. -
revisionIdThe most recent effective revision ID associated with the PingOne agreement language. This is the PingOne agreement revision
revisionIdproperty value needed in the API request you will run in Step 2. -
consentedAtThis 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.

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}}/*becomeshttps://{{customDomain}}/*. -
https://auth.pingone.asia/{{envID}}/as/authorizebecomeshttps://{{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/becomeshttps://{{customDomain}}/myapps. -
https://apps.pingone.com/{{envID}}/myaccount/becomeshttps://{{customDomain}}/myaccount. -
https://apps.pingone.com/{{envID}}/signon/?flowId={{flowID}}becomeshttps://{{customDomain}}/signon/?flowId={{flowID}} -
https://apps.pingone.com/{{envID}}/verify/verify-webapp/index.htmlbecomeshttps://{{customDomain}}/verify/verify-webapp/index.html. -
The
https://auth.pingone.comdomain. For example:-
https://auth.pingone.com/{{envID}}/*becomes{{customDomain}}/*. -
https://auth.pingone.asia/{{envID}}/as/authorizebecomes{{customDomain}}/as/authorize.
-
-
The
https://apps.pingone.comdomain. 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:
-
Create the custom domain resource (for example, auth.acme.com).
-
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.
-
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.
-
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:
-
Open (or install) openssl on your computer.
-
Enter the following
opensslcommand:openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr -
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
-
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 " |
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:
|
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:
-
PRODUCTIONThese environments contain the actual identities managed by your business. You must have a non-Trial license to create or promote an environment to the
PRODUCTIONtype. Any long-standing environments, even those used for testing and staging, should be configured asPRODUCTIONto minimize the risk of data loss.PRODUCTIONenvironments 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. -
SANDBOXThese 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. |
Related topics
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
FormElementrepresents aFormFieldof typesTEXT,PASSWORD,RADIO,CHECKBOX,DROPDOWN,COMBOBOX.FormItemWithIconrepresents aFormFieldof typeSLATE_TEXTBLOB.FormElementPasswordVerifyrepresents aFormFieldof typePASSWORD_VERIFY.FormSubmitrepresents aFormFieldof typeSUBMIT_BUTTON.FormFlowLinkrepresentsFormFieldof typeFLOW_LINK.FormFlowButtonrepresents aFormFieldof typeFLOW_BUTTON.FormRecaptchaV2represents a FormField of typeRECAPTCHA_V2.FormQrCoderepresents aFormFieldof typeQR_CODE.FormPollingrepresents aFormFieldof typePOLLING.FormFIDO2represents aFormFieldof typeFIDO2.FormAgreementrepresents aFormFieldof typeAGREEMENT.
| 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:
-
Configuring a gateway in PingOne.
-
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:
|
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.
Related topics
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:
-
Endpoints to manage notifications templates and email, voice, SMS, and push notifications contents.
-
Endpoints to configure specific notifications settings for an identified environment.
-
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.
-
Endpoints to define notification policies to limit the use of SMS/voice and email notifications for pairing and authentication.
-
Endpoints to configure different accounts which could be used for sending an SMS or voice message.
-
Endpoints to configure up to 50 trusted email domains for each environment.
-
Endpoints to configure up to 10 trusted email address for an existing trusted email domain.
-
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:
- Checking first if
localeis specified in the API request, for example, in thenotification.template.localeproperty forPOST {{apiPath}}/environments/{{envID}}/users/{{userID}}/devices. - If
localewas not specified in the request, the preferred language that was set for the user in PingOne is used. - If there is no preferred language set for the user in PingOne, the Accept-Language header in the request is checked.
- If the Accept-Language header does not indicate a language preference, the default language for the PingOne environment is used.
- Checking first if
-
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-ESfalls back toes. -
For voice notifications, PingOne uses the best matching language based on the supported languages of the provider (Twilio, Syniverse, or a custom provider).
-
The
localeproperty 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-CAit(default) |
fr-CAiten |
fr-CA |
fr-CA |
fr-CA |
User's preference and locale in the request match an available language in the content templates |
fr-CAit(default) |
fr-CAiten |
es |
es |
it |
Default content language used: neither user's preference nor locale in the request match an available content language |
fr-CAit(default) |
fr-CAiten |
es |
it |
Default content language used: no locale in the request, and no match of user's preference with available content languages | |
fr-CAit(default) |
fr-CAiten |
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-CAit(default) |
fr-CAiten |
it |
Default content language used: no definition for both user's preference locale in the request | ||
fr-CAit(default) |
fr-CAiten |
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 |
frit(default) |
friten |
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-CAit |
fr-CAiten |
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. |
frit(default)es |
friten |
fr |
es |
SMS,email,push:esVoice: 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 ofJohn. - The
${otp}variable has a value of548263.
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 |
|
| Templates and contents collections | updatedAt |
|
| Contents collections | default |
|
| Contents collections | locale |
|
| Contents collections | deliveryMethod |
|
| Contents collections | variant |
|
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.
|
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:
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:
|
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.
|
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.
- The providers must be configured in the Phone Delivery Settings resource.
- 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
|
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 policycreatedAt- date and time when the policy was createdupdatedAt- 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:
|
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:
|
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:
|
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:
|
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:
|
requests.deliveryMethod |
String | Required | Mutable | The notification's delivery method. Possible value:
|
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:
|
requests.method |
String | Required | Mutable | The type of HTTP request method. Possible values:
|
requests.phoneNumberFormat |
String | Required | Mutable | The phone number format. Possible values:
|
requests.url |
String | Required | Mutable | The provider's remote gateway or customer gateway URL.
|
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:
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)
- Create a custom Twilio or Syniverse phone delivery settings resource using the
POST {{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettingsoperation. Twilio:
{
"sid": "someSid",
"authToken": "someAuthToken",
"provider": "CUSTOM_TWILIO"
}
For Syniverse, remove the sid property in the above example, and set "provider": "CUSTOM_SYNIVERSE".
- 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:
|
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:
|
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:
|
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:
|
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
subattribute 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. |
Related topics
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:
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:
|
type |
String | Optional | Read-only | A string that specifies the type of resource attribute. Options are:
|
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. |
Related topics
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
typeproperty 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:
-
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.
-
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 | ORG | Environment Admin | |
| Environment Admin | ENV | All roles except Organization Admin | |
| Identity Data Admin | IDA | Identity Data Admin, Identity Data Read-Only Admin, Help Desk Admin | |
| DaVinci Admin | DVA | DaVinci Admin, DaVinci Read-Only Admin | |
| Custom Role Admin | ROLE | None | |
| Application Owner | APP-O | None | |
| Identity Data Read-Only Admin | IDA-R | None | |
| Configuration Read-Only Admin | CFA-R | None | |
| DaVinci Read-Only Admin | DVA-R | None | |
| Client Application Developer | APP | None | |
| Help Desk Admin | 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:
-
EnvironmentsEnvironment 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.
-
PopulationsIdentity 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. |
Related topics
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:
-
The admin assigns the custom role to someone in the same environment because they have that custom role.
-
The admin assigns a custom role to someone in the same environment because the role they have is specified in the
canBeAssignedByattribute of the custom role. -
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
canBeAssignedByproperty.
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
canBeAssignedByproperty 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. |
Related topics
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
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:
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 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.
Related topics
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:
-
LOGINAn action that prompts users for a username and password.
If you're provisioning users from an external LDAP directory, refer to the
userTypesparameter for the Gateway LDAP data model. For flow details, refer to Login action. -
MULTI_FACTOR_AUTHENTICATIONA 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_FIRSTAn action used to identify the user by
usernameand 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_PROFILINGAn 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_PROVIDERAn 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.
-
AGREEMENTAn 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:
-
andConstructed as a JSON array (for example,
"and":["{rule1}", "{rule2}"]). For this expression, all rules must be true to meet the condition. -
orConstructed as a JSON array (for example,
"or":["{rule1}", "{rule2}"]). For this expression, at least one rule must be true to meet the condition. -
notConstructed 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:
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. |
Related topics
- PingOne authentication flow states
- Login action
- Identifier first action
- Identity provider account confirmation
- Multi-factor (MFA) action
- Progressive profiling action
- Authentication and Authorization (Use Cases)
- Use LOGIN and MFA Actions to Authenticate Users
- Configure a Progressive Profiling Sign-On Action
- Use LOGIN and AGREEMENT Actions to Authenticate Users
- Configure an MFA Sign-on-Policy with an Authenticator App
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. |
Related topics
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.
-
Sets the external identity provider to Facebook.
-
Sets the external identity provider to Google.
-
LINKEDIN_OIDC (LINKEDIN (Deprecated)
Sets the external identity provider to LinkedIn.
-
Sets the external identity provider to Open ID Connect.
-
Sets the external identity provider to Apple.
-
Sets the external identity provider to Amazon.
-
X (TWITTER)
Sets the external identity provider to X.
-
Sets the external identity provider to Yahoo.
-
Sets the external identity provider to PayPal.
-
Sets the external identity provider to Microsoft.
-
Sets the external identity provider to Github.
-
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 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:
allowPasswordChangesmaps toGATEWAY_USER_TYPE_ALLOW_PASSWORD_CHANGESidmaps toGATEWAY_USER_TYPE_IDnamemaps toGATEWAY_USER_TYPE_NAMEorderedCorrelationAttributesmaps toGATEWAY_USER_TYPE_CORRELATION_ATTRIBUTESwhere, for multiple attributes, the JSON array of strings is converted to a single comma-separated string.passwordAuthoritymaps toGATEWAY_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:
- GET Read One Group Membership for User
- GET Read All Group Memberships for User
- GET Read All Group Names for User
- GET Read All Group IDs for User
- GET Read All Users in a Group
- GET Read All Users in Multiple Groups
- GET Read All Users in a Group with Other Attribute
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:
nameexternalId
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:
idpopulation.idsourceId(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. |
Related topics
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,
idorusername) cannot be modified in any way. - Standard attributes (for example,
email,preferred language,address) cannot be modified except to configure these flags:enabledandunique. - Custom attributes (for example,
ssnorshirtSize) can be modified except for thename,typeandschemaproperties. ThemultiValuedproperty of custom attributes can only be changed from false or null to true. Therequiredproperty is ignored if included in a create request body (defaults tofalse) 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.
passworddevicesroleAssignmentspairingCodeslinkedAccountsenvironmentpopulationaccount
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}}/agreementConsentsendpoint 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}}/verifyTransactionsendpoint 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 typeSTRING -
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 typeSTRING -
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. |
Related topics
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.
Related topics
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
Read One User Agreement Consent
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.
OAuth scope consent state data model
| 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
Read One User OAuth Scope Consent
Revoke User OAuth Scope Consent
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:
-
occurredAtSpecifies 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:
-
samplePeriodSpecifies the time interval in hours. For this example, to specify a daily interval, the value is
samplePeriod=24. -
samplePeriodCountSpecifies 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:
|
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:
|
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:
-
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, andexpandfilters. -
Paging, ordering, and filtering collections
Provides general information about paging, ordering, and filtering large collections.
-
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.comandapi.pingone.comdomains. -
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.
-
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.
-
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.
-
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.
-
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:
-
Includes detailed information about PingOne API requests and responses.
-
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:
|
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 |
|
/activities |
|
/applicationSignons |
|
/environments |
|
/licenses |
|
/populations |
|
/environment/{{envID}}/roles |
|
/templates |
locale: eq, sw |
/totalIdentities |
|
/userActivities |
|
/users |
|
/users/{{userID}}/devices |
|
Endpoints that support resource expansion
The following endpoint operations support resource expansion using the expand={resource} filter.
| Endpoint | Target resource |
|---|---|
/environments |
|
/environments/{{envID}} |
|
/environments/{{envID}}/apiServers/{{apiServerID}}/operations/{{apiServerOperationID}} |
|
/environments/{{envID}}/applicationRoles/{{appRoleID}}/users |
|
/environments/{{envID}}/dataExplorations |
|
/environments/{{envID}}/fido2Policies |
|
/environments/{{envID}}/identityProviders/{{providerID}} |
|
/resources |
|
/resources/{{resourceID}} |
|
/schemas/{{schemaID}} |
|
/users |
|
/users/{{userID}} |
|
/users/{{userID}}/devices |
|
/users/{{userID}}/linkedAccounts |
|
/users/{{userID}}/linkedAccounts/{{linkedAccountID}} |
|
/users/{{userID}}/password |
|
Endpoints that support ordering by attribute
The following endpoint operations support resource expansion using the order={attribute} filter.
| Endpoint | Attribute |
|---|---|
/activeIdentityCounts |
|
/licenses |
|
/templates |
|
/templates/{{templateName}}/contents |
|
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.
-
GET {{apiPath}}/environments/{{envID}}/applicationRoles/{{appRoleID}}/users(1-1024 inclusive) -
GET {{apiPath}}/environments(onlyorganization.idandlimitare provided, or onlylicense.idandlimitare provided) -
POST {{apiPath}}/environments/{{envID}}/dataExplorations?expand=entries(1-1000) -
GET {{apiPath}}/environments/{{envID}}/dataExplorations/{{dataExplorationID}}/entries(1-1000) -
GET {{apiPath}}/environments/{{envID}}/activeIdentityCounts(1-100) -
GET {{apiPath}}/environments/{{envID}}/templates/{{templateName}}/contents
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
limitquery string. If thelimitparameter 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
selflink in the_linksobject. If there are more pages available, the response includes anextlink in the_linksobject. If there are previous pages of results available, the response includes aprevlink in the_linksobject. -
Multiple pages
If there is more than one page, the response returns a URL-safe cursor in the
cursorquery string parameter for thenextorprevlinks. -
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
countattribute, 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:
-
orderquery stringThe
orderquery 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 thenameattribute 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
orderparameter 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,nameindicates that the collection is sorted bydateTimethen byname.
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:
|
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-IdRepresents a scope larger than a single PingOne API request. It identifies one transaction that encompasses multiple API requests to PingOne.
-
X-Ping-External-Session-IdRepresents 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:
-
-
The agreements service uses a
localeproperty 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.
-
-
-
The forms service uses a
languageBundleproperty 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.
-
-
-
An environment default language must be specified and enabled.
-
Languages that support localization of PingOne agreements, forms, and notifications content must be enabled.
-
-
-
Notifications template resources use a
localeproperty 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 resources use a
localeproperty to localize such items as currency, date time format, or numerical representations. -
Users resources use a
preferredLanguageproperty 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
localesetting 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:
-
User preference: The end user receives agreement content in the language that matches the user's
preferredLanguageproperty value. -
Browser preference: If the user's
preferredLanguageis 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. -
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.
-
PingOne matches the best text notification content for the user based on
localeandvariantname. -
If a
localeis specified on the request (for example, on thenotification.template.localeproperty onPOST {{apiPath}}/environments/{{envID}}/users/{{userID}}/devices), it overrides the user's preferred language setting. -
If the
localeon 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-ESfalls back toes. -
For the
localeproperty value, PingOne supports language tags with quality values as described in Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. -
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.
-
localeThis 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.
-
preferredLanguageThe 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 | ORG | Environment Admin | |
| Environment Admin | ENV | All roles except Organization Admin | |
| Identity Data Admin | IDA | Identity Data Admin, Identity Data Read-Only Admin, Help Desk Admin | |
| DaVinci Admin | DVA | DaVinci Admin, DaVinci Read-Only Admin | |
| Custom Role Admin | ROLE | None | |
| Application Owner | APP-O | None | |
| Identity Data Read-Only Admin | IDA-R | None | |
| Configuration Read-Only Admin | CFA-R | None | |
| DaVinci Read-Only Admin | DVA-R | None | |
| Client Application Developer | APP | None | |
| Help Desk Admin | 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.
- Refer to Advanced Identity Cloud Support for the associated permissions.
| 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 |