Add the power of the Box AI API to your custom apps at Content Cloud Summit on May 15

Learn more and register!

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
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"
     }'
.NET
// 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);
Java
BoxCollaborator group = new BoxGroup(api, "group-id");
BoxFolder folder = new BoxFolder(api, "folder-id");
folder.collaborate(group, BoxCollaboration.Role.EDITOR);
Python
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}"')
Node
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' } }
		*/
	});
iOS
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")
}

The collaboration roles are editor, viewer, previewer, uploader, previewer uploader, viewer uploader, co-owner, or owner. For a full description of each role, please refer to our support documentation.

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.