How to add message in API Call

Sruthi_2511
Tera Contributor

Here is the requirement to add error message for "Change Registration" Modal.  (which is used by API users) alone

Example:

Close code: Successful

State: Cancel (4 )----error message should be shown in API users alone : "Change Registration Modal cannot be cancelled when the close code is "Successful",it must be "Unsuccessful" 

7 REPLIES 7

@Sruthi_2511 

it's simple -> you can't add your customized error message if 3rd party is using OOTB Table API

you need to use scripted REST API

where are you stuck for your scripted REST API?

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

debug  its not logging it simply skipping my condition and going to last message" change is successful "

return {
message: 'Change updated successfully'
};

(function process(request, response) {
    try {
        var sysId = request.pathParams.sys_id;
        var body = request.body.data;

        gs.info('DEBUG: Script started for sys_id=' + sysId);


        var gr = new GlideRecord('change_request');
        if (!gr.get(sysId)) {
            gs.info('DEBUG: No record found for sys_id=' + sysId);
            response.setStatus(404);
            return {
                error: 'Change request not found'
            };
        }

        var modelName = '';
        if (gr.change_model) {
            var cm = new GlideRecord('change_model');
            if (cm.get(gr.change_model)) {
                modelName = cm.getValue('name');
            }
        }
        gs.info('DEBUG: Model Name = ' + modelName);


        if (modelName == 'Change Registration') {
            var stateVal = body.state || gr.getValue('state');
            var closeCode = (body.close_code || gr.getValue('close_code') || '').toString().toLowerCase();

            gs.info('DEBUG: Incoming state=' + stateVal + ', close_code=' + closeCode);


            var stateNum = parseInt(stateVal, 10);


            if (stateNum == 3 && closeCode != 'successful') {
                gs.info('DEBUG: Validation failed - Close with unsuccessful');
                response.setStatus(400);
                return {
                    error: "For changes using this model, close if Successful or cancel if Unsuccessful."
                };
            }


         
        }


        for (var field in body) {
            gr.setValue(field, body[field]);
        }
        gr.update();

        gs.info('DEBUG: Update completed successfully for sys_id=' + sysId);
        response.setStatus(200);
        return {
            message: 'Change updated successfully'
        };

    } catch (e) {
        gs.error('ERROR in Change API: ' + e.message);
        response.setStatus(500);
        return {
            error: 'Unexpected error: ' + e.message
        };
    }
})(request, response);

 

@Sruthi_2511 

it means somewhere the value is not getting matched correctly

 

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader