Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions Integration/Scripted REST Api/Group Membership API/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Group Membership API- Scripted REST API
## Overview
This API provides a simple, secure way to reterive all members of a specified user group in ServiceNow. It allows integrations, Service Portal widgets, or external systems to query group membership without giving direct access to user tables

### API Details
- **API Name**: Group Membership API
- **API ID**: group_membership_api
- **ResourceName**: Members
- **Relative Path**: /members
- **HTTP Method**: GET
- **Query Parameter**: groupName (required)

## Request Format

### Example Request
GET https://<instance>.service-now.com/api/1819147/group_membership_api/members?groupName=Hardware

### Example Response
```json
{
{
"result": {
"groupName": "Hardware",
"totalMembers": 7,
"member": [
{
"userName": "beth.anglin",
"displayName": "Beth Anglin",
"email": "beth.anglin@example.com",
"active": "true"
},
{
"userName": "itil",
"displayName": "ITIL User",
"email": "itil@example.com",
"active": "true"
},
{
"userName": "bow.ruggeri",
"displayName": "Bow Ruggeri",
"email": "bow.ruggeri@example.com",
"active": "true"
},
{
"userName": "david.dan",
"displayName": "David Dan",
"email": "david.dan@example.com",
"active": "true"
},
{
"userName": "david.loo",
"displayName": "David Loo",
"email": "david.loo@example.com",
"active": "true"
},
{
"userName": "don.goodliffe",
"displayName": "Don Goodliffe",
"email": "don.goodliffe@example.com",
"active": "true"
},
{
"userName": "fred.luddy",
"displayName": "Fred Luddy",
"email": "fred.luddy@example.com",
"active": "true"
}
]
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var groupName = request.queryParams.groupName;
var members = [];
if (!groupName) {
response.setStatus(400);
return {
error: "groupName query parameter is required"
};
}
var grGrp = new GlideRecord('sys_user_group');
grGrp.addQuery('name', groupName);
grGrp.query();
if (!grGrp.next()) {
response.setStatus(400);
return {
error: "Group name doesn't found"
};
}
var grGrpMem = new GlideRecord('sys_user_grmember');
grGrpMem.addQuery("group.name", groupName);
grGrpMem.query();
while (grGrpMem.next()) {
members.push({
userName: grGrpMem.user.user_name.toString(),
displayName: grGrpMem.user.name.toString(),
email: grGrpMem.user.email.toString(),
active: grGrpMem.user.active.toString()
});
}
return {
groupName: groupName.toString(),
totalMembers: members.length,
member: members
};



})(request, response);
Loading