Sharing with Groups
Sharing with Groups
To share a file or folder with a group of users, create a collaboration using the group ID, the ID of the file or folder, and the role or permissions level the group should have when accessing the file or folder.
curl -i -X POST "https://api.box.com/2.0/collaborations" \
-H "authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json" \
-d '{
"item": {
"type": "file",
"id": "11446498"
},
"accessible_by": {
"type": "group",
"id": "845344"
},
"role": "editor"
}'
BoxCollaborator group = new BoxGroup(api, "group-id");
BoxFolder folder = new BoxFolder(api, "folder-id");
folder.collaborate(group, BoxCollaboration.Role.EDITOR);
from boxsdk.object.collaboration import CollaborationRole
group = client.group(group_id='11111')
collaboration = client.folder(folder_id='22222').collaborate(group, CollaborationRole.VIEWER)
collaborator = collaboration.accessible_by
item = collaboration.item
has_accepted = 'has' if collaboration.status == 'accepted' else 'has not'
print(f'{collaborator.name} {has_accepted} accepted the collaboration to folder "{item.name}"')
// collaborate folder 11111 with group 333333
BoxCollaborationRequest requestParams = new BoxCollaborationRequest()
{
Item = new BoxRequestEntity()
{
Type = BoxType.folder,
Id = "11111"
},
Role = "editor",
AccessibleBy = new BoxCollaborationUserRequest()
{
Type = BoxType.group,
Id = "333333"
}
};
BoxCollaboration collab = await client.CollaborationsManager.AddCollaborationAsync(requestParams);
client.collaborations.createWithGroupID('56473', '987654', client.collaborationRoles.UPLOADER)
.then(collaboration => {
/* collaboration -> {
type: 'collaboration',
id: '11111',
created_by: null,
created_at: '2016-11-16T21:48:44-08:00',
modified_at: '2016-11-16T21:48:44-08:00',
expires_at: null,
status: 'accepted',
accessible_by: { type: 'group', id: '56473', name: 'My Group' },
role: 'uploader',
acknowledged_at: '2016-11-16T21:48:44-08:00',
item:
{ type: 'folder',
id: '987654',
sequence_id: '0',
etag: '0',
name: 'Collaborated Folder' } }
*/
});
client.collaborations.create(
itemType: "folder",
itemId: "22222",
role: .editor,
accessibleBy: "44444",
accessibleByType: .group
) { (result: Result<Collaboration, BoxSDKError>) in
guard case let .success(collaboration) = result else {
print("Error creating collaboration")
return
}
print("Collaboration successfully created")
}
Nested objects
When creating a collaboration there are two nested objects within the request
body: accessible_by
and item
.
The accessible_by
object specifies who the item should be shared with and
includes a group id
and the type
. The type
field should always be set to
group
.
The item
object specifies what is being shared. It includes a type
field
which should be set as file
or folder
, and an id
for that file or folder.