ServiceNow SAMPLE REST MESSAGE POST - Service Catalog Cart API - How to Order a Catalog Item on a Remote Instance
see Service Catalog API > jump to 'order_now' section
OPTION 1: Without a REST Message
var request = new sn_ws.RESTMessageV2();
var sn_instance = 'https://dev223167.service-now.com';
//var cat_item_sysid= '7198552237b1300054b6a3549dbe5dea'; //--e.g. Adobe Acrobat - item with no variables
var cat_item_sysid= '50113326979e4d1021983d1e6253af5e'; //--e.g. Apple USB-C charge cable - item with 2 variables
var catalogapi_url='/api/sn_sc/servicecatalog/items/' + cat_item_sysid + '/order_now';
request.setEndpoint(sn_instance + catalogapi_url);
request.setHttpMethod('POST');
//--OPTION 1:
//var user = 'ruen.test';
//var password = '';
//request.setBasicAuth(user,password);
//--OPTION 2:
var authentication_type='basic';
var profile_name='6f7f927f47a346104410edf1d16d4376';//--sys_id of sys_auth_profile_basic record
request.setAuthenticationProfile(authentication_type, profile_name);
request.setRequestHeader("Accept","application/json");
//data
var requested_for = '62826bf03710200044e0bfc8bcbe5df1'; //--'Abel Tuter', replace with sysid of user
var business_justification='THIS IS A TEST--2024';
var JSON_cat_item=
"{";
JSON_cat_item+= "sysparm_quantity: 1";
JSON_cat_item+=",";
JSON_cat_item+= "variables: {";
JSON_cat_item+= "requested_for: '" + requested_for + "',";//--MUST contain the ' ' or throws an error
JSON_cat_item+= "justification: '" + business_justification +"'";
JSON_cat_item+= "}";
JSON_cat_item+= "}"
request.setRequestBody(JSON_cat_item);
var response = request.execute();
gs.log('RESP='+response.getBody());
var json_string=JSON.parse(response.getBody());
var sReqNum=json_string.result.number;
gs.print('REQUEST NUMBER=' + sReqNum);
OPTION 2: Using a REST Message
- enter the endpoint in this format:
https://dev126222.service-now.com/api/sn_sc/servicecatalog/items/${sys_id}/order_now
use variable substitution to populate the sys id. Note the sys id corresponds to the catalog item.
- add the HTTP Headers:
- add the HTTP Content:
example:
{
"sysparm_quantity":"1",
"sysparm_requested_for":"ruen.catitem.user",
"variables":{
"test_variable":"this is a test 1",
"test_variable_2":"this is a test 2"
}
}
or here's how you could use variable substitution in the content:
{
"sysparm_quantity":"1",
"sysparm_requested_for":"ruen.catitem.user",
"variables":{
"test_variable":"${variable_1}",
"test_variable_2":"${variable_2}"
}
}
Preview Script Usage
try {
var r = new sn_ws.RESTMessageV2('RemoteServiceNowInstance', 'post_new_request');
//var authentication_type = 'basic';
//var profile_name = '6016d39dc3ef3510311f1c5ce00131f1';
//--override authentication profile
//--authentication type ='basic'/ 'oauth2'
//r.setAuthenticationProfile(authentication_type, profile_name);
r.setStringParameterNoEscape('sys_id', '36376791c3637510311f1c5ce001319c');
r.setStringParameterNoEscape('sysparm_quantity', '1');
r.setStringParameterNoEscape('variable_2', 'test 2');
r.setStringParameterNoEscape('variable_1', 'test 1');
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
gs.print('response code='+httpStatus);
//--get the number of the new REQ:
var resp=JSON.parse(responseBody);
gs.print(resp.result.number); //--e.g. REQ
}
catch(ex) {
var message = ex.message;
}
Comments
Post a Comment