You might see that the Dropbox Community team have been busy working on some major updates to the Community itself! So, here is some info on what’s changed, what’s staying the same and what you can expect from the Dropbox Community overall.
Forum Discussion
amedeomantica
7 years agoExplorer | Level 4
How to access Team Folders with Java API ?
Hi, I'm using dropbox V2 API with the Java library: dropbox-sdk-java
While I can access all team member's folders I cannot figure out how to access the global Team Folders.
Any hint ?
Thank you
Amedeo
Thank you for posting those samples amedeomantica
Because your Dropbox Team uses team space and member folders I'd like to make a suggestion. First, make sure you have the latest Java SDK (3.0.7).
Then add a call to get the current account information and root namespace:
FullAccount account = adminClient.users().getCurrentAccount(); String rootNS = account.getRootInfo().getRootNamespaceId();
Next, replace your call to listFolder() with this:
final ListFolderResult listFolderResult = dropBoxConnection.memberClient().withPathRoot(PathRoot.namespaceId(rootNS)).files().listFolder(path);
If there are issues with that, you can try varying the composition of your path string - try just using the literal string pathname vs the "ns:" format. Remember that all pathing will be relative to the root namespace (the Team root folder).
What the withPathRoot() method does is to "root" the chained API call at the given namespace. In your case, while you may have the proper namespace ID for the Team Folder, if you are not accessing it via the root namespace ID, it will not be visible to your user. This is because by default all calls without an explicit path root set are rooted in the home namespace (your user folder), not the team root where Team Folders live.
I suggest looking over "User's Home Folder & Team Root Folder" and the "Using a Namespace to Identify Content" in the Namespace Guide:
https://www.dropbox.com/developers/reference/namespace-guideHopefully, this gets you past the error.
-Chuck
- chirstiusDropbox Staff
Hello amedeomantica,
Can you clarify if this is a team-linked app, or a user-based app being linked to a team-based account?
In either case, I would suggest our namespace reference guide as a resource that may help with resolving this:
https://www.dropbox.com/developers/reference/namespace-guide
Of specific interest (if you are using a team-linked app) will be the namespacesList() and namespacesListContinue() methods to retrieve Team Folder namespace IDs:
DbxTeamClientV2 client = new DbxTeamClientV2(config, ACCESS_TOKEN); TeamNamespacesListResult namespaces = client.team().namespacesList(); // with an optional limit param
Within the results of that call, you can examine the NamespaceType value to determine what kind of folder it is:
for ( NamespaceMetadata namespace : namespaces.getNamespaces()) { if ( namespace.getNamespaceType() == NamespaceType.TEAM_FOLDER ) {
System.out.println("Team Folder: " + namespace.getName());
} }And once you have that you can use the namespace ID ( getNamespaceId() ) in other calls to traverse the Team Folder. Be aware you may need to prefix the namespace ID with "ns:" for it to be an acceptable path parameter to methods like listFolder() and you will need to impersonate (asMember()) users with appropriate access to any given folder to list its contents.
Hope that helps,
-Chuck
- amedeomanticaExplorer | Level 4
Hi @chirstius,
Mine is a team linked app with "Team member file access"
I followed your suggestion in order to get the namespaces list and find the team folder.
Hovewer if I try to list team folder files I go into error
Caused by: com.dropbox.core.v2.files.ListFolderErrorException: Exception in 2/files/list_folder: {".tag":"path","path":"not_found"} at com.dropbox.core.v2.files.DbxUserFilesRequests.listFolder(DbxUserFilesRequests.java:1425) at com.dropbox.core.v2.files.DbxUserFilesRequests.listFolder(DbxUserFilesRequests.java:1466)
If I try any other namespace ( member folders, shared folders ) everything works.
Any idea ?
- chirstiusDropbox Staff
Are you certain the member ID you are using to access the team folder actually has access to it? You may need to switch to a different user via asMember(). Can you validate that first? Then we can dig a little deeper...
Thanks!
-Chuck
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
5,882 PostsLatest Activity: 20 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!