The Group Management API allows you to list the groups in your domain, show the details of an individual group, manage group membership, create new groups, rename groups, and delete groups. This API is designed to comply with SCIM 1.1
Note that the user and group endpoints are v2, unlike the other endpoints within the Egnyte API.
List Groups
This endpoint is used to list all the groups in your domain. Note that this returns only your custom domains. Egnyte default groups (i.e. 'All Power Users', 'All Standard Users and Power Users', and 'All Standard Users') are not returned.
GET/pubapi/v2/groups
Request Examples
GET /pubapi/v2/groups HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
curl -v -H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
https://apidemo.egnyte.com/pubapi/v2/groups
require 'egnyte'
session = Egnyte::Session.new({domain:'apidemo', access_token:'68zc95e3xv954u6k3hbnma3q'}, :password)
client = Egnyte::Client.new(session)
# Call the endpoint and save result to a variable
groups = client.groups
# Or, if you want to call the endpoint without a client.
# groups = Egnyte::Group.all(session)
Sample Response Body
{
"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"
}]
}
Request Parameters
Parameter | Description | Required |
startIndex |
The 1-based index of the initial record being requested (Integer ≥ 1). |
No |
count |
The number of entries per page (min 1, max 100) |
No |
filter |
Allows you to request a subset of groups. These terms are not case sensitive. For example, the following commands could be used to find a group named Accounting:
- filter=displayName eq "accounting" (for equals "accounting")
- filter=displayname co "ccou" (for contains the letters "ccou")
- filter=displayname sw "acc" (for starts with "acc")
Note: if you have trouble with these filters, please make sure you are URL encoding the spaces.
|
No |
Response Parameters
Element | Description |
itemsPerPage |
The number of results returned. |
totalResults |
The total number of results matching the query. |
startIndex |
The 1-based index of the first result in the current set of results. |
schemas |
The SCIM schema version of the response. |
resources |
A JSON array that holds all of the group objects. |
id |
The globally unique group ID. |
displayName |
The name of the group. |
Method-specific Response Codes
Error Code | Error Message | HTTP Code | Troubleshooting |
STARTINDEX_WRONG_VALUE |
Start index parameter is less than 1 |
400 |
Make sure you are using an integer value of 1 or more. |
Show Single Group
This endpoint is used to see which users are in the group and view group attributes.
GET/pubapi/v2/groups/{group_id}
Request Examples
GET /pubapi/v2/groups/e085cf02-0625-459b-b6f9-fa4dd92d908d HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
curl -v -H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
https://apidemo.egnyte.com/pubapi/v2/groups/e085cf02-0625-459b-b6f9-fa4dd92d908d
require 'egnyte'
session = Egnyte::Session.new({domain:'apidemo', access_token:'68zc95e3xv954u6k3hbnma3q'}, :password)
client = Egnyte::Client.new(session)
# Call the endpoint and save result to a variable
my_group = client.group("a1004249-5e29-438f-ad72-b4e90af14ee7")
# Or, if you want to call the endpoint without a client.
# my_group = Egnyte::Group.find(session, "a1004249-5e29-438f-ad72-b4e90af14ee7")
Sample Response Body
{
"schemas":["urn:scim:schemas:core:1.0"],
"id":"e3ba9d90-ebc7-483e-abaa-a84e92480c86",
"displayName":"Finance",
"members":[
{
"username":"test",
"value":9967960066,
"display":"Test User"
},{
"username":"jdoe",
"value":9967960068,
"display":"John Doe"
},{
"username":"jadoe",
"value":9967960069,
"display":"Jane Doe"
}
]
}
Response Parameters
Element | Description |
schemas |
The SCIM schema version of the response. |
id |
The globally unique group ID. |
displayName |
The name of the group. |
members |
A JSON array containing all users in the group. |
username |
The username of a group member. |
value |
The globally unique id of a group member. |
display |
The display name of a group member. |
Method-specific Response Codes
Error Code | Error Message | HTTP Code | Troubleshooting |
GROUP_NOT_FOUND |
group with resource id (SPECIFIED_GROUP_ID) not found |
404 |
You may have used an invalid group ID or that group may have already been deleted. |
Create a Group
POST /pubapi/v2/groups
POST /pubapi/v2/groups HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
Content-Type: application/json
Content-Length: 85
{
"displayName":"API Test",
"members":[
{"value":9967960068},
{"value":9967960069}
]
}
curl -v --request POST -H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
-H "Content-Type: application/json" \
--data '{"displayName":"API Test", "members":[{"value":9967960068},{"value":9967960069}]}' \
https://apidemo.egnyte.com/pubapi/v2/groups
require 'egnyte'
session = Egnyte::Session.new({domain:'apidemo', access_token:'68zc95e3xv954u6k3hbnma3q'}, :password)
client = Egnyte::Client.new(session)
# Call the endpoint and save result to a variable
my_group = client.create_group({displayName: "Test with members",members: [9967960066, 9967960068]})
# Or, if you want to call the endpoint without a client.
# my_group = Egnyte::Group.create(session, {displayName: "Test with members",members: [9967960066, 9967960068]})
Request Parameters
Parameter | Description | Required |
displayName |
The name of the group. |
Yes |
members |
A JSON array containing all users in the group. |
No |
value |
The globally unique id of a group member. |
No |
Sample Response Body
{
"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"
}]
}
Method-specific Response Codes
Error Code | Error Message | HTTP Code | Troubleshooting |
ERROR_DUPLICATE_GROUP_NAME |
Group already exists. |
409 |
A group with same name already exists. You can find that group in the group listing endpoint or create a group with a different name. |
Full Update to a Group
This endpoint is used to overwrite all of the attributes of a group. This is especially useful for making a change to settings that ensures all prior settings are removed.
PUT /pubapi/v2/groups/{group_id}
PUT /pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7 HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
Content-Type: application/json
Content-Length: 87
{
"displayName":"Engineering",
"members":[
{"value":9967960068},
{"value":9967960069}
]
}
curl -v --request PUT -H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
-H "Content-Type: application/json" --data '{"displayName":"Engineering", \
"members":[{"value":9967960068},{"value":9967960069}]}' \
https://apidemo.egnyte.com/pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7
require 'egnyte'
session = Egnyte::Session.new({domain:'apidemo', access_token:'68zc95e3xv954u6k3hbnma3q'}, :password)
client = Egnyte::Client.new(session)
# The Ruby API Client always does a full update of a group based on the object's parameters.
# In this example, I get an arbitrary group and change its name to "Example" and change group membership.
my_group = client.groups.first
my_group.name = "Example"
my_group.members = [client.users.first.id]
my_group.save
Request Parameters
Parameter | Description | Required |
displayName |
The name of the group. |
Yes |
members |
A JSON array containing all users in the group. |
No |
value |
The globally unique id of a group member. |
No |
Sample Response Body
{
"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"
}]
}
Method-specific Response Codes
Error Code | Error Message | HTTP Code | Troubleshooting |
USER_NOT_FOUNDUSER_NOT_FOUND |
User (#) does not exist |
400 |
You may have used an invalid user ID or that user may have already been deleted. |
GROUP_NOT_FOUNDGROUP_NOT_FOUND |
group with resource id (SPECIFIED_GROUP_ID) not found |
404 |
You may have used an invalid group ID or that group may have already been deleted. |
ERROR_DUPLICATE_GROUP_NAMEERROR_DUPLICATE_GROUP_NAME |
Group already exists. |
409 |
A group with same name already exists. You can find that group in the group listing endpoint or create a group with a different name. |
Partial Update to a Group
This endpoint is used to update specific attributes of a group. This is especially useful for making incremental modifications to a folder.
PATCH /pubapi/v2/groups/{group_id}
Rename the group
PATCH /pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7 HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
Content-Type: application/json
Content-Length: 23
{"displayName":"Sales"}
curl -v --request PATCH -H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
-H "Content-Type: application/json" --data '{"displayName": "Sales"}' \
https://apidemo.egnyte.com/pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7
require 'egnyte'
session = Egnyte::Session.new({domain:'apidemo', access_token:'68zc95e3xv954u6k3hbnma3q'}, :password)
client = Egnyte::Client.new(session)
# The Ruby API Client always does a full update of a group based on the object's parameters.
# In this example, I get an arbitrary group and change its name to "Example."
my_group = client.groups.first
my_group.name = "Example"
my_group.save
Add a user to the group
PATCH /pubapi/v2/groups HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
Content-Type: application/json
Content-Length: 34
{
"members":[
{"value":9967960066}
]
}
curl -v --request PATCH -H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
-H "Content-Type: application/json" --data '{"members":[{"value":9967960066}]}' \
https://apidemo.egnyte.com/pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7
require 'egnyte'
session = Egnyte::Session.new({domain:'apidemo', access_token:'68zc95e3xv954u6k3hbnma3q'}, :password)
client = Egnyte::Client.new(session)
# The Ruby API Client always does a full update of a group based on the object's parameters.
# In this example, I get an arbitrary group and an arbitrary user to it.
my_group = client.groups.first
my_group.members = [client.users.first.id]
my_group.save
Remove a user from the group
PATCH /pubapi/v2/groups HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
Content-Type: application/json
Content-Length: 34
{
"members":[
{
"operation":"delete",
"value":9967960066
}
]
}
curl -v --request PATCH -H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
-H "Content-Type: application/json" \
--data '{"members":[{"operation":"delete","value":9967960066}]}' \
https://apidemo.egnyte.com/pubapi/v2/groups/a1004249-5e29-438f-ad72-b4e90af14ee7
Element | Description |
displayName |
The name of the group. |
members |
A JSON array containing all users in the group. |
value |
The globally unique id of a group member. |
members |
A JSON array containing all users being modified. |
operation |
The action you wish to perform on a group. The only supported value is the "delete" action. |
Sample Response Body
{
"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"
}
]
}
Method-specific Response Codes
Error Code | Error Message | HTTP Code | Troubleshooting |
USER_NOT_FOUND |
User (#) does not exist |
400 |
You may have used an invalid user ID or that user may have already been deleted. |
GROUP_NOT_FOUND |
group with resource id (SPECIFIED_GROUP_ID) not found |
404 |
You may have used an invalid group ID or that group may have already been deleted. |
ERROR_DUPLICATE_GROUP_NAME |
Group already exists. |
409 |
A group with same name already exists. You can find that group in the group listing endpoint or create a group with a different name. |
Delete a Group
DELETE/pubapi/v2/groups/{group_id}
Request Examples
DELETE /pubapi/v2/groups/e085cf02-0625-459b-b6f9-fa4dd92d908d HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
curl -v --request DELETE -H "Authorization: Bearer 68zc95e3xv954u6k3hbnma3q" \
https://apidemo.egnyte.com/pubapi/v2/groups/e085cf02-0625-459b-b6f9-fa4dd92d908d
require 'egnyte'
session = Egnyte::Session.new({domain:'apidemo', access_token:'68zc95e3xv954u6k3hbnma3q'}, :password)
client = Egnyte::Client.new(session)
# In this example, I get an arbitrary group and delete it.
client.groups.first.delete
Method-specific Response Codes
Error Code | Error Message | HTTP Code | Troubleshooting |
GROUP_NOT_FOUND |
group with resource id (SPECIFIED_GROUP_ID) not found |
404 |
You may have used an invalid group ID or that group may have already been deleted. |