Skip to main content

ServiceNow SAMPLE REST MESSAGE POST - Service Catalog Cart API - How to Order a Catalog Item

 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

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

Popular posts from this blog

ServiceNow check for null or nil or empty (or not)

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g.  var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord  addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ())  option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){

Get URL Parameter - server side script (portal or classic UI)

Classic UI : var sURL_editparam = gs . action . getGlideURI (). getMap (). get ( ' sysparm_aparameter ' ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); } Portal : var sURL_editparam = $sp . getParameter ( " sysparm_aparameter " ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); }