JSKOS wrapper to the public ORCID API

0.2.0 2017-09-19 12:36 UTC


This repository contains a wrapper written in PHP to access the public ORCID API in JSKOS format via Entity Lookup Microservice API (ELMA).


The Open Researcher and Contributor ID (ORCID) is a code to uniquely identify scientific and other academic authors and contributors. ORCID identifiers are a subset of the International Standard Name Identifier (ISNI) consisting of 16 digits in four groups. The final character may also be an X. The identifier is prefixed by to get an URI. For example:


ORCID organization provides a public API to access and search for ORCID profiles. Access to the API requires credentials in form of a "client id" and a "client secret" as decribed at


Requires the jskos-php PHP library.

You also need client credentials from your ORCID profile to access the ORIC API.


composer require gbv/jskos-bartoc

This will automatically create composer.json for your project (unless it already exists) and add orcid-jskos as dependency. Composer also generates vendor/autoload.php to get autoloading of all dependencies.


Use as library

The wrapper can be used as instance of class ORCIDService, a subclass of \JSKOS\Service:

require 'vendor/autoload.php';

$service = new ORCIDService($client_id, $client_secret);

See jskos-php-examples for an example how to use the wrapper as part of a larger PHP application.

Local webservice for testing

To use as server you also need an implementation of Http\Message\ResponseFactory, e.g.

$ composer require php-http/guzzle6-adapter

Locally run the application on port 8080 as following:

$ composer install
$ ORCID_CLIENT_ID=... ORCID_CLIENT_SECRET=... php -S localhost:8080

You can also put credentials into credentials.php as described above.

Given valid credentials, ORCID profiles can be accessed in JSKOS like this:

Webservice via Apache webserver

  1. Run composer install to download dependencies into directory vendor

  2. Add a file credentials.php with client credentials as following:

    define('ORCID_CLIENT_ID', '...');
    define('ORCID_CLIENT_SECRET', '...');

You may add a rule to disallow direct access to all except index.php:

Require all denied
<Files index.php>
    Require all granted

Webservice at Heroku

  1. Create an app
  2. Configure the app
  3. Deploy the app

In short:

$ heroku create
$ heroku config:set ORCID_CLIENT_ID=...
$ heroku config:set ORCID_CLIENT_SECRET=...
$ git push heroku master


Bugs and feature request are tracked on GitHub.

See of repository jskos-php for general guidelines.

Author and License

Jakob Voß

orcid-jskos is licensed under the LGPL license (see LICENSE for details).