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 full absolute path of a team folder using the namespace id?

How to full absolute path of a team folder using the namespace id?

Info V.1
Collaborator | Level 8
Go to solution

We use full path to track dropbox files in our system. When a file is added in a team folder then we get an event that has "contextual" path. But when an external user drop a file then it does not have this field.

So, how can I get full path of the team folder using its namespace id.

 

1 Accepted Solution

Accepted Solutions

Greg-DB
Dropbox Staff
Go to solution

For items in the team space you can still use /2/files/get_metadata to get the metadata, such as the `path_lower`. For instance, that may look like:

 

curl -X POST https://api.dropboxapi.com/2/files/get_metadata \
    --header "Authorization: Bearer <ACCESS_TOKEN>" \
    --header "Dropbox-API-Select-Admin: <ADMIN_ID>" \
    --header "Content-Type: application/json" \
    --header 'Dropbox-API-Path-Root: {".tag": "root", "root": "<TEAM_SPACE_ID>"}' \
    --data "{\"path\": \"ns:<SHARED_FOLDER_ID>\"}"

 

 

View solution in original post

5 Replies 5

TaylorKrusen
Dropbox Staff
Go to solution

Could you please clarify your question a bit?

If possible, could you give me an example of what you're currently getting back as well as an example of what you're trying to do (what you want the data to look like)?

Info V.1
Collaborator | Level 8
Go to solution

Below is the event when a team member uploads file, note that it has field "contextual" under assets>path.

{
            "timestamp": "2019-05-23T01:11:12Z",
            "event_category": {
                ".tag": "file_operations"
            },
            "actor": {
                ".tag": "user",
                "user": {
                    ".tag": "team_member",
                    "account_id": "dbid:AAC4XXXXXXXXXXXXuv8oCqkHpcyLw",
                    "display_name": "Andy Dwyer",
                    "email": "adwyer@veraqa.net",
                    "team_member_id": "dbmid:AAAJXXXXXLroYqf-A7hFdXXXXXX70WUmWw"
                }
            },
            "origin": {
                "geo_location": {
                    "city": "Sunnyvale",
                    "region": "California",
                    "country": "US",
                    "ip_address": "96.95.218.202"
                },
                "access_method": {
                    ".tag": "end_user",
                    "end_user": {
                        ".tag": "web",
                        "session_id": ""
                    }
                }
            },
            "involve_non_team_member": false,
            "context": {
                ".tag": "team_member",
                "account_id": "dbid:AAC4N0gXXXXXXXXuv8oCqkHpcyLw",
                "display_name": "Andy Dwyer",
                "email": "adwyer@veraqa.net",
                "team_member_id": "dbmid:AAXXXXXlPLroYqf-A7hFd3XXXXXX0WUmWw"
            },
            "participants": [],
            "assets": [
                {
                    ".tag": "folder",
                    "path": {
                        "contextual": "/Sales/external/folder_creation_test",
                        "namespace_relative": {
                            "ns_id": "5568891184",
                            "relative_path": "/folder_creation_test"
                        }
                    },
                    "display_name": "folder_creation_test",
                    "file_id": "id:tG_h5JeqH1XXXXXAAAB1wQ"
                }
            ],
            "event_type": {
                ".tag": "file_add",
                "description": "Added files and/or folders"
            },
            "details": {
                ".tag": "file_add_details"
            }
        }

Now, below is the event when external user drops a file , note this does not have field "contextual" under assets>path.

{
            "timestamp": "2019-05-21T06:30:07Z",
            "event_category": {
                ".tag": "file_operations"
            },
            "actor": {
                ".tag": "app",
                "app": {
                    ".tag": "user_linked_app",
                    "app_id": "dbaid:AACd5ER5-nbkf7XXXXXk8_ArXJQkQshU",
                    "display_name": "Dropbox for Android"
                }
            },
            "origin": {
                "geo_location": {
                    "city": "San Jose",
                    "region": "California",
                    "country": "US",
                    "ip_address": "2601:646:8700:42b0:dc48:3e00:ce93:310a"
                },
                "access_method": {
                    ".tag": "api",
                    "request_id": "dbarid:73b4349e346cf6d6939d103ea76adad7"
                }
            },
            "involve_non_team_member": true,
            "context": {
                ".tag": "non_team_member",
                "account_id": "dbid:AAD0uHlPDbAjch1-21c5LFXXXXVBalczE",
                "display_name": "Manish Agarwal",
                "email": "itsmanishagarwal@gmail.com"
            },
            "participants": [],
            "assets": [
                {
                    ".tag": "file",
                    "path": {
                        "namespace_relative": {
                            "ns_id": "5561881552",
                            "relative_path": "/IMG_20190520_233130.jpg"
                        }
                    },
                    "display_name": "IMG_20190520_233130.jpg",
                    "file_id": "id:WSl52hXXXXAAAAAAAAADXA"
                }
            ],
            "event_type": {
                ".tag": "file_add",
                "description": "Added files and/or folders"
            },
            "details": {
                ".tag": "file_add_details"
            }
        }

Now, how can I find the contextual path for the above namespace (ns_id:5561881552)?

Greg-DB
Dropbox Staff
Go to solution

Thanks, that's helpful. First, for reference, the "contextual" path is the "fully qualified path relative to event's context". 

In the first case, the event's context is a 'team_member', so your app has access to the information about the full path in that particular team member's account.

In the second case however, the event's context is a 'non_team_member', so your app does not have access to the information about the full path in the non team member's account. I.e., for a particular shared folder, the user can put that shared folder anywhere in their account that they want. Since your app isn't authorized to the rest of their account though, it can't see the rest of the path, e.g., any parent folders.

So, to summarize, while your app gets events for the shared folder since it's owned by your team in general, since this event is from a non-team member, it doesn't get the contextual information about that shared folder's location in that non-team member's account.

Further, there isn't necessarily a single answer as to "where" the shared folder is located in your team members' accounts. The shared folder may be at different locations in different accounts. 

If you're using an app with the team member file access permission though, you can use the team member file access feature to list the members of any particular shared folder using /2/sharing/list_folder_members[/continue], and then look up the information for a particular shared folder in a particular team member's account, such as where the folder is located, using /2/files/get_metadata.

Info V.1
Collaborator | Level 8
Go to solution

Thanks Greg for quick reply.

I am still not able to get the required information.

I am summarising my requirement here:

1. An external user drops a file into a team folder that is shared to him externally.

2. I get the event and got the namespaceId of the folder from the event. I can confirm that this is a team folder using the 2/sharing/share_folder. Now we know that team folders have same path for all users in the team, so how can I find that path (respective to the enterprise root) of the namespaceId.,

 

Greg-DB
Dropbox Staff
Go to solution

For items in the team space you can still use /2/files/get_metadata to get the metadata, such as the `path_lower`. For instance, that may look like:

 

curl -X POST https://api.dropboxapi.com/2/files/get_metadata \
    --header "Authorization: Bearer <ACCESS_TOKEN>" \
    --header "Dropbox-API-Select-Admin: <ADMIN_ID>" \
    --header "Content-Type: application/json" \
    --header 'Dropbox-API-Path-Root: {".tag": "root", "root": "<TEAM_SPACE_ID>"}' \
    --data "{\"path\": \"ns:<SHARED_FOLDER_ID>\"}"

 

 

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    Greg-DB Dropbox Staff
  • User avatar
    Info V.1 Collaborator | Level 8
  • User avatar
    TaylorKrusen Dropbox Staff
What do Dropbox user levels mean?