Manage folders
This example demonstrates how to manage folders in ONLYOFFICE DocSpace using the API. It covers creating, retrieving, renaming, and deleting folders through API requests.
Complete source code on GitHub: Node.js/Python
Before you start
- Replace
https://yourportal.onlyoffice.comandYOUR_API_KEYwith your actual DocSpace portal URL and API key. Ensure you have the necessary data and permissions to perform migration operations. - Before you can make requests to the API, you need to authenticate. Check out the Personal access tokens page to learn how to obtain and use access tokens.
Full example
- Node.js
- Python
// Set API base URL
const BASE_URL = 'https://yourportal.onlyoffice.com';
const API_KEY = 'YOUR_API_KEY';
// Headers with API key for authentication
const HEADERS = {
Authorization: `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
};
// Step 1: Create a folder
function createFolder(parentFolderId, folderName) {
const url = `${BASE_URL}/api/2.0/files/folder/${parentFolderId}`;
const data = { title: folderName };
return fetch(url, { method: 'POST', headers: HEADERS, body: JSON.stringify(data) })
.then(async (res) => {
if (res.status === 200) return res.json();
const text = await res.text();
console.log(`Folder creation failed. Status code: ${res.status}, Message: ${text}`);
return null;
})
.catch((err) => {
console.log(`Folder creation error: ${err.message}`);
return null;
});
}
// Step 2: Retrieve folder details
function getFolderDetails(folderId) {
const url = `${BASE_URL}/api/2.0/files/folder/${folderId}`;
return fetch(url, { method: 'GET', headers: HEADERS })
.then(async (res) => {
if (res.status === 200) return res.json();
const text = await res.text();
console.log(`Folder details retrieval failed. Status code: ${res.status}, Message: ${text}`);
return null;
})
.catch((err) => {
console.log(`Folder details retrieval error: ${err.message}`);
return null;
});
}
// Step 3: Rename a folder
function renameFolder(folderId, newName) {
const url = `${BASE_URL}/api/2.0/files/folder/${folderId}/rename`;
const data = { title: newName };
return fetch(url, { method: 'PUT', headers: HEADERS, body: JSON.stringify(data) })
.then(async (res) => {
if (res.status === 200) return res.json();
const text = await res.text();
console.log(`Folder rename failed. Status code: ${res.status}, Message: ${text}`);
return null;
})
.catch((err) => {
console.log(`Folder rename error: ${err.message}`);
return null;
});
}
// Step 4: Delete a folder
function deleteFolder(folderId) {
const url = `${BASE_URL}/api/2.0/files/folder/${folderId}`;
return fetch(url, { method: 'DELETE', headers: HEADERS })
.then(async (res) => {
if (res.status === 200) return res.json();
const text = await res.text();
console.log(`Folder deletion failed. Status code: ${res.status}, Message: ${text}`);
return null;
})
.catch((err) => {
console.log(`Folder deletion error: ${err.message}`);
return null;
});
}
async function main() {
const parent_folder_id = 1234;
const folder_id = 1234;
const folder_name = 'New Folder';
const new_folder_name = 'Updated Folder Name';
const created = await createFolder(parent_folder_id, folder_name);
if (!created) return;
const details = await getFolderDetails(folder_id);
if (!details) return;
const renamed = await renameFolder(folder_id, new_folder_name);
if (!renamed) return;
await deleteFolder(folder_id);
}
main();
import requests
# Set API base URL
BASE_URL = 'https://yourportal.onlyoffice.com'
API_KEY = 'YOUR_API_KEY'
# Headers with API key for authentication
HEADERS = {
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
# Step 1: Create a folder
def create_folder(parent_folder_id, folder_name):
url = f'{BASE_URL}/api/2.0/files/folder/{parent_folder_id}'
data = {
'title': folder_name
}
response = requests.post(url, headers=HEADERS, json=data)
if response.status_code == 200:
print("Folder created successfully.")
else:
print(f"Folder creation failed. Status code: {response.status_code}, Message: {response.text}")
# Step 2: Retrieve folder details
def get_folder_details(folder_id):
url = f'{BASE_URL}/api/2.0/files/folder/{folder_id}'
response = requests.get(url, headers=HEADERS)
if response.status_code == 200:
print(f"Folder details: {response.json()}")
else:
print(f"Folder details retrieval failed. Status code: {response.status_code}, Message: {response.text}")
# Step 3: Rename a folder
def rename_folder(folder_id, new_name):
url = f'{BASE_URL}/api/2.0/files/folder/{folder_id}/rename'
data = {
'title': new_name
}
response = requests.put(url, headers=HEADERS, json=data)
if response.status_code == 200:
print("Folder rename succeeded.")
else:
print(f"Folder rename failed. Status code: {response.status_code}, Message: {response.text}")
# Step 4: Delete a folder
def delete_folder(folder_id):
url = f'{BASE_URL}/api/2.0/files/folder/{folder_id}'
response = requests.delete(url, headers=HEADERS)
if response.status_code == 200:
print("Folder deletion succeeded.")
else:
print(f"Folder deletion failed. Status code: {response.status_code}, Message: {response.text}")
def main():
parent_folder_id = 1234 # Replace with actual parent folder or room ID
folder_id = 1234 # Replace with actual folder ID
folder_name = "New Folder" # Replace with actual folder name
new_folder_name = "Updated Folder Name" # Replace with actual new folder name
#Step 1
create_folder(parent_folder_id, folder_name)
#Step 2
get_folder_details(folder_id)
#Step 3
rename_folder(folder_id, new_folder_name)
#Step 4
delete_folder(folder_id)
Step 1: Create a folder
A POST request is sent to /api/2.0/files/folder/:folderId to create a new folder.
You must pass:
title: Desired name of the folder.
- Node.js
- Python
function createFolder(parentFolderId, folderName) {
const url = `${BASE_URL}/api/2.0/files/folder/${parentFolderId}`;
const data = { title: folderName };
return fetch(url, { method: 'POST', headers: HEADERS, body: JSON.stringify(data) })
.then(async (res) => {
if (res.status === 200) return res.json();
const text = await res.text();
console.log(`Folder creation failed. Status code: ${res.status}, Message: ${text}`);
return null;
})
.catch((err) => {
console.log(`Folder creation error: ${err.message}`);
return null;
});
}
def create_folder(parent_folder_id, folder_name):
url = f'{BASE_URL}/api/2.0/files/folder/{parent_folder_id}'
data = {
'title': folder_name
}
response = requests.post(url, headers=HEADERS, json=data)
if response.status_code == 200:
print("Folder created successfully.")
else:
print(f"Folder creation failed. Status code: {response.status_code}, Message: {response.text}")
Step 2: Retrieve folder details
A GET request is sent to /api/2.0/files/folder/:folderId to get folder information.
- Node.js
- Python
function getFolderDetails(folderId) {
const url = `${BASE_URL}/api/2.0/files/folder/${folderId}`;
return fetch(url, { method: 'GET', headers: HEADERS })
.then(async (res) => {
if (res.status === 200) return res.json();
const text = await res.text();
console.log(`Folder details retrieval failed. Status code: ${res.status}, Message: ${text}`);
return null;
})
.catch((err) => {
console.log(`Folder details retrieval error: ${err.message}`);
return null;
});
}
def get_folder_details(folder_id):
url = f'{BASE_URL}/api/2.0/files/folder/{folder_id}'
response = requests.get(url, headers=HEADERS)
if response.status_code == 200:
print(f"Folder details: {response.json()}")
else:
print(f"Folder details retrieval failed. Status code: {response.status_code}, Message: {response.text}")
Step 3: Rename a folder
A PUT request is sent to /api/2.0/files/folder/:folderId to rename a folder.
You must pass:
title: New folder name.
- Node.js
- Python
function renameFolder(folderId, newName) {
const url = `${BASE_URL}/api/2.0/files/folder/${folderId}/rename`;
const data = { title: newName };
return fetch(url, { method: 'PUT', headers: HEADERS, body: JSON.stringify(data) })
.then(async (res) => {
if (res.status === 200) return res.json();
const text = await res.text();
console.log(`Folder rename failed. Status code: ${res.status}, Message: ${text}`);
return null;
})
.catch((err) => {
console.log(`Folder rename error: ${err.message}`);
return null;
});
}
def rename_folder(folder_id, new_name):
url = f'{BASE_URL}/api/2.0/files/folder/{folder_id}/rename'
data = {
'title': new_name
}
response = requests.put(url, headers=HEADERS, json=data)
if response.status_code == 200:
print("Folder rename succeeded.")
else:
print(f"Folder rename failed. Status code: {response.status_code}, Message: {response.text}")
Step 4: Delete a folder
A DELETE request is sent to /api/2.0/files/folder/:folderId to remove a folder.
- Node.js
- Python
function deleteFolder(folderId) {
const url = `${BASE_URL}/api/2.0/files/folder/${folderId}`;
return fetch(url, { method: 'DELETE', headers: HEADERS })
.then(async (res) => {
if (res.status === 200) return res.json();
const text = await res.text();
console.log(`Folder deletion failed. Status code: ${res.status}, Message: ${text}`);
return null;
})
.catch((err) => {
console.log(`Folder deletion error: ${err.message}`);
return null;
});
}
def delete_folder(folder_id):
url = f'{BASE_URL}/api/2.0/files/folder/{folder_id}'
response = requests.delete(url, headers=HEADERS)
if response.status_code == 200:
print("Folder deletion succeeded.")
else:
print(f"Folder deletion failed. Status code: {response.status_code}, Message: {response.text}")