ユーザーとのコンテンツの共有
ユーザーとのコンテンツの共有
コンテンツをユーザーと共有するには、ユーザーIDまたはメールアドレス、コンテンツのIDのほか、ユーザーがコンテンツにアクセスする際に必要なロールまたは権限を使用してコラボレーションを作成します。コラボレーションロールはeditor
、viewer
、previewer
、uploader
、previewer uploader
、viewer uploader
、co-owner
、またはowner
です。各ロールについての詳しい説明は、Boxのサポートドキュメントを参照してください。
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": "user",
"login": "user@example.com"
},
"role": "editor"
}'
TypeScript Gen
await client.userCollaborations.createCollaboration({
item: {
type: 'file' as CreateCollaborationRequestBodyItemTypeField,
id: file.id,
} satisfies CreateCollaborationRequestBodyItemField,
accessibleBy: {
type: 'user' as CreateCollaborationRequestBodyAccessibleByTypeField,
id: getEnvVar('USER_ID'),
} satisfies CreateCollaborationRequestBodyAccessibleByField,
role: 'editor' as CreateCollaborationRequestBodyRoleField,
} satisfies CreateCollaborationRequestBody);
Python Gen
client.user_collaborations.create_collaboration(
CreateCollaborationItem(type=CreateCollaborationItemTypeField.FILE, id=file.id),
CreateCollaborationAccessibleBy(
type=CreateCollaborationAccessibleByTypeField.USER, id=get_env_var("USER_ID")
),
CreateCollaborationRole.EDITOR,
)
.NET Gen
await client.UserCollaborations.CreateCollaborationAsync(requestBody: new CreateCollaborationRequestBody(item: new CreateCollaborationRequestBodyItemField() { Type = CreateCollaborationRequestBodyItemTypeField.File, Id = file.Id }, accessibleBy: new CreateCollaborationRequestBodyAccessibleByField(type: CreateCollaborationRequestBodyAccessibleByTypeField.User) { Id = Utils.GetEnvVar(name: "USER_ID") }, role: CreateCollaborationRequestBodyRoleField.Editor));
Java
BoxCollaborator user = new BoxUser(api, "user-id")
BoxFolder folder = new BoxFolder(api, "folder-id");
folder.collaborate(user, BoxCollaboration.Role.EDITOR);
Python
from boxsdk.object.collaboration import CollaborationRole
user = client.user(user_id='11111')
collaboration = client.folder(folder_id='22222').collaborate(user, 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}"')
.NET
// collaborate folder 11111 with user 22222
BoxCollaborationRequest requestParams = new BoxCollaborationRequest()
{
Item = new BoxRequestEntity()
{
Type = BoxType.folder,
Id = "11111"
},
Role = "editor",
AccessibleBy = new BoxCollaborationUserRequest()
{
Type = BoxType.user,
Id = "22222"
}
};
BoxCollaboration collab = await client.CollaborationsManager.AddCollaborationAsync(requestParams);
Node
// Invite user 123456 to collaborate on folder 987654
client.collaborations.createWithUserID('123456', '987654', client.collaborationRoles.EDITOR)
.then(collaboration => {
/* collaboration -> {
type: 'collaboration',
id: '11111',
created_by:
{ type: 'user',
id: '22222',
name: 'Inviting User',
login: 'inviter@example.com' },
created_at: '2016-11-16T21:33:31-08:00',
modified_at: '2016-11-16T21:33:31-08:00',
expires_at: null,
status: 'accepted',
accessible_by:
{ type: 'user',
id: '123456',
name: 'Collaborator User',
login: 'collaborator@example.com' },
role: 'editor',
acknowledged_at: '2016-11-16T21:33:31-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: "33333",
accessibleByType: .user
) { (result: Result<Collaboration, BoxSDKError>) in
guard case let .success(collaboration) = result else {
print("Error creating collaboration")
return
}
print("Collaboration successfully created")
}
ネストされたオブジェクト
コラボレーションの作成時には、リクエスト本文にaccessible_by
とitem
という2つのネストされたオブジェクトを使用します。
accessible_by
オブジェクトは、この項目の共有相手を指定し、グループid
とtype
を含みます。type
フィールドは常にuser
に設定する必要があります。
item
オブジェクトは、共有する項目を指定します。このオブジェクトには、file
として設定する必要があるtype
フィールドと、そのファイルのid
フィールドがあります。