We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.
Forum Discussion
Waleed Magdy
2 months agoExplorer | Level 4
Transfer Dropbox Backups using Dropbox APIs
Hello, Specifically, I have several backups stored in Dropbox Backup (some exceeding tens of terabytes), and I’m interested in utilizing the Dropbox API to automate the process of downloading th...
Waleed Magdy
Explorer | Level 4
Thanks for your reply, however I tried many times but still only getting the folders and files in the root directory for the dropbox account but not the backups in dropbox backups
this is the script I am trying with if you can take a look:
import requests
import json
# Dropbox API credentials
DROPBOX_ACCESS_TOKEN = "TOKEN"
DROPBOX_REFRESH_TOKEN = (
"REFRESH_TOKEN"
)
APP_KEY = "APP_KEY"
APP_SECRET = "APP_SECRET"
# endpoints
DROPBOX_OAUTH2_TOKEN_URL = "https://api.dropbox.com/oauth2/token"
DROPBOX_LIST_FOLDER_URL = "https://api.dropboxapi.com/2/files/list_folder"
DROPBOX_TEAM_MEMBERS_URL = "https://api.dropboxapi.com/2/team/members/list"
# Refresh the access token using refresh token
def refresh_dropbox_token():
data = {
'grant_type': 'refresh_token',
'refresh_token': DROPBOX_REFRESH_TOKEN,
'client_id': APP_KEY,
'client_secret': APP_SECRET
}
response = requests.post(DROPBOX_OAUTH2_TOKEN_URL, data=data)
if response.status_code == 200:
tokens = response.json()
return tokens['access_token']
else:
print("Error refreshing token:", response.text)
return None
# This is to list team members to choose which team member to work with
def list_dropbox_team_members():
global DROPBOX_ACCESS_TOKEN
access_token = refresh_dropbox_token()
if access_token is None:
print("Failed to refresh Dropbox access token.")
return None
headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json'
}
data = json.dumps({})
response = requests.post(DROPBOX_TEAM_MEMBERS_URL, headers=headers, data=data)
if response.status_code == 200:
members = response.json()
team_members = {}
for member in members['members']:
team_members[member['profile']['team_member_id']] = member['profile']['email']
print(f"User ID: {member['profile']['team_member_id']}, Email: {member['profile']['email']}")
return team_members
else:
print("Error listing team members:", response.text)
return None
# List Folders and Files in the Team member account
def list_dropbox_backups(selected_user_id):
global DROPBOX_ACCESS_TOKEN
access_token = refresh_dropbox_token()
if access_token is None:
print("Failed to refresh Dropbox access token.")
return
headers = {
'Authorization': f'Bearer {access_token}',
'Dropbox-API-Select-User': selected_user_id,
'Content-Type': 'application/json'
}
data = json.dumps({
"path": "",
"recursive": False
})
response = requests.post(DROPBOX_LIST_FOLDER_URL, headers=headers, data=data)
if response.status_code == 200:
files = response.json()
for entry in files['entries']:
print(f"Name: {entry['name']}, Type: {entry['.tag']}")
else:
print("Error listing files:", response.text)
if __name__ == "__main__":
team_members = list_dropbox_team_members()
if team_members:
selected_email = input("Enter the email of the team member whose backups you want to list: ")
selected_user_id = None
for user_id, email in team_members.items():
if email == selected_email:
selected_user_id = user_id
break
if selected_user_id:
print(f"Listing backups for user: {selected_email} (User ID: {selected_user_id})")
list_dropbox_backups(selected_user_id)
else:
print(f"No team member found with the email: {selected_email}")
Please let me know if you found anything to be changed, also I attached a screen shot here to be in the same page which service for the backups I am talking about.
Greg-DB
2 months agoDropbox Staff
Looking at this code, there are a few things to note:
- You're only calling /2/files/list_folder but not /2/files/list_folder/continue. You're not guaranteed to get everything back from just /2/files/list_folder; you need to check the returned has_more value and implement support for /2/files/list_folder/continue as well. Please check the linked documentation for more information.
- You're only checking the directly folder ("path": "") contents, and not any of its children ("recursive": False). You'd only get items directly in the folder but not anything any deeper. You'd need to call back again with the relevant subfolder, or otherwise use the recursive mode to get nested entries.
- josuegomes25 days agoHelpful | Level 6
I'm also facing the same problem. Both /2/files/list_folder and /2/files/list_folder/continue return no Dropbox Backup files. I tried with Dropbox API Explorer
Request parameter "path" is empty, and "recursive" is "true".
The call returns all the files except the Dropbox Backup ones. "has_more" is "false".
I can provide more info if necessary.
But to my knowledge, Dropbox Backup files are not reachable from the API.
- DB-Des25 days agoDropbox Engineer
Hi josuegomes,
Please ensure you are using an access token for the account where the backups are stored. If you are traversing the files and folders of the corresponding account, using /files/list_folder[continue] until
has_more
isfalse
, the back up folder(s) should be included in the response. Typically, the folder for backed up data is the name of the backup. For example, a backup named "Mac" would have path "/Mac".- josuegomes25 days agoHelpful | Level 6
Yes, I'm using an access token for an account where the backups are stored.
At https://www.dropbox.com/backup/all I can see the files under PC name (screenshot attached)
However, as I stated before, using Dropbox API Explorer I don't see those files.
See attached the output of the list_folder request with recursive set as true.For some reason I can't attach the files here. So here is the link to the shared folder with the files.
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
5,877 PostsLatest Activity: 2 hours agoIf you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!