erasmus-without-paper / ewp-specs-api-registry

Specifications of EWP's Registry API.
MIT License
0 stars 2 forks source link

Registry API

Summary

This document describes the API implemented by the Registry Service. It is placed in the "APIs" section of the documentation, but this does not imply that we want you to implement it. You will be only using it (as a client).

Registry Service

The Registry Service implements the Registry API described below. If you're not sure what the Registry is, please read the proper chapter in the EWP Architecture document first.

As opposed to all other services served inside the EWP network, the location of the catalogue served by the Registry Service is fixed and should not change. This means that you may hardcode this location into your client applications:

https://registry.erasmuswithoutpaper.eu/catalogue-v1.xml

How to use the Registry

Request and Response

The Registry Service takes no parameters. It simply returns the response at the proper URL. The response format is described in the attached catalogue.xsd file. You may also review the catalogue-example.xml file for an example of a valid registry response.

Security is based on server certificate validation. The registry does not validate the client (all clients are allowed to access the catalogue anonymously).

Caching

Is caching safe?

Yes. Manifest authors are advised that it MAY take some time for all changes to propagate to all clients.

Also, since all APIs described by the registry should be backward compatible after they are deployed onto production systems, then caching their version numbers is also safe.

Fallback (backup) cache

Clients MAY keep the stale copy of the Registry's catalogue as a backup. E.g. if the Registry Server cannot be contacted for some reason, a stale cached copy of the Registry's response MAY be used instead (for a limited time).

XPath queries

The purpose of the catalogue served by the Registry Service is to allow the clients to answer the following questions:

Namespace context used in the XPath examples above:

There are many other types of queries which can be run against the catalogue. If you think we should include more examples here, please start a new issue for that.

Support libraries

There might be some client libraries implemented for accessing the Registry Service response. If there is one for your language, then - perhaps - you won't need to implement it yourself. Check out the EWP Developers page.

How is the registry updated?

Data served by the Registry Service can be acquired from various sources, but the majority of it is being fetched from the manifest.xml files served by all the EWP partners.

How manifest files are fetched

Adding a new manifest file

Contact Registry Service maintainers when you want to add your Manifest to the EWP Registry Service. The email address of the current Registry Service maintainer can be found on the Registry Service's welcome page.

SCHAC identifiers

One of the fundamental features required of the EWP Network is the ability to uniquely identify individual HEIs. A couple of HEI identifier types were already in use in Europe at the time the EWP network was designed, but only one of them - SCHAC identifier - seemed to be universal enough.

SCHAC identifiers are quite ingenious in their simplicity. They identify HEIs by Internet Domain Names registered for them. E.g. uw.edu.pl is the SCHAC ID for the University of Warsaw.

SCHAC identifiers are obviously easy to be acquired by a human. We do acknowledge however, that its not so easy for machines. Some student information systems will probably identify external HEIs by their PIC or Erasmus codes, and such systems won't be capable to acquire SCHAC identifiers "on the fly".

For this reason, the EWP Registry provides a mapping. You will be able to use the Registry's response to help you map between PIC identifiers, Erasmus codes, and SCHAC IDs. The Registry will hold a database of these identifiers. Initially, this database will be based on Manifest files, but other sources MAY be used later on.