From fe4223edcd1992b86827774b1a3d98fb913f04fd Mon Sep 17 00:00:00 2001 From: NayeemKaka Date: Sat, 18 Oct 2025 16:32:11 +0530 Subject: [PATCH 1/4] Create Group Membership API --- Integration/Scripted REST Api/Group Membership API | 1 + 1 file changed, 1 insertion(+) create mode 100644 Integration/Scripted REST Api/Group Membership API diff --git a/Integration/Scripted REST Api/Group Membership API b/Integration/Scripted REST Api/Group Membership API new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/Integration/Scripted REST Api/Group Membership API @@ -0,0 +1 @@ + From 852246d529474814af154eda81195147590924fa Mon Sep 17 00:00:00 2001 From: NayeemKaka Date: Sat, 18 Oct 2025 16:32:47 +0530 Subject: [PATCH 2/4] Delete Integration/Scripted REST Api/Group Membership API --- Integration/Scripted REST Api/Group Membership API | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Integration/Scripted REST Api/Group Membership API diff --git a/Integration/Scripted REST Api/Group Membership API b/Integration/Scripted REST Api/Group Membership API deleted file mode 100644 index 8b13789179..0000000000 --- a/Integration/Scripted REST Api/Group Membership API +++ /dev/null @@ -1 +0,0 @@ - From 91069df26fea56d2062ac7a13f91b8e3740a5110 Mon Sep 17 00:00:00 2001 From: NayeemKaka Date: Sat, 18 Oct 2025 16:53:29 +0530 Subject: [PATCH 3/4] Create README.md --- .../Group Membership API/README.md | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 Integration/Scripted REST Api/Group Membership API/README.md diff --git a/Integration/Scripted REST Api/Group Membership API/README.md b/Integration/Scripted REST Api/Group Membership API/README.md new file mode 100644 index 0000000000..e0591b695c --- /dev/null +++ b/Integration/Scripted REST Api/Group Membership API/README.md @@ -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://.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" + } + ] + } +} + +} From 8cbd5574ea8df64639214b2058876948f9484e68 Mon Sep 17 00:00:00 2001 From: NayeemKaka Date: Sat, 18 Oct 2025 16:56:35 +0530 Subject: [PATCH 4/4] Create group_membership.js --- .../Group Membership API/group_membership.js | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Integration/Scripted REST Api/Group Membership API/group_membership.js diff --git a/Integration/Scripted REST Api/Group Membership API/group_membership.js b/Integration/Scripted REST Api/Group Membership API/group_membership.js new file mode 100644 index 0000000000..322e95caf7 --- /dev/null +++ b/Integration/Scripted REST Api/Group Membership API/group_membership.js @@ -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);