catalog integration via Scripted REST API

Heshika1
Tera Contributor

I have a catalog item integrated with a scripted REST API, following guidance from a community post. The test integration functions as expected, and REQ and RITM tickets are created successfully. However, the issue arises as reference fields are not being populated when requests are created.

 

 

Jason data  format

 

{ 

'sysparm_id': 'c916f905db70c6105330be32f39619dd',

'sysparm_quantity': '1',

'variables': {

'requested_for' : 'Abel Tuter',

'requested_by' : 'Abel Tuter,

'end_date' : '25/03/2024',

'start_date' : '18/03/2024'

}

}

 

 

 

 

 

 

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

var reqbody = request.body.dataString;

try{
var parser = new global.JSON();
var parsedData = parser.decode(reqbody);

var requestedFor = parsedData.requested_for;
var requestedBy = parsedData.requested_by;
var startDate = parsedData.start_date;
var endDate = parsedData.end_date;

var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId);

// give here the sys_id of the catalog item under which those variables are present

// you can query sys_user and get the value and then set those reference variables
	
var grUser = new GlideRecord('sys_user');
grUser.get('requested_for',requestedFor);

var item = cart.addItem('c916f905db70c6105330be32f39619dd', 1);

//fill in the variables on the request item form
cart.setVariable(item,"requested_for", requestedFor);
cart.setVariable(item,"requested_by", requestedBy);
cart.setVariable(item,"start_date", startDate);
cart.setVariable(item,"end_date", endDate);

var rc = cart.placeOrder();

// rc is the request number; you can query RITM table and get the RITM number

var reqNumber = rc.number;

var ritm = new GlideRecord('sc_req_item');
ritm.get('request.number', reqNumber);
var ritmNumber = ritm.number;

var res = {};
res["status"] = "Success";
res["requestNumber"] = reqNumber;
res["requestItemNumber"] = ritmNumber;
//response.setBody(JSON.stringify(res));
response.setBody(res);

}
catch(ex){
//var rest = {};
res["status"] = "Error";
res["message"] = ex.message;
response.setBody(JSON.stringify(res));

	//result.result = "Failed with error: " + err.toString();
//response.setStatus(500);
		//gs.eventQueue()
}

})(request, response);

 

 

0 REPLIES 0