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!!