...
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: |
...
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 market 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 | ||
---|---|---|
| ||
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
...
C | Verb | URL | Description | Mandatory parameters | Optional parameters | Sorting fields | Response Data | Formats | Response codes | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| | | Returns a list of all communities on the system or return just top level communities. | - | The list of communities containing respective fields . | | |||||||||
• | | | Return detailed information about | | | - | Fields describing community. | | |||||||
• | | | Return a particular data field found in the community
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) type - entity type (object type in the system) collections - collections contained in the community, ordered by id canedit - states user persmission on the community (editing) anchestor - anchestors of the community children - subcommunities, ordered by id administrators - group administrators, ordered by id recent - recent items in the community shortDescription - short description copyrightText - copyright text sidebarText - sidebar text introductoryText - introductory text | | Respective field info | | |||||||||
• | | | Return a community logo | | - | - | Contains community logo (bitstream) | | |||||||
• | | | Return a list of all collections in the system. | - | The list of the collections containing respective fields. | | |||||||||
• | | | Return detailed information about | | Fields of the collection entity. | | |||||||||
• | | | Return a particular data field found in the collection
element ): id - entity identifier, internal to the system name - collection name 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 | | Respective field info | | |||||||||
| | | Return a list of the items in the system | - | - | - | The list of the items containing related fields . |
|
| ||||||
| | | Return detailed information about an item. | | - | | Fields of the item entity. | | 200, 204, 400, 500 | ||||||
| | | Return a particular data field fould in the item
element ): metadata - item metadata submitter - submitter group isArchived - archival status of the item isWithdrawn - states if the item is withdrawn owningCollection - owning collection of the item lastModified - last modified time collections - collections the item appears in communities - communities the item appears is name - name of the item bitstreams - bitstreams related to the item handle - item handle (unique identified) canedit - states can user edit the item id - item id type - element type bundles - bundles related to the item | | - | - | Respective field info | | 200, 204, 400, 500 | ||||||
| | | Return bitstream object - usually the library item file. | | - | - | | | 200, 400, 401, 403, 404, 500 | ||||||
| | | Return bitstream | | - | - | Return bitstream | | 200, 400, 401, 403, 404, 500 |
...
Parameter | Description | ||||||
---|---|---|---|---|---|---|---|
topLevelOnly | returns only top level communities | ||||||
idOnly | if true return only the identifiers for the record | ||||||
immediateOnly | return only direct parent community | ||||||
isAuthorized | return only collections user has permission to work on | ||||||
inArchive | return archived items for respective collection |
Sorting fields:
Info | ||
---|---|---|
| ||
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 | ||||||
---|---|---|---|---|---|---|---|---|
id | sort results by entity id | | ||||||
name | sort results by entity name | | ||||||
countitems | sort results by number of items contained | | ||||||
lastmodified | sort results by date of last item modification | | ||||||
submitterName | sort results by submitter name | | ||||||
submitterId | sort results by submitter id | |
...
C | Verb | URL | Description | Mandatory parameters | Optional parameters | Response Data | Formats | Response codes | |
---|---|---|---|---|---|---|---|---|---|
• | | | Action to be done under community | | - | | | 200, 400, 401, 403, 500 | |
| | /communities/{id}/{element} | Update the field | | - | Response code |
| 200, 400, 401, 403, 500 | |
| | | Set the logo for community | | - | Response code | binary | 200, 400, 401, 403, 500 | |
• | | | Delete community from the system | | - | Response code | | 200, 400, 401, 403, 500 | |
• | | | Remove attribute/value | | - | Response code | |
| |
• |
| | Action to be done under collection | | - | Id ow newly created element | | 200, 400, 401, 403, 500 | |
• |
| | Update field | | - | Response code | | 200, 400, 401, 403, 500 | |
• | | | Delete collection from the system | - | - | Response code | | 200, 400, 401, 403, 500 | |
| | | Remove attribute/value | | | Response code | |
| |
| | | Set the logo for collection | |
| Response code | binary |
| |
|
|
|
|
|
|
|
|
|
|
...
Content searching
Info | ||
---|---|---|
| ||
This is to be extended |
C | Verb | URL | Description | Mandatory parameters | Optional parameters | Sorting fields | Response Data | Formats | Response codes |
---|---|---|---|---|---|---|---|---|---|
| | | Return a list of all objects found by searching criteria. | - | TBD modifiers{{query= | | Item info with basic metadata for the search results. Additionally return only | | 200, 204, 400, 500 |
| | | Return a list of all objects that have been created, modified or withdrawn within specified time range. | - | | - | Contains item info including id, name, handle, metadata, bitstreams according to | | 200, 204, 400, 500 |
Item manipulation
Info | ||
---|---|---|
| ||
To be rewritten and moved to repository manipulation |
C | Verb | URL | Description | Mandatory parameters | Optional parameters | Response Data | Formats | Response codes | |
---|---|---|---|---|---|---|---|---|---|
• | | | Change parameters of item | | | Response code | | 200, 400, 401, 403, 500 | |
| | | Change parameters of an item | - | |
|
|
| |
| | | Add an existing bundle | |
|
|
|
| |
| | | Remove bundle | |
|
|
|
| |
|
|
| Set archival status of an item | |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
| | | Add a single metadata field | |
|
|
|
| |
| | | Remove a single metadata field | |
|
|
|
| |
| | |
|
|
|
|
|
| |
• | | | Add community to the system | | | | | 200, 400, 401, 403, 500 | |
• | | | Delete community from the system | | - | Response code | | 200, 400, 401, 403, 500 | |
• | | | Change description of | |
| Response code | | 200, 400, 401, 403, 500 | |
• | | | Add collection to the system | |
| | | 200, 400, 401, 403, 500 | |
• | | | Delete collection from the system | - | - | Response code | | 200, 400, 401, 403, 500 |
...
C | Verb | URL | Description | Mandatory parameters | Optional parameters | Sorting fields | Response Data | Formats | Response codes |
---|---|---|---|---|---|---|---|---|---|
| | | Return general statistics. | - | - | - | Cummulative list of statistics data for the system currently available. | | 200, 400, 500 |
Administrative tasks
Workflow related tasks
...
Relationships interface
Info | ||
---|---|---|
| ||
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 | /resource/{handle}/relations | Return entities according to relation and parameters specified | | | - | ontains entities selected and sorted in conformance to request parameters. For more details see description of | |
...
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
...