Document toolboxDocument toolbox

File Views

Introduction

The basic idea of the File View feature is to allow a user to define views of files within a given scope.  A scope can be defined as one or more file containers (Projects or Folders).  For example, if a user wants to create a file view that includes all files in Project A and Project B, they would define the scope to include both projects.  Once the scope is defined, the next step will be to choose the columns they wish to include in the new file view. Once a view is created, and the scope and columns are defined, users will be able to query the view exactly the same as any other table in Synapse.  See the following Mockups:

Mockups

Bulk File Update

A File View is technically a 'view' of all files within the defined scope. Therefore, any edit operations on a view will not edit the contents of the view directly.  Instead, the edit of a view will be treated as a bulk update of the actual Files in the view.  After the Files are updated, the view will be recreated, so the changes will appear in the resulting new view.

Authorization

There are two separate authorization considerations with File Views:

  • ACL on the FileView itself.
  • ACL on each FileEntity shown in the view.

In order for any user to query a FileView they must first be granted the READ permission on the FileView.  In addition, a table view query result will only include rows for FileEntities that the caller has been granted the READ permission.  This means two different users may not see the same rows in any given FileView.

Since the data in a FileView contains only FileEntity metadata, the same authorization rules that apply to FileEntity metadata will apply to FileView data.  This means if the FileEntity metadata can be viewed by PUBLIC (Public granted READ on the FileEntity), then anyone will be able to see that file's metadata in a FileView. 

Note: This is less restrictive than Tables which can only be queried by users with the DOWNLOAD permission.

 

Models

 

API

ActionIntended UserURIMethodRequest BodyResponse Body
Get the list of default ColumnModels for all of the attributes of a FileEntity (name, createdOn, createdBy...)Anyone./column/fileview/defaultGET List<ColumnModel>
Get the list of  ColumnModels for all annotations found on FileEntities within the given scope.Anyone/column/fileview/scopePUTViewScopeList<ColumnModel>
Create a new FileView.Anyone/entityPOSTFileViewFileView
Start an asynchronous job to query a FileViewUsers with READ on the FileView/entity/{id}/table/query/async/startPOSTQueryBundleRequest AsyncJobId
Get the asynchronous job results for a FileView query.Only the user that started the query job./entity/{id}/table/query/async/get/{asyncToken}GET QueryResultBundle
Start an asynchronous job to download the query results as CSVUser with READ on the FileView/entity/{id}/table/download/csv/async/startPOSTDownloadFromTableRequestAsyncJobId
Get the asynchronous job results for request to download query results as CSVOnly the user that started the download job/entity/{id}/table/download/csv/async/get/{asyncToken}GET DownloadFromTableResult
Start an asynchronous job to bulk update FileEntitites using a CSV.User with UPDATE on each FileEntity to be updated.

/entity/{id}/table/upload/csv/async/start

POSTUploadToTableRequestAsyncJobId
Get the asynchronous job results for bulk update FileEntitites using a CSV.Only the user that started the upload job/entity/{id}/table/upload/csv/async/get/{asyncToken}GET UploadToTableResult