Skip to content

Commit 04050bf

Browse files
authored
Hacktoberfest2025 contribution (Scripted Rest API) (#2257)
1 parent 2f4ee53 commit 04050bf

File tree

2 files changed

+110
-0
lines changed

2 files changed

+110
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Group Membership API- Scripted REST API
2+
## Overview
3+
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
4+
5+
### API Details
6+
- **API Name**: Group Membership API
7+
- **API ID**: group_membership_api
8+
- **ResourceName**: Members
9+
- **Relative Path**: /members
10+
- **HTTP Method**: GET
11+
- **Query Parameter**: groupName (required)
12+
13+
## Request Format
14+
15+
### Example Request
16+
GET https://<instance>.service-now.com/api/1819147/group_membership_api/members?groupName=Hardware
17+
18+
### Example Response
19+
```json
20+
{
21+
{
22+
"result": {
23+
"groupName": "Hardware",
24+
"totalMembers": 7,
25+
"member": [
26+
{
27+
"userName": "beth.anglin",
28+
"displayName": "Beth Anglin",
29+
"email": "beth.anglin@example.com",
30+
"active": "true"
31+
},
32+
{
33+
"userName": "itil",
34+
"displayName": "ITIL User",
35+
"email": "itil@example.com",
36+
"active": "true"
37+
},
38+
{
39+
"userName": "bow.ruggeri",
40+
"displayName": "Bow Ruggeri",
41+
"email": "bow.ruggeri@example.com",
42+
"active": "true"
43+
},
44+
{
45+
"userName": "david.dan",
46+
"displayName": "David Dan",
47+
"email": "david.dan@example.com",
48+
"active": "true"
49+
},
50+
{
51+
"userName": "david.loo",
52+
"displayName": "David Loo",
53+
"email": "david.loo@example.com",
54+
"active": "true"
55+
},
56+
{
57+
"userName": "don.goodliffe",
58+
"displayName": "Don Goodliffe",
59+
"email": "don.goodliffe@example.com",
60+
"active": "true"
61+
},
62+
{
63+
"userName": "fred.luddy",
64+
"displayName": "Fred Luddy",
65+
"email": "fred.luddy@example.com",
66+
"active": "true"
67+
}
68+
]
69+
}
70+
}
71+
72+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
2+
var groupName = request.queryParams.groupName;
3+
var members = [];
4+
if (!groupName) {
5+
response.setStatus(400);
6+
return {
7+
error: "groupName query parameter is required"
8+
};
9+
}
10+
var grGrp = new GlideRecord('sys_user_group');
11+
grGrp.addQuery('name', groupName);
12+
grGrp.query();
13+
if (!grGrp.next()) {
14+
response.setStatus(400);
15+
return {
16+
error: "Group name doesn't found"
17+
};
18+
}
19+
var grGrpMem = new GlideRecord('sys_user_grmember');
20+
grGrpMem.addQuery("group.name", groupName);
21+
grGrpMem.query();
22+
while (grGrpMem.next()) {
23+
members.push({
24+
userName: grGrpMem.user.user_name.toString(),
25+
displayName: grGrpMem.user.name.toString(),
26+
email: grGrpMem.user.email.toString(),
27+
active: grGrpMem.user.active.toString()
28+
});
29+
}
30+
return {
31+
groupName: groupName.toString(),
32+
totalMembers: members.length,
33+
member: members
34+
};
35+
36+
37+
38+
})(request, response);

0 commit comments

Comments
 (0)