QualityLink Data Exchange Specification

Living Standard,

Issue Tracking:
GitHub
Editors:
Colin Tück (Knowledge Innovation Centre; KIC)
Tiago Simões (European University Foundation; EUF)
Project Website:
https://quality-link.eu/
Project Reference:
Task 3.6 (Creation of a Technical Trusted List Standard)
Not Ready For Implementation

This spec is not yet ready for implementation. It exists in this repository to record the ideas and promote discussion.

Before attempting to implement this spec, please contact the editors.


Abstract

This specification standardises how HEIs and other data providers can make data available for aggregation.

1. Introduction

1.1. Status of This Document

This document is a draft specification, developed by KIC and EUF within the QualityLink project. It is currently being discussed with the QualityLink Standards Consultation Board.

1.2. Goals and Rationale

The QualityLink project aims to develop a scalable architecture that allows higher education institutions and others to publish data on their learning opportunities in different interoperable formats easily. This specification describes the formats in which HEIs and other data providers can make data available for aggregation.

1.3. Audience

This specification is intended for use by higher education institutions and other data providers that would like their data to be available for aggregation.

Secondly, it targets data aggregators. The QualityLink project will implement a data aggregator to test and demonstrate this specification in practice.

1.4. Existing standards

1.5. Changes

n/a

2. Key Concepts

The following key concepts and terminology are used throughout the document, as well as other QualityLink specifications:

learning opportunity

an opportunity to realise a given set of learning outcomes through a learning activity or assessment [ELM]. Offered by a higher education institution or other provider. A learning opportunity can be part of a larger one and contain smaller ones. Specific learning opportunities are courses, modules and programmes.

learning opportunity specification

the general specification of a learning opportunity, i.e. including the learning outcomes and credits. It is usually permanent and does not change from year to year or semester to semester.

learning opportunity instance

the specific offering of a learning opportunity in a specific academic term (e.g. year or semester) and specific setting (e.g. online vs face-to-face, different locations, ...). A single learning opportunity specification will usually be offered in many instances over time.

course

smallest learning opportunity that awards credits (i.e. ECTS) to the learner, either in the context of a study programme or as a self-standing offer. A course can be part of a module or programme.

module

a learning opportunity that is a group or collection of courses. A module may be part of a programme.

micro-credential

a proof of the learning outcomes that a learner has acquired following a short learning experience. These learning outcomes have been assessed against transparent standards. [CR-MC]

programme

collection of learning opportunities. Finalising a study programme usually leads to a degree (e.g. Bachelor degree, Master degree, etc.) or to another type of certificate, e.g. a micro-credential, for a shorter programme. A programme is a "top-level" learning opportunity and has no parent.

joint programme

an integrated curriculum coordinated and offered jointly by different higher education institutions, and leading to double/multiple degrees or a joint degree. [DEQAR]

education provider

any actor that provides degree programmes, micro-credentials or other learning opportunities. This may include higher education institutions as well as other providers, including employers, companies, social partners, NGOs, public authorities and others. [DEQAR]

higher education institution

an entity that has full degree awarding powers at higher education level (i.e. EQF levels 5 to 8; QF-EHEA cycle first to third) recognised by at least one national authority. [DEQAR]

other provider

an entity that provides learning opportunities, but that does not have officially-recognised authority to award degrees or other formally recognised qualifications.

data provider

an entity providing data on learning opportunities. This can be an education provider providing data on its own learning opportunities or another organisation providing data on various education providers.

aggregator

any service that harvests data from different data providers, matches and compiles the data into one single dataset. For example, the aggregator service developed within the QualityLink project.

manifest file

a file listing a data provider’s data sources available for aggregation, as described in [QL-DISCO]

3. User Stories

The following usage scenarios illustrate ways in which this specification might be used or desired features it should enable:

3.1. Feed data

As a higher education institution I want to feed my data into a Europe-wide aggregator easily and flexibly, in order to avoid unnecessary burden.

3.2. Efficient aggregation

As a data aggregator I want to aggregate data from higher education institutions and other data providers efficiently, i.e. avoiding too much overhead or redundant data transfers.

3.3. Access control

As a data provider I want to ensure that only specified aggregators (e.g. the QualityLink one) can harvest my data.

4. Requirements

Note: The current version specifies a pull strategy only, where the QualityLink aggregator periodically polls the available data sources. A push option might be realised later.

5. Methods

The following sections outline the available data transport methods and formats, as well as their specific requirements.

A data provider may choose one or several options in which to provide their data.

An aggregator should support all formats described.

None of the formats mandate the use of encrypted connections, i.e. HTTPS, necessarily. Data providers should, however, use HTTPS wherever possible; the use of HTTPS is ensured by providing https:// URIs in the manifest file.

5.1. Static ELM File

Data on learning opportunities described in [ELM] format can be serialised as:

The data source must return the correct content type for the serialisation used.

5.1.1. Required Fields

The minimum required fields are defined by a set of [SHACL] constraints, which are based on the [ELM] Application Profile "Learning Opportunities and Qualifcations".

ELM data must comply with the requirements specified by the shape http://data.quality-link.eu/ontology/v1#LearningOpportunity [QL-ONT].

5.1.2. Incremental Transport

Data providers should implement at least one of two options:

Aggregators should harvest data sources less frequently if neither of the two options are implemented.

5.1.3. Metadata

Data providers must provide the following metadata in their manifest file for this method:

type elm
path a URL where the static file is hosted at
version the ELM version used

5.2. OOAPI

Education providers can expose data on their learning opportunities according to the Open Edcuation API specification [OOAPI].

The aggregator may use the following endpoints to acquire data:

5.2.1. Required Fields

Per the OOAPI specification, the following fields are required:

In addition, the following fields need to be present for the purposes of the QualityLink aggregator in order to align with ELM requirements:

5.2.2. Incremental Transport

While OOAPI does include the ability to query learning opportunities based on the year/semester in which they are offered, the standard does not include query parameters based on modification dates or similar.

Standard HTTP headers are, however, compatible with OOAPI and data providers should thus implement at least one of two options, at least for the GET /education-specifications endpoint:

5.2.3. Metadata

Data providers must provide the following metadata in their manifest file for this method:

type ooapi
path the URL of the OOAPI root
version the OOAPI version implemented

5.3. Edu-API

Education providers can expose data on their learning opportunities using the Edu-API specification [Edu-API], a RESTful API standard maintained by 1EdTech. This method delivers JSON-formatted responses and supports real-time querying of educational data, such as courses and programs, making it suitable for dynamic aggregation scenarios.

The aggregator may use the following endpoints to acquire data (non-exhaustive list, based on Edu-API Core):

Additional endpoints (e.g., for offerings or components) may be supported depending on the provider’s implementation.

5.3.1. Required Fields

The Edu-API specification defines a core set of fields for learning opportunities, aligned with its Learning Resource Core profile. At a minimum, data providers must include:

In addition, the fields credits and learningOutcomes are recommended to align with the European Learning Model [ELM] and QualityLink goals. Providers should refer to the Edu-API Learning Resource Core bindings for full details.

5.3.2. Incremental Updates

The [Edu-API] specification includes a dateLastModified property in resource responses (e.g., for courses and programs), indicating the last modification date in ISO 8601 format.

This property enables tracking changes to individual resources and can be combined with the filter parameter on collections like GET /courses or GET /programs to support efficient aggregation, providing patterns for both initial bulk loads and delta updates, data providers and aggregators should follow this choreography where possible:

The QualityLink aggregator may use the dateLastModified value from previous responses to determine which resources have changed since the last harvest.

5.3.3. Metadata

Data providers must provide the following metadata in their manifest file for this method:

type edu-api
path The URL of the Edu-API root (e.g., https://provider.example.edu/edu-api/v1/)
version The Edu-API version implemented (e.g., 1.0)

5.3.4. Authentication with OAuth 2.0

Edu-API mandates the use of OAuth 2.0 for securing API endpoints, ensuring that only authorized aggregators (e.g., the QualityLink aggregator) can access protected data. Data providers must implement OAuth 2.0 as specified below.

5.4. OCCAPI

The aggregator may use the following endpoints to acquire data:

OCCAPI makes use of hypermedia links to indicate which collection endpoints are available, scoped to higher education institution and optionally to organisational units and programme resources.

5.4.1. Required fields

Data required in any resource type:

Data attributes required for higher education institutions and organisational units:

Data attributes required for both programme and course resources:

Data attributes required for programme resources only:

Data attributes required for course resources only:

5.4.2. Metadata

Data providers must provide the following metadata in their manifest file for this method:

type occapi
path The URL of the OCCAPI path for a given HEI
(e.g., https://domain.tld/occapi/v1/hei/{heiId})

5.5. EWP Courses API

Note: similar structure as for OOAPI

6. Access Control

Currently all transport methods operate over HTTP. Hence the following access control strategies can all be used for either method.

A data provider may choose one of the strategies if they wish to control access to their data, but no access control is required.

An aggregator should support all formats described.

The exchange of access credentials or additional data that some of these options might require (e.g. certificates, trusted IPs, or client/secrets) is an out-of-band activity. The details of this are to be agreed between the aggregator and data providers during an onboarding/discovery process; the following sections describe in general terms what out-of-band communication is required.

6.1. Based on IP address

A data provider can limit access to certain ranges of IP addresses. To that end, aggregators should publish the IP address ranges from which their services may contact the exposed methods.

Data providers can omit the auth key from their manifest file or provide the following metadata for this method:

type none

This mechanism does not require out-of-band communication beyond the aggregator publishing its IP address range.

Note: The QualityLink aggregator will publish the IP address range from which it operates.

6.2. HTTP Request Header

The data provider may request that the aggregator include a specific HTTP header in all requests, e.g. a secret token.

Data providers must provide the following metadata under auth in their manifest file for this method:

type httpheader

This mechanism requires out-of-band communication in which the data provider communicates a HTTP header field and the value to include to the aggregator. The modalities need to be specified by the aggregator separately from this specification.

6.3. OAuth 2.0

A data provider may secure their endpoints using OAuth 2.0, requiring the aggregator to authenticate via an access token. This method is the standard authentication mechanism of [Edu-API] (see § 5.3.4 Authentication with OAuth 2.0).

Data providers must implement OAuth 2.0 as follows:

Data providers further should:

An aggregator must support the following:

Data providers must provide the following metadata under auth in their manifest file for this method:

type oauth2.0
token_endpoint URI of the OAuth 2.0 token endpoint to use

This method requires out-of-band communication in which the data provider supplied the aggregator with secret credentials, namely client_id and client_secret to be used when using the mechanism descibred in Section 2.3 of [RFC6749].

6.4. HTTP Signature

A data provider may request that the aggregator authenticates itself by signing all HTTP requests using HTTP Message Signatures according to [RFC9421].

The aggregator must provide a signature that covers the @authority component as well as the following signature parameters (see Section 2.3 of [RFC9421])):

The aggregator must publish the following information in order to allow data providers to verify its signatures:

A data provider must support one of signature algorithm(s) supported by the aggregator. Unless it supports all algorithms, it needs to select the desired algorithm in the manifest file.

The data provider should handle requests that are authenticated by a verified HTTP Message Signature, i.e. verify against the aggregator’s public key, are applicable to the data provider based on the @authority component and are valid based on the expires parameter. If the data provider receives a request without a HTTP Message Signature, it should return a 401 (Unauthorized) response unless the request could be authenticated through another mechanism. If the request cannot be authenticated, the data provider should return a 403 (Forbidden) response. If the request contains corrupted or invalid Signature or Signature-Input headers, the data provider should return a 400 (Bad Request) response.

Data providers must provide the following metadata under auth in their manifest file for this method:

type httpsig
alg one of the algorithms the aggregator supports (optional)

This mechanism does not require out-of-band communication beyond the aggregator publishing the information mentioned above.

7. Security Considerations

The previous chapter describes how data providers can implement access control to their exposed data. The authors are aware that these mechanisms do not provide perfect security, e.g. IP addresses could be spoofed and HTTP Message Signatures could be replayed for a short amount of time if compromised.

This specification is, however, about exchange of data on learning opportunities, which is generally meant to be public. The authors consider the described options reasonably secure for the purposes of limiting unauthorised harvesting of data.

Data providers should not expose any data through the methods described herein that is not meant to be public, especially no personal data.

Conformance

Conformance requirements are expressed with a combination of descriptive assertions and RFC 2119 terminology. The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in the normative parts of this document are to be interpreted as described in RFC 2119. However, for readability, these words do not appear in all uppercase letters in this specification.

All of the text of this specification is normative except sections explicitly marked as non-normative, examples, and notes. [RFC2119]

Examples in this specification are introduced with the words “for example” or are set apart from the normative text with class="example", like this:

This is an example of an informative example.

Informative notes begin with the word “Note” and are set apart from the normative text with class="note", like this:

Note, this is an informative note.

Index

Terms defined by this specification

References

Normative References

[Edu-API]
1EdTech. Edu-API Specification. Candidate Final. URL: https://www.imsglobal.org/spec/eduapi/v1p0#uc1
[ELM]
European Commission. European Learning Model (ELM). v3. URL: https://europa.eu/europass/elm-browser/index.html
[OOAPI]
Bureau Edustandaard. Open Education API. v5. URL: https://openonderwijsapi.nl/specification/v5/docs.html
[QL-DISCO]
QualityLink Consortium. Data Source Discovery Specification. 2025. draft. URL: https://specs.quality-link.eu/discovery.html
[QL-ONT]
QualityLink Consortium. SHACL constraints for learning opportunities. 2025. draft. URL: https://specs.quality-link.eu/resources/ontology-shacl.html
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[RFC6749]
D. Hardt, Ed.. The OAuth 2.0 Authorization Framework. October 2012. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6749
[RFC6750]
M. Jones; D. Hardt. The OAuth 2.0 Authorization Framework: Bearer Token Usage. October 2012. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6750
[RFC9110]
R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed.. HTTP Semantics. June 2022. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
[RFC9421]
A. Backman, Ed.; J. Richer, Ed.; M. Sporny. HTTP Message Signatures. February 2024. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc9421
[SHACL]
Holger Knublauch; Dimitris Kontokostas. Shapes Constraint Language (SHACL). URL: https://w3c.github.io/data-shapes/shacl/

Informative References

[CR-MC]
European Union. Council Recommendation on a European approach to micro-credentials for lifelong learning and employability. 16 June 2022. 2022/C 243/02. URL: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32022H0627(02)
[DEQAR]
European Quality Assurance Register (EQAR). DEQAR Documentation. v1.2. URL: https://docs.deqar.eu/stable/
[EWP-COURSES]
Erasmus Without Paper consortium. EWP Courses API. URL: https://github.com/erasmus-without-paper/ewp-specs-api-courses/tree/master
[OCCAPI]
European University Foundation (EUF). Open Course Catalogue API. URL: https://occapi.uni-foundation.eu/