FAIR Forward Back to the catalog

For developers

Catalog API

The catalog is also published as JSON, so other catalogs and tools can list these projects alongside their own. The files are static, so there is no key to request and no rate limit.

index.json describes the rest: counts, licenses, vocabularies and the notes below. Every endpoint returns the same envelope, with the records under projects.

EndpointContentsRecords
v1/catalog.jsonEvery published project89
v1/datasets.jsonProjects that publish a dataset72
v1/usecases.jsonProjects that publish a use case38

Licenses

Two different things are licensed here, and it matters which one you mean.

The catalog metadata is CC0 1.0. You can republish these records freely, with or without attribution. Every response says so under license.

The linked assets are not ours. Each record's license field describes the dataset or model we point at. It is null for 45 of 89 projects. That means no license has been recorded, not that the asset is unlicensed and not that it is free to reuse.


Identifiers

Store id, for example ui_6. It comes from the Project ID column in the sheet and survives title edits. canonical_url contains a title-derived slug that changes when the title does, and aliases lists identifiers a project used to be reachable by.


Filtering

Records carry the same vocabularies the website filters on: sdgs (13), data_types (8), countries with ISO codes (25), and maturity.tags. Maturity stages are cumulative, so a project that reached a use case also carries pilot:

# 49 of 89 projects have reached pilot or beyond
import urllib.request, json

url = "https://fair-forward.github.io/datasets/api/v1/catalog.json"
data = json.load(urllib.request.urlopen(url))

pilot_plus = [p for p in data["projects"]
              if {"pilot", "usecase", "business"} & set(p["maturity"]["tags"])]
FieldTypeRecordedNotes
idstring89Stable. Store this one.
titlestring89Plain text.
descriptionstring88Prose, no markup.
organizationsroles89provided_by, catalyzed_by, financed_by. Each has text and links.
countries[]name, iso289ISO 3166-1 alpha-2. Join on iso2, not name.
regions[]string[]5Values with no country code, such as "West Africa".
sdgs[]string[]88The closest thing we record to a sector.
data_types[]string[]88Such as Voice or Geospatial/Remote Sensing.
maturity.tags[]string[]89Cumulative stages, as above.
linkslabel, url83Grouped as dataset, usecase, additional, documents.
canonical_urlstring89The project's page here. A good place to link back to.
licensename, spdx, url44Often null. See above.
contenttext, provenance76Check provenance before showing it.
contactstring89Free text, usually an email address.
imagestring87Absolute URL. Some are stock placeholders.

Keeping in sync

There are no per-record dates, because the sheet does not record any. Instead every response carries a version content hash: fetch again and compare it to see whether anything changed. HTTP Last-Modified and ETag date the file. The catalog is rebuilt when someone triggers it, not on a schedule, so checking daily is ample.


Before you reuse the data

A null license is not permission

45 of 89 projects have no license recorded. That means nobody has established the terms, not that the asset is free to reuse. Please show it as unknown rather than filling in a default.

Some text is machine-drafted

Fields under content carry provenance: "curated" or "auto-enriched". Auto-enriched text was drafted from the linked resources and is not a verified claim by the project team.

A project can appear and disappear

A project is listed only while it has a working link or an access note. A missing id is not a retraction, so please do not treat it as a delete.

Contact holds personal email addresses

Published so people can reach a project team about their work. Please do not use it for bulk collection or unrelated outreach, and let us know before republishing it.