Script bindings
Each script type exposes a number of bindings, objects that PingOne Advanced Identity Cloud injects into the script execution context. The bindings provide a stable way of accessing PingOne Advanced Identity Cloud functionality, without the need to allowlist Java classes. Scripts are provided with all the bindings for their context at the point of execution.
Find information about context-specific bindings in the documentation for each script type.
PingOne Advanced Identity Cloud has introduced a next-generation scripting engine that offers several benefits, including enhanced script bindings. The availability and usage of bindings depend on the script engine version of the script: legacy or next-generation. Both versions are described in this section. You can find information about migrating to the enhanced scripting engine in Migrate to next-generation scripts. |
The following bindings are common to many authentication and authorization scripts. Use these bindings to access data and perform script operations such as logging.
Binding |
Description |
Availability |
|
Legacy |
Next-generation |
||
Access the name of the current cookie. |
No |
Yes |
|
Make outbound HTTP calls. |
Partial 1 |
Yes |
|
Write a message to the PingOne Advanced Identity Cloud debug log. |
Yes |
Yes |
|
Manage an IDM resource. |
No |
Yes |
|
Access the realm to which the user is authenticating. |
Yes |
Yes |
|
Access the name of the running script. |
Partial 1 |
Yes |
|
Reference secrets and credentials from scripts. |
Partial 2 |
Yes |
|
Reference system properties. |
Yes |
Yes |
|
Access utility functions such as base64 encoding/decoding and generating random values and UUIDs. |
No |
Yes |
|
Manage PingOne Verify transactions related to the user, and manage the associated PingOne user account. |
No |
Yes |
1 Available in OAuth 2.0 script types, scripted decision node scripts, and SAML 2.0 SP scripts.
2 Available in OAuth 2.0 JWT bearer and scripted decision node scripts.
Make sure you don’t use the same name for a local variable as that of a common binding in your script. These names are reserved for common bindings only. If you have already defined a local variable with the same name as one that’s added to common bindings
in a more recent version of PingOne Advanced Identity Cloud; for example, |
Retrieve cookie name
The cookieName
binding lets you access the name of the cookie as a string.
You can use the cookie name to perform session actions such as ending all open sessions for a user.
-
Next-generation
-
Legacy
// add cookie name to shared state, for example: 8a92ca506c38f08
nodeState.putShared("myCookie", cookieName);
Not available in Legacy bindings
Access HTTP services
Call HTTP services with the httpClient.send
method. HTTP client requests are asynchronous,
unless you invoke the get()
method on the returned object.
Methods
-
Next-generation
-
Legacy
The httpClient
binding uses native JavaScript objects, and behaves like the
Fetch API.
To invoke an HTTP request:
-
ResponseScriptWrapper httpClient.send(String uri, Map requestOptions).get()
Sends a synchronous request to the specified URI with request options. The
requestOptions
parameter is a native JavaScript object that supportsmethod
,headers
,form
,clientName
,token
, andbody
as attributes.Use the
requestOptions
attribute,form
, to send a form request. Theform
attribute automatically url-encodes fields, so you don’t need to specify"Content-Type": "application/x-www-form-urlencoded"
as part of the headers.For example:
var requestOptions = { method: "POST", form: { field1: "value1", field2: "value2" } }
-
ResponseScriptWrapper httpClient.send(String uri).get()
Sends a synchronous GET request with no additional request options.
To access response data:
-
Map response.formData()
-
Map response.json()
-
String response.text()
The following fields provide response status information:
Field Type headers
Map
ok
boolean
status
integer
statusText
String
The response is similar to Response object behavior.
To invoke a synchronous HTTP request:
-
HTTPClientResponse httpClient.send(Request request).get()
To access response data:
-
JSON.parse(response.getEntity().getString())
HttpClientResponse
methods:
-
Map<String, String> getCookies()
-
String getEntity
-
Map<String, String> getHeaders()
-
String getReasonPhrase()
-
Integer getStatusCode()
-
Boolean hasCookies
-
Boolean hasHeaders
The |
Example: Send a synchronous request
The following example uses the httpClient
binding to send a synchronous authentication request and check for success.
For an example of how to use |
-
Next-generation
-
Legacy
This example assumes you’ve created a custom library script (authLib
) that handles authentication.
// import the library script that handles authentication
var authLib = require("authLib");
// use the library function to get authentication token
var bearerToken = authLib.generateBearer(nodeState);
var requestOptions = {
method: "POST",
headers: {
"Content-Type": "application/json"
},
token: bearerToken, // Equivalent to Authorization header
body: {
username: "bjensen"
}
}
var requestURL = "https://my.auth.server/authenticate";
var response = httpClient.send(requestURL, requestOptions).get();
if (response.status === 200) {
action.goTo("true");
} else {
action.goTo("false");
}
var fr = JavaImporter(org.forgerock.openam.auth.node.api.Action);
var requestURL = "https://my.auth.server/authenticate";
var request = new org.forgerock.http.protocol.Request();
request.setUri(requestURL);
request.setMethod("POST");
request.getHeaders().add("Content-Type", "application/json;");
request.getHeaders().add("Authorization", "Bearer abcd-1234");
request.setEntity(JSON.stringify({"username": "bjensen"}));
var response = httpClient.send(request).get();
var responseCode = response.getStatus().getCode();
if (responseCode === 200) {
action = fr.Action.goTo("true").build();
} else {
action = fr.Action.goTo("false").build();
}
Example: Send an asynchronous request
The httpclient
binding also supports asynchronous requests so that you can
perform non-blocking operations, such as recording logging output after the script has completed.
To make an asynchronous request, use the same method signatures to send the request
but without calling get()
on the returned object. The send()
method then initiates
a separate thread to handle the response. Callers are unable to control when the asynchronous call is processed,
so won’t be able to use the response as part of authentication processing.
-
Next-generation
-
Legacy
public Promise<ResponseScriptWrapper, HttpClientScriptException> send(String uri)
public Promise<ResponseScriptWrapper, HttpClientScriptException> send(String uri, Map<String, Object> requestOptions)
public Promise<Response, NeverThrowsException> send(Request request)
For example:
-
Next-generation
-
Legacy
var requestURL = "https://my.auth.server/audit";
// creates separate thread to handle response
var response = httpClient.send(requestURL).then((response) => {
if (!response) {
logger.error("Bad response from " + requestURL);
return;
}
if (response.status != 200) {
logger.error("Unexpected response: " + response.statusText);
return;
}
logger.debug("Returned from async request");
});
// continues processing whilst awaiting response
action.goTo("true");
var fr = JavaImporter(
org.forgerock.http.protocol.Request,
org.forgerock.http.protocol.Response,
org.forgerock.openam.auth.node.api.Action);
var request = new fr.Request();
request.setUri("https://my.auth.server/audit");
request.setMethod("GET");
var response = httpClient.send(request).then((response) => {
if (!response) {
logger.error("Bad response from " + requestURL);
return;
}
var status = response.getStatus().getCode();
if (status != 200) {
logger.error("Unexpected response: " + response.getEntity().getString());
return;
}
logger.message("Returned from async request");
});
action = fr.Action.goTo("true").build();
Example: Send a request using mTLS
Configure the httpclient
to use mTLS to exchange data securely when making an HTTP request to an external service.
Follow these example steps to send an HTTP request using mTLS:
Configure the HTTP Client service
Complete these steps to configure an instance of the HTTP Client service.
The instance defines settings such as timeout values and the client certificate or
truststore secret labels required by the httpclient
script binding to make a TLS connection.
For details about these settings, refer to Http Client service configuration.
-
In the AM admin UI (native console), go to Realms > Realm Name > Services.
-
Click Add a Service and select Http Client Service from the service type drop-down list.
-
Enable the service and save your changes.
-
On the Secondary Configurations tab, click Add a Secondary Configuration.
-
Provide a name for the HTTP client instance; for example,
myHttpClient
, and click Create. -
Enable the instance and save your changes.
-
On the TLS Configuration tab, enter an identifier to be used in your secret label in the Client Certificate Secret Label Identifier field.
For example,
testCrt
creates the dynamic secret label,am.services.httpclient.mtls.clientcert.testCrt.secret
.To specify a truststore to verify the target server’s certificate, provide a value for Server Trust Certificates Secret Label Identifier.
This creates the dynamic secret label,
am.services.httpclient.mtls.servertrustcerts.identifier.secret
. -
Save your changes.
Map a base64-encoded PEM certificate to the secret label
To prepare a certificate for TLS connections, it must be:
|
Complete these steps to generate a key pair and map the secret to the dynamic secret label created in the previous step.
-
Generate a private key and a public key, as described in Generate an RSA key pair.
You should now have a
.pem
file that contains a base64-encoded key pair. PingOne Advanced Identity Cloud shares the public key and uses the private key to sign the request. -
Get an access token for the realm.
-
Specify the access token in a REST API call to create a PEM-encoded ESV secret.
For example, to create a secret named
esv-mtls-cert
:$ curl \ --request PUT 'https://<tenant-env-fqdn>/environment/secrets/<esv-mtls-cert>' \ --header 'Authorization: Bearer <access-token>' \ --header 'Content-Type: application/json' \ --header 'Accept-API-Version: protocol=1.0;resource=1.0' \ --data-raw '{ "encoding": "pem", "useInPlaceholders": false, "valueBase64": "<base64-encoded PEM-file>" }'
You must specify the encoding type as
pem
for the API to recognize the value as a certificate. -
Map the secret against the secret label created when you configured the HTTP Client service, for example:
- Secret Label
-
am.services.httpclient.mtls.clientcert.testCrt.secret
- alias
-
esv-mtls-cert
The certificate is now uploaded and mapped to the secret label.
Create a script to send the HTTP request
Write a next-generation decision node script to send a request using the HTTP client instance in the request options.
-
In your script, specify your HTTP client instance as the value for
clientName
inrequestOptions
.For example:
var requestOptions = { "clientName": "<myhttpclient>" (1) } var res = httpClient.send("https://example.com", requestOptions).get(); (2) action.withHeader(
Response code: ${res.status}
); if (res.status == 200) { action.goTo("true").withDescription(response.text()); } else { action.goTo("false"); };1 The clientName
attribute must reference an enabled instance of the HTTP Client service.2 The HTTP client sends the request to an mTLS endpoint that checks for a certificate. -
Create a simple journey that includes the scripted decision node to test your changes.
-
Verify that the HTTP request is sent successfully.
Log script messages
Write messages to Advanced Identity Cloud debug logs by using the logger
object.
Scripts that create debug messages have their own logger which is created after the script has executed at least once.
Logger names use the format: scripts.<context>.<script UUID>.(<script name>); for example,
`scripts.OIDC_CLAIMS.36863ffb-40ec-48b9-94b1-9a99f71cc3b5.(OIDC Claims Script)
.
You can find information about debug logs in Get audit and debug logs.
-
Next-generation
-
Legacy
The ScriptedLoggerWrapper
is based on the SLF4J logging framework. You can log messages at the following levels:
-
Trace
-
Debug (default level for development tenant environments)
-
Info
-
Warn (default level for staging and production environments)
-
Error
var traceEnabled = logger.isTraceEnabled();
logger.trace("Trace with arg {}", arg);
var debugEnabled = logger.isDebugEnabled();
logger.debug("Debug with arg {}", arg);
var infoEnabled = logger.isInfoEnabled();
logger.info("Info with arg {}", arg);
var warnEnabled = logger.isWarnEnabled();
logger.warn("Warn with arg {}", arg);
var errorEnabled = logger.isErrorEnabled();
logger.error("Error with arg {}", arg);
The Debug
logger lets you log messages at the following levels:
-
Message
-
Warning
-
Error
var messageEnabled = logger.messageEnabled();
logger.message("Message with arg {}", arg);
var warnEnabled = logger.warningEnabled();
logger.warning("Warn with arg {}", arg);
var errorEnabled = logger.errorEnabled();
logger.error("Error with arg {}", arg);
Access IDM scripting functions
The openidm
binding lets you manage an IDM resource by calling
scripting functions directly from a next-generation script.
The following CRUDPAQ functions are supported:
-
create
-
read
-
update
-
delete
-
patch
-
action
-
query
For more information, refer to Scripting functions.
The |
The following example illustrates how to create a user, update their details, send an email, and finally delete the user:
-
Next-generation
-
Legacy
var username = "bjensen";
// CREATE: returns the user identity as a JSON object (wrapped in a MapScriptWrapper)
var newUser = openidm.create("managed/alpha_user", null, {
"userName": username,
"mail": "bjensen@example.com",
"givenName": "Barbara",
"sn": "Jensen"});
// Access the fields directly, for example: ._id, .sn, .city, .country
var userID = newUser._id;
// READ: returns entire identity as a JSON object
var user = openidm.read("managed/alpha_user/" + userID);
// Debug to output all fields
logger.debug("user: " + JSON.stringify(user));
// UPDATE: replaces entire identity with specified object
// Returns the updated identity as a JSON object
user.description = 'New description';
var updatedUser = openidm.update("managed/alpha_user/" + userID, null, user);
// PATCH: selectively modify object, returns entire identity
var patchedUser = openidm.patch("managed/alpha_user/" + userID, null, [{
"operation":"replace",
"field":"/mail",
"value":"new@example.com"
}]);
// QUERY: returns results array in a map
var queryRes = openidm.query("managed/alpha_user",
{"_queryFilter":`/userName eq '${username}'`},["*", "_id"]);
// Debug query result count and the requested properties
logger.debug("Query result count: " + queryRes.resultCount);
logger.debug("Queried user: " + queryRes.result[0].givenName);
// ACTION: send email using the action function
var actionRes = openidm.action("external/email", "send", {
"from": "admin@example.com",
"to": patchedUser.mail,
"subject": "Example email",
"body": "This is an example"
});
// Example response if not null: {"status":"OK","message":"Email sent"}
logger.debug("Status: " + actionRes.status + " : " + actionRes.message);
// DELETE: returns deleted object if successful, throws exception if not
openidm.delete('managed/alpha_user/'+ userID, null);
action.goTo("true");
Not available in Legacy bindings
Output realm name
The realm
binding lets you access the name of the realm to which the user is authenticating as a string.
For example, authenticating to the alpha
realm returns a string value of /alpha
.
-
Next-generation
-
Legacy
// log current realm
logger.debug("User authentication realm: " + realm);
// log current realm
logger.message("User authentication realm: " + realm);
Output script name
Use the scriptName
binding to get the name of the running script as a string.
-
Next-generation
-
Legacy
// log current script name
logger.debug("Running script: " + scriptName);
// or use a library script to log script name
var mylib = require('loggingLibrary');
mylib.debug(logger, scriptName);
// log current script name
logger.message("Running script: " + scriptName);
Access secrets and credentials
Use the secrets
binding to access ESVs configured in the realm’s ESV secret store.
For example, a script can access credentials or secrets to make outbound calls to a third-party REST service without hard-coding those credentials in the script.
Only secret labels that begin with the string scripted.node. are accessible to scripts.
|
Methods
Use the following method to return the value of the specified secret label:
String secrets.getGenericSecret(String secretLabel)
If the secret label is defined at the realm level, its value is returned; otherwise, the script returns the value defined at the global level.
To format the returned secret value, use these supported methods:
-
getAsBytes()
Retrieve the secret value inbyte[]
format. -
getAsUtf8()
Retrieve the secret value in UTF-8 format.
Learn more about the supported methods in the Secret and ScriptedSecrets Javadoc.
Examples
The following example scripts show how to get a password from a secret label named scripted.node.example.secret
.
The scripts use the encoded username (bjensen
) and password (passwd
) in a basic authentication header to access the
http://httpbin.org/basic-auth/{user}/{passwd} service.
-
Next-generation
-
Legacy
// secret [cGFzc3dk] stored as an ESV
var password = secrets.getGenericSecret("scripted.node.example.secret").getAsUtf8();
var auth = utils.base64.encode("bjensen:" + password);
var requestURL = "http://httpbin.org/basic-auth/bjensen/passwd";
var requestOptions = {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Basic ".concat(auth)
},
}
var response = httpClient.send(requestURL, requestOptions).get();
if (!response) {
logger.error("Bad response from " + requestURL);
action.goTo("false");
} else {
if (response.status != 200) {
logger.warn("Authentication not successful. Code: " + response.status);
action.goTo("false");
} else {
logger.debug("Authenticated: " + response.json().authenticated);
action.goTo("true");
}
}
To construct the header for basic authorization, make sure you use the |
To use this sample script, add the following classes to the class allowlist property
in the
For details, refer to Access Java classes. |
var fr = JavaImporter(org.forgerock.openam.auth.node.api.Action);
// secret [cGFzc3dk] stored in file system secret store
var password = secrets.getGenericSecret("scripted.node.example.secret").getAsUtf8();
var auth = java.util.Base64.getEncoder().encodeToString(java.lang.String("bjensen:" + password).getBytes());
var request = new org.forgerock.http.protocol.Request();
request.setMethod("GET");
request.setUri("http://httpbin.org/basic-auth/bjensen/passwd");
request.getHeaders().add("content-type","application/json; charset=utf-8");
request.getHeaders().add("Authorization", "Basic " + auth);
var response = httpClient.send(request).get();
var jsonResult = JSON.parse(response.getEntity().getString());
logger.error("Script result: " + JSON.stringify(jsonResult));
if (jsonResult.hasOwnProperty("authenticated")) {
action = fr.Action.goTo("success").build();
} else {
action = fr.Action.goTo("failure").build();
}
Reference ESVs in scripts
The systemEnv
binding, available to all script types,
provides the following methods shown with their Java signatures:
String getProperty(String propertyName);
String getProperty(String propertyName, String defaultValue);
<T> T getProperty(String propertyName, String defaultValue, Class<T> returnType);
where:
-
propertyName
refers to an ESV. For details, refer to ESVs.The
propertyName
always starts withesv.
; for example,esv.my.variable
.Make sure the
propertyName
is specific enough to distinguish it from all other ESVs defined. -
defaultValue
is a default value to use when no ESV matchespropertyName
.The
defaultValue
must not benull
. -
returnType
is one of the following fully-qualified Java class names:-
java.lang.Boolean
-
java.lang.Double
-
java.lang.Integer
-
java.lang.String
-
java.util.List
-
java.util.Map
-
The getProperty(String propertyName)
method returns null
when the propertyName
is not valid.
For example:
var myProperty = systemEnv.getProperty('esv.my.variable');
var myDefault = systemEnv.getProperty('esv.nonexisting.variable', 'defaultValue');
var myDouble = systemEnv.getProperty('esv.double.variable', '0.5', java.lang.Double);
var myBool = systemEnv.getProperty('esv.bool.variable', false, java.lang.Boolean);
var myInt = systemEnv.getProperty('esv.int.variable', 34, java.lang.Integer);
var map = systemEnv.getProperty('esv.map.variable', '{"defaultKey":"defaultValue"}', java.util.Map);
Access utility functions
Use the next-generation utils
binding to base64 encode or decode text and generate random values or UUIDs.
Methods
- String crypto.randomUUID()
-
Returns a type 4 pseudo-random generated UUID.
- <JavaScript array> crypto.getRandomValues(<JavaScript array> array)
-
Returns the specified array filled with the same number of generated random numbers.
- String base64.encode(String toEncode)
-
Encodes the specified text using base64.
- String base64.decode(String toDecode)
-
Decodes the specified text using base64.
- String base64url.encode(String toEncode)
-
Encodes the specified text using base64url.
- String base64url.decode(String toDecode)
-
Decodes the specified text using base64url.
-
Next-generation
-
Legacy
// generate a pseudorandom UUID (version 4)
var uuid = utils.crypto.randomUUID();
logger.debug("UUID: " + uuid); //eef5b4e1-ae86-4c0a-9160-5afee2b5e791
// generate an array of 5 random values
var array = [0,0,0,0,0];
utils.crypto.getRandomValues(array);
array.forEach(function(element)){
logger.debug("Random value: " + element);
}
// encode a string
var encoded = utils.base64.encode("exampletext")
logger.debug("Encoded text: " + encoded); //ZXhhbXBsZXRleHQ=
var decoded = utils.base64.decode(encoded);
logger.debug("Decoded text: " + decoded);
// encode a URL
var encodedURL = utils.base64url.encode("http://exampletext=")
logger.debug("Encoded URL: " + encodedURL); //aHR0cDovL2V4YW1wbGV0ZXh0PQ
var decodedURL = utils.base64url.decode(encodedURL);
logger.debug("Decoded URL: " + decodedURL);
Not available in Legacy bindings
Access PingOne Verify transactions and manage associated user
Use the methods in the verifyTransactionsHelper
class to obtain information about PingOne Verify transactions the user has performed, and manage the associated user account in PingOne.
Methods
Map getLastVerifyTransaction()
-
Retrieve the user’s most recent transaction they performed with PingOne Verify.
Returns a map containing the data about the most recent transaction or
null
if no transactions are available.View example return data
{ "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-fak3-49f5-a5d9-80ad5c98f9f6/users/36ff33da-abc7-ch15-abab-8b2412345461/verifyTransactions/dd5a6d4f-m0nd-0819-b107-85a0a10138c6"}, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-fak3-49f5-a5d9-80ad5c98f9f6"}, "user": { "href": "https://api.pingone.com/v1/users/36ff33da-abc7-ch15-abab-8b2412345461"} }, "id": "dd5a6d4f-m0nd-0819-b107-85a0a10138c6", "transactionStatus": { "status": "SUCCESS", "verificationStatus": { "GOVERNMENT_ID": "SUCCESS", "LIVENESS": "SUCCESS", "FACIAL_COMPARISON_DOCUMENT": "SUCCESS" } }, "verifiedDocuments": "[selfie, liveness, driver_license]", "createdAt": "2024-12-09T13:45:34.882Z", "updatedAt": "2024-12-09T13:45:34.882Z", "expiresAt": "2024-12-09T14:15:34.882Z" }
Map getAllVerifyTransactions()
-
Retrieve all the user’s transactions performed with PingOne Verify.
Returns a map containing the data about all transactions or
null
if no transactions are available.View example return data
{ "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/36ff33da-cba7-4d46-bedc-8b242889d461/verifyTransactions" } }, "_embedded": { "verifyTransactions": [ { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/36ff33da-cba7-4d46-bedc-8b242889d461/verifyTransactions/029ea878-2618-4067-b7e3-922591e6b55f" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "user": { "href": "https://api.pingone.com/v1/users/36ff33da-cba7-4d46-bedc-8b242889d461" } }, "id": "029ea878-2618-4067-b7e3-922591e6b55f", "transactionStatus": { "status": "APPROVED_NO_REQUEST" }, "createdAt": "2022-02-17T20:32:22.052Z", "updatedAt": "2022-02-17T20:32:58.711Z", "expiresAt": "2022-02-17T21:02:58.711Z" }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/36ff33da-cba7-4d46-bedc-8b242889d461/verifyTransactions/cca479e7-d130-4e3c-b888-74ba1920f59a" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "user": { "href": "https://api.pingone.com/v1/users/36ff33da-cba7-4d46-bedc-8b242889d461" } }, "id": "cca479e7-d130-4e3c-b888-74ba1920f59a", "transactionStatus": { "status": "REQUESTED" }, "qrUrl": "https://api.pingone.com/v1/idValidations/shortcode/086645084110/qr", "verificationCode": "086645084110", "createdAt": "2022-02-17T20:23:58.662Z", "updatedAt": "2022-02-17T20:23:58.662Z", "expiresAt": "2022-02-17T20:53:58.662Z" }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/36ff33da-cba7-4d46-bedc-8b242889d461/verifyTransactions/52c9bf9a-0687-4e01-85d1-9caa9bb387ee" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "user": { "href": "https://api.pingone.com/v1/users/36ff33da-cba7-4d46-bedc-8b242889d461" } }, "id": "52c9bf9a-0687-4e01-85d1-9caa9bb387ee", "transactionStatus": { "status": "REQUESTED" }, "qrUrl": "https://api.pingone.com/v1/idValidations/shortcode/008299320746/qr", "verificationCode": "008299320746", "createdAt": "2022-02-17T20:23:08.887Z", "updatedAt": "2022-02-17T20:23:08.887Z", "expiresAt": "2022-02-17T20:53:08.887Z" }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/36ff33da-cba7-4d46-bedc-8b242889d461/verifyTransactions/dd5a6d4f-a999-4819-b107-85a0a10138c6" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "user": { "href": "https://api.pingone.com/v1/users/36ff33da-cba7-4d46-bedc-8b242889d461" } }, "id": "dd5a6d4f-a999-4819-b107-85a0a10138c6", "transactionStatus": { "status": "REQUESTED" }, "createdAt": "2021-12-09T13:45:34.882Z", "updatedAt": "2021-12-09T13:45:34.882Z", "expiresAt": "2022-12-09T14:15:34.882Z" }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/36ff33da-cba7-4d46-bedc-8b242889d461/verifyTransactions/bfc414cb-a1b4-46b8-b622-3d806a85002f" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "user": { "href": "https://api.pingone.com/v1/users/36ff33da-cba7-4d46-bedc-8b242889d461" } }, "id": "bfc414cb-a1b4-46b8-b622-3d806a85002f", "transactionStatus": { "status": "REQUESTED" }, "createdAt": "2021-12-08T21:34:52.424Z", "updatedAt": "2021-12-08T21:34:52.424Z", "expiresAt": "2022-12-08T22:04:52.424Z" }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/36ff33da-cba7-4d46-bedc-8b242889d461/verifyTransactions/b21db4c4-01c5-47b5-a2a9-3d8df21d189b" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "user": { "href": "https://api.pingone.com/v1/users/36ff33da-cba7-4d46-bedc-8b242889d461" } }, "id": "b21db4c4-01c5-47b5-a2a9-3d8df21d189b", "transactionStatus": { "status": "APPROVED_NO_REQUEST" }, "createdAt": "2021-12-07T21:33:22.088Z", "updatedAt": "2021-12-07T21:45:22.944Z", "expiresAt": "2022-12-07T22:15:22.944Z" }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/36ff33da-cba7-4d46-bedc-8b242889d461/verifyTransactions/e44ebfe2-6a76-4ffa-ac35-d71ee9365e57" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "user": { "href": "https://api.pingone.com/v1/users/36ff33da-cba7-4d46-bedc-8b242889d461" } }, "id": "e44ebfe2-6a76-4ffa-ac35-d71ee9365e57", "transactionStatus": { "status": "APPROVED_NO_REQUEST" }, "createdAt": "2021-12-07T19:55:16.630Z", "updatedAt": "2021-12-07T21:31:26.835Z", "expiresAt": "2022-12-07T22:01:26.835Z" }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/36ff33da-cba7-4d46-bedc-8b242889d461/verifyTransactions/fc695b11-93a4-48bb-9ec3-ff5738e3818c" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "user": { "href": "https://api.pingone.com/v1/users/36ff33da-cba7-4d46-bedc-8b242889d461" } }, "id": "fc695b11-93a4-48bb-9ec3-ff5738e3818c", "transactionStatus": { "status": "REQUESTED" }, "createdAt": "2021-12-07T18:36:48.156Z", "updatedAt": "2021-12-07T18:36:48.156Z", "expiresAt": "2021-12-07T19:06:48.153Z" } ] }, "size": 8 }
Map getAllMetadata(String transactionId)
-
Retrieve the metadata for a specified transaction.
Metadata includes information about the reasons behind a transaction decision, such as scores, probability, and the judgements made, rather than the actual data provided to the transaction by the user.
Returns a map containing the details of the transaction result from the verification services used, or
null
if the specified transaction is not available.View example return data
{ "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/03df72b1-b80b-4449-8eef-ee8f85f48d94/verifyTransactions/7668563d-0226-4ca5-8401-03f6dc5bcdc6/metaData" }, "user": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/03df72b1-b80b-4449-8eef-ee8f85f48d94" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "verifyTransaction": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/03df72b1-b80b-4449-8eef-ee8f85f48d94/verifyTransactions/7668563d-0226-4ca5-8401-03f6dc5bcdc6" } }, "_embedded": { "metaData": [ { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/03df72b1-b80b-4449-8eef-ee8f85f48d94/verifyTransactions/7668563d-0226-4ca5-8401-03f6dc5bcdc6/metaData/4ebb9165-4e5c-4270-94e4-d50d7b17ecb4" } }, "id": "4ebb9165-4e5c-4270-94e4-d50d7b17ecb4", "provider": "IDRND", "type": "LIVENESS", "status": "SUCCESS", "data": { "score": 6.4909873, "probability": 0.99848527, "quality": 0.94462675 }, "retry": { "attempt": 2 } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/03df72b1-b80b-4449-8eef-ee8f85f48d94/verifyTransactions/7668563d-0226-4ca5-8401-03f6dc5bcdc6/metaData/ae186d6c-1a79-4912-bad8-79afa3626cca" } }, "id": "ae186d6c-1a79-4912-bad8-79afa3626cca", "provider": "IDRND", "type": "INJECTION_DETECTION", "status": "SUCCESS", "data": { "probability": 1.0 } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/03df72b1-b80b-4449-8eef-ee8f85f48d94/verifyTransactions/7668563d-0226-4ca5-8401-03f6dc5bcdc6/metaData/546d3a8e-f606-4078-92f1-96a5c2d003e9" } }, "id": "546d3a8e-f606-4078-92f1-96a5c2d003e9", "provider": "AMAZON", "type": "FACIAL_COMPARISON", "status": "SUCCESS", "data": { "similarity": 99.37002, "confidence": 99.99767, "quality": { "brightness": 36.77353, "sharpness": 20.92731 } } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/03df72b1-b80b-4449-8eef-ee8f85f48d94/verifyTransactions/7668563d-0226-4ca5-8401-03f6dc5bcdc6/metaData/96315a69-fb46-4d28-9b0d-c79927e59df1" } }, "id": "96315a69-fb46-4d28-9b0d-c79927e59df1", "provider": "BIOGRAPHIC_MATCHER", "type": "BIOGRAPHIC_MATCH", "status": "SUCCESS", "data": { "biographic_match_results": [ { "identifier": "address", "match": "NOT_APPLICABLE" }, { "identifier": "given_name", "match": "NONE" }, { "identifier": "family_name", "match": "HIGH" }, { "identifier": "birth_date", "match": "HIGH" } ] } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/03df72b1-b80b-4449-8eef-ee8f85f48d94/verifyTransactions/7668563d-0226-4ca5-8401-03f6dc5bcdc6/metaData/fba13756-8c24-49ff-9b42-ff1a3661d0ae" } }, "id": "fba13756-8c24-49ff-9b42-ff1a3661d0ae", "provider": "MITEK", "type": "DOCUMENT_AUTHENTICATION", "status": "SUCCESS", "data": { "mitekVerifications": [ { "name": "Document Ensemble Authenticator", "judgement": "Authentic", "verificationType": 202, "probability": 753, "version": "3.47.0.7114", "documentId": "048f28f1-a7fe-42a5-9722-f10977606719" }, { "name": "Black And White Copy", "judgement": "Authentic", "verificationType": 102, "probability": 717, "version": "3.47.0.7114", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" }, { "name": "Image Classification", "judgement": "Authentic", "verificationType": 105, "probability": 1000, "version": "3.47.0.7114", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" }, { "name": "Data Comparison", "judgement": "Authentic", "verificationType": 700, "probability": 1000, "version": "3.47.0.7114", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" }, { "name": "Ensemble Authenticator", "judgement": "Authentic", "verificationType": 201, "probability": 753, "version": "3.47.0.7114", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" }, { "name": "ID Document Blacklist", "judgement": "Authentic", "verificationType": 101, "probability": 1000, "version": "3.47.0.7114", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" }, { "name": "Generic Font", "judgement": "Authentic", "verificationType": 104, "probability": 926, "version": "3.47.0.7114", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" }, { "name": "MRZ Check Digit", "judgement": "Authentic", "verificationType": 601, "probability": 1000, "version": "3.47.0.7114", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" }, { "name": "MRZ Font Type Authentication", "judgement": "Authentic", "verificationType": 600, "probability": 1000, "version": "3.47.0.7114", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" }, { "name": "Image Processing", "judgement": "Authentic", "verificationType": 710, "probability": 1000, "version": "1.0", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" }, { "name": "Document Liveness", "judgement": "Authentic", "verificationType": 108, "probability": 999, "version": "1.0", "documentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856" } ], "frontImageDocumentId": "e290d74d-bf9c-4116-9fe7-9b6fb909c856", "documentEvidenceId": "048f28f1-a7fe-42a5-9722-f10977606719", "retry": { "attempt": 1 } } } ] }, "previousAttempts": [ { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/03df72b1-b80b-4449-8eef-ee8f85f48d94/verifyTransactions/7668563d-0226-4ca5-8401-03f6dc5bcdc6/metaData/06aebfbd-0053-4860-8b59-4f3cb7371dcb" } }, "id": "06aebfbd-0053-4860-8b59-4f3cb7371dcb", "provider": "IDRND", "type": "LIVENESS", "status": "FAIL", "data": { "score": 2.4509223, "probability": 0.40062885, "quality": 0.40874674 }, "retry": { "attempt": 1 } } ], "size": 5 }
Map getAllVerifiedData(String transactionId)
-
For up to 30 minutes after a PingOne Verify decision you can retrieve information about all the data obtained by all the verification service providers during the specified transaction.
Returns a map containing information about the data returned from the verification service used, or
null
if the specified transaction is not available.This method only lists the ID and type of verified data available, as the actual data could be large binary files such as images.
Use the
getVerifiedData()
method to get the actual verified data.View example return data
{ "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/" }, "user": { "href": "https://api.pingone.com/v1/users/a27dec16-1e80-4f10-a261-2cac46a12b78" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "transaction": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b" } }, "_embedded": { "verifiedData": [ { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/84170421-62c6-49a5-b343-496bee93c206" } }, "id": "84170421-62c6-49a5-b343-496bee93c206", "type": "GOVERNMENT_ID", "createdAt": "2022-02-23T15:51:01.603Z", "retry": { "attempt": 2 } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/ef6cd8cd-d869-4695-af69-29c78b6f041a" } }, "id": "ef6cd8cd-d869-4695-af69-29c78b6f041a", "type": "SELFIE", "createdAt": "2022-02-25T16:22:35.649Z", "retry": { "attempt": 2 } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/bf6cd8cd-d869-4695-af69-29c78b6f041a" } }, "id": "bf6cd8cd-d869-4695-af69-29c78b6f041a", "type": "BACK_IMAGE", "createdAt": "2022-02-25T16:22:35.649Z", "retry": { "attempt": 2 } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/af6cd8cd-d869-4695-af69-29c78b6f041a" } }, "id": "af6cd8cd-d869-4695-af69-29c78b6f041a", "type": "FRONT_IMAGE", "createdAt": "2022-02-25T16:22:35.649Z", "retry": { "attempt": 2 } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/:id" } }, "id": "yf6cd8cd-d869-4695-af69-29c78b6f041a", "type": "CROPPED_PORTRAIT", "createdAt": "2022-02-25T16:22:35.649Z" }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/:id" } }, "id": "vf6cd8cd-d869-4695-af69-29c78b6f041a", "type": "CROPPED_DOCUMENT", "createdAt": "2022-02-25T16:22:35.649Z" }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/:id" } }, "id": "if6cd8cd-d869-4695-af69-29c78b6f041a", "type": "CROPPED_SIGNATURE", "createdAt": "2022-02-25T16:22:35.649Z" } ], "previousAttempts": [ { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/320f341f-050b-4351-9585-5f16dba6667c" } }, "id": "320f341f-050b-4351-9585-5f16dba6667c", "type": "GOVERNMENT_ID", "createdAt": "2022-02-23T15:51:01.603Z", "retry": { "attempt": 1 } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/ce0bb6d8-82d5-4ad0-b348-e7fb97edc64f" } }, "id": "ce0bb6d8-82d5-4ad0-b348-e7fb97edc64f", "type": "SELFIE", "createdAt": "2022-02-25T16:22:35.649Z", "retry": { "attempt": 1 } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/639116d2-c1ff-44f3-bdba-af7e1e1d0bdd" } }, "id": "639116d2-c1ff-44f3-bdba-af7e1e1d0bdd", "type": "BACK_IMAGE", "createdAt": "2022-02-25T16:22:35.649Z", "retry": { "attempt": 1 } }, { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/92faff31-02c5-43af-b09a-c7eac93c59a4" } }, "id": "92faff31-02c5-43af-b09a-c7eac93c59a4", "type": "FRONT_IMAGE", "createdAt": "2022-02-25T16:22:35.649Z", "retry": { "attempt": 1 } } ] }, "size": 7 }
Map getVerifiedDataByType(String transactionId, String type)
-
For up to 30 minutes after a PingOne Verify decision you can retrieve information about a specified type of data obtained by all the verification service providers during the specified transaction.
Use the
type
parameter to specify which type of personally identifiable information (PII) to retrieve.Available options are:
-
GOVERNMENT_ID
-
BARCODE
-
FRONT_IMAGE
-
BACK_IMAGE
-
SELFIE
-
CROPPED_SIGNATURE
-
CROPPED_DOCUMENT
-
CROPPED_PORTRAIT
-
VOICE_SAMPLE
-
VOICE_INPUT
-
END_USER_CLIENT
-
BIOGRAPHIC_MATCH
Returns a map containing information about the data returned from the verification service used, or
null
if the specified transaction is not available.This method only lists the ID and type of verified data available, as the actual data could be large binary files such as images.
Use the
getVerifiedData()
method to get the actual verified data. -
Map getVerifiedData(String transactionId, String verifiedDataId)
-
For up to 30 minutes after a PingOne Verify decision you can retrieve the actual data the verification service obtained during the specified transaction.
Returns a map containing verified data returned from a verification service used, or
null
if the specified transaction or verified data ID are not available.To obtain the
verifiedDataId
parameter, use thegetAllVerifiedData()
orgetVerifiedDataByType()
methods.View example return data
{ "_links":{ "self":{ "href":"https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b/verifiedData/34613a50-672c-428f-8db9-c67fe09fc4cc" }, "environment":{ "href":"https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "user":{ "href":"https://api.pingone.com/v1/users/a27dec16-1e80-4f10-a261-2cac46a12b78" }, "transaction":{ "href":"https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/a27dec16-1e80-4f10-a261-2cac46a12b78/verifyTransactions/0e2ed48f-6c3a-46c4-bcb5-3a6bd791348b" } }, "id":"84170421-62c6-49a5-b343-496bee93c206", "type":"GOVERNMENT_ID", "createdAt":"2022-02-23T15:51:01.603Z", "data":{ "addressCity":"this city", "addressState":"this state", "addressZip":"11111", "birthDate":"1970-01-01", "country":"USA", "expirationDate":"1970-01-01", "firstName":"given", "gender":"", "idNumber":"11111", "issueDate":"1970-01-01", "issuingCountry":"", "lastName":"surname", "nationality":"", "weight":"" }, "retry":{ "attempt":1 } }
Map getUser()
-
Retrieve the user’s profile information from PingOne.
Returns a map containing user profile data from PingOne, or
null
if profile data is not available.View example return data
{ "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "population": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/populations/706ff5fd-c2bc-4c2d-9037-bfa39112a651" }, "devices": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/devices" }, "roleAssignments": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/roleAssignments" }, "password": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "password.reset": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "password.set": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "password.check": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "password.recover": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "linkedAccounts": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/linkedAccounts" }, "account.sendVerificationCode": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5" } }, "_embedded": { "population": { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/populations/706ff5fd-c2bc-4c2d-9037-bfa39112a651" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" } }, "id": "706ff5fd-c2bc-4c2d-9037-bfa39112a651" } }, "id": "2f9c3699-217e-4acb-9e80-9649311b3eb5", "environment": { "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "population": { "id": "706ff5fd-c2bc-4c2d-9037-bfa39112a651" }, "createdAt": "2020-03-11T18:50:09.074Z", "enabled": true, "lifecycle": { "status": "ACCOUNT_OK" }, "mfaEnabled": false, "updatedAt": "2020-03-11T18:50:09.074Z", "username": "jamesjoyce" }
Map updateUser(Map body)
-
Update the user’s profile information in PingOne.
Specify the new data to use in the
body
parameter.Returns a map containing the updated user profile data from PingOne.
View example
body
parameter{ "username": "joe@example.com", "name": { "formatted": "Joe Smith", "given": "Joe", "middle": "H.", "family": "Smith", "honorificPrefix": "Dr.", "honorificSuffix": "IV" }, "nickname": "Putty", "title": "Senior Director", "preferredLanguage": "en-gb;q=0.8, en;q=0.7", "locale": "en-gb", "email": "joe@example.com", "primaryPhone": "+1.2225554444", "mobilePhone": "+1.4445552222", "photo": { "href": "https://images.example.com?imgID=1255123412" }, "address": { "streetAddress": "123 Main Street", "locality": "Springfield", "region": "WA", "postalCode": "98701", "countryCode": "US" }, "accountId": "5", "type": "tele", "timezone": "America/Los_Angeles" }
Void deleteUser()
-
Delete the user’s profile information from PingOne.
Throws a
ScriptedVerifyTransactionsException
if unable to delete the user from PingOne.View example return data
{ "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "population": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/populations/706ff5fd-c2bc-4c2d-9037-bfa39112a651" }, "devices": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/devices" }, "roleAssignments": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/roleAssignments" }, "password": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "password.reset": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "password.set": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "password.check": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "password.recover": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/password" }, "linkedAccounts": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5/linkedAccounts" }, "account.sendVerificationCode": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/2f9c3699-217e-4acb-9e80-9649311b3eb5" } }, "_embedded": { "population": { "_links": { "self": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/populations/706ff5fd-c2bc-4c2d-9037-bfa39112a651" }, "environment": { "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" } }, "id": "706ff5fd-c2bc-4c2d-9037-bfa39112a651" } }, "id": "2f9c3699-217e-4acb-9e80-9649311b3eb5", "environment": { "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6" }, "population": { "id": "706ff5fd-c2bc-4c2d-9037-bfa39112a651" }, "createdAt": "2020-03-11T18:50:09.074Z", "enabled": true, "lifecycle": { "status": "ACCOUNT_OK" }, "mfaEnabled": false, "updatedAt": "2020-03-11T18:50:09.074Z", "username": "jamesjoyce" }