API response

Ajvada
Tera Contributor

hello SN community , i was looking for some help with a sn script. I created a onbefore script for a transform map that updates a table via api(postman). I am trying to edit the response body that a user will receive when they submit a incident via api. i want there to be a error message in the response body if a user submits a invalid assignment group. 

below is the script i have currently. 

 

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
// Get the assignedTo and assignmentGroup sys_ids
var assignedTo = getUserSysId(source.u_assigned_to);

var assignmentGr = getGroupSysId(source.u_assignment_group);

var choresTeam = gs.getProperty('chores.team'); //Sys_Id of chores team

 

// Check if the assignmentGroup is not Chores Team
if (assignmentGr !== choresTeam) {

log.warn("Assignment Group must be Chores Team");
 
ignore = true;
return;

}


// Check if assignedTo is empty or user is not in Chores Team
if (assignedTo == "" || !isUserInChoresTeam(assignedTo)) {
log.warn(" Assigned to field is empty or User is not on Chores Team , record not created");
ignore = true;
return;
}



// Function to check if a user is a member of the Chores Team
function isUserInChoresTeam(userId) {
var isMember = false;
var userGrMember = new GlideRecord('sys_user_grmember');
userGrMember.addQuery('user', userId);


// Query the user group memberships
userGrMember.query();

while (userGrMember.next()) {
var group = userGrMember.group;
if (group && group.name == 'Chores Team') {
isMember = true;
break;
}
}

return isMember;
}

// Function to get the sys_id of a user group
function getGroupSysId(userId) {
var validGroup = new GlideRecord('sys_user_group');
validGroup.addQuery('name=' + userId);


validGroup.query();

if (validGroup.next()) {
return validGroup.sys_id.toString();
}
}

// Function to get the sys_id of a user
function getUserSysId(userId) {
var validUsers = new GlideRecord('sys_user');

validUsers.addEncodedQuery('user_name=' + userId + '^ORfirst_name=' + userId + '^ORlast_name=' + userId + '^ORuser=' + userId);


validUsers.query();

if (validUsers.next()) {
return validUsers.sys_id.toString();
}
}


})(source, map, log, target);
1 REPLY 1

VarunS
Kilo Sage

Try the below script

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
    // Get the assignedTo and assignmentGroup sys_ids
    var assignedTo = getUserSysId(source.u_assigned_to);
    var assignmentGr = getGroupSysId(source.u_assignment_group);
    var choresTeam = gs.getProperty('chores.team'); // Sys_Id of chores team

    // Initialize an error message
    var errorMessage = "";

    // Check if the assignmentGroup is not Chores Team
    if (assignmentGr !== choresTeam) {
        errorMessage = "Assignment Group must be Chores Team";
        log.warn(errorMessage);
        ignore = true;
        gs.addErrorMessage(errorMessage);
        return;
    }

    // Check if assignedTo is empty or user is not in Chores Team
    if (assignedTo == "" || !isUserInChoresTeam(assignedTo)) {
        errorMessage = "Assigned to field is empty or User is not on Chores Team, record not created";
        log.warn(errorMessage);
        ignore = true;
        gs.addErrorMessage(errorMessage);
        return;
    }

    // Function to check if a user is a member of the Chores Team
    function isUserInChoresTeam(userId) {
        var isMember = false;
        var userGrMember = new GlideRecord('sys_user_grmember');
        userGrMember.addQuery('user', userId);

        // Query the user group memberships
        userGrMember.query();
        while (userGrMember.next()) {
            var group = userGrMember.group;
            if (group && group.name == 'Chores Team') {
                isMember = true;
                break;
            }
        }

        return isMember;
    }

    // Function to get the sys_id of a user group
    function getGroupSysId(groupId) {
        var validGroup = new GlideRecord('sys_user_group');
        validGroup.addQuery('name', groupId);
        validGroup.query();
        if (validGroup.next()) {
            return validGroup.sys_id.toString();
        }
        return "";
    }

    // Function to get the sys_id of a user
    function getUserSysId(userId) {
        var validUsers = new GlideRecord('sys_user');
        validUsers.addEncodedQuery('user_name=' + userId + '^ORfirst_name=' + userId + '^ORlast_name=' + userId + '^ORuser=' + userId);
        validUsers.query();
        if (validUsers.next()) {
            return validUsers.sys_id.toString();
        }
        return "";
    }
})(source, map, log, target);