cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to learn some quick and useful tips to make your day easier? Check out how Calvin uses Replay to get feedback from other teams at Dropbox here.

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to get all the files and folders of a business account ?

How to get all the files and folders of a business account ?

searchx
Explorer | Level 4
Go to solution

I am trying to find the possible ways to get all the 1) Personal files and folder 2) team folder and files 3) Anything shared with the user. Basically a complete snapshot of what the particular user has access to with in the business account. 

 

After reading through the documentations, looks like I need to following steps. 

 

Is there any other simple way which will give me all the data that user has and also has access to?

 

For all of the below, I will be using 'Dropbox-API-Select-Admin' as one of the headers so that it has access to any user account with in the business account.

 

For business accounts, here is the flow for getting the data 
from dropbox

1. namespaces (team/namespaces/list)
2. members (team/members/list)

To get the full data of a particular user,

1. Find the 'member_folder_id' of the user from
'members' api
2. Use that value as namespace id 'ns:member_folder_id' in the
header path.
3. From the 'namespaces' find all the 'shared_folder' where
this particular user is a member by calling
['sharing/list_folder_members'
and by group APIs where user
can be a member]
 
1 Accepted Solution

Accepted Solutions

Greg-DB
Dropbox Staff
Go to solution

It sounds like for what you're trying to do, the basic outline would look like this:

 

  • Call /2/team/members/list[/continue] or /2/team/members/get_info to get the team member's information, such as their member ID, if you don't already have it.
  • Call /2/users/get_current_account with Dropbox-API-Select-User containing the member ID to get the member's root info, i.e., both their root namespace ID and their home namespace ID. (This will be a "TeamRootInfo" type if the user is part of a team using the team space configuration.)
  • Call /2/files/list_folder[/continue] with path="" and recursive=true to get the full file/folder listing for the member using both Dropbox-API-Select-User containing the member ID and Dropbox-API-Path-Root containing the "home" mode as documented in the Namespace Guide (or just omit it, since this is the default). Note that this will include anything mounted inside the member's Dropbox, e.g., shared folders. Be sure to continue paging through using /2/files/list_folder/continue when has_more=true as documented for /2/files/list_folder.
  • Repeat the above, but using Dropbox-API-Path-Root with the "root" mode and supply the "root_namespace_id". This will give the contents of the team space.

View solution in original post

6 Replies 6

Lusil
Dropbox Staff
Go to solution
 
Initially, I wanted to suggest that, if you’re a team admin, you could create an activity report or export a member data report. You might also find this thread to be helpful as well.
 
Finally, you’ll notice that I’ve moved your post here since you may find more relevant info/suggestions to your query. :grinning:
 
In the mean time, I hope you have wonderful day ahead!

Lusil
Community Moderator @ Dropbox
dropbox.com/support


Heart Did this post help you? If so, please give it a Like below.
:arrows_counterclockwise: Still stuck? Ask me a question!
:pushpin: Tips & Tricks Find new ways to stay in flow or share your tips on how you work smarter with Dropbox.

searchx
Explorer | Level 4
Go to solution

Thanks for reply.

 

Looks like that doesn't work for me. My app has 'Team member file access'. When I try the below,

 

POST /2/files/list_folder
Host: https://api.dropboxapi.com
Authorization: Bearer <token>
Content-Type: application/json
Dropbox-Api-Select-User: dbmid:

{
"path": "",
"recursive": true
}

 

I get only the list of files from the user and nothing from team folders.

 

Greg-DB
Dropbox Staff
Go to solution

@searchx It sounds like the team probably uses the "team space" configuration, so the team folders aren't mounted inside the member's own folder. You'll need to use the "Dropbox-API-Path-Root" header to identify the team space in that case. The Namespace Guide goes over this in detail:

 

https://www.dropbox.com/developers/reference/namespace-guide 

searchx
Explorer | Level 4
Go to solution

Thanks Greg. 

 

It is still confusing. Let me re-iterate my problem.

 

I have an Admin token and I would like to see all the files that user has access to ( Private, team and shared). Accoding to the team space concept, in order to do that, I need to first find out all the name space ids and make calls (list/list_folder) for each?

 

Or is there a way, that I can make single (list_folder/continue) call as described in the documentation 'Dropbox-API-Select-User' ?

 

If there is a way, what combination of headers( Dropbox-API-Select-User andDropbox-API-Path-Root) I should use?

 

 

Greg-DB
Dropbox Staff
Go to solution

It sounds like for what you're trying to do, the basic outline would look like this:

 

  • Call /2/team/members/list[/continue] or /2/team/members/get_info to get the team member's information, such as their member ID, if you don't already have it.
  • Call /2/users/get_current_account with Dropbox-API-Select-User containing the member ID to get the member's root info, i.e., both their root namespace ID and their home namespace ID. (This will be a "TeamRootInfo" type if the user is part of a team using the team space configuration.)
  • Call /2/files/list_folder[/continue] with path="" and recursive=true to get the full file/folder listing for the member using both Dropbox-API-Select-User containing the member ID and Dropbox-API-Path-Root containing the "home" mode as documented in the Namespace Guide (or just omit it, since this is the default). Note that this will include anything mounted inside the member's Dropbox, e.g., shared folders. Be sure to continue paging through using /2/files/list_folder/continue when has_more=true as documented for /2/files/list_folder.
  • Repeat the above, but using Dropbox-API-Path-Root with the "root" mode and supply the "root_namespace_id". This will give the contents of the team space.

searchx
Explorer | Level 4
Go to solution

Thank you!

 

This works perfect! From my testing, I notice is that,  the last item itself gives me everything. Step3 looks redundant.

 

Only difference between both the methods is how path_lower returned for  'Private' and 'Shared' items and which makes sense based on what set as root.

 

If anyone else looking for the same, final snippet of what I used for finding all the 'Private', 'Shared' and 'Team' content of what each user has access to with in the business account. 

 

path = {".tag": "root","root":"namespace_id of team_folder"}
headers = {
"Authorization": "Bearer " + self.access_token,
"Content-Type": "application/json",
"Dropbox-API-Path-Root": json.dumps(path),
"Dropbox-API-Select-User": "dbmid:....."
}

data = {
"path": "",
"recursive": True
}

 

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    searchx Explorer | Level 4
  • User avatar
    Greg-DB Dropbox Staff
What do Dropbox user levels mean?