ファイルまたはフォルダに個々のユーザーまたはグループのコラボレーションを追加します。
コラボレーションは、メールアドレス、ユーザーID、またはグループIDを使用して作成できます。
グループを使用してコラボレーションを作成する場合、このエンドポイントにアクセスできるかどうかは、 そのグループを招待できるかどうかによって決まります。
コラボレーションがpending
ステータスの場合、以下のフィールドが編集されます。
user_id
を使用してコラボレーションが作成された場合、login
とname
は非表示になります。login
を使用してコラボレーションが作成された場合、name
は非表示になります。id,type,name
レスポンスに含める属性のコンマ区切りリスト。このパラメータを使用すると、標準のレスポンスには通常含まれないフィールドをリクエストできます。
このパラメータを指定すると、明示的に指定しない限り標準フィールドはレスポンスに含まれず、リクエストしたフィールドのほかには、Mini版の表示のフィールドしか返されないことに注意してください。
true
実行されたアクションについてのメール通知をユーザーに送信するかどうかを決定します。
その項目に対するアクセス権限を付与するユーザーまたはグループ。
"23522323"
ユーザーまたはグループのID。
login
を使用してメールアドレスでユーザーを指定することもできます。
"user"
招待するコラボレータのタイプ。
次の値のいずれか1つ: user
,group
"john@example.com"
項目に対するアクセス権限を付与するユーザーのメールアドレス。
id
を使用してユーザーIDでユーザーを指定することもできます。
true
招待されたユーザーが招待に関連付けられているフォルダへの親パス全体を見ることができるかどうかを示します。招待されたユーザーには親フォルダ内の権限が付与されないため、自身が参加しているコラボレーションに関係しないコンテンツを閲覧することはできません。
これにより、招待されたユーザーの [すべてのファイル] ページの読み込みに必要な時間が有意に増加することに注意してください。can_view_path
が有効になっているコラボレーションの数を1ユーザーあたり1,000に制限することをお勧めします。
can_view_path
がtrue
に設定されているコラボレータを招待できるのは、所有者と共同所有者のみです。
can_view_path
は、フォルダのコラボレーションのみに使用できます。
"2019-08-29T23:59:00-07:00"
コラボレーションの有効期限を設定します。この日付になると、項目から自動的にコラボレーションが削除されます。
この機能が動作するのは、管理コンソールの [Enterprise設定] で [招待したコラボレータを自動的に削除する] の [フォルダの所有者に有効期限の延長を許可する] の設定が有効になっている場合のみです。この設定が有効になっていない場合、コラボレーションに有効期限を設定できず、このフィールドの値によってエラーが返されます。
true
true
に設定した場合、コラボレータは共有項目にアクセスできますが、これらの項目は [すべてのファイル] リストに表示されません。また、コラボレータには共有項目のルートフォルダのパスも表示されません。
コメントを追加する項目。
"11446498"
アクセス権限が付与される項目のID
"file"
このコラボレーションでアクセス権限が付与される項目の種類
次の値のいずれか1つ: file
,folder
"editor"
付与されるアクセスレベル。
次の値のいずれか1つ: editor
,viewer
,previewer
,uploader
,previewer uploader
,viewer uploader
,co-owner
新しいコラボレーションオブジェクトを返します。
ユーザーにコラボレーションを作成するための適切な権限がない場合にエラーを返します。
forbidden_by_policy
: 情報バリアの制限によりコラボレーションの作成が禁止されています。予期しな いクライアントエラー。
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"
}'
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);
client.user_collaborations.create_collaboration(
CreateCollaborationItem(type=CreateCollaborationItemTypeField.FILE, id=file.id),
CreateCollaborationAccessibleBy(
type=CreateCollaborationAccessibleByTypeField.USER, id=get_env_var("USER_ID")
),
CreateCollaborationRole.EDITOR,
)
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));
BoxCollaborator user = new BoxUser(api, "user-id")
BoxFolder folder = new BoxFolder(api, "folder-id");
folder.collaborate(user, BoxCollaboration.Role.EDITOR);
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}"')
// 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);
// 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' } }
*/
});
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")
}
{
"id": "12345678",
"type": "collaboration",
"acceptance_requirements_status": {
"strong_password_requirement": {
"enterprise_has_strong_password_required_for_external_users": true,
"user_has_strong_password": true
},
"terms_of_service_requirement": {
"is_accepted": true,
"terms_of_service": {
"id": "11446498",
"type": "terms_of_service"
}
},
"two_factor_authentication_requirement": {
"enterprise_has_two_factor_auth_enabled": true,
"user_has_two_factor_authentication_enabled": true
}
},
"accessible_by": {
"id": "11446498",
"type": "user",
"is_active": true,
"login": "ceo@example.com",
"name": "Aaron Levie"
},
"acknowledged_at": "2012-12-12T10:55:20-08:00",
"app_item": {
"id": "12345678",
"type": "app_item",
"application_type": "hubs"
},
"created_at": "2012-12-12T10:53:43-08:00",
"created_by": [
{
"id": 33224412
},
{
"type": "user"
},
{
"login": "dylan@example.com"
},
{
"name": "Dylan Smith"
}
],
"expires_at": "2012-12-26T10:53:43-08:00",
"invite_email": "john@example.com",
"is_access_only": true,
"item": {
"id": "12345",
"type": "file",
"content_created_at": "2012-12-12T10:53:43-08:00",
"content_modified_at": "2012-12-12T10:53:43-08:00",
"created_at": "2012-12-12T10:53:43-08:00",
"created_by": {
"id": "11446498",
"type": "user",
"login": "ceo@example.com",
"name": "Aaron Levie"
},
"description": "Contract for Q1 renewal",
"etag": "1",
"file_version": {
"id": "12345",
"type": "file_version",
"sha1": "134b65991ed521fcfe4724b7d814ab8ded5185dc"
},
"item_status": "active",
"modified_at": "2012-12-12T10:53:43-08:00",
"modified_by": {
"id": "11446498",
"type": "user",
"login": "ceo@example.com",
"name": "Aaron Levie"
},
"name": "Contract.pdf",
"owned_by": {
"id": "11446498",
"type": "user",
"login": "ceo@example.com",
"name": "Aaron Levie"
},
"parent": {
"id": "12345",
"type": "folder",
"etag": "1",
"name": "Contracts",
"sequence_id": "3"
},
"path_collection": {
"entries": [
{
"etag": "1",
"id": "12345",
"type": "folder",
"name": "Contracts",
"sequence_id": "3"
}
],
"total_count": 1
},
"purged_at": "2012-12-12T10:53:43-08:00",
"sequence_id": "3",
"sha1": "85136C79CBF9FE36BB9D05D0639C70C265C18D37",
"shared_link": {
"access": "open",
"download_count": 3,
"download_url": "https://www.box.com/shared/static/rh935iit6ewrmw0unyul.jpeg",
"effective_access": "company",
"effective_permission": "can_download",
"is_password_enabled": true,
"permissions": {
"can_download": true,
"can_edit": false,
"can_preview": true
},
"preview_count": 3,
"unshared_at": "2018-04-13T13:53:23-07:00",
"url": "https://www.box.com/s/vspke7y05sb214wjokpk",
"vanity_name": "my_url",
"vanity_url": "https://acme.app.box.com/v/my_url/"
},
"size": 629644,
"trashed_at": "2012-12-12T10:53:43-08:00"
},
"modified_at": "2012-12-12T10:53:43-08:00",
"role": "editor",
"status": "accepted"
}