RSpace API

It’s been a while since the dev team last  blogged, so we thought it about time for an update.  In this post, I’ll cover some aspects of the RSpace API which we made available for the first time in 1.41.

The RSpace API is a  much-requested feature. People want to get their data programmatically out of RSpace, and also create research records automatically, for example from data generated by lab equipment.

In this first release, the API is read-only and covers a basic set of functionality to search and retrieve documents, and download attachments.

How to get started? Everything is explained in our API Getting Started Guide. In brief, you just need to generate an API key for your account on your profile page and you’re good to go. Every RSpace instance has its interactive documentation at URL path /public/apiDocs. So if you’re using our Community version, go to https://www.researchspace.community.com/public/apiDocs. You can either just read the documentation, or authenticate with your key and test out making API calls to your own data.

If you’d like some inspiration on what the API can do for you, please have a look at some of the projects in our Github group. We’ve been creating some example code in Python, Java and Groovy to perform the following tasks:

  • Searching documents
  • Getting documents created from a particular form, in CSV format.
  • Producing paginated lists of documents.
  • Downloading attached files.

Regular RSpace users might be aware that over the last few months we’ve been adding  integrations with popular data repositories such as Figshare and  Dataverse. Now that RSpace has it’s own API, it’s pretty simple to pull documents and attachments out of RSpace and send them to Figshare programmatically  – here’s some code to illustrate this.

We’d be very keen to get any feedback on the API or its usage, or new endpoints you’d like added. Clearly, being able to post new data to create RSpace documents is a priority and we’ll be developing this over future releases. As the API matures we’ll also implement OAuth-based authentication to enable more fine-grained access control.

Thanks for reading, and of course we’re always delighted to receive any feedback or pull requests.

Richard