Copy Folder
Copy Folder
Creates a copy of a folder within a destination folder.
The original folder will not be changed.
To copy a folder in Box you will need to provide our API with the id
of the
parent
folder that you would like to copy the folder into.
curl -i -X POST "https://api.box.com/2.0/folders/4353455/copy" \
-H "authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json" \
-d '{
"parent": {
"id": "345345"
}
}'
await client.folders.copyFolder(folderOrigin.id, {
parent: { id: '0' } satisfies CopyFolderRequestBodyParentField,
name: copiedFolderName,
} satisfies CopyFolderRequestBody);
client.folders.copy_folder(
folder_origin.id, CopyFolderParent(id="0"), name=copied_folder_name
)
await client.Folders.CopyFolderAsync(folderId: folderOrigin.Id, requestBody: new CopyFolderRequestBody(parent: new CopyFolderRequestBodyParentField(id: "0")) { Name = copiedFolderName });
BoxFolder folder = new BoxFolder(api, "id1");
BoxFolder destination = new BoxFolder(api, "id2");
folder.copy(destination);
folder_id = '22222'
destination_folder_id = '44444'
folder_to_copy = client.folder(folder_id)
destination_folder = client.folder(destination_folder_id)
folder_copy = folder_to_copy.copy(parent_folder=destination_folder)
print(f'Folder "{folder_copy.name}" has been copied into folder "{folder_copy.parent.name}"')
// Copy folder 11111 into folder 22222
var requestParams = new BoxFolderRequest()
{
Id = "11111",
Parent = new BoxRequestEntity()
{
Id = "22222"
}
};
BoxFolder folderCopy = await client.FoldersManager.CopyAsync(requestParams);
client.folders.copy('11111', '22222')
.then(folderCopy => {
/* folderCopy -> {
type: 'folder',
id: '1234567',
sequence_id: '0',
etag: '0',
name: 'Pictures from 2017',
created_at: '2012-12-12T10:53:43-08:00',
modified_at: '2012-12-12T11:15:04-08:00',
description: 'Some pictures I took',
size: 629644,
path_collection:
{ total_count: 1,
entries:
[ { type: 'folder',
id: '0',
sequence_id: null,
etag: null,
name: 'All Files' },
{ type: 'folder',
id: '22222',
sequence_id: '3',
etag: '3',
name: 'Archives' } ] },
created_by:
{ type: 'user',
id: '22222',
name: 'Example User'
login: 'user@example.com' },
modified_by:
{ type: 'user',
id: '22222',
name: 'Example User',
login: 'user@example.com' },
owned_by:
{ type: 'user',
id: '22222',
name: 'Example User',
login: 'user@example.com' },
shared_link: null,
parent:
{ type: 'folder',
id: '22222',
sequence_id: '3',
etag: '3',
name: 'Archives' },
item_status: 'active',
item_collection:
{ total_count: 1,
entries:
[ { type: 'file',
id: '44444',
sequence_id: '0',
etag: '0',
sha1: '134b65991ed521fcfe4724b7d814ab8ded5185dc',
name: 'tigers.jpeg' } ],
offset: 0,
limit: 100 } }
*/
});
client.folders.copy(
folderId: "22222",
destinationFolderID: "12345"
) { (result: Result<Folder, BoxSDKError>) in
guard case let .success(folderCopy) = result else {
print("Error copying folder")
return
}
print("Copied folder \(folderCopy.name) to destination \(folderCopy.parent?.name)")
}
Optionally, you can provide a different name for the new folder.
client.folders.copy('12345', '0', {name: 'Renamed folder'})
.then(folderCopy => {
// ...
});
Asynchronous copying
If the folder being copied contains up to 500 items the copy will happen synchronously with the API call. The call will not return until the copy operation has completed.
If the folder contains more than 500 items the copy operation will be run asynchronously and the API call will return directly yet before the copy operation has completed. We currently have no API to check when a copy operation has finished.
Folder locking
During this operation, part of the file tree will be locked, mainly the source folder and all of its descendants, as well as the destination folder.
For the duration of the operation, no other move, copy, delete, or restore operation can performed on any of the locked folders. Most importantly, this means that the same folder can not be copied to two different parts of the folder tree at the same time.
Metadata
If the destination folder has a metadata cascade policy attached to any of the parent folders a metadata cascade operation will be kicked off asynchronously.
We currently have no API to check when this operation has finished.