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" + } + ] + } +} + +} 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);