cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
We want to hear from you. What do you use Dropbox for?
Close

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: 
Highlighted

ParentSharedFolderId is Null when checking permissions

Helpful | Level 6

I previously made a program that goes through my entire team's DropBox permissions and creates a report from the data. It tells me their name, permissions for the current file/folder, the name of the current file/folder, and is supposed to share the parent folder's name. However, I am running into the issue of the "ParentSharedFolderID" being null even when I know from checking that the specified file/folder is in a parent folder. What could be causing this?

 

Here is my code:

private async void ButtonDebug_Click(object sender, EventArgs e)
{
ButtonDebug.Enabled = false;

//use dropbox client with access token from app console
using (DropboxTeamClient DBTeamClient = new DropboxTeamClient("MYCLIENTIDHERE"))
{
//get all the dropbox members
var members = await DBTeamClient.Team.MembersListAsync();
//loop through all members ordered by email alphabetical
foreach (var member in members.Members.OrderBy(a => a.Profile.Email))
{
int count = 0;
//get each user
var userClient = DBTeamClient.AsMember(member.Profile.TeamMemberId);
//actions to check
var actionsToCheck = new FolderAction[] { FolderAction.EditContents.Instance, FolderAction.InviteEditor.Instance };
//get each user's file information
var list = await userClient.Sharing.ListFoldersAsync(actions: actionsToCheck); // actions can optionally be supplied to check the permissions the user has for specific actions
//loop through the list of file and show permissions on folders
foreach (var item in list.Entries)
{
int length = item.AccessType.ToString().Length - 32 - 2;
System.Diagnostics.Debug.WriteLine("");
System.Diagnostics.Debug.WriteLine(member.Profile.Name.DisplayName);
System.Diagnostics.Debug.WriteLine(item.Name);
System.Diagnostics.Debug.WriteLine(item.AccessType.ToString().Substring(32, length));
string parentName = "N/A";
if (item.ParentSharedFolderId != null)
{
try
{
var parentSharedFolderMetadata = await userClient.Sharing.GetFolderMetadataAsync(item.ParentSharedFolderId);
System.Diagnostics.Debug.WriteLine(parentSharedFolderMetadata.Name);
parentName = parentSharedFolderMetadata.Name;
}
catch (DropboxException ex)
{
parentName = "N/A";
}
}
System.Diagnostics.Debug.WriteLine(count + "");
count++;
}
System.Diagnostics.Debug.WriteLine(count + " total folders");
}
}
ButtonDebug.Enabled = true;
}

1 Accepted Solution

Accepted Solutions
Highlighted

Re: ParentSharedFolderId is Null when checking permissions

Helpful | Level 6

I was able to solve my issue by using the following to retrieve the folder's meta data:

 

var itemMetaData = await userClient.Sharing.GetFolderMetadataAsync(item.SharedFolderId);

 

After that I got the parent folder's meta data and name from this:

 

var parentSharedFolderMetadata = await userClient.Sharing.GetFolderMetadataAsync(itemMetaData.ParentSharedFolderId);
parentName = parentSharedFolderMetadata.Name;

View solution in original post

2 Replies 2
Highlighted

Re: ParentSharedFolderId is Null when checking permissions

Dropboxer
Dropboxer

I see you're calling Sharing.ListFoldersAsync to list the shared folders in the account. (By the way, make sure you check ListFoldersResult.Cursor to see if there are more entries to retrieve, in which case you should call back to ListFoldersContinueAsync.)

 

The ParentSharedFolderId property will only be set if the folder itself is contained inside another shared folder. Are you sure you're seeing this absent for folders insider other shared folders? I ask because you only said "the specified file/folder is in a parent folder", but not specifically that the parent folder is shared.

 

If that's not working properly though, please share the unexpected output you're seeing so we can take a look. You can open an API ticket if you'd prefer to share privately.

 

If the folder is in a non-shared parent folder and you want the path of that parent, you can retrieve it from the PathLower property. Note that that will only be present if the folder is mounted though.

Highlighted

Re: ParentSharedFolderId is Null when checking permissions

Helpful | Level 6

I was able to solve my issue by using the following to retrieve the folder's meta data:

 

var itemMetaData = await userClient.Sharing.GetFolderMetadataAsync(item.SharedFolderId);

 

After that I got the parent folder's meta data and name from this:

 

var parentSharedFolderMetadata = await userClient.Sharing.GetFolderMetadataAsync(itemMetaData.ParentSharedFolderId);
parentName = parentSharedFolderMetadata.Name;

View solution in original post

Polls
Do you know how to organize your files and folders?
<b>We have created a guide on folder best practice, so you can get organized now <a href="https://www.dropboxforum.com/t5/Business-Tips-tricks/Folder-structure-best-practice/m-p/428456#M39"><u>check it out here</u></a>.</b>

Work Smarter with Dropbox

The way we work is changing. Share and discover new ways to work smarter with Dropbox in our community.

Sound good? Let's get started.
Who's talking

Top contributors to this post

What do Dropbox user levels mean?
Need more support?