General API Information

Authentication

When you want to use API calls that require authentication, you have to log in first.

A successful login call returns a JSON object like this:

{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVC...",
    "expiresIn": "12h",
    "user": {
        "role": "user",
        "email": "arthur.dent@thhgttg.com",
        "firstName": "Arthur",
        "lastName": "Dent",
    }
}

For every following request, make sure to set the bearer token in the request header when trying to access restricted resources.

Note, that you have to add the string “Bearer ” to the value of the token you got from the login!

http-request-header Example

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Imdlb3JnLnBldHJvdmljQHJlZHBvc...

Differences to the ETER II API

Difference in API base URL

Old:

https://eter-project.com/api/eter/...

New:

https://eter-project.com/api/4.0/...

Several differences in API calls

For details on the new API calls please see the API documentation here:

ETER III API documentation

The HEI query API call

The /HEIs/query API call is the most complex one in the API and needs some more info.

This is a http-POST request, that needs the following transmitted as JSON in the request body:

{
  "filter": {},
  "fieldIds": {},
  "searchTerms": []
}

The “filter” part is a mongoose query object (for details please see the official mongoose documentation).

Note, that all variables are stored in a structured way and are accessible via their package and fieldId as key. This is what e.g. the field BAS.WEBSITE looks like:

{    
  "BAS" : {
    "WEBSITE" : {
      "v" : "https://www.fh-joanneum.at/"
    }
  }
}

So, if you would like to filter by this field in the query, you would have to send something like this:

{
  "filter": {"BAS.WEBSITE.v": "https://www.fh-joanneum.at/"},
  "fieldIds": {},
  "searchTerms": []
}

The “fieldIds” part specifies, what variables to retrieve from each HEI. If you ommit this, ALL the variables are selected.

Here is an example for selecting only the ETER-ID and the field containing the website:

{
  "filter": {"BAS.WEBSITE.v": "http://www.uni-graz.at/"},
  "fieldIds": {"BAS.ETERIDYEAR": 1, "BAS.WEBSITE": 1},
  "searchTerms": []
}