Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.0.3
info:
version: 5.8.3
title: Metrics Cache
description: 'The API is designed to provide actual quality information for datasets. This quality information
is delivered as a set of metrics in five dimensions: Findability, Accessibility, Interoperability,
Reusability, and Contextuality. These metrics gauge compliance with the standards of DCAT-AP, which
are based on the Resource Description Framework (RDF) vocabulary of Data Catalog Vocabulary developed
by The World Wide Web Consortium (W3C). The values for the delivered metrics are stored in a custom
data model. The top final score is 450 points, with maximal ratings of 100 points assigned to Findability,
100 points assigned to Accessibility, 110 points to Interoperability, 75 points to Reusability, and
20 points to Contextuality.
'
x-logo:
url: images/logo
servers:
- url: https://data.europa.eu/api/mqa/cache
description: Metadata Quality Assurance (MQA) Metrics Cache API
tags:
- name: Action API
description: "The action API utilizes the [JSON-RPC 2.0](https://www.jsonrpc.org/specification) specification\
\ with the following constraints:\n\n* `id` reference needs to be a string\n* `params` are passed\
\ as object map, not as array list\n* `data` of an error is an object\n* Batch processing of actions\
\ is not yet supported\n\nAlthough a correlation identifier (`id`) is not necessary on top of HTTP,\
\ you should always include it to allow \nthe server to distinguish between sync calls and notifications.\
\ Omit the `id` only in case of a notification.\nFor notifications, the server will immediately respond\
\ with a `202 Accepted` without a body.\n"
paths:
/admin/refresh:
post:
tags:
- Administration
summary: Refresh all metrics
description: This function is reserved for internal use only and is not part of our public API offerings.
You must be authorized to refresh all metrics. If you are authorized, send POST request to the
specified URL of the API with the resource path "/admin/refresh" to fetch DQV (Data Quality Vocabulary)
values from remote endpoint and calculates a new set of metrics for all available metadata.
operationId: refreshAllMetrics
security:
- ApiKeyAuth: []
responses:
202:
description: Request accepted
/admin/refresh/{scope}/{id}:
post:
tags:
- Administration
summary: Refresh a specific metric
description: This function is reserved for internal use only and is not part of our public API offerings.
You must be authorized to refresh the metrics of a specified document. If you are authorized,
send POST request to the specified URL of the API endpoint with the resource path "/admin/refresh/{scope}/{id}"
to fetch DQV (Data Quality Vocabulary) values from remote endpoint and calculate a new set of
metrics for the document with specified id.
operationId: refreshSingleMetrics
parameters:
- name: scope
in: path
description: The scope
required: true
schema:
type: string
enum:
- catalogues
- countries
- global
- name: id
in: path
description: Document id. In case of 'global' the id is ignored. The only document id of global
scope is implicitly 'global'.
required: true
schema:
type: string
security:
- ApiKeyAuth: []
responses:
202:
description: Request accepted
/admin/clear:
post:
tags:
- Administration
summary: Remove all currently existing metrics and their values
description: This function is reserved for internal use only and is not part of our public API offerings.
You must be authorized to remove all currently existing metrics and their values. If you are authorized,
send POST request to the specified URL of the API endpoint with the resource path "/admin/clear"
to remove the metrics.
operationId: clearMetrics
security:
- ApiKeyAuth: []
responses:
202:
description: Request accepted
/admin/migratescore:
post:
tags:
- Administration
summary: Migrates old score history entries into the new db schema
description: This function is reserved for internal use only and is not part of our public API offerings.
You must be authorized to update deprecated format of metrics' entries according to the current
data base schema. You may need to update format only if entries were made using Metrics-Cache
version lower than 3, with had different database schema. As an authorized user, you can make
a POST request to the specified URL of the API endpoint with the resource path "/admin/migratescore"
added at the end of the URL. The format will be updated.
operationId: migrateScore
security:
- ApiKeyAuth: []
responses:
202:
description: Request accepted
/admin/schedule:
post:
tags:
- Administration
summary: Schedule the refresh action
description: This function is reserved for internal use only and is not part of our public API offerings.
Authorization is required to set an internal schedule for refreshing the metrics for all catalogues.
If you are authorized, send POST request to the specified URL of the API endpoint with the resource
path "/admin/schedule" added at the end of the URL. Pay attention that you can choose different
request body schema according to the scheduling details you need. It is necessary to create an
unique id for each scheduling instance. Remember that currently, you cannot delete or modify a
schedule.
operationId: scheduleRefresh
requestBody:
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/CronTrigger'
- $ref: '#/components/schemas/IntervalTrigger'
- $ref: '#/components/schemas/SpecificTrigger'
security:
- ApiKeyAuth: []
responses:
202:
description: Request accepted
get:
tags:
- Administration
summary: Return refresh schedules
description: This function is reserved for internal use only and is not part of our public API offerings.
Authorization is required to obtain a list of all refresh schedules. If you are authorized, send
GET request to the specified URL of the API endpoint with the resource path "/admin/schedule"
added at the end of the URL.
operationId: getScheduleRefresh
security:
- ApiKeyAuth: []
responses:
200:
description: The trigger
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/CronTrigger'
- $ref: '#/components/schemas/IntervalTrigger'
- $ref: '#/components/schemas/SpecificTrigger'
404:
description: Pipe or trigger not found
/global:
get:
tags:
- Global
summary: Get global metrics
description: To get a general overview in terms of data quality for all available metadata, make
a GET request to the specified URL of the API endpoint with the resource path "/global" added
at the end of the URL. If successful, the response will contain metrics that cover the dimensions
of 'findability', 'accessibility', 'interoperability', 'reusability', and 'contextuality'.
operationId: getGlobalMetrics
parameters:
- $ref: '#/components/parameters/filterGlobal'
responses:
200:
description: Metrics regarding all available catalogues
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/Metrics'
/global/history:
get:
summary: Get historic global metrics
description: To retrieve the history of measurements for all available metadata that are accessible
on the portal make GET request to the specified URL of the API endpoint with the resource path
"/global/history" added at the end of the URL. Include the "startDate" query parameter in the
request, providing a valid date value in the correct format. This specifies the start date for
retrieving the measurement history. If successful, the response will contain metrics that covers
the dimensions 'findability', 'accessibility', 'interoperability', 'reusability' and 'contextuality'.
operationId: getHistoricGlobalMetrics
parameters:
- $ref: '#/components/parameters/filterGlobal'
- $ref: '#/components/parameters/startDate'
- $ref: '#/components/parameters/endDate'
- $ref: '#/components/parameters/resolution'
tags:
- Global
responses:
200:
description: Metrics regarding all available catalogues
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/HistoricMetrics'
400:
description: Bad Request (e.g. startDate is later then endDate).
/countries:
get:
summary: List of all country metrics
description: To get metadata quality score aggregated over parameter "country's id" and grouped
by IDs of the countries of origin of the data make GET request to the specified URL of the API
endpoint with the resource path "/countries" added at the end of the URL. The following five dimensions
can be returned "findability", "accessibility", "interoperability", "reusability", and "contextuality".
The aggregation process takes into account all datasets associated with catalogs sharing the same
'country ID,' which follows ISO 3166-1 ALPHA-3 Code standards for country ID abbreviations.
operationId: getCountryMetrics
tags:
- Countries
parameters:
- $ref: '#/components/parameters/filter'
responses:
200:
description: List of country metrics Objects.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/CountryMetrics'
500:
description: Could not fetch list of countries metrics.
/countries/history:
get:
summary: Get historic aggregated metrics aggregated for all countries
description: To retrieve the history of measurements for all available metadata that is accessible
on the portal, aggregated over "country's id" and grouped by IDs of the countries of origin of
the data, make a GET request to the specified URL of the API endpoint with the resource path "/countries/history"
added at the end of the URL. Include the "startDate" query parameter in the request, providing
a valid date value in the correct format. This specifies the start date for retrieving the measurement
history. If successful, the response will contain metrics that cover the dimensions of "findability",
"accessibility", "interoperability", "reusability", and "contextuality'. The aggregation process
takes into account all datasets associated with catalogs sharing the same 'country ID,' which
follows ISO 3166-1 ALPHA-3 Code standards for country ID abbreviations
operationId: getHistoricCountryMetrics
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/startDate'
- $ref: '#/components/parameters/endDate'
- $ref: '#/components/parameters/resolution'
tags:
- Countries
responses:
200:
description: List of historic country metrics Objects.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/HistoricCountryMetrics'
400:
description: Bad Request (e.g. startDate is later then endDate ).
/countries/{id}:
get:
tags:
- Countries
summary: Get metrics for a country
description: To retrieve the measurements for metadata, aggregated over a designated country, make
a GET request to the specified URL of the API endpoint with the resource path '/countries/{id}'
added at the end of the URL and set the unique ID of the country as the {id} element of the URL.
The country ID abbreviations should follow the ISO 3166-1 ALPHA-3 Code standards. If successful,
the response will contain metrics that cover the dimensions of 'findability', 'accessibility',
'interoperability', 'reusability', and 'contextuality'. The aggregation process takes into account
all datasets associated with catalog with specified 'country ID'.
operationId: getSingleCountryMetrics
parameters:
- $ref: '#/components/parameters/countryId'
- $ref: '#/components/parameters/filter'
responses:
200:
description: Country metrics
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/CountryMetrics'
404:
description: Country not found
/countries/{id}/history:
get:
summary: Get historic metrics aggregated over a country
description: To retrieve the history of measurements for metadata, aggregated over a designated
country, make a GET request to the specified URL of the API endpoint with the resource path"/countries/{id}/history"
added at the end of the URL and set the unique ID of the country as {id} element of the URL. The
country ID abbreviations should follow the ISO 3166-1 ALPHA-3 Code standards. Include the "startDate"
query parameter in the request, providing a valid date value in the correct format. This specifies
the start date for retrieving the measurement history. If successful, the response will contain
metrics that cover the dimensions of "findability", "accessibility", "interoperability", "reusability",
and "contextuality'. The aggregation process takes into account all datasets associated with catalog
with specified 'country ID'.
operationId: getHistoricSingleCountryMetrics
parameters:
- $ref: '#/components/parameters/countryId'
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/startDate'
- $ref: '#/components/parameters/endDate'
- $ref: '#/components/parameters/resolution'
tags:
- Countries
responses:
200:
description: Metrics regarding all available catalogues
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/HistoricCountryMetrics'
400:
description: Bad Request (e.g. startDate is later then endDate).
404:
description: Country not found
/catalogues:
get:
summary: List of all catalogue metrics
description: To obtain the aggregated metadata quality score across all the catalogues, make a GET
request to the specified URL of the API endpoint with the resource path "/catalogues" added at
the end of the URL . If successful, the response will contain metrics that cover the dimensions
of "findability", "accessibility", "interoperability", "reusability", and "contextuality'. The
catalogue's ID and other information on the relevant catalogue can be found under the attribute
name 'info'.
operationId: getCatalogueMetrics
tags:
- Catalogues
parameters:
- $ref: '#/components/parameters/filter'
responses:
200:
description: List of catalogue metrics Objects.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/CatalogueMetrics'
500:
description: Could not fetch list of countries metrics.
/catalogues/history:
get:
summary: Get historic metrics for all catalogues
description: To retrieve the measurement history for all available catalogues' metadata accessible
on the portal, aggregated over all catalogues and grouped by catalogue IDs, make a GET request
to the specified URL of the API endpoint with the resource path'/catalogues/history' added at
the end of the URL. Include the 'startDate' query parameter in the request, providing a valid
date value in the correct format. This specifies the start date for retrieving the measurement
history. If successful, the response will contain metrics that cover the dimensions of 'findability',
'accessibility', 'interoperability', 'reusability', and 'contextuality'. The catalogue's ID and
other relevant information can be found under the attribute name 'info'.
operationId: getHistoricCatalogueMetrics
parameters:
- $ref: '#/components/parameters/filterGlobal'
- $ref: '#/components/parameters/startDate'
- $ref: '#/components/parameters/endDate'
- $ref: '#/components/parameters/resolution'
tags:
- Catalogues
responses:
200:
description: List of historic country metrics Objects.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/HistoricCatalogueMetrics'
400:
description: Bad Request (e.g. startDate is later then endDate).
/catalogues/{id}:
get:
tags:
- Catalogues
summary: Get metrics for a catalogue
description: To retrieve the measurements for metadata, aggregated over the designated catalogue,
make a GET request to the specified URL of the API endpoint with the resource path '/catalogues/{id}'
at the end of the URL and set the unique ID of the catalogue as the {id} element of the URL. If
successful, the response will contain metrics that cover the dimensions of "findability," "accessibility,"
"interoperability," "reusability," and "contextuality." To find a catalogue ID, use, for example,
the operation "List of all catalogue metrics".
operationId: getSingleCatalogueMetrics
parameters:
- $ref: '#/components/parameters/catalogueId'
- $ref: '#/components/parameters/filter'
responses:
200:
description: Catalogue metrics
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/CatalogueMetrics'
404:
description: Catalogue not found
delete:
tags:
- Catalogues
summary: Delete all metrics of a catalogue
description: This function is reserved for internal use only and is not part of our public API offerings.
You must be authorized to delete all metrics of a specified catalogue. If you are authorized,
send DELETE request to the specified URL of the API endpoint with the resource path "/catalogues/{id}"
at the end of the URL and set the unique ID of the catalogue as the {id} element of the URL. If
successful all metrics of the specified catalogue are deleted.
operationId: deleteCatalogueMetrics
parameters:
- name: id
in: path
description: ID of catalogue to delete metrics
required: true
schema:
type: string
responses:
200:
description: Catalogue metrics deleted
404:
description: Catalogue not found
/catalogues/{id}/history:
get:
summary: Get historic metrics for a catalogue
description: To retrieve the history of measurements for metadata, aggregated over the designated
catalogue, make a GET request to the specified URL of the API endpoint with the resource path
"/catalogues/{id}/history" at the end of the URL and set the unique ID of the catalogue as {id}
element of the URL. If successful, the response will contain metrics that cover the dimensions
of "findability," "accessibility," "interoperability," "reusability," and "contextuality." To
find a catalogue ID, use, for example, the operation "List of all catalogue metrics".
operationId: getHistoricSingleCatalogueMetrics
parameters:
- $ref: '#/components/parameters/catalogueId'
- $ref: '#/components/parameters/filterGlobal'
- $ref: '#/components/parameters/startDate'
- $ref: '#/components/parameters/endDate'
- $ref: '#/components/parameters/resolution'
tags:
- Catalogues
responses:
200:
description: Historic metrics regarding all available catalogues
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/HistoricCatalogueMetrics'
400:
description: Bad Request (e.g. startDate is later then endDate).
404:
description: Catalogue not found.
/catalogues/{id}/distributions/reachability:
get:
tags:
- Catalogues
summary: Get unreachable download and access URLs of a catalogue
description: Send a GET request to the specified URL of the API endpoint with the resource path
'/catalogues/{id}/distributions/reachability' added at the end of the URL. Set the unique ID of
the catalogue as the {id} element of the URL. The API will return the status codes of the access
URLs' or download URLs', aggregated for every distribution of the datasets included in the specified
catalogue, depending on the format of the data. Pay attention that, the delivered list consists
of the access URLs and download URLs, that were not reachable by the last refresh of the metrics.
By default, the quantity of returned distributions is limited to 100.
operationId: getCatalogueDistributionReachability
parameters:
- $ref: '#/components/parameters/catalogueId'
- in: query
name: offset
required: false
schema:
type: integer
minimum: 0
default: 0
description: The number of items to skip before starting to collect the result set
- in: query
name: limit
required: false
schema:
type: integer
minimum: 1
default: 100
description: The numbers of items to return
- in: query
name: locale
schema:
type: string
description: The language of the dataset title that should be returned
responses:
202:
description: List of a catalogues' distributions that have errorneous status codes in its access
or download URL.
404:
description: Catalogue not found.
500:
description: internal server error
/catalogues/{id}/violations:
get:
tags:
- Catalogues
summary: Get DCAT-AP SHACL violations
description: To retrieve all the datasets with dcat-ap compliance issues for a specific catalogue, make
a GET request to the specified URL of the API endpoint with the resource path "/catalogues/{id}/violations"
added at the end of the URL and set the unique ID of the catalogue as {id} element of the URL.
By default, the quantity of returned datasets is limited to 100.
operationId: getCatalogueViolations
parameters:
- name: id
in: path
description: ID of catalogue for which to receive a metric
required: true
schema:
type: string
- in: query
name: offset
required: false
schema:
type: integer
minimum: 0
default: 0
description: The number of items to skip before starting to collect the result set
- in: query
name: limit
required: false
schema:
type: integer
minimum: 1
default: 100
description: The numbers of items to return
- in: query
name: locale
schema:
type: string
description: The language of the dataset title that should be returned
responses:
200:
description: List of SHACL violations.
content:
application/json:
schema:
$ref: '#/components/schemas/Violations'
404:
description: Catalogue not found.
/datasets/{id}:
get:
tags:
- Datasets
summary: Get metrics for a dataset
description: To retrieve the measurements for metadata refers to the designated dataset, make a
GET request to the specified URL of the API endpoint with the resource path '/datasets/{id}' added
at the end of the URL and set the unique ID of the dataset as the {id} element of the URL. If
successful, the response will contain metrics that cover the dimensions of "findability," "accessibility,"
"interoperability," "reusability," and "contextuality."
operationId: getSingleDatasetMetrics
parameters:
- $ref: '#/components/parameters/datasetId'
- in: query
name: locale
schema:
type: string
description: The language of the dataset that should be returned
responses:
200:
description: Catalogue metrics
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/DatasetMetrics'
404:
description: Dataset not found
/datasets/{id}/distributions:
get:
tags:
- Distributions
summary: Get metrics for all distributions of a dataset
description: To retrieve metrics for all distributions of a designated dataset, make a GET request
to the specified URL of the API endpoint with the resource path '/datasets/{id}/distributions'
added at the end of the URL and set the unique ID of the dataset as the {id} element of the URL.
If successful, the response will contain metrics that cover the dimensions of "findability," "accessibility,"
"interoperability," "reusability," and "contextuality."
operationId: getDistributionMetricsv2
parameters:
- $ref: '#/components/parameters/datasetId'
- in: query
name: locale
schema:
type: string
description: The language of the distribution that should be returned
responses:
200:
description: Catalogue metrics
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/DistributionMetrics'
404:
description: Dataset not found
/distributions/{id}:
get:
deprecated: true
tags:
- Distributions
summary: use /datasets/{id}/distributions instead
description: Metrics that cover the dimensions 'accessibility', 'interoperability', 'reusability'
and 'contextuality'.
operationId: getDistributionMetrics
parameters:
- $ref: '#/components/parameters/datasetId'
- in: query
name: locale
schema:
type: string
description: The language of the distribution that should be returned
responses:
200:
description: Catalogue metrics
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: object
properties:
count:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/DistributionMetrics'
404:
description: Dataset not found
/distributions/{id}/validations:
get:
tags:
- Distributions
# --- truncated at 32 KB (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eu-open-data-portal/refs/heads/main/openapi/eu-open-data-portal-mqa-metrics-cache-openapi.yaml