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

Earlier Implementation Description - GSoC09


C

Verb

URL

Description

Mandatory parameters

Optional parameters

Sorting fields

Response Data

Formats

Response codes

 

GET

/communities

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

-

topLevelOnly=true
idOnly=false

id
name
countitems

By default contains item count, identifier, handle and name and other referencing data, or 204 if none. Additionaly, based on parameter idOnly=true the method returns only identifiers.

json
xml

200, 400, 500

 

GET

/communities/{id}

Return information about id community.

-

-

-

TBD

json
xml

200, 204, 400, 500

PUT

/communities/{id}

Change description of id community

name

-

-

TBD

json
xml

200, 204, 500, 501

POST

/communities

Add community to the system

name

logo
parrent
other metadata

-

TBD

json
xml

200, 201, 204, 500, 501

 

GET

/communities/{id}/parents

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

-

idOnly=false
immediateOnly=true

id
name
countitems

Contains item count, identifiers, handle and name or 204 if id is already top-level. Additionaly, based on parameter idOnly=true the method returns only identifiers.

json
xml

200, 204, 400, 500

 

GET

/communities/{id}/children

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

-

idOnly=false

id
name
countitems

Contains item count, identifiers, handle and name or 204 if none. Additionaly, based on parameter idOnly=true the method returns only identifiers.

json
xml

200, 204, 400, 500

 

GET

/communities/{id}/collections

Return a list of collections in the id community.

-

idOnly=false

id
name
countitems

Contains item count, identifiers, name, archival status, last modification and handle of collections, or 204 if there are none of them. Additionaly with idOnly=true only identifiers are returned.

json
xml

200, 204, 400, 500

 

GET

/communities/{id}/recent

Return a list of recent submissions to a community.

-

idOnly=false

id
name
lastmodified
submitter

Contains complete items from recent submissions in community.
Additionaly, contains only identifiers when idOnly=true is used.

json
xml

200, 204, 400, 500

 

GET

/collections

Return a list of all collections in the system.

-

idOnly=false

id
name
countitems

Contains item count, identifiers, name and handle of collections, or 204 if
there are none of them. In the case idOnly=true is used, returns only
identifiers of collections.

json
xml

200, 204, 400, 500

 

GET

/collections/{id}/communities

Return a list of all communities a collection with id belongs to.

-

idOnly=false

id
name
countitems

Contains item count, identifier, name and handle of collections, or 204 if
there are none of them. Additionaly, when idOnly=true is used, return
only identifiers.

json
xml

200, 204, 400, 500

 

GET

/collections/{id}/items

Returns a list of all items from the collection id.

-

idOnly=false
in_archive=false

id
name
lastmodified
submitter

Contains full information info including name, submitter, collections related or 204 if there are none of them. In the case idOnly=true is used, return only identifiers of results.

json
xml

200, 204, 400, 500


Parameter

Description

topLevelOnly

returns only top level communities

idOnly

if true return only the identifiers for the record


Content searching


C

Verb

URL

Description

Mandatory parameters

Optional parameters

Sorting fields

Response Data

Formats

Response codes

 

GET

/search

Return a list of all objects found by searching criteria.
Notice: community and collection are mutually exclusive options.

-

TBD modifiers{{query=query}}&(community=id or \\{{collection=id}}
{{idOnly=false}}

id
name
lastmodified
submitter

Item info with basic metadata for the search results. Additionally return only
identifiers when idOnly=true is used.

json
xml

200, 204, 400, 500

 

GET

/harvest

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

-

startdate
{enddate}}
community
collection
idOnly=false
withdrawn=false
Notice: community and collection are mutually exclusive options

-

Contains item info including id, name, handle, metadata, bitstreams according to
the defined requirements. Additionally when idOnly=true only identifiers of
results are returned. If the date is in incompatible format, error 400 is returned.

json
xml

200, 204, 400, 500

Item status and retrieval

C

Verb

URL

Description

Mandatory parameters

Optional parameters

Sorting fields

Response Data

Formats

Response codes

 

GET

/items/{id}

Return detailed information about an item.

id

-

id
name
lastmodified
submitter

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.

json
xml

200, 204, 400, 500

 

GET

/items/{id}/permissions

Return status of user permissions on this item.

id

-

id
name
lastmodified
submitter

Boolean variable, stating can user edit the listed item .

json
xml

200, 400, 500

 

GET

/items/{id}/communities

Return communities this item is part of.

-

-

id
name
countitems

Communities listed.

json
xml

200, 400, 500

 

GET

/items/{id}/collections

Return collections this item is part of.

-

-

id
name
countitems

Collections listed.

json
xml

200, 400, 500

 

GET

/bitstream/{id}

Returns bitstream object - usually the library item file.

id

-

-

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).

json
xml

200, 400, 401, 403, 404, 500

 

GET

/bitstream/{id}/receive

Returns checksum of bitstream.

id-

-

-

Checksum of bitstream.

json
xml

200, 400, 401, 403, 404, 500


User oriented functions


Name and description

Value and notes

Base URI:

/users?query=query&idOnly=false

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


Items ingestion



Administrative tasks



Workflow related tasks


Visitors' suggestions or wishes


Here the visitors and stakeholders can insert their suggestions or describe the needs for their applications in detail.

Integration in the system


It is planned to consult two external subjects for cooperation and the assistance during integration process (LMS and national library internal automation process). More information coming soon - awaiting approval of other parties.

Documentation tasks


Although provided software module exposes basic documentation automatically to the end user, in order to make it easier for other developers and users the documentation in the following forms is additionaly to be provided:


Example of usage


At the end of the current stage of this project as a bonus task (if time constraints allow) the examples of usage will be provided for several languages, the use-cases will be presented (example of integration in other software, e.g. LMS) and optionally simple client system demonstrating UI customization will be demonstrated (e.g. Flex or JavaFX like).