API Documentation: libraries, library_contents

This commit is contained in:
Carl Eberhard
2013-08-01 15:21:46 -04:00
parent 93ca584fc2
commit f7d664aed0
2 changed files with 124 additions and 20 deletions
+53 -8
View File
@@ -15,9 +15,18 @@ class LibrariesController( BaseAPIController ):
@web.expose_api
def index( self, trans, deleted='False', **kwd ):
"""
GET /api/libraries
GET /api/libraries/deleted
Displays a collection (list) of libraries.
index( self, trans, deleted='False', **kwd )
* GET /api/libraries:
returns a list of summary data for libraries
* GET /api/libraries/deleted:
returns a list of summary data for deleted libraries
:type deleted: boolean
:param deleted: if True, show only deleted libraries, if False, non-deleted
:rtype: list
:returns: list of dictionaries containing library information
.. seealso:: :attr:`galaxy.model.Library.api_collection_visible_keys`
"""
log.debug( "LibrariesController.index: enter" )
query = trans.sa_session.query( trans.app.model.Library )
@@ -49,9 +58,20 @@ class LibrariesController( BaseAPIController ):
@web.expose_api
def show( self, trans, id, deleted='False', **kwd ):
"""
GET /api/libraries/{encoded_library_id}
GET /api/libraries/deleted/{encoded_library_id}
Displays information about a library.
show( self, trans, id, deleted='False', **kwd )
* GET /api/libraries/{id}:
returns detailed information about a library
* GET /api/libraries/deleted/{id}:
returns detailed information about a deleted library
:type id: an encoded id string
:param id: the encoded id of the library
:type deleted: boolean
:param deleted: if True, allow information on a deleted library
:rtype: dictionary
:returns: detailed library information
.. seealso:: :attr:`galaxy.model.Library.api_element_visible_keys`
"""
log.debug( "LibraryContentsController.show: enter" )
library_id = id
@@ -75,8 +95,20 @@ class LibrariesController( BaseAPIController ):
@web.expose_api
def create( self, trans, payload, **kwd ):
"""
POST /api/libraries
Creates a new library.
create( self, trans, payload, **kwd )
* POST /api/libraries:
create a new library
.. note:: Currently, only admin users can create libraries.
:type payload: dict
:param payload: (optional) dictionary structure containing::
'name': the new library's name
'description': the new library's description
'synopsis': the new library's synopsis
:rtype: dict
:returns: a dictionary containing the id, name, and 'show' url
of the new library
"""
if not trans.user_is_admin():
raise HTTPForbidden( detail='You are not authorized to create a new library.' )
@@ -102,6 +134,19 @@ class LibrariesController( BaseAPIController ):
@web.expose_api
def delete( self, trans, id, **kwd ):
"""
delete( self, trans, id, **kwd )
* DELETE /api/histories/{id}
mark the library with the given ``id`` as deleted
.. note:: Currently, only admin users can delete libraries.
:type id: str
:param id: the encoded id of the library to delete
:rtype: dictionary
:returns: detailed library information
.. seealso:: :attr:`galaxy.model.Library.api_element_visible_keys`
"""
if not trans.user_is_admin():
raise HTTPForbidden( detail='You are not authorized to delete libraries.' )
try:
@@ -19,8 +19,21 @@ class LibraryContentsController( BaseAPIController, UsesLibraryMixin, UsesLibrar
# TODO: Add parameter to only get top level of datasets/subfolders.
def index( self, trans, library_id, **kwd ):
"""
GET /api/libraries/{encoded_library_id}/contents
Displays a collection (list) of library contents (files and folders).
index( self, trans, library_id, **kwd )
* GET /api/libraries/{library_id}/contents:
return a list of library files and folders
:type library_id: str
:param library_id: encoded id string of the library that contains this item
:rtype: list
:returns: list of dictionaries of the form:
* id: the encoded id of the library item
* name: the 'libary path'
or relationship of the library item to the root
* type: 'file' or 'folder'
* url: the url to get detailed information on the library item
"""
rval = []
current_user_roles = trans.get_current_user_roles()
@@ -80,8 +93,20 @@ class LibraryContentsController( BaseAPIController, UsesLibraryMixin, UsesLibrar
@web.expose_api
def show( self, trans, id, library_id, **kwd ):
"""
GET /api/libraries/{encoded_library_id}/contents/{encoded_content_id}
Displays information about a library content (file or folder).
show( self, trans, id, library_id, **kwd )
* GET /api/libraries/{library_id}/contents/{id}
return information about library file or folder
:type id: str
:param id: the encoded id of the library item to return
:type library_id: str
:param library_id: encoded id string of the library that contains this item
:rtype: dict
:returns: detailed library item information
.. seealso::
:func:`galaxy.model.LibraryDataset.get_api_value` and
:attr:`galaxy.model.LibraryFolder.api_element_visible_keys`
"""
class_name, content_id = self.__decode_library_content_id( trans, id )
if class_name == 'LibraryFolder':
@@ -93,8 +118,29 @@ class LibraryContentsController( BaseAPIController, UsesLibraryMixin, UsesLibrar
@web.expose_api
def create( self, trans, library_id, payload, **kwd ):
"""
POST /api/libraries/{encoded_library_id}/contents
Creates a new library content item (file or folder).
create( self, trans, library_id, payload, **kwd )
* POST /api/libraries/{library_id}/contents:
create a new library file or folder
To copy an HDA into a library send ``create_type`` of 'file' and
the HDA's encoded id in ``from_hda_id`` (and optionally ``ldda_message``).
:type library_id: str
:param library_id: encoded id string of the library that contains this item
:type payload: dict
:param payload: dictionary structure containing:
* folder_id: the parent folder of the new item
* create_type: the type of item to create ('file' or 'folder')
* from_hda_id: (optional) the id of an accessible HDA to copy into the
library
* ldda_message: (optional) the new message attribute of the LDDA created
* extended_metadata: (optional) dub-dictionary containing any extended
metadata to associate with the item
:rtype: dict
:returns: a dictionary containing the id, name,
and 'show' url of the new item
"""
create_type = None
if 'create_type' not in payload:
@@ -195,10 +241,10 @@ class LibraryContentsController( BaseAPIController, UsesLibraryMixin, UsesLibrar
def _copy_hda_to_library_folder( self, trans, from_hda_id, library_id, folder_id, ldda_message='' ):
"""
Copies hda `from_hda_id` to library folder `library_folder_id` optionally
adding `ldda_message` to the new ldda's `message`.
Copies hda ``from_hda_id`` to library folder ``library_folder_id`` optionally
adding ``ldda_message`` to the new ldda's ``message``.
`library_contents.create` will branch to this if called with 'from_hda_id'
``library_contents.create`` will branch to this if called with 'from_hda_id'
in it's payload.
"""
log.debug( '_copy_hda_to_library_folder: %s' %( str(( from_hda_id, library_id, folder_id, ldda_message )) ) )
@@ -236,10 +282,23 @@ class LibraryContentsController( BaseAPIController, UsesLibraryMixin, UsesLibrar
return rval
@web.expose_api
def update( self, trans, id, library_id, payload, **kwd ):
def update( self, trans, id, library_id, payload, **kwd ):
"""
PUT /api/libraries/{encoded_library_id}/contents/{encoded_content_type_and_id}
Sets relationships among items
update( self, trans, id, library_id, payload, **kwd )
* PUT /api/libraries/{library_id}/contents/{id}
create a ImplicitlyConvertedDatasetAssociation
.. seealso:: :class:`galaxy.model.ImplicitlyConvertedDatasetAssociation`
:type id: str
:param id: the encoded id of the library item to return
:type library_id: str
:param library_id: encoded id string of the library that contains this item
:type payload: dict
:param payload: dictionary structure containing::
'converted_dataset_id':
:rtype: None
:returns: None
"""
if 'converted_dataset_id' in payload:
converted_id = payload.pop( 'converted_dataset_id' )