DataONE RESTful API

From The Dryad data repository wiki
Jump to: navigation, search

Dryad is a member node in the DataONE network. DataONE is an NSF-funded DataNet, a distributed organization that aims to provide persistent, robust, and secure access to well-described and easily discovered data from from the genome to the ecosystem, including Earth observational data from atmospheric, ecological, hydrological, and oceanographic sources.

Usage

The standard URL prefix for interacting with Dryad DataONE interface is "mn" (e.g., http://datadryad.org/mn/)

Current Usage

The table below includes the current usage and implementation status.

Method Tier REST Interface
ping() 1 GET /monitor/ping
getLogRecords() 1 GET /log
getCapabilities() 1 GET / and GET /node
get() 1 GET /object/ID
getSystemMetadata() 1 GET /meta/ID
describe() 1 HEAD /object/ID
getChecksum() 1 GET /checksum/ID
listObjects() 1 GET /object
synchronizationFailed() 1 POST /error
getReplica() 1 GET /replica/ID

Identifiers and Versioning

Dryad needs to keep a timestamp as part of the D1 identifier for metadata, since the Dryad metadata can change without changing the Dryad version number.

See the DOI Usage page for information on Dryad's native identifier handling.

When Dryad replicates data from other systems, it will store data and metadata in separate objects, using Dryad metadata for Dryad's internal tracking purposes.

Workflow

The Member Node module is built and deployed the same way as the regular DSpace implementation. Its code lives in (trunk)/dspace/modules/dataone-mn.

Sample Uses

Read the scientific metadata for a data package: https://datadryad.org/mn/object/http://dx.doi.org/10.5061/dryad.8790

Read the internal system metadata for a data package: https://datadryad.org/mn/meta/http://dx.doi.org/10.5061/dryad.8790

Read the scientific metadata for a data file: https://datadryad.org/mn/object/http://dx.doi.org/10.5061/dryad.8790/1

Read the internal system metadata for a data file: https://datadryad.org/mn/meta/http://dx.doi.org/10.5061/dryad.8790/1

Download the content of a data file: https://datadryad.org/mn/object/http://dx.doi.org/10.5061/dryad.8790/1/bitstream

Configuration

DSpace-native Member Node API Implementation

It is built and deployed the same way as the regular DSpace implementation (see How To Install Dryad).

An example get() call: https://datadryad.org/mn/object/doi%3A10.5061/dryad.20/1

Testing

To test the current functionality of the DataONE API, use the DataONE Member Node Tester.

Outputs can be compared with the DataONE Sandbox Node, or one of the other DataONE nodes.

To see how contents are listed in a coordinating node, see the Coordinating Node access point.

Registration and Certificates

The DataONE registration process is documented at:

Sample call for the registration script:

./d1noderegister -f nodeDev.xml -b https://cn-stage.test.dataone.org/cn -E mnTestDRYAD/DataONETestIntCA/certs/urn\:node\:mnTestDRYAD.pem

To test that certificates are installed correctly, use a command like:

openssl s_client -showcerts -connect dev.datadryad.org:https

Updating Node Configuration

To force DataONE to update its configuration for the member node, you can call the Coordinating Node's update method using a command such as:

curl -E /home/dryad/certs/mnDRYAD-2014-05-14/urn_node_DRYAD.pem   -X PUT  -F "node=@/home/dryad/certs/nodeProd.xml"  https://cn.dataone.org/cn/v1/node/urn:node:DRYAD

Relation to DSpace

  • We aim to make this work with DSpace as closely as possible, because it is likely that other institutions will want to become member nodes (e.g., UIUC, MIT)

TODO: Releasing Dryad's MN Implementation to General DSpace

  1. Move settings to config file
  2. Genericize the metadata output
  3. Ensure packaging information is not tightly tied into the MN code

Relation to DataONE

DataONE member node architecture document