Get a first look at what's coming. The Developer Passport Australia Release Preview kicks off March 12. Dive in! 

Appli
Mega Sage

Hi

Let's assume you want to remotely update Short Description of your favorite Incident in ServiceNow instance. How to approach this by leveraging low-code development technique and Rest API? Please see below few very simple steps.

1) Create sub-flow in Flow Designer (instead of long/complex javascript code in Scripted REST API).

For demo purposes, I made this subflow in "global" scope and named it as "test".

Define Input' s (Incident ID, Incident Description) for SubFlow

find_real_file.png

Search (look up) for the record in Incident table, where Number is Incident ID (supplied as an Input, see above)

find_real_file.png

 

Update Incident Short Description with a new Incident description (supplied as an input, see above). 

find_real_file.png

In overall, sub-flow should look like:

find_real_file.png

2) Create Scripted RESTAPI with resource

Go to Scripted REST APIs, create new REST API ( I named it as "UpdatingINC") and make a new Resource there

find_real_file.png

 

Few notes:

HTTP method = POST (this is important)

Relative path (as API expects two parameters to submit): 

/updating/{incidentID}/{incidentDescr}

Script, which reads two parameters and passes these parameters to the subflow (global.test):

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

    // implement resource here
try {
	var pathParamsVar = request.pathParams;
	var inputs = {};
		inputs['incident_id'] = pathParamsVar.incidentID; 
		inputs['incident_decription'] = pathParamsVar.incidentDescr; 
		sn_fd.FlowAPI.getRunner().subflow('global.test').inBackground().withInputs(inputs).run();
	} catch (ex) {
		var message = ex.getMessage();
		gs.error(message);
	}
})(request, response);

3) Finally send HTTP POST to Rest API of your instance, to test how it works

I used my Linux server in the cloud to make such a call (updating a short description of incident INC0010112to "RestAPI-Forever" :

 curl -X POST "https://devXXXXX.service-now.com/api/96330/updatinginc/updating/INC0010112/RestAPI-Forever" -H "accept: application/json" -u "abel.tuter":"abel_password"

Of course, abel.tuter should have a role web_service_admin applied first !!

Hope it helps!

 

 

Comments
LaurentChicoine
Tera Guru

Thank you for sharing this innovative approach to scripted REST API. Flow designer adds a lot of built-in traceability that is useful for debugging therefore it's really interesting to be able to take advantage of it inside a scripted REST API.

Version history
Last update:
‎11-15-2020 11:54 AM
Updated by: