Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

How to get the Catalog task form fields, variables, MVRS variables by using scripted REST API call

srilaxmi1
Tera Contributor

Hi Team,

Can someone please help me.

I am using Scripted REST API, GET method.

Requirement: On the catalog task table(sc_task), passing the Catalog sys_id, Assignment group, if it matches from sc_task table. I need to get All the tasks information

1. sc_task form fields

2. sc_task variables

3. sc_task MVRS variables.

But in the response, I am unable to get the proper data. Please help me.

Relative path: /{cat_id}/{assignment_group}

Scripted REST API:

(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
    var cat_id = request.pathParams.cat_id;
    var assignment_group = request.pathParams.assignment_group;
    var taskInfo = {};
    var taskDetails = {};
    var ritmFields = {};
    try {
            var grTask = new GlideRecord('sc_task');
            grTask.addQuery("cat_item",cat_id);
            grTask.addQuery("assignment_group.name",assignment_group);
            grTask.query();
            var taskList = [];
            var sc_taskList = [];
            while (grTask.next()) {
                var task_number ={};
                task_number.number = grTask.number.toString();
                // get field values
                var fields = grTask.getFields();
                for (var i = 0; i < fields.size(); i++) {
                    var glideElement = fields.get(i);
                    if (glideElement.hasValue()) {
                        taskInfo[glideElement.getName().toString()] = glideElement.toString();
                    }   
                }
                //Get the object containing the catalog variables.
                sctaskVariables = grTask.variables;
                var mrvs = JSON.parse(grTask.variables.giam_multi_row_set);
                var iVar= {};
                var objc = {};
                //sc_taskList.push(grTask.number);
                iVar.sc_tasknumber = grTask.number.toString();
                for (var j = 0; j < mrvs.length; j++) {
                    iVar = mrvs[j];
                    taskList.push(iVar);
                    
                }
            }
        taskInfo["MVRS"] = taskList;
        return taskInfo;
    } catch (e) {
        response.setError(new sn_ws_err.NotFoundError('specified ritm was not found.')); // error - record not found
    }

})(request, response);

Response: I am unable to get proper response, it is clubbed together.

Only single sc_task number printed in result object and in MVRS, all catalog tasks clubbed together.

{
  "result": {
    "number": "SCTASK14779824",
    "u_stp_active": "false",
    "state": "1",
    "sys_created_by": "system",
    
    "request": "b6f85fe61b91dd14711a6397b04bcb1e",
    "assignment_group": "f91bbc3cdb4a5490f2821bbf299619c4",
    "urgency": "3",
    "MVRS": [
      {
        "test_application": "1612e701db86d090220749a239961246",
        "status": "Open"
      },
      {
        "test_application": "1612e701db86d090220749a239961247",
        "status": "Open"
      },
    ]
  }
}

Expected Response: 

If multiple tasks exists

[{

task: sc_task1

form fields: {}

variables:[{}]

MVRS: [{}]

},

{

task: sc_task2

form fields: {"number", "CATASK001", Assignment Group: "TEST", item: "TEST ITEM"}

variables:[{}]

MVRS: [{}]

}]

 

1 REPLY 1

Kieran Anson
Kilo Patron

If you want something pre-built, you can use SN Pro Tips — Get RITM Variables via SRAPI.

Looking at your script, you've crossed over using taskDetails and task_number meaning you'll not be creating the objects you want.

You can also leverage GlobalServiceCatalogUtil to get variable information.