Here’s an example of how I have used it before
if(callbacks.isEmpty()){
callbacksBuilder.stringAttributeInputCallback("attrib","Enter your attribute",null,true,null,false)
} else {
logger.error(callbacks);
input = callbacks.getStringAttributeInputCallbacks().get(0);
outcome = "true";
}
If you want to send the data for Policies or Failed Policies instead of null, you can use the below functions. I’ve written the functions in such a way that it maintains the structure of policies and failed policies sent by out of the box node Attribute Collector.
function getPoliciesForAProperty(property, managedObjectContainer) {
// Call to IDM to get policy details for all properties of giveb managed object
var response = openidm.read("policy/" + managedObjectContainer + "/*");
var properties = response? response.get("properties"): null;
if(!properties || !properties.length){
return false
}
for (var i = 0; i<properties.length; i++){
if (properties[i].name === property){
return { "policyRequirements" : properties[i].policyRequirements,
"name": properties[i].name,
"policies" : properties[i].policies,
"conditionalPolicies" : properties[i].conditionalPolicies,
"fallbackPolicies" : properties[i].fallbackPolicies
}
}
}
return false
}
function validateProperty(propertyMap, managedObjectContainer, managedObject) {
var response = openidm.action("policy/" + managedObjectContainer + "/" + managedObject, "validateProperty", propertyMap);
var policyValidationStatus = response? response.get("result"): true;
if(policyValidationStatus){
return null
}else {
var failedPoliciesArray = []
var failedPolicyRequirements = response.get("failedPolicyRequirements")
for (var i = 0; i < failedPolicyRequirements.length; i++){
failedPoliciesArray[i] = failedPolicyRequirements[i].policyRequirements.toString().slice(1,-1)
}
return failedPoliciesArray
}
}
Reference for failed policy validation: Manage policies over REST :: IDM 7.4.1 (forgerock.com)