- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-25-2017 07:47 AM
New to using the Scripted REST API. I basically want to do a GET to the sys_user_grmember table to list the records of user within a group. However, using REST Explorer API a simple GET to the table provides sys_ids for the User and Group instead of the Names. So, without doing another REST call, I would like to create a scripted REST API that pulls the User Name and Group Name values for those sys_id from within the sys_user_grmember table.
I am having issues with trying to produce the Response Body output as I only return the last record. How would I create the Response Body output in a way that would be easily consumed?? I'm assuming I'm providing the Response Body output incorrectly.
Here is my script within the Scripted REST API:
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
// implement resource here
var rec = {};
var gr = new GlideRecord("sys_user_grmember");
gr.addEncodedQuery('group.source=null');
gr.query();
while (gr.next()) {
rec = {
"grmember_sysid": gr.sys_id,
"user": gr.user.name,
"user_sysid": gr.user.sys_id,
"group": gr.group.name,
"group_sysid": gr.group.sys_id
};
}
return rec;
})(request, response);
Here is the Response Body output:
{
"result": {
"grmember_sysid": "fcd34380db51320087fdff561d96197f",
"user": "Tiffany Knust",
"user_sysid": "7d826bf03710200044e0bfc8bcbe5d26",
"group": "CRM Engineering Team",
"group_sysid": "68838b00db51320087fdff561d9619e1"
}
}
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-25-2017 07:50 AM
Try this instead:
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
// implement resource here
var output = [];
var gr = new GlideRecord("sys_user_grmember");
gr.addEncodedQuery('group.source=null');
gr.query();
while (gr.next()) {
var rec = {
"grmember_sysid": gr.getValue('sys_id'),
"user": gr.user.name.toString(),
"user_sysid": gr.getValue('user'),
"group": gr.group.name.toString(),
"group_sysid": gr.getValue('group')
};
output.push(rec);
}
return output;
})(request, response);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-25-2017 07:50 AM
Try this instead:
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
// implement resource here
var output = [];
var gr = new GlideRecord("sys_user_grmember");
gr.addEncodedQuery('group.source=null');
gr.query();
while (gr.next()) {
var rec = {
"grmember_sysid": gr.getValue('sys_id'),
"user": gr.user.name.toString(),
"user_sysid": gr.getValue('user'),
"group": gr.group.name.toString(),
"group_sysid": gr.getValue('group')
};
output.push(rec);
}
return output;
})(request, response);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-25-2017 08:01 AM
Dang I was so close...
Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-25-2017 08:52 AM
One additional question....
Is it better to create this as an array as you listed or one big object? or does it matter to the consumer?
I would think this be a specific Object structure, no?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-25-2017 09:33 AM
Because you are getting multiple attributes per record, it makes more sense (to me) to have an array of objects. Each array element represents one record.