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

nsalex's avatar
nsalex
New member | Level 2
22 days ago

Unable to share folders since migration to updated team space

Back in June, our Dropbox Business account was migrated to the Updated Team Space system. We have a custom application that manages automatically uploading files and sharing folders with our customers. Everything was working fine prior to June, new files could be uploaded, folders could be shared, and folder members could be added. After the account was migrated, all of the functionality broke, as expected. We were able to fix file uploads by grabbing the new root_namespace_id for the account, but we have not been able to share folders since the account migration.

 

This is the response from the `get_features` endpoint for our account, which I believe indicates we are on the updated team space:

{
  "values": [
    {
      ".tag": "has_team_shared_dropbox",
      "has_team_shared_dropbox": {
        ".tag": "has_team_shared_dropbox",
        "has_team_shared_dropbox": false
      }
    },
    {
      ".tag": "has_distinct_member_homes",
      "has_distinct_member_homes": {
        ".tag": "has_distinct_member_homes",
        "has_distinct_member_homes": true
      }
    }
  ]
}

 

Here are the scopes granted to our application:

files.metadata.write
files.metadata.read
files.content.write
files.content.read
sharing.write
sharing.read
file_requests.write
file_requests.read
contacts.write
contacts.read

 

Here's an example of a file upload call that succeeds:

fetch('https://content.dropboxapi.com/2/files/upload', {
  method: 'POST',
  headers: {
   'Content-Type': 'application/octet-stream',
   'Dropbox-API-Arg': JSON.stringify({
     path: `/Client Files/${customer.name}/${file.name}`,
     mute: false,
    }),
   Authorization: `Bearer ${token}`,
   'Dropbox-API-Select-Admin': adminId,
   'Dropbox-API-Path-Root': JSON.stringify({
     '.tag': 'namespace_id',
     namespace_id: rootNamespaceId,
   }),
 },
 body: buffer,
}

 

However, after updating the share_folder call, we are getting {".tag": "no_permission"} responses. Here's how we are attempting to share new folders created by the app:

fetch('https://api.dropboxapi.com/2/sharing/share_folder', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/json',
    'Dropbox-API-Select-Admin': adminId,
    'Dropbox-API-Path-Root': JSON.stringify({ '.tag': 'namespace_id', namespace_id: rootNamespaceId }),
  },
  body: JSON.stringify({
    path: `/Client Files/${customer.name}`,
    member_policy: 'anyone',
  }),
});

 

We've gone a few rounds trying different permutations of Dropbox-API-Select-Admin, Dropbox-API-Select-User, and Dropbox-API-Path-Root options, but we have had no luck.

 

I don't know if this matters, but here's the metadata for the "/Client Files" folder: 

{
  ".tag": "folder",
  "name": "Client Files",
  "path_lower": "/client files",
  "path_display": "/Client Files",
  "parent_shared_folder_id": "<root namespace id>",
  "id": "id:<id>",
  "shared_folder_id": "<number>",
  "sharing_info": {
    "read_only": false,
    "parent_shared_folder_id": "<root namespace id>",
    "shared_folder_id": "<number>",
    "traverse_only": false,
    "no_access": false
  }
}

 

  • Hi nsalex,

     

    Since you are using the rootNamespaceId, we recommend using { '.tag': 'root', 'root': rootNamespaceId } instead of { '.tag': 'namespace_id', namespace_id: rootNamespaceId } in your request. This aligns with the naming structure and value expected by the API, thus ensuring correct functionality.

  • DB-Des's avatar
    DB-Des
    Icon for Dropbox Engineer rankDropbox Engineer

    Hi nsalex,

     

    Since you are using the rootNamespaceId, we recommend using { '.tag': 'root', 'root': rootNamespaceId } instead of { '.tag': 'namespace_id', namespace_id: rootNamespaceId } in your request. This aligns with the naming structure and value expected by the API, thus ensuring correct functionality.

    • nsalex's avatar
      nsalex
      New member | Level 2

      Thank you! Unlike the "files/upload" endpoint, the namespace_id and root tags behave differently for the root namespace in the "sharing/share_folder" endpoint. This is now working.

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,882 PostsLatest Activity: 3 years ago
325 Following

If 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!