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

AdanHerrera's avatar
AdanHerrera
Explorer | Level 3
7 years ago

Python API

I'm working with Python & API v2

I need the following information:
If I have a shared folder with several users, is it possible to obtain a record of the users who have visited or downloaded the files?

 

 

---------------------
I was reading this information but I do not know if it's what I'm looking for.

 

class dropbox.sharing.UserFileMembershipInfo (access_type = None, user = None, permissions = None, initials = None, is_inherited = None, time_last_seen = None)
Bases: dropbox.sharing.UserMembershipInfo

The information about a user member of the shared content with an appended last seen timestamp.

Variables: time_last_seen - The UTC timestamp of when the user has last seen the content, if they have.

 

thanks!

  • Greg-DB's avatar
    Greg-DB
    7 years ago

    It looks like you have the right basic idea, but there are a few things to note:

    - You have 'none' instead of 'None'.

    - You can filter by category, which in this case would be 'dropbox.team_log.EventCategory.file_operations'.

    - You can filter by time, which can be good as without a time filter you may have to parse through more events than desired.

    - You need to check GetTeamEventsResult.has_more, and call back to team_log_get_events_continue if it's True.

     

    So, for example, to look for file_download events from the past week, that might look like:

     

    import datetime
    
    import dropbox
    
    access_token = '...'
    dbx_team = dropbox.DropboxTeam(access_token)
    account_id = 'dbid:...'
    time_range = dropbox.team_common.TimeRange(
        start_time=datetime.datetime.now() - datetime.timedelta(days=7))
    
    def handle_events(events):
        print("Processing %s events..." % len(events))
        for event in events:
            if event.event_type.is_file_download():
                print(event)
    
    result = dbx_team.team_log_get_events(
        limit=1000,
        account_id=account_id,
        time=time_range,
        category=dropbox.team_log.EventCategory.file_operations)
    handle_events(result.events)
    
    while result.has_more:
        result = dbx_team.team_log_get_events_continue(result.cursor)
        handle_events(result.events)
  • Greg-DB's avatar
    Greg-DB
    7 years ago
    1. No, unfortunately there isn't a way to filter by path across all members, but I'll pass this along as a feature request.

    2. Also no, it's not possible to filter to a specific event type, but we'll consider this a feature request as well.
  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Staff rankDropbox Staff

    The UserFileMembershipInfo object is used in SharedFileMembers, which is returned by sharing_list_file_members. That only applies to specific files that have been shared individually, not to files inside shared folders. That being the case, it sounds like this isn't what you're looking for in your scenario.

     

    There isn't an equivalent property for files in shared folders, though if you're using a Dropbox Business API app with "team auditing" access , you can get 'file_download' events from team_log_get_events and team_log_get_events_continue.

    • AdanHerrera's avatar
      AdanHerrera
      Explorer | Level 3

      Thanks  Greg for your time.

      1) I was looking into UserFileMembershipInfo and get some value information.

       

      2) I'm working now with Dropbox Business API app "team auditing" access, you can please show me how can I get the 'File_download' events. I don't know how to do,  I was trying this:

       

      import dropbox

      token= '    '
      dbx_team = dropbox.DropboxTeam(token)
      Resultado = dbx_team.team_log_get_events(limit=1000, account_id=u'dbid:fsfdsddf', time=None, category=none)
      print(Resultado)

      • Greg-DB's avatar
        Greg-DB
        Icon for Dropbox Staff rankDropbox Staff

        It looks like you have the right basic idea, but there are a few things to note:

        - You have 'none' instead of 'None'.

        - You can filter by category, which in this case would be 'dropbox.team_log.EventCategory.file_operations'.

        - You can filter by time, which can be good as without a time filter you may have to parse through more events than desired.

        - You need to check GetTeamEventsResult.has_more, and call back to team_log_get_events_continue if it's True.

         

        So, for example, to look for file_download events from the past week, that might look like:

         

        import datetime
        
        import dropbox
        
        access_token = '...'
        dbx_team = dropbox.DropboxTeam(access_token)
        account_id = 'dbid:...'
        time_range = dropbox.team_common.TimeRange(
            start_time=datetime.datetime.now() - datetime.timedelta(days=7))
        
        def handle_events(events):
            print("Processing %s events..." % len(events))
            for event in events:
                if event.event_type.is_file_download():
                    print(event)
        
        result = dbx_team.team_log_get_events(
            limit=1000,
            account_id=account_id,
            time=time_range,
            category=dropbox.team_log.EventCategory.file_operations)
        handle_events(result.events)
        
        while result.has_more:
            result = dbx_team.team_log_get_events_continue(result.cursor)
            handle_events(result.events)

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,910 PostsLatest Activity: 4 days ago
333 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!