The Zurich release has arrived! Interested in new features and functionalities? Click here for more

Update file data in New line for the POST REST API

Omkar Jori
Tera Expert

Hi,
I have developed the POST REST API integration of ServiceNow and Gitlab, where every time the particular case is created from the catalog it is creating a .JSON file in Gitlab with the Field values.
Current all values are coming in single as below.

{"Sysid":"7406275383bfc610994458a6feaad3ac","Case_no":"CS0001633","Action":"start","Multiple_Servers_Information":[{"Host_name":"PS LinuxApp01","Target_environment":"AWS","OS_type":"Linux Server","Process_name":"HTTPD"},{"Host_name":"PS LinuxApp02","Target_environment":"AWS","OS_type":"Linux Server","Process_name":"HTTPD"}]}

 

As per JSON format values should come below format.

{

    "Sysid":"7f5ded8f833f4610994458a6feaad3f0",

    "Action":"stop",

    "Multiple_Servers_Information": [

        {

            "Host_name" : " PS LinuxApp01",

            "Target_Environment": "AWS",

            "OS_Type":" Linux Server ",

            "Process_Name":"MariaDB"

        },

        {

            "Host_name":" PS LinuxApp02",

            "Target_Environment":"AWS",

            "OS_Type":" Linux Server ",

            "Process_Name":"PostFix"

        }

    ]

}

 

Code: 

var caseData;

caseData = {
            "Sysid": current.getValue("sys_id"),
            "Case_no": current.getValue("number"),
            "Action": current.getValue("u_action"),
            "Multiple_Servers_Information": multiple_output  //MultiRow variable set field
};

var content = caseData;

var request = new sn_ws.RESTMessageV2();
request.setHttpMethod('POST');
request.setRequestHeader('content-type', 'application/json');
request.setRequestHeader('accept', 'application/json');

 

var requestBody = {
branch: 'main',
commit_message: 'Creating a file for Case(' + current.getValue("number") + ')',
content: JSON.stringify(content),
};


request.setRequestBody(JSON.stringify(requestBody));
var response = request.execute();
var responseBody = response.getBody();

 

Note: All the Authentication and endpoint details are removed from the code because of security constraints.

 

Appreciate your inputs will be help for to fix this issue.

 

1 ACCEPTED SOLUTION

Hi @Omkar Jori Try with the highlighted Changes

 

var caseData = {

    "Sysid": current.getValue("sys_id"),

    "Action": current.getValue("u_action"),

    "Multiple_Servers_Information": multiple_output 

};

 

 

var content = JSON.stringify(caseData, null, 3); 

 

var request = new sn_ws.RESTMessageV2();

request.setHttpMethod('POST');

request.setRequestHeader('content-type', 'application/json');

request.setRequestHeader('accept', 'application/json');

var requestBody = {

    branch: 'main',

    commit_message: 'Creating a file for Case(' + current.getValue("number") + ')',

    content: content 

request.setRequestBody(JSON.stringify(requestBody));

 

try {

    var response = request.execute();

    var responseBody = response.getBody();

    gs.info('Response: ' + responseBody);

} catch (ex) {

    gs.error('Error occurred: ' + ex.getMessage());

}

View solution in original post

3 REPLIES 3

Omkar Jori
Tera Expert

Data stored in the Case form:

OmkarJori_0-1723514838251.png

 

Catalog script to store the the Multi Row Variable set data to a field: 

 

var FR = producer.multiple_servers_information;
var arr = [];
var parsedData = JSON.parse(FR);
for (var i = 0; i < parsedData.length; i++) {
    var obj = {};
    var gr = new GlideRecord('cmdb_ci_server');
    gr.addQuery('sys_id', parsedData[i].host_name);
    gr.query();
    if (gr.next()) {
        obj['Host_name'] = gr.getDisplayValue("name");
    }
    obj['Target_environment'] = parsedData[i].target_environment;
    obj['OS_type'] = parsedData[i].os_type;
    obj['Process_name'] = parsedData[i].process_name;
    arr.push(obj);
}
current.setValue('u_multiple_servers_information', JSON.stringify(arr));

Hi @Omkar Jori Try with the highlighted Changes

 

var caseData = {

    "Sysid": current.getValue("sys_id"),

    "Action": current.getValue("u_action"),

    "Multiple_Servers_Information": multiple_output 

};

 

 

var content = JSON.stringify(caseData, null, 3); 

 

var request = new sn_ws.RESTMessageV2();

request.setHttpMethod('POST');

request.setRequestHeader('content-type', 'application/json');

request.setRequestHeader('accept', 'application/json');

var requestBody = {

    branch: 'main',

    commit_message: 'Creating a file for Case(' + current.getValue("number") + ')',

    content: content 

request.setRequestBody(JSON.stringify(requestBody));

 

try {

    var response = request.execute();

    var responseBody = response.getBody();

    gs.info('Response: ' + responseBody);

} catch (ex) {

    gs.error('Error occurred: ' + ex.getMessage());

}

Thank you @SK Chand Basha , It worked like a magic!!