Rest Api - check if user exist. Yes? push it to 'caller_id'. No? Create that user and push it to 'caller_id'

Yaron Rabinovi1
Tera Expert

Hi, 

I wrote a Rest API that creates an incident.
I need that when the user exists in the system, he will enter the caller_id field. If not, it will create the user and put it in the caller_id.

I send the data via postman

from postman:

{
    "caller": "Yaron Rabinovich",
    "first" : "Yaron",
    "last" : "Rabinovich",

    "category" : "network",
    "impact": "2",
    "urgency": "2",
    "short_description": "Look mom, I did it",
    "description": "Its so cool",
    "contact_type": "Ext"
}
 
REST API:

function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

    var requestBody = request.body.data;

    var inc = new GlideRecord('incident');
    inc.initialize();
    inc.caller_id = getCaller(requestBody.caller, requestBody.first, requestBody.last);
    inc.category = requestBody.category;

    inc.short_description = requestBody.short_description;
    inc.description = requestBody.description;
    inc.impact = requestBody.impact;
    inc.urgency = requestBody.impact;
    inc.description = requestBody.description;
    inc.contact_type = requestBody.contact_type;
    inc.insert();

    function getCaller(caller, first, last) {
        var user = new GlideRecord('sys_user');
        user.addQuery('caller_id', caller);
        user.query();

        if (user.next()) {
            return user.caller;
        } else if (!user.next()) {
            user.caller = caller;
            user.first_name = first;
            user.last_name = last;
            user.update();
           return user.caller;
}
    }

})(request, response);

 

1 ACCEPTED SOLUTION

Muhammad Khan
Mega Sage
Mega Sage

Hi,

Modified your function a bit, so try using this function.

 function getCaller(caller, first, last) {
        var user = new GlideRecord('sys_user');
        user.addQuery('name', caller);
        user.query();

        if (user.hasNext()) {
            user.next();
            return user.sys_id.toString();
        } else {
            var userNew = new GlideRecord('sys_user');
            userNew.initialize();
            userNew.name = caller;
            userNew.first_name = first;
            userNew.last_name = last;
            var sysID = userNew.insert();
           return sysID;
      }
}

View solution in original post

1 REPLY 1

Muhammad Khan
Mega Sage
Mega Sage

Hi,

Modified your function a bit, so try using this function.

 function getCaller(caller, first, last) {
        var user = new GlideRecord('sys_user');
        user.addQuery('name', caller);
        user.query();

        if (user.hasNext()) {
            user.next();
            return user.sys_id.toString();
        } else {
            var userNew = new GlideRecord('sys_user');
            userNew.initialize();
            userNew.name = caller;
            userNew.first_name = first;
            userNew.last_name = last;
            var sysID = userNew.insert();
           return sysID;
      }
}