The CreatorCon Call for Content is officially open! Get started here.

How to set correct request using script

Akhil2001
Tera Contributor

Hi Everyone,

I'm getting below error while calling api.

 

Error: Response body{"statusCode":400,"titleMessage":"Bad Request","helpMessage":"Please correct the input object","userMessage":"There was an error while processing JSON content"}

 

Code:

var status = workflow.scratchpad.appstatus;
var collibra_id = current.variables.colib_task_id;
workflow.info(collibra_id + ',' + status);
var approvalStatus1;
var approvalStatus2;
 
if (status == "true") {
    approvalStatus1 = "true";
    approvalStatus2 = "false";
 
} else {
    approvalStatus1 = "false";
    approvalStatus2 = "true";
 
}
var number = current.number;
try {
    var r_colli = new sn_ws.RESTMessageV2('Collibra', 'sentResponseToColli');
 
 
  
   
 
    r_colli.setRequestBody({"taskIds": [
            "${colli_id}"
        ],
        "formProperties": {
            "success": "${approvalStatus1}",
            "failure": "${approvalStatus2}"
    }
});
    var responseFromColli = r_colli.execute();
    var responseBody = responseFromColli.getBody();
    var httpstatus = responseFromColli.getStatusCode();
    workflow.info('Response body' + responseBody);
    workflow.info('status' + httpstatus);
 
 
 
 
} catch (ex) {
 
}
8 REPLIES 8

Shruti
Mega Sage
Mega Sage

 

var status = workflow.scratchpad.appstatus;
var collibra_id = current.variables.colib_task_id.toString();
workflow.info(collibra_id + ',' + status);
var approvalStatus1;
var approvalStatus2;
 
if (status == "true") {
    approvalStatus1 = "true";
    approvalStatus2 = "false";
 
} else {
    approvalStatus1 = "false";
    approvalStatus2 = "true";
 
}
var number = current.number;
try {
    var r_colli = new sn_ws.RESTMessageV2('Collibra', 'sentResponseToColli');
 
 var body = {"taskIds": [
            collibra_id
        ],
        "formProperties": {
            "success": approvalStatus1,
            "failure": approvalStatus2
    }
};
 
    r_colli.setRequestBody(JSON.stringify(body));
    var responseFromColli = r_colli.execute();
    var responseBody = responseFromColli.getBody();
    var httpstatus = responseFromColli.getStatusCode();
    workflow.info('Response body' + responseBody);
    workflow.info('status' + httpstatus);
 
 
 
 
} catch (ex) {
 
}

 

Hi Shruthi,
Getting the same error again after using above code. Please suggest.

Please try with the updated code

var status = workflow.scratchpad.appstatus;
var collibra_id = current.variables.colib_task_id.toString();
workflow.info(collibra_id + ',' + status);
var approvalStatus1;
var approvalStatus2;
 
if (status == "true") {
    approvalStatus1 = "true";
    approvalStatus2 = "false";
 
} else {
    approvalStatus1 = "false";
    approvalStatus2 = "true";
 
}
var number = current.number;
try {
    var r_colli = new sn_ws.RESTMessageV2('Collibra', 'sentResponseToColli');
 
 var body = {"taskIds": [
            collibra_id
        ],
        "formProperties": {
            "success": approvalStatus1,
            "failure": approvalStatus2
    }
};
 
    r_colli.setRequestBody(JSON.stringify(body));
    var responseFromColli = r_colli.execute();
    var responseBody = responseFromColli.getBody();
    var httpstatus = responseFromColli.getStatusCode();
    workflow.info('Response body' + responseBody);
    workflow.info('status' + httpstatus);
 
 
 
 
} catch (ex) {
 
}

-O-
Kilo Patron

If one looks at the reference for method setRequestBody(), one will notice that a string is expected as parameter. So the system will apply method toString() to the object passed in as parameter to setRequestBody() and it will come out as [object Object] - which is not a valid JSON.

So instead of

r_colli.setRequestBody({
	"taskIds": [
		"${colli_id}"
	],
	"formProperties": {
		"success": "${approvalStatus1}",
		"failure": "${approvalStatus2}"
	}
});

try

var requestBody = {
		"taskIds": [
		"${colli_id}"
	],
		"formProperties": {
			"success": "${approvalStatus1}",
			"failure": "${approvalStatus2}"
		}
	},
	requestBodyJSON = JSON.stringify(requestBody);

	r_colli.setRequestBody(requestBodyJSON);

 

But that is still not OK, cause tokens ${colli_id}, ${approvalStatus1} and ${approvalStatus2} are not replaced/"resolved".

Since you are providing the request body yourself, you should not be using parameters.

Simply write:

var requestBody = {
		"taskIds": [
		collibra_id // I'm assuming colli_id should get the value in collibra_id
	],
		"formProperties": {
			"success": approvalStatus1,
			"failure": approvalStatus2
		}
	},
	...

instead.

 

Also for the sake of humanities survival and thriving, please always format your code. 🙂