Friday, October 5, 2007

Feature of the Week: API and JabRef Connectivity

People have been asking us about this for a while, and now we are happy to announce it: BibSonomy now has an application programming interface (API) which allows you to code external applications that interact with BibSonomy.

So for example, assume you have a standalone tool for managing BibTeX entries which you use on a daily basis. Now you want your tool to be able to interact with BibSonomy, so that you can publish references from your desktop to BibSonomy at the push of a button.

JabRef: Standalone BibTeX Manager now Interacts with BibSonomy



Actually, this is what we have implemented as a first application ;-) Have a look at the API download page. There you will find a customized version of the great JabRef reference manager which has been extended to interface with the BibSonomy API. This version is able to publish your entries to BibSonomy, retrieve references with a specific tag, or modify references in a fully-fledged desktop application rather than using a web interface.

This also means that you can use your references on your laptop, say, when you do not have network connectivity, and synchronize them with BibSonomy when you reconnect.

REST API for Programmers



For the more technically minded: the API offers a REST-type interface to BibSonomy resources. So for example, to get all users, you'd say "GET /users" over HTTP. To modify a particular user, you'd say "PUT /users/<username>" with an appropriately formatted XML document with the user data. The API documentation documents the possible operations and their current status — not all of them are finished yet.

So this allows you to code an application against BibSonomy in about any programming language, although you'd have to write all the HTTP and XML wrangling yourself (at the moment). For the Java language, we are also offering a client library which lets you write applications against BibSonomy that handle elements of BibSonomy, such as posts etc., as proper Java objects and hides all the gory details.

Getting an API Key



Of course, all this only works within the bounds of proper authorization. To be able to use the API, you have to obtain an API key: just check the second settings pages.