diff --git a/api/api.py b/api/api.py
index f01c2196f43506f0c4c19a7669e2834546180e0f..ba71c8a94265e7d229a130fbd9286386f1f3b6b9 100644
--- a/api/api.py
+++ b/api/api.py
@@ -17,6 +17,7 @@ from .handlers.searchhandler      import SearchHandler
 from .handlers.userhandler        import UserHandler
 from .jobs.handlers               import BatchHandler, JobsHandler, JobHandler, GearsHandler, GearHandler, RulesHandler
 from .upload                      import Upload
+from .web.base                    import RequestHandler
 from . import config
 log = config.log
 
@@ -91,6 +92,7 @@ endpoints = [
 
         # Top-level endpoints
 
+        route('/logout',                            RequestHandler, h='log_out',  m=['POST']),
         route('/resolve',                           ResolveHandler, h='resolve', m=['POST']),
         route('/schemas/<schema:{schema}>',         SchemaHandler,               m=['GET']),
         route('/report/<report_type:site|project>', ReportHandler,               m=['GET']),
@@ -193,6 +195,12 @@ endpoints = [
 
         # Sessions
 
+        prefix('/sessions', [
+            route('/<cid:{cid}>/jobs',          ContainerHandler, h='get_jobs',     m=['GET']),
+            route('/<cid:{cid}>/subject',       ContainerHandler, h='get_subject',  m=['GET']),
+        ]),
+
+        route('/sessions/<cid:{cid}>/jobs',    ContainerHandler, h='get_jobs', m=['GET']),
         route('/sessions/<cid:{cid}>/jobs',    ContainerHandler, h='get_jobs', m=['GET']),
 
 
@@ -228,14 +236,15 @@ endpoints = [
 
             prefix('/<cid:{cid}>', [
 
-                route('/<list_name:tags>',                 TagsListHandler,                     m=['POST']),
-                route('/<list_name:tags>/<value:{tag}>',   TagsListHandler,                     m=['GET', 'PUT', 'DELETE']),
+                route('/<list_name:tags>',                      TagsListHandler,                     m=['POST']),
+                route('/<list_name:tags>/<value:{tag}>',        TagsListHandler,                     m=['GET', 'PUT', 'DELETE']),
 
-                route('/packfile-start',                   FileListHandler, h='packfile_start', m=['POST']),
-                route('/packfile',                         FileListHandler, h='packfile',       m=['POST']),
-                route('/packfile-end',                     FileListHandler, h='packfile_end'),
-                route('/<list_name:files>',                FileListHandler,                     m=['POST']),
-                route('/<list_name:files>/<name:{fname}>', FileListHandler,                     m=['GET', 'DELETE']),
+                route('/packfile-start',                        FileListHandler, h='packfile_start', m=['POST']),
+                route('/packfile',                              FileListHandler, h='packfile',       m=['POST']),
+                route('/packfile-end',                          FileListHandler, h='packfile_end'),
+                route('/<list_name:files>',                     FileListHandler,                     m=['POST']),
+                route('/<list_name:files>/<name:{fname}>',      FileListHandler,                     m=['GET', 'DELETE']),
+                route('/<list_name:files>/<name:{fname}>/info', FileListHandler, h='get_info',       m=['GET']),
 
 
                 route('/<list_name:analyses>', AnalysesHandler, m=['POST']),
diff --git a/api/handlers/containerhandler.py b/api/handlers/containerhandler.py
index 1aaec366ade21b5c1e324d59b61c8486c1817957..09b78dd6a5b287cf493d5e56eaa23b68c164eec0 100644
--- a/api/handlers/containerhandler.py
+++ b/api/handlers/containerhandler.py
@@ -54,7 +54,7 @@ class ContainerHandler(base.RequestHandler):
             'parent_storage': containerstorage.GroupStorage(),
             'storage_schema_file': 'project.json',
             'payload_schema_file': 'project.json',
-            'list_projection': {'info': 0},
+            'list_projection': {'info': 0, 'file.info': 0},
             'propagated_properties': ['archived', 'public'],
             'children_cont': 'sessions'
         },
@@ -64,7 +64,7 @@ class ContainerHandler(base.RequestHandler):
             'parent_storage': containerstorage.ProjectStorage(),
             'storage_schema_file': 'session.json',
             'payload_schema_file': 'session.json',
-            'list_projection': {'info': 0, 'analyses': 0},
+            'list_projection': {'info': 0, 'file.info': 0, 'analyses': 0, 'subject.firstname': 0, 'subject.lastname': 0, 'subject.age': 0, 'subject.info': 0},
             'propagated_properties': ['archived'],
             'children_cont': 'acquisitions'
         },
@@ -74,7 +74,7 @@ class ContainerHandler(base.RequestHandler):
             'parent_storage': containerstorage.SessionStorage(),
             'storage_schema_file': 'acquisition.json',
             'payload_schema_file': 'acquisition.json',
-            'list_projection': {'info': 0, 'collections': 0}
+            'list_projection': {'info': 0, 'collections': 0, 'file.info': 0}
         }
     }
 
@@ -171,6 +171,16 @@ class ContainerHandler(base.RequestHandler):
         if user_perm.get('access') != 'admin':
             result['permissions'] = [user_perm] if user_perm else []
 
+    def get_subject(self, cid):
+        self.config = self.container_handler_configurations['sessions']
+        self.storage = self.config['storage']
+        container= self._get_container(cid)
+
+        permchecker = self._get_permchecker(container)
+        result = permchecker(self.storage.exec_op)('GET', cid)
+        return result.get('subject', {})
+
+
     def get_jobs(self, cid):
         # Only enabled for sessions container type per url rule in api.py
         self.config = self.container_handler_configurations["sessions"]
diff --git a/api/handlers/listhandler.py b/api/handlers/listhandler.py
index d79194066c5319296c551ad48257c963f90f88b3..627e8d1bd2001203779f91b66b1d50e7b798649f 100644
--- a/api/handlers/listhandler.py
+++ b/api/handlers/listhandler.py
@@ -458,6 +458,9 @@ class FileListHandler(ListHandler):
                 self.response.headers['Content-Type'] = 'application/octet-stream'
                 self.response.headers['Content-Disposition'] = 'attachment; filename="' + filename + '"'
 
+    def get_info(self, cont_name, list_name, **kwargs):
+        return super(FileListHandler,self).get(cont_name, list_name, **kwargs)
+
     def post(self, cont_name, list_name, **kwargs):
         _id = kwargs.pop('cid')
 
diff --git a/api/web/base.py b/api/web/base.py
index 8b6356cca6cdfc8643d46acffa1c49c6684d002c..0e4174f066a363c985928ce24e742f69fef74f44 100644
--- a/api/web/base.py
+++ b/api/web/base.py
@@ -208,6 +208,19 @@ class RequestHandler(webapp2.RequestHandler):
 
         return uid
 
+
+    def log_out(self):
+        """
+        Remove all cached auth tokens associated with caller's uid.
+        """
+
+        if not self.uid:
+            self.abort(400, 'Only users may log out.')
+
+        result = config.db.authtokens.delete_many({'uid': self.uid})
+        return {'auth_tokens_removed': result.deleted_count}
+
+
     def set_origin(self, drone_request):
         """
         Add an origin to the request object. Used later in request handler logic.