Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Note
titleFurther development

This is the page describing GSoC 2010 project ended officially in August 2010. The REST API project is continued after official GSoC date. The new address of wiki page is located at https://wiki.duraspace.org/display/DSPACE/REST+API. Please bookmark this page as all further development will be described there. Current GSoC page stays here for historical/documentation purposes.

DSpace REST API - Bojan Suzic


Excerpt

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


Panel
Table of Contents
outlinetrue
stylenone
separatornewline

Details


Project Title:

DSpace REST API

Student:

Bojan Suzic,

DSpace REST API - Bojan Suzic

Excerpt

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

Info
titleNot completed!

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

Panel
Table of Contents
outlinetrue
stylenone
separatornewline

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 .suzic AT gmail _DOT _com - using subject line DSpace

SCM Location for Project:

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

...


In the following sections main activities are elaborated in detail.

REST API

...

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

...

Endpoints

In the following section listed are supported endpoints on the application level. The items marked with dot (in C column) are in phase of implementation, while other items are considered already working. 

Please note that additional tests should be made in order to ensure proper stability of the whole application.

The sorting of the fields / output results is currently partially supported. This part of the application is implemented independently of the endpoints and will be worked on after the most of endpoints are completed.

...

Note
titleNaming convention for endpoints

DSpace 1.x and 2.x are treating the resources on different way. 2.x is more generalized, suggesting the use of RDF-like interrelation notations.

Repository browsing

Earlier Implementation Description - GSoC09

...

countitems - number of items under community
handle - handle of the community (unique persistent resource identifier)
id - entity identifier, internal to the system
name - entity name
type - entity type (object type in the system)
collections - collections contained in the community, ordered by id
ancestors - ancestors of the community, ordered by id
children - subcommunities, ordered by id
admins - group administrators, ordered by id
metadata - community metadata

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.

-

DSPACE:topLevelOnly=true
DSPACE:idOnly=false

DSPACE:id 
DSPACE:name
DSPACE:countitems countitems - number of items under community
handle - handle of the community (unique persistent resource identifier)
id - entity identifier, internal to the system
name - entity name
type - entity type (object type in the system)
collections - collections contained in the community, ordered by id
ancestors - ancestors of the community, ordered by id
children - subcommunities, ordered by id
admins - group administrators, ordered by id
metadata - community metadata
administrators - default group of administrators
Response code details:
204 - if there are no communities on the system

json
xml

200, 204, 400, 500

The list of communities containing DSPACE:respective fields .

Response code details:
204 - if there are no communities on the system

json
xml

DSPACE:200, 204, 400, 500

 

GET

/communities/{id}

Return detailed information about id community.

id

idOnly=false

-

DSPACE:Fields describing community.

json
xml

DSPACE:200, 400, 404, 500

 

GET

/communities/{id}/{element}

Return information about id community.

id

idOnly=false

-

countitems a particular data field found in the community id

Anchor
com_elements
com_elements
Fields supported (for element):
id - entity identifier, internal to the system
name - entity name
countItems - number of items under community
handle - handle of the community (unique persistent resource identifier)
id - entity identifier, internal to the system
name - entity name
type - entity  entity type (object type in the system)
collections - collections  collections contained in the community, ordered by id
ancestors - ancestors
canedit - states user persmission on the community (editing)
anchestor - anchestors of the community , ordered by id
children - subcommunities, ordered by id
admins administrators - group administrators, ordered by id
metadata recent - community metadata
administrators - default group of administrators recent items in the community
shortDescription - short description
copyrightText - copyright text
sidebarText - sidebar text
introductoryText - introductory text


id

DSPACE:idOnly=false  
DSPACE:immediateOnly=true

DSPACE:id
DSPACE:name
DSPACE:countitems

Respective field info 

json
xml

DSPACE:200, 204, 400, 404, 500

 

GET

/communities/{id}/ancestors logo

Return a list of all ancestor communities of the id community. community logo

id

idOnly=false  
immediateOnly=true

id
name
countitems

-

-

Contains community logo (bitstream)

binary

DSPACE:200, 400

 

GET

/collections

Return a list of all collections in the system.

-

DSPACE:idOnly=false
DSPACE:isAuthorized=false

DSPACE:id 
DSPACE:name 
DSPACE:countitems

The list of the collections containing DSPACE:respective fields.

Response code details: 
204 - if there are no communities on the system

json
xml

DSPACE:200, 204, 400, 500

 

GET

/collections/{id}

Return detailed information about id collection

id

DSPACE:idOnly=false

DSPACE:id
DSPACE:name
DSPACE:countitems

DSPACE:Fields of the collection entity.

json
xml

DSPACE:200, 204, 400, 500

 

GET

/collections/{id}/{element}

Return a particular data field found in the collection id.

Anchor
col_elements
col_elements
Fields supported (for element):

json
xml

200, 204, 400, 500

GET

/communities/{id}/children

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

id

idOnly=false

id
name
countitems

countitems - number of items under community
handle - handle of the community (unique persistent resource identifier)
id - entity identifier, internal to the system
name - entity name collection name 
type - entity type (object type in the system)
collections - collections contained in the community, ordered by id
ancestors - ancestors of the community, ordered by id
children - subcommunities, ordered by id
admins - group administrators, ordered by id
metadata - community metadata
administrators - default group of administrators

json
xml

licence - collection licence
items - items contained in collection
handle - handle of the collection (unique persistent resource identifier)
canedit - states user permission on the collection (edit)
communities - communities collection is a part of
countItems - number of the items in the collection
type - entity type (object type in the system)
shortDescription - short description of the collection
introText - introductory text for the collection
copyrightText - copyright text for the collection
sidebarText - sidebar text for the collection
provenance - provenance

id

DSPACE:idOnly=false
DSPACE:immediateOnly=true

DSPACE:id 
DSPACE:name
DSPACE:countitems

Respective field info

json
xml

DSPACE:200, 204, 400, 500

 

GET

/communities/{id}/collectionsitems

Return a list of collections the items in the id community. system id

-

idOnly=false -

-

The list of the items containing DSPACE:related fields .

Response code details: 
204 - if there are no communities on the system

 

 

 

GET

/items/{id}

Return detailed information about an item.

id

-

id 
name 
lastmodified
submitter

DSPACE:Fields of the item entity.

json 

id
name
countitems

countitems - number of items under collection
handle - handle of the collection 
id - entity identifier, internal to the system
name - entity name
type - entity type (object type in the system)
items - items contained in the collection, ordered by id
communities - owners of the collection, ordered by id
admins - group administrators, ordered by id
licence - collection licence 
templateItem - template item
Response code details:
204 - if there are no collections json
xml

200, 204, 400, 500

 

GET

/communitiesitems/{id}/recent{element}

Return a list of recent submissions to a community.

id

idOnly=false

id
name
lastmodified
submitterId
submitterName

particular data field fould in the item id

Anchor
ite_elements
ite_elements
Fields supported (for element):
metadata - item metadata 
submitter - submitter group id - entity (item) identifier, internal to the system
handle - handle of the item
isArchived - archival status of the item
isWithdrawn - withdrawal status of states if the item is withdrawn
owningCollection - owning collection of the item
lastModified - timestamp of last modification modified time
metadata collections - collections the item metadata appears in
name communities - communities the item appears is
name
submitter - submiter entity
type - entity type (object type in the system, item in this case) - name of the item
bitstreams - bitstreams related to the  item
handle - item handle (unique identified)
bundles - bundles related to canedit - states can user edit the item
collections id - collections related item appear in id 
communities - communities related item appear in
Response details:
204 - if there are no recently submitted items type - element type
bundles - bundles related to the item

id, element

-

-

Respective field info

json
xml

200, 204, 400, 500

 

GET

/communitiesbitstream/{id} /logo

Return a community logo bitstream object - usually the library item file.

id

-

-

Contains community logo (bitstream)

DSPACE:Fields of the bitstream entity. 

json, xml binary

200, 400, 401, 403, 404, 500

 

GET

/collectionsbitstream/{id}/{element

Return a list of all collections in the systemparticular data field found in bitstream id.

-

idOnly=false
isAuthorized=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}

Return information about id collection

id

idOnly=false

id
name
countitems

countitems - number of items under collection
items - items present in the collection
id - entity (collection) identifier, internal to the system
handle - handle of the collection
licence - collection licence
name - collection name
type - entity type (object type in the system, item in this case)
communities - communities related collection appear in
submiters - default group of submitters, if there is one
administrators - default group of administrators, if there is one
templateitem - template item for collection, if there is one

json
xml

200, 204, 400, 500


Anchor
bit_elements
bit_elements

Supported fields (for element):
mimeType -  mime type of file
bundles - bundles the bitstream is a part of
checkSum - checksum of the file
checkSumAlgorithm - checksum algorithm used
description - bitstream description
formatDescription - file format description
sequenceId - sequence id of the file
size - size of the file 
source - source (typically filename with path information)
storeNumber - asset store number where the bitstream is stored
userFormatDescription - user's format description
name - bitstream name
handle - unique id of the bitstream
id - internal id of the bitstream
type - type of the entity (referring to bitstream)

id, element

-

-

Respective field info

json, xml

200, 400, 401, 403, 404, 500

 

GET

/bitstream/{id}/receive

Return bitstream

id

-

-

Return bitstream

binary

200, 400, 401, 403, 404, 500

 

GET

/groups

Return a list of the groups in the system

-

-

-

The list of the groups containing related DSPACE:fields .

204 if there are no groups in the system.

json,xml

200, 204, 400, 500

 

GET

/groups/{id}

Return a group object

id

-

-

DSPACE:Fields of the group entity.

json,

GET

/collections/{id}/ancestors

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

id

idOnly=false
immediateOnly=true

id 
name
countitems

countitems - number of items under community 
handle - handle of the community (unique persistent resource identifier) 
id - entity identifier, internal to the system 
name - entity name 
type - entity type (object type in the system) 
collections - collections contained in the community, ordered by id 
ancestors - ancestors of the community, ordered by id 
children - subcommunities, ordered by id 
admins - group administrators, ordered by id 
metadata - community metadata
administrators - default group of administrators

json
xml

200, 204, 400, 500

 

GET

/collectionsgroups/{id}/items{element}

Returns a list of all items from the collection Return a particular data field found in the group entity id.

Anchor
gro_elements
gro_elements

Supported fields (for element):
handle - unique id (external)
id - internal id of the gruop
isEmpty - is the group empty
members - group members (as users)
memberGroups - group members (as groups)
name - group name
type - entity type (referring to group)

id, element

-

-

Respective field info

json,xml

200, 204, 400, 500

 

GET

/users

Return a list of the users in the system

-

-

-

The list of the users containing related DSPACE:fields .

json,

id

idOnly=false
inArchive=false

id
name
lastmodified
submitterId
submitterName

id - entity (item) identifier, internal to the system
handle - handle of the item
isArchived - archival status of the item
isWithdrawn - withdrawal status of the item
lastModified - timestamp of last modification
metadata - item metadata
name - item name
submitter - submiter entity
type - entity type (object type in the system, item in this case)
bitstreams - bitstreams related to the item
bundles - bundles related to the item
collections - collections related item appear in
communities - communities related item appear in
Response details:
204 - if there are no  items
json
xml

200,204,400,500

 

GET

/collectionsusers/{id} /logo

Return a collection logo user info

id

-

-

Contains collection logo (bitstream)

binary

200, 400

Note: modifier idOnly is referred only to first layer of the results. For all other layers (e.g. nested results) only ids are returned in some cases, due to possible loops. Example: for community containing collections,  on second level the response contains only ids for some elements where multiple loops may be created (community->has_collection->has_community....). Other data is modified according to idOnly flag.

Optional parameters

...

Parameter

...

Description

DSPACE:Fields of the user entity.

json,xml

200,204,400,500

 

GET

/users/{id}/{element}

Return a particular data field found in the user id.

Anchor
use_elements
use_elements

Supported fields (for element):
email - user's email
firstName - first name
fullName - full name
handle - handle (unique, external)
id - internal id of the user
language - preferred language
lastName - last name
name - name 
netId - network id
requireCertificate - requires certificate to login
selfRegistered - is user self registered
type - type of the object

id,element

-

-

Respective field info

json,xml

200,204,400,500

Note: modifier idOnly is referred only to first layer of the results. For all other layers (e.g. nested results) only ids are returned in some cases, due to possible loops. Example: for community containing collections,  on second level the response contains only ids for some elements where multiple loops may be created (community->has_collection->has_community....). Other data is modified according to idOnly flag.


Optional parameters

Parameter

Description

Anchor
toplevelonly
toplevelonly
topLevelOnly

returns only top level communities

Anchor
idonly
idonly
idOnly

if true return only the identifiers for the record

Anchor
immediateonly
immediateonly
immediateOnly

return only direct parent community

Anchor
isauthorized
isauthorized
isAuthorized

return only collections user has permission to work on

Anchor
inarchive
inarchive
inArchive

return archived items for respective collection



Sorting fields:
Info
titleNot completed!

The sorting of the fields / output results is currently partially supported. This part of the application is implemented independently of the endpoints and will be worked on after the most of endpoints are completed.

Parameter

Description

Ordering supported

Anchor
sort_id
sort_id
id

sort results by entity id

asc | ascending
desc | descending

Anchor
sort_name
sort_name
name

sort results by entity name

...

returns only top level communities

...

if true return only the identifiers for the record

...

return only direct parent community

...

return only collections user has permission to work on

...

return archived items for respective collection

Sorting fields:
id name countitems lastmodified submitterName submitterId sort results by submitter id

Parameter

Description

Ordering supported

Anchor
sort_idsort_id

sort results by entity id

asc | ascending
desc | descending

Anchor
sort_namesort_name

sort results by entity name

asc | ascending 
desc | descending

Anchor
sort_countitemssort_countitems

sort results by number of items contained

asc | ascending 
desc | descending

Anchor
sort_lastmodifiedsort_lastmodified

sort results by date of last item modification

asc | ascending 
desc | descending

Anchor
sort_submitternamesort_submittername

sort results by submitter name

asc | ascending 
desc | descending

Anchor
sort_submitteridsort_submitterid

asc | ascending 
desc | descending

...

Anchor

Parameter

Description

Default

Example

_start

position of the first entity to return

0 (first)

_start=5 to list 6th item and onwards

_page

page of data to display

0 (first)

_page=2, to display second page with query results

_perpage

number of results to show on each page

0 (all)

_perpage=10 to display 10 results per page

_limit

maximum number of entities to return

0 (all)

_limit=50

_sort

 

the sort order to return entities in 
should be comma separated list of field names 
suffix determines ordering 
suffixes: _asc, _ascending, _desc, _descending 
ascending default

sort=name  
_sort=name,email_desc,lastname_desc

...

sort_countitems
sort_countitems
countitems

sort results by number of items contained

asc | ascending 
desc | descending

Anchor
sort_lastmodified
sort_lastmodified
lastmodified

sort results by date of last item modification

asc | ascending 
desc | descending

Anchor
sort_submittername
sort_submittername
submitterName

sort results by submitter name

asc | ascending 
desc | descending

Anchor
sort_submitterid
sort_submitterid
submitterId

sort results by submitter id

asc | ascending 
desc | descending


Controlling results

Parameter

Description

Default

Example

_start

position of the first entity to return

0 (first)

_start=5 to list 6th item and onwards

_page

page of data to display

0 (first)

_page=2, to display second page with query results

_perpage

number of results to show on each page

0 (all)

_perpage=10 to display 10 results per page

_limit

maximum number of entities to return

0 (all)

_limit=50

_sort

 

the sort order to return entities in 
should be comma separated list of field names 
suffix determines ordering 
suffixes: _asc, _ascending, _desc, _descending 
ascending default

sort=name  
_sort=name,email_desc,lastname_desc


Anchor
rcodes
rcodes

Response codes

Code

Description

200

...

Response codes

Code

Description

200

OK

201

Created

204

No content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not found

405

Method not allowed

500

Internal server error

503

Service unavailable

Repository manipulation

Authentication/Authorization

Currently only standard authentication is supported. The authentication data is provided in the request or header body.

Example:

/rest/communities.json?user=user@email.com&pass=userpassword

The same elements user and pass are used for header based authentication.

Authorization is done on underlying api level; in the case of error the proper message and error code are returned to the user.

Repository manipulation

C

Verb

URL

Description

Mandatory parameters

Optional parameters

Response Data

Formats

Response codes

 

POST

/communities

Action to be done under community id, adding new content or values.

Supported actions:
createAdministrators
createCollection
createSubcommunity

id, action



-
name
name

-

Id of newly created entity, depending on the action selected:
id of group of administrators
id of collection
id of subcommunity

C

Verb

URL

Description

Mandatory parameters

Optional parameters

Response Data

Formats

Response codes

PUT

/communities/{id}

Change description of id community

id

name
metadata
logo

Response code

json 
xml

200, 400, 401, 403, 500

POST

/communities

Add community to the system

name

logo 
parent 
other metadata

Id of newly created community

json 
xml

200, 400, 401, 403, 500

 

DELETE PUT

/communities/{id}

Delete community from the system

/{element}

Update the field element of the community id.

Supported fields:
name - change name
shortDescription - change short description
copyrightText - change copyright text
sidebarText - change sidebar text
introductoryText - change introductory text
collections - add existing collection
children - add existing subcommunity

id


value
value
value
value
value
cid
cid id

-

Response code

json   xml

200, 400, 401, 403, 500

 

DELETE PUT

/communities/{id}/administratorslogo

Remove the administrators group from the community Set the logo for community id

id

-

Response code

json
xml

 

binary

200, 400, 401, 403, 500


DELETE

/communities/{id}/collections/{cid}

Remove collection cid from community id Delete community from the system

id

cid -

Response code

 

json
xml

200, 400, 401, 403, 500  


DELETE

/communities/{id}/children{element}/{cideid}

Remove subcommunity cid from attribute/value eid of element element from the community id.
id
Suported elements:

cid

collections
children
administrators

id, eid



cid
cid
-

-

Response code  

json
xml

 



POST

/communities/{id}/administrators

Create a default administrators group if one does not already exists

id

-

Id of newly created group

 

 


POST

/communities/{id}/collections

Create a new collection within community id

id

-

Id of newly created collection

 

 

collections

Action to be done under collection id, adding new content or values.

Supported actions:
createAdministrators
createSubmitters
createTemplateItem
createWorkflowGroup

id, action

 

-
-
-
step

-

Id ow newly created element

json
xml

200, 400, 401, 403, 500


PUT

/collections


PUT

/communities/{id}/collections/{cidelement}

Add an existing collection cid to community id

id
cid

--

Response code

 

 


POST

/communities/{id}/children

Create a new subcommunity within community id

id

-

Id of newly created subcommunity

 

 

Update field element of the collection id.

Supported elements:
shortDescription - short description
introText - introductory text
copyrightText - copyright text
sidebarText - sidebar text
provenance - provenance
licence - collection licence
name - collection name

id 


value
value
value
value
value
value
value

-

Response code

json
xml

200, 400, 401, 403, 500


DELETE

/collections/{id}

Delete collection from the system

-


PUT

/communities/{id}/children/{cid}

Add an existing community cid as a subcommunity of community id

id
cid

-

Response code

 

 

 

PUT

json
xml

200, 400, 401, 403, 500

DELETE

/collections/communities/{id}/metadata{element}/{cid}

Remove attribute/value cid from collection id
Supported attributes:
administrators
item
submitters
templateItem

id, cid

-

Response code

json
xml

200,400,401,403,500

PUT

/

Set metadata value

id

metadataField
metadataValue

Response code

 

 


PUT

/collections/{id}/logo

Set the logo for collection id Change description of id collection

id

 

Response code

json binary xml

200,400,401,403,500

POST

/collectionsitems Add collection to the system

Action to be done under item id, adding content or value.

Supported actions:
createBundle
createBitstream


id, action



name
communityId name, input

 

Id of newly created collection element

json
,xml, binary

200,400,401,403,500


DELETE PUT

/collectionsitems/{id}/{element}

Delete collection from the system

Update field element of the item id

Supported fields:
isArchived
isWithdrawn
owningCollection
submitter

id,element -

-

Response code

json
,xml

200,400,401,403,500

 

DELETE

/collectionsitems/{id} /items/{cid}

Delete item cid from collection id the system

id

cid -

Response code

json
,xml

 

 

PUT

200,400,401,403,500


DELETE

/items/collections/{id}/logo

Set the logo for collection id

id

 

Response code

 

 

 

POST

/collections/{id}/administrators

Create a default administrators group if one does not already exists

id

-

Response code

 

 

 

DELETE

/collections/{id}/administrators

Remove the administrators group from the collection

id

-

Response code

 

 

 

PUT

/collections/{id}/submitters

Create a default submitters group if one does not already exists

id

-

Response code

 

 

 

DELETE

/collections/{id}/submitters

Remove the submitters group

id

-

Response code

 

 

 

PUT

/collections/{id}/templateitem

Create an empty template item for this collection

id

-

Response code

 

 

 

DELETE

/collections/{id}/templateitem

Remove the template item from the collection

id

-

Response code

 

 

 

POST

/collections/{id}/items

Add an item to the collection

id

itemId

Response code

 

 

 

PUT

/collections/{id}/metadata

Set metadata value

id

metadataField
metadataValue

Response code

 

 

 

PUT

/collections/{\id}/licence

Set collection licence

id

licence

Response code

 

 

 

 

 

 

 

 

 

 

 

Content searching

{element}/{eid}

Delete element/attribute eid from the item id

Supported fields for element:
bundle
licences 

id,element,eid

-

Response code

json,xml

200,400,401,403,500

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.

-

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

Statistical info


C

Verb

URL

Description

Mandatory parameters

Optional parameters

Sorting fields

Response Data

Formats

Response codes

 

GET

/stats

Return general statistics.

-

-

-

Cummulative list of statistics data for the system currently available.

json
xml

200, 400, 500

Relationships interface

Info
titleExperimental feature

This is considered as a experimental feature in the phase of being considered for compability with future versions of DSpace. Consider not important section; the status of the feature for upcoming release yet to be determined.

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

resource/{handle}/relations

Return entities according to relation and parameters specified

handle 
DSPACE:property

DSPACE:rtype
rfield

-

ontains entities selected and sorted in conformance to request parameters. For more details see description of rtype andrfield.

json 
xml

DSPACE:200, 204, 400, 401, 403, 500

Mandatory parameters
  GET

Parameter

Description

/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

id - entity (item) identifier, internal to the system 
handle - handle of the item 
isArchived - archival status of the item 
isWithdrawn - withdrawal status of the item 
lastModified - timestamp of last modification 
metadata - item metadata 
name - item name 
submitter - submiter entity 
type - entity type (object type in the system, item in this case) 
bitstreams - bitstreams related to the item 
bundles - bundles related to the item
collections - collections related item appear in 
owningCollection - get the owning collection of the item
communities - communities related item appear in

json
xml

200, 204, 400, 500

 

GET

/items/{id}/permissions

Return status of user permissions on this item.

id

-

-

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

idOnly=false

id
name
countitems

countitems - number of items under community 
handle - handle of the community (unique persistent resource identifier) 
id - entity identifier, internal to the system 
name - entity name 
type - entity type (object type in the system) 
collections - collections contained in the community, ordered by id 
ancestors - ancestors of the community, ordered by id 
children - subcommunities, ordered by id 
admins - group administrators, ordered by id 
metadata - community metadata
administrators - default group of administrators

json
xml

200, 400, 500

 

GET

/items/{id}/collections

Return collections this item is part of.

id

idOnly=false

id
name
countitems

countitems - number of items under collection 
items - items present in the collection 
id - entity (collection) identifier, internal to the system 
handle - handle of the collection 
licence - collection licence 
name - collection name 
type - entity type (object type in the system, item in this case) 
communities - communities related collection appear in 
submiters - default group of submitters, if there is one
administrators - default group of administrators, if there is one
templateitem - template item for collection, if there is one

json
xml

200, 400, 500

 

GET

/bitstream/{id}

Return bitstream object - usually the library item file.

id

-

-

id - id of bitstream
name - name of the bitstream
bundles - bundles the related bitstream appears in
checksum - checksum of bitstream
checksumAlgorithm - checksum algorithm used
description - bitstream description
formatDescription - format description of bitstream
handle - bitstream handle
mimeType - mime type of bitstream
sequenceId - sequence id 
size - bitstream size in bytes
source - bitstream source, local
storeNumber - store number
type - object type
userFormatDescription - description of user format

json
xml

200, 400, 401, 403, 404, 500

 

GET

/bitstream/{id}/receive

Return bitstream

id

-

-

Return bitstream

binary

200, 400, 401, 403, 404, 500

Item manipulation

...

C

...

Verb

...

URL

...

Description

...

Mandatory parameters

...

Optional parameters

...

Response Data

...

Formats

...

Response codes

...

...

POST

...

/items/{id}/action

...

Change parameters of item id

...

id

...

addBundle
addMetadata 
createBundle
createSingleBitstream
removeBundle
removeLicenses
setArchived
setOwningCollection
setSubmitter
withdraw

...

Response code

...

json 
xml

...

200, 400, 401, 403, 500

...

 

...

PUT

...

/items/{id}/bundle/{{bid}}

...

Add an existing bundle bid to item id

...

id
bid

...

 

...

 

...

 

...

 

...

 

...

DELETE

...

/items/{id}/bundle/{{bid}}

...

Remove bundle bid from item id

...

id
bid

...

 

...

 

...

 

...

 

...

 

...

PUT

...

/items/{id}/metadata

...

Add a single metadata field

...

 

...

 

...

 

...

 

...

 

...

DELETE

...

/items/{id}metadata

...

Remove a single metadata field

...

schema
element
qualifier
lang

...

 

...

 

...

 

...

 

...

 

...

DELETE

...

/items/{id}/metadata

...

 

...

 

...

 

...

 

...

 

...

 

...

...

POST

...

/communities

...

Add community to the system

...

name

...

logo 
parent 
other metadata

...

Id of newly created community

...

json 
xml

...

200, 400, 401, 403, 500

...

• 

...

DELETE

...

/communities/{id}{}

...

Delete community from the system

...

id

...

-

...

Response code

...

json 
xml

...

200, 400, 401, 403, 500

...

• 

...

PUT

...

/collections/{id}{}

...

Change description of id collection

...

id

...

 

...

Response code

...

json 
xml

...

200, 400, 401, 403, 500

...

• 

...

POST

...

/collections

...

Add collection to the system

...

name 
communityId

...

 

...

Id of newly created collection

...

json 
xml

...

200, 400, 401, 403, 500

...

• 

...

DELETE

...

/collections/{id}{}

...

Delete collection from the system

...

-

...

-

...

Response code

...

json 
xml

...

User oriented functions

C

Verb

URL

Description

Mandatory parameters

Optional parameters

Sorting fields

Response Data

Formats

Response codes

 

GET

/users

Return a list containing id, name and email of persons.

-

query
idOnly=false

id
name
lastname
fullname
language

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

json
xml

200, 204, 400, 500

Statistical info

C

Verb

URL

Description

Mandatory parameters

Optional parameters

Sorting fields

Response Data

Formats

Response codes

 

GET

/stats

Return general statistics.

-

-

-

Cummulative list of statistics data for the system currently available.

json
xml

200, 400, 500

Administrative tasks

Workflow related tasks

Relationships interface

C

Verb

URL

Description

Mandatory parameters

Optional parameters

Sorting fields

Response Data

Formats

Response codes


GET

/communities/{id}/relations

Return entities according to relation and parameters specified

id 
property

rtype
rfield

-

ontains entities selected and sorted in conformance to request parameters. For more details see description of rtype andrfield.

json 
xml

200, 204, 400, 401, 403, 500

Mandatory parameters

...

Parameter

...

Description

...

Values

...

Example

...

Return entities satisfying requested property relation

...

property=ds:hasCommunity - return subcommunities of a community 
property=ds:isPartOfCommunity - return communities current community is part of (children) 
property=ds:hasCollection - return collections belonging to community 
property=ds:hasItem - return Items belonging to community

Values

Example

Anchor
property
property
property

Return entities satisfying requested property relation

Structural properties 
ds:isPartOfSite 
ds:isPartOfCommunity 
ds:isPartOfCollection 
ds:isPartOfItem 
ds:isPartOfBundle 
ds:hasCommunity 
ds:hasCollection 
ds:hasItem 
ds:hasBundle 
ds:hasBitstream 
ds:hasBitstreamFormat 

Communities and collections 
ds:logo 

Bistream format 
ds:support 
ds:fileExtension 
ds:mimeType 

Bitstream 
ds:messageDigest 
ds:messageDigestAlgorithm 
ds:messageDigestOriginator 
ds:size 

Eperson 
ds:language 

property=ds:hasCommunity - return subcommunities of a community 
property=ds:isPartOfCommunity - return communities current community is part of (children) 
property=ds:hasCollection - return collections belonging to community 
property=ds:hasItem - return Items belonging to community

Anchor
rtype
rtype
rtype

restriction on type - only entity with specifed type(s) would be returned

ds:Bitstream  
ds:Bundle  
ds:Collection  
ds:Community  
ds:EPerson  
ds:Group  
ds:Item  
ds:DSpaceObject  
ds:Policy  
ds:Site  
ds:BitstreamFormat|

rtype=ds:Collection - return entities of Collection type

Anchor
rfield
rfield
rfield

restriction on fields - return only selected fields; by default all fields are returned

id
name
countitems
metadata
subcommunities
ancestors
owner
other (depending on object type, will be documented later)

rfield=id,name - return only entity id and name in response

Note: incomplete/orientative properties, for more info check [Vocabularies|http://code.google.com/p/dspace-sandbox/source/browse/#svn/modules/dspace-rdf/tags/dspace-rdf-1.5.1/src/main/java/org/dspace/adapters/rdf/vocabularies]. 

Visitors' suggestions or wishes


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

Comment: In this case it is not clear how to treat recent part of endpoint. If we stick to semantic mapping, then it should look like /resource/id/mapping, but recent in this case obviously do not represent a mapping, but the property. 

Comment #2: Semantic mapping presented in this case should be probably hardcoded for 1.x branch, but on abstraction level which enables easy replacement with some auto-discovery method prepared for 2.x and eventually backported to 1.x. This way we would be able to call something similar to /communities/id or communities/id/capabilities in order to get supported mappings (amongst other data).

Suggesting new options:

Instead of changing wiki contents visitors can enter their suggestions as a comments.

1) Kevin S. Clarke and Tim Donhue suggested adding of the new feature related to HTTP Basic Auth. Ok, I will investigate how it could be done and included here. More info comming.

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:

  • Confluence pages, current location
  • integrated documentation in PDF form (manual)
  • short slides containing technology overview, advocacy/facts, configuration and usage guideliens and examples
  • code will be additionally commented

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

Information for developers

In this section the main sections of the software will be briefly explained in order to ease update or extension of the components.

The REST API for DSpace uses Aaron Zeckoski's EntityBus and DSpace standard libraries, as dspace-api.

There are two main packages: org.dspace.rest.providers and org.dspace.rest.entities. Providers are responsible for serving content/feeds to the users. They usually prepare entities or particular entity and/or handle update/delete/create functions. The main class there is AbstractBaseProvider, which is extended by other providers.

In the providers, at the constructor level created are mappings between particular endpoints (e.g. /rest/items/1/collections) and related functions in entities (org.dspace.entities.items.getCollections). Thus, for each GET, PUT, POST or DELETE function in the entity provider's constructor defined are such mappings between URL endpoints and functions. After the client makes specific call, the provider prepares answer and in this phase calls mapped function and prepare results for display.

So, if you want to extend currently available endpoints for already present providers and entities, it is necessary to define mapping at provider level and prepare corresponding function at the entity level (based on the template). The system then calls this function and provides necessary arguments for its successfully handling.

If you want to develop a new provider, it is usually necessary to create new provider class in org.dspace.rest.providers and then create related entity in org.dspace.rest.entities. The currently available providers are good example how to do that

...

restriction on type - only entity with specifed type(s) would be returned

...

ds:Bitstream  
ds:Bundle  
ds:Collection  
ds:Community  
ds:EPerson  
ds:Group  
ds:Item  
ds:DSpaceObject  
ds:Policy  
ds:Site  
ds:BitstreamFormat|

...

rtype=ds:Collection - return entities of Collection type

...

restriction on fields - return only selected fields; by default all fields are returned

...

id
name
countitems
metadata
subcommunities
ancestors
owner
other (depending on object type, will be documented later)

...

rfield=id,name - return only entity id and name in response

Note: incomplete/orientative properties, for more info check [Vocabularies|http://code.google.com/p/dspace-sandbox/source/browse/#svn/modules/dspace-rdf/tags/dspace-rdf-1.5.1/src/main/java/org/dspace/adapters/rdf/vocabularies]. 

Visitors' suggestions or wishes

...

Comment: In this case it is not clear how to treat recent part of endpoint. If we stick to semantic mapping, then it should look like /resource/id/mapping, but recent in this case obviously do not represent a mapping, but the property. 

Comment #2: Semantic mapping presented in this case should be probably hardcoded for 1.x branch, but on abstraction level which enables easy replacement with some auto-discovery method prepared for 2.x and eventually backported to 1.x. This way we would be able to call something similar to /communities/id or communities/id/capabilities in order to get supported mappings (amongst other data).

Integration in the system

...

Documentation tasks

...

  • Confluence pages, current location
  • integrated documentation in PDF form (manual)
  • short slides containing technology overview, advocacy/facts, configuration and usage guideliens and examples
  • code will be additionally commented

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