Group Management
The Group Management API allows you to list groups, view group details, manage group membership, create groups, rename groups, and delete groups. This API is designed to comply with SCIM 1.1.
Note: Group Management endpoints use API version v2, unlike most other Egnyte APIs which use v1.
Note: The List Groups endpoint returns only custom groups. Egnyte default groups (All Power Users, All Standard Users and Power Users, and All Standard Users) are not returned.
Base URL
https://{domain}.egnyte.com/pubapi/v2/groups
Authentication
All requests require an OAuth 2.0 Bearer token in the Authorization header:
Authorization: Bearer {access_token}
See Authentication for details on obtaining a token.
List Groups
Returns all custom groups in your domain.
Request
GET /pubapi/v2/groups
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startIndex | integer | No | 1 | The 1-based index of the first record to return (minimum: 1) |
count | integer | No | — | Number of entries per page (minimum: 1, maximum: 100) |
filter | string | No | — | Filter groups by display name. Supports eq (equals), co (contains), and sw (starts with). Example: displayName eq "accounting". URL-encode spaces. |
Example Request
curl -i -X GET "https://{domain}.egnyte.com/pubapi/v2/groups" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response
200 OK
| Field | Type | Description |
|---|---|---|
schemas | array | SCIM schema version of the response |
totalResults | integer | Total number of groups matching the query |
itemsPerPage | integer | Number of results returned in this response |
startIndex | integer | 1-based index of the first result in the current set |
resources | array | Array of group objects |
resources[].id | string | Globally unique group ID |
resources[].displayName | string | Group name |
Example Response
{
"schemas": ["urn:scim:schemas:core:1.0"],
"totalResults": 3,
"itemsPerPage": 3,
"startIndex": 1,
"resources": [
{
"id": "8b9dd5aa-40ab-4a43-9b76-f55a412c8a6a",
"displayName": "IT"
},
{
"id": "d5ea2e76-63e4-4b47-92af-0d7ba6972e3c",
"displayName": "Finance"
},
{
"id": "a1004249-5e29-438f-ad72-b4e90af14ee7",
"displayName": "Sales"
}
]
}
Show Single Group
Returns details of a specific group, including its members.
Request
GET /pubapi/v2/groups/{group_id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | Yes | Globally unique group ID |
Example Request
curl -i -X GET "https://{domain}.egnyte.com/pubapi/v2/groups/{groupId}" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response
200 OK
| Field | Type | Description |
|---|---|---|
schemas | array | SCIM schema version of the response |
id | string | Globally unique group ID |
displayName | string | Group name |
owners | array | List of Egnyte usernames who are owners of this group |
members | array | Array of users in the group |
members[].username | string | Username of the group member |
members[].value | integer | Globally unique user ID |
members[].display | string | Display name of the group member |
Example Response
{
"schemas": ["urn:scim:schemas:core:1.0"],
"id": "e3ba9d90-ebc7-483e-abaa-a84e92480c86",
"displayName": "Finance",
"owners": ["jdoe"],
"members": [
{
"username": "test",
"value": 9967960066,
"display": "Test User"
},
{
"username": "jdoe",
"value": 9967960068,
"display": "John Doe"
},
{
"username": "jadoe",
"value": 9967960069,
"display": "Jane Doe"
}
]
}
Create a Group
Creates a new group with optional initial members.
Request
POST /pubapi/v2/groups
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
displayName | string | Yes | Name of the group |
members | array | No | Array of user objects to add as initial members |
members[].value | integer | No | Globally unique user ID |
owners | array | No | List of Egnyte usernames to set as group owners (e.g. ["jsmith"]). Use the local username only — no domain suffix. Each user must exist, be active, non-guest, and have group management privileges. If omitted, the API caller becomes the owner. The caller must be an admin or have group management privileges to use this field. |
Example Request
curl -i -X POST "https://{domain}.egnyte.com/pubapi/v2/groups" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -d '{ "displayName": "API Test", "members": [ { "value": "{userId1}" }, { "value": "{userId2}" } ] }'
Response
201 Created
Returns the created group object with the same structure as Show Single Group.
Note: The owners field is not included in the response, even if it was set in the request.
Example Response
{
"schemas": ["urn:scim:schemas:core:1.0"],
"id": "f9366462-7070-4adb-b866-9a953527507b",
"displayName": "API Test",
"members": [
{
"username": "jdoe",
"value": 9967960068,
"display": "John Doe"
},
{
"username": "jadoe",
"value": 9967960069,
"display": "Jane Doe"
}
]
}
Full Update to a Group
Overwrites all attributes of a group. This replaces the entire group configuration, including membership.
Request
PUT /pubapi/v2/groups/{group_id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | Yes | Globally unique group ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
displayName | string | Yes | Name of the group |
members | array | No | Array of user objects. Omitting this field removes all members. |
members[].value | integer | No | Globally unique user ID |
owners | array | No | List of Egnyte usernames to add as group owners (e.g. ["jsmith"]). Use the local username only — no domain suffix. Each user must exist, be active, non-guest, and have group management privileges. This field adds to the existing owners — it does not replace them. The caller must be an admin or have group management privileges to use this field. |
Example Request
curl -i -X PUT "https://{domain}.egnyte.com/pubapi/v2/groups/{groupId}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -d '{ "displayName": "Engineering", "members": [ { "value": "{userId1}" }, { "value": "{userId2}" } ] }'
Response
200 OK
Returns the updated group object with the same structure as Show Single Group.
Example Response
{
"schemas": ["urn:scim:schemas:core:1.0"],
"id": "a1004249-5e29-438f-ad72-b4e90af14ee7",
"displayName": "Engineering",
"members": [
{
"username": "jdoe",
"value": 9967960068,
"display": "John Doe"
},
{
"username": "jadoe",
"value": 9967960069,
"display": "Jane Doe"
}
]
}
Partial Update to a Group
Updates specific attributes of a group without overwriting the entire configuration. Use this to rename a group, add members, or remove members incrementally.
Request
PATCH /pubapi/v2/groups/{group_id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | Yes | Globally unique group ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
displayName | string | No | New name for the group |
members | array | No | Array of user objects to add or remove |
members[].value | integer | Yes | Globally unique user ID |
members[].operation | string | No | Set to delete to remove the user. Omit to add the user. |
owners | array | No | List of Egnyte usernames to add as group owners (e.g. ["jsmith"]). Use the local username only — no domain suffix. Each user must exist, be active, non-guest, and have group management privileges. This field adds to the existing owners — it does not replace them. The caller must be an admin or have group management privileges to use this field. |
Examples
Rename the Group
curl -X PATCH \
-H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
-H "Content-Type: application/json" \
-d '{"displayName": "Sales"}' \
"https://apidemo.egnyte.com/pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7"
curl -i -X PATCH "https://{domain}.egnyte.com/pubapi/v2/groups/{group_id}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -d '{ "displayName": "Sales" }'
Add a User to the Group
curl -X PATCH \
-H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
-H "Content-Type: application/json" \
-d '{
"members": [
{"value": 9967960066}
]
}' \
"https://apidemo.egnyte.com/pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7"
curl -i -X PATCH "https://{domain}.egnyte.com/pubapi/v2/groups/{group_id}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -d '{ "members": [ { "value": 9967960066 } ] }'
Remove a User from the Group
curl -X PATCH \
-H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
-H "Content-Type: application/json" \
-d '{
"members": [
{
"operation": "delete",
"value": 9967960066
}
]
}' \
"https://apidemo.egnyte.com/pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7"
curl -i -X PATCH "https://{domain}.egnyte.com/pubapi/v2/groups/{group_id}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -d '{ "members": [ { "operation": "delete", "value": 9967960066 } ] }'
Set Group Owner(s)
curl -X PATCH \
-H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
-H "Content-Type: application/json" \
-d '{"owners": ["jsmith"]}' \
"https://apidemo.egnyte.com/pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7"
curl -i -X PATCH "https://{domain}.egnyte.com/pubapi/v2/groups/{group_id}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -d '{ "owners": [ "jsmith" ] }'
Response
200 OK
Returns the updated group object with the same structure as Show Single Group.
Example Response
{
"schemas": ["urn:scim:schemas:core:1.0"],
"id": "a1004249-5e29-438f-ad72-b4e90af14ee7",
"displayName": "Example",
"members": [
{
"username": "jdoe",
"value": 9967960068,
"display": "John Doe"
},
{
"username": "jadoe",
"value": 9967960069,
"display": "Jane Doe"
}
]
}
Delete a Group
Permanently deletes a group.
Request
DELETE /pubapi/v2/groups/{group_id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id | string | Yes | Globally unique group ID |
Example Request
curl -i -X DELETE "https://{domain}.egnyte.com/pubapi/v2/groups/{groupId}" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response
200 OK
No response body. A successful deletion returns an empty response.
Error Codes
| Status | Error | Description | Resolution |
|---|---|---|---|
| 400 | STARTINDEX_WRONG_VALUE | Start index parameter is less than 1 | Use an integer value of 1 or greater for startIndex |
| 400 | USER_NOT_FOUND | User with the specified ID does not exist | Verify the user ID is correct and the user has not been deleted |
| 400 | INVALID_USER_NAME | owner (USERNAME) does not exist or has an invalid format | The value in owners must be a valid, existing Egnyte username. Use the local username only — no domain suffix (e.g. "jsmith", not "jsmith@company.com"). |
| 400 | owner.must.have.group.management.privileges | owner (USERNAME) must have Group Management Privileges | The specified owner must have group management privileges in Egnyte. |
| 403 | user.unauthorized | user (CALLER) is not authorized to manage resources | To set a group owner, the API caller must be an admin or have group management privileges. |
| 400 | Standard User cannot be group owner. | The specified owner is a guest user | Only active, non-guest users with group management privileges can be set as group owners. |
| 400 | Inactive User cannot be group owner. | The specified owner is inactive or deactivated | Only active users can be set as group owners. Reactivate the user or choose a different owner. |
| 404 | GROUP_NOT_FOUND | Group with the specified ID does not exist | Verify the group ID is correct and the group has not been deleted |
| 409 | ERROR_DUPLICATE_GROUP_NAME | A group with the same name already exists | Use the List Groups endpoint to find the existing group, or choose a different name |
Code Examples
GET /pubapi/v2/groups
curl -i -X GET "https://{domain}.egnyte.com/pubapi/v2/groups" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
POST /pubapi/v2/groups
curl -i -X POST "https://{domain}.egnyte.com/pubapi/v2/groups" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -d '{ "members": [ { "value": 9967960066 } ] }'
PATCH {url}/{group_id}
curl -i -X PATCH "{url}/{group_id}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -d '{ "members": [ { "value": 9967960066 } ] }'
Related Resources
- User Management — Manage users in your Egnyte domain
- Authentication — How to obtain and refresh OAuth tokens
- Permissions API — Manage folder and file permissions for groups
