DSpace REST API - Bojan Suzic


Integration, testing, documentation and further development of DSpace REST services for 1.x and 2.0 versions. - Bojan Suzic


This page is not completed. The work on specifications is ongoing. Everyone is welcome to comment or contribute!



Details


Project Title:

DSpace REST API

Student:

Bojan Suzic, University of Technology Graz

Mentors:

Aaron Zeckoski, Mark Diggory

Contacting author:

bojan AT student . tugraz DOT at - using subject line DSpace

SCM Location for Project:

http://scm.dspace.org/svn/repo/modules/rest


Project description


The REST approach promotes simplification and decoupling of software architecture, enabling further scalability, portability, granularity and simplified interaction of software systems and components.
The aim of this project is to provide DSpace with REST capable API and underlying component, which will enable developers and end-users to exploit the advantages of such approach.

Some of uses this module is intended to provide could be, for instance:

This project is continuation of last year's activities, supported by Google as part of GSoC 2009. In the first stage the basic support for REST for DSpace is provided, exposing many parts of DSpace functionality to the clients.

In this year's GSoC the following activities should be primarily addressed:

Detailed activities


In the following sections main activities are elaborated in detail.

REST API Methods

Changes in comparison to existing support are marked with red color. Please note that changes may appear as:


Repository browsing


Name and description

Value and notes

Base URI:

/communities?topLevelOnly=true&idOnly=false

Description:

Returns a list of all communities on the system or return just top level communities.

HTTP method:

GET

Optional parameters:

 

Sorting fields supported:

id, name, countitems: sorting by id, community name and item count

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 


Name and description

Value and notes

Base URI:

/communities/{id}/parents?idOnly=false&immediateOnly=true

Description:

Returns a list of all parent communities of the id community.

HTTP method:

GET

Optional parameters:

 

Sorting fields supported:

id, name, countitems: sorting by id, community name and item count

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 


Name and description

Value and notes

Base URI:

/communities/id/children?idOnly=false

Description:

Returns a list of immediate sub-communities (children) of the id community.

HTTP method:

GET

Optional parameters:

 

Sorting fields supported:

id, name, countitems: sorting by id, community name and item count

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 


Name and description

Value and notes

Base URI:

/communities/id/collections?idOnly=false

Description:

Returns a list of collections in the id community

HTTP method:

GET

Optional parameters:

 

Sorting fields supported:

id, name, countitems: sorting by id, collection name and item count

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 


Name and description

Value and notes

Base URI:

/communities/id/recent?idOnly=false

Description:

Returns a list of recent submissions to a community

HTTP method:

GET

Optional parameters:

 

Sorting fields supported:

id, name, lastmodified, submitter: sorting by id, name(title), last modified date and submitter(name) of item

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 


Name and description

Value and notes

Base URI:

/collections?idOnly=false

Description:

Returns a list of all collections in the system

HTTP method:

GET

Optional parameters:

 

Sorting fields supported:

id, name, countitems: sorting by id, collection name and item count

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 


Name and description

Value and notes

Base URI:

/collections/id/communities?idOnly=false

Description:

Returns a list of all communities a collection with id belongs to

HTTP method:

GET

Optional parameters:

 

Sorting fields supported:

id, name, countitems: sorting by id, community name and item count

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 


Name and description

Value and notes

Base URI:

/collections/id/items?idOnly=false&in_archive=false

Description:

Returns a list of all items from the collection id

HTTP method:

GET

Optional parameters:

 

Sorting fields supported:

id, name, lastmodified, submitter: sorting by id, name, lastmodified date and submitter of item

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 

Content searching


Name and description

Value and notes

Base URI:

 

Description:

Returns a list of all objects found by searching criteria

HTTP method:

GET

Optional parameters:

 

Sorting fields supported:

id, name, lastmodified, submitter: sorting by id, name, last modifed date or submitter of item

Sorting/ordering modifiers:

title, issueDate, author, subject, submitter

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 


Name and description

Value and notes

Base URI:

 

Description:

Returns a list of all objects that have been created, modified or withdrawn within specified time range

HTTP method:

GET

Optional parameters:

 

Sorting/ordering modifiers:

id, name, lastmodified, submitter: information on item returned

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

 


Item status and retrieval


Name and description

Value and notes

Base URI:

/items/{id}

Description:

Returns detailed information about an item

HTTP method:

GET

Required parameters:

{id}: item id

Sorting fields supported:

id, name, lastmodified, submitter: sorting by id, name, last modifed date or submitter of item

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

Contains an information about an item including resource name, metadata, owning collection, collections stored in, communities stored in, bundle ids, last modified date, archival/withdrawn status and submitter of an item


Name and description

Value and notes

Base URI:

/items/{id}/permissions

Description:

Returns status of user permissions on this item

HTTP method:

GET

Required parameters:

{id}: item id

Response formats:

json, xml

Status codes

200: OK
400: bad request
500: internal server error

Response details

Boolean variable, stating can user edit the listed item


Name and description

Value and notes

Base URI:

 

Description:

Returns communities this item is part of

HTTP method:

GET

Required parameters:

Sorting fields supported:

id, name, countitems: community properties used for sorting

Response formats:

json, xml

Status codes

200: OK
400: bad request
500: internal server error

Response details

Communities listed


Name and description

Value and notes

Base URI:

 

Description:

Returns collections this item is part of

HTTP method:

GET

Required parameters:

Sorting fields supported:

id, name, countitems: collection parameters

Response formats:

json, xml

Status codes

200: OK
400: bad request
500: internal server error

Response details

Collections listed


Name and description

Value and notes

Base URI:

/bitstream/{id}

Description:

Returns bitstream object - usually the library item file

HTTP method:

GET

Required parameters:

{id}: bitstream item id

Response formats:

json, xml (not yet complete)

Status codes

200: OK
404: Not found
400: bad request
401: Unauthorized
403: Forbidden
500: internal server error

Response details

Includes all information about referenced bitstream, including file name, licence, corresponding ittem etc. It is possible only to get information for particular bitstreams. When the request is made without parameters/references, the blank list is presented (there is no list of all bitstreams in the system available).


Name and description

Value and notes

Base URI:

/bitstream/{id}/receive

Description:

Returns checksum of bitstream

HTTP method:

GET

Required parameters:

{id}: bitstreamitem id

Response formats:

binary

Status codes

200: OK
400: bad request
401: Unauthorized
403: Forbidden
500: internal server error

Response details

Receive full bitstream


User oriented functions


Name and description

Value and notes

Base URI:

 

Description:

Returns list containing id, name and email of persons (optionally matching a query)

HTTP method:

GET

Optional parameters:

Sorting fields supported:

id, name, lastname, fullname, language: sorting properties of user(submitter) supported

Response formats:

json, xml

Status codes

200: OK
204: no content
400: bad request
500: internal server error

Response details

List with information on particular user. Additionaly only identifiers are sent if idOnly is true.


Statistical info


Name and description

Value and notes

Base URI:

/stats

Description:

Returns general statistics

HTTP method:

GET

Response formats:

json, xml

Status codes

200: OK
400: bad request (if there is no stats package available)
500: internal server error

Response details

Returns cummulative list of statistics data for the system currently available