{
 "schema_version": "1.1.0",
 "generated_at": "2026-08-17T11:21:14Z",
 "human_page": "https://govoss-catalog.vercel.app/",
 "counts_note": "`entries` is the ACTIVE catalogue. /entries.json holds `rows_in_entries_json` rows, because a set-aside entry is flagged `excluded: true` with an `exclude_reason` rather than dropped \u2014 filter on `excluded` for the active catalogue. /v1/entries.json is an alias of /entries.json and carries the same rows. The curated browse indexes (/by-product.json, /by-category/, mcp-index.json) are active-only.",
 "counts": {
  "entries": 2772,
  "rows_in_entries_json": 3196,
  "with_publiccode": 996,
  "with_wikidata": 645,
  "with_replaces": 194,
  "in_multiple_catalogues": 97,
  "with_entry_links": 2002,
  "digital_public_goods": 226,
  "dead_links": 24,
  "archived_repos": 39,
  "filtered_out": 424,
  "total_including_set_aside": 3196,
  "distinct_products_mapped": 290
 },
 "categories": [
  {
   "key": "case-workflow",
   "label": "Case & Workflow Management",
   "count": 339
  },
  {
   "key": "documents",
   "label": "Documents & Records",
   "count": 270
  },
  {
   "key": "web-content",
   "label": "Content & Web Publishing",
   "count": 270
  },
  {
   "key": "collaboration",
   "label": "Collaboration & Communication",
   "count": 315
  },
  {
   "key": "data-analytics",
   "label": "Data, Analytics & Visualisation",
   "count": 572
  },
  {
   "key": "geospatial",
   "label": "Geospatial & Mapping",
   "count": 186
  },
  {
   "key": "identity-security",
   "label": "Identity, Access & Security",
   "count": 175
  },
  {
   "key": "citizen-services",
   "label": "Citizen Services & Participation",
   "count": 123
  },
  {
   "key": "finance-procurement",
   "label": "Finance, Procurement & Accounting",
   "count": 95
  },
  {
   "key": "hr-workforce",
   "label": "HR & Workforce",
   "count": 22
  },
  {
   "key": "crm-service",
   "label": "CRM & Service Desk",
   "count": 104
  },
  {
   "key": "dev-tools",
   "label": "Developer Tools & Platform",
   "count": 315
  },
  {
   "key": "infrastructure",
   "label": "Infrastructure & Operations",
   "count": 181
  },
  {
   "key": "integration",
   "label": "Integration, APIs & Data Exchange",
   "count": 82
  },
  {
   "key": "learning-knowledge",
   "label": "Learning & Knowledge",
   "count": 84
  },
  {
   "key": "health-social",
   "label": "Health & Social Care",
   "count": 11
  },
  {
   "key": "environment-transport",
   "label": "Environment, Energy & Transport",
   "count": 24
  },
  {
   "key": "office",
   "label": "Office & Productivity",
   "count": 95
  },
  {
   "key": "registers",
   "label": "Registers & Reference Data",
   "count": 16
  }
 ],
 "countries": [
  {
   "code": "FR",
   "count": 676
  },
  {
   "code": "DE",
   "count": 549
  },
  {
   "code": "IT",
   "count": 537
  },
  {
   "code": "GLOBAL",
   "count": 248
  },
  {
   "code": "DK",
   "count": 214
  },
  {
   "code": "BG",
   "count": 177
  },
  {
   "code": "NL",
   "count": 103
  },
  {
   "code": "BE",
   "count": 101
  },
  {
   "code": "CA",
   "count": 66
  },
  {
   "code": "TW",
   "count": 57
  },
  {
   "code": "FI",
   "count": 54
  },
  {
   "code": "SE",
   "count": 44
  },
  {
   "code": "PT",
   "count": 39
  },
  {
   "code": "EU",
   "count": 8
  },
  {
   "code": "IE",
   "count": 2
  }
 ],
 "source_catalogues": [
  {
   "key": "IT/developers-italia",
   "label": "Developers Italia",
   "country": "IT",
   "site": "https://developers.italia.it/en/software",
   "api": "https://api.developers.italia.it/v1/software",
   "route": "REST API",
   "claim": "built for public administration"
  },
  {
   "key": "FR/sill",
   "label": "SILL",
   "country": "FR",
   "site": "https://code.gouv.fr/sill",
   "api": "https://code.gouv.fr/sill/api/sill.json",
   "route": "bulk JSON",
   "claim": "recommended to public agents"
  },
  {
   "key": "FR/awesome-codegouvfr",
   "label": "awesome-codegouvfr",
   "country": "FR",
   "site": "https://code.gouv.fr/",
   "api": "https://code.gouv.fr/data/awesome-codegouvfr.json",
   "route": "bulk JSON",
   "claim": "curated French public-sector"
  },
  {
   "key": "DE/openCode",
   "label": "openCode",
   "country": "DE",
   "site": "https://opencode.de/en/software",
   "api": "https://gitlab.opencode.de/api/v4/projects",
   "route": "GitLab API",
   "claim": "built for public administration"
  },
  {
   "key": "DE/opensource.muenchen.de",
   "label": "Munich Open Source",
   "country": "DE",
   "site": "https://opensource.muenchen.de/software/",
   "api": "https://github.com/it-at-m/opensource.muenchen.de/tree/main/software",
   "route": "markdown files in git",
   "claim": "built or used by the City of Munich"
  },
  {
   "key": "NL/code.overheid.nl",
   "label": "code.overheid.nl",
   "country": "NL",
   "site": "https://code.overheid.nl/",
   "api": "https://code.overheid.nl/api/v1/repos/search",
   "route": "Forgejo API",
   "claim": "published by Dutch government bodies"
  },
  {
   "key": "BE/iMio",
   "label": "iMio",
   "country": "BE",
   "site": "https://www.imio.be/",
   "api": "https://api.github.com/orgs/IMIO/repos",
   "route": "GitHub org",
   "claim": "built by Walloon municipalities"
  },
  {
   "key": "DK/os2",
   "label": "OS2 Denmark",
   "country": "DK",
   "site": "https://os2.eu/",
   "api": "https://api.github.com/orgs/OS2web/repos",
   "route": "GitHub orgs (20)",
   "claim": "built by Danish municipalities"
  },
  {
   "key": "BG/governmentbg",
   "label": "e-Government Ministry",
   "country": "BG",
   "site": "https://github.com/governmentbg",
   "api": "https://api.github.com/orgs/governmentbg/repos",
   "route": "GitHub org",
   "claim": "built for the Bulgarian government"
  },
  {
   "key": "SE/offentligkod",
   "label": "Offentligkod",
   "country": "SE",
   "site": "https://offentligkod.se/",
   "api": "https://gitlab.com/open-data-knowledge-sharing/katalogen",
   "route": "GNU recutils in git",
   "claim": "in use by Swedish public bodies"
  },
  {
   "key": "FI/avoinkoodi",
   "label": "Avoinkoodi",
   "country": "FI",
   "site": "https://avoinkoodi.fi/",
   "api": "https://avoinkoodi.fi/projects.json",
   "route": "static JSON",
   "claim": "Finnish public-sector project"
  },
  {
   "key": "CA/code.open.canada.ca",
   "label": "Open Resource Exchange",
   "country": "CA",
   "site": "https://code.open.canada.ca/en/index.html",
   "api": "https://code.open.canada.ca/code.json",
   "route": "code.json",
   "claim": "published by Canadian administrations"
  },
  {
   "key": "PT/arte",
   "label": "ARTE Portugal",
   "country": "PT",
   "site": "https://github.com/amagovpt",
   "api": "https://api.github.com/orgs/amagovpt/repos",
   "route": "GitHub org",
   "claim": "built by Portugal's state technology agency"
  },
  {
   "key": "IE/ogcio",
   "label": "OGCIO Ireland",
   "country": "IE",
   "site": "https://github.com/ogcio",
   "api": "https://api.github.com/orgs/ogcio/repos",
   "route": "GitHub org",
   "claim": "built by the Irish government CIO office"
  },
  {
   "key": "TW/code.gov.tw",
   "label": "Public Code Platform (moda)",
   "country": "TW",
   "site": "https://code.gov.tw/",
   "api": "https://code.gov.tw/api/OpenDataSet/PublicProgramInfoData/json",
   "route": "official open-data export",
   "claim": "published by Taiwanese agencies"
  },
  {
   "key": "GLOBAL/dpg",
   "label": "Digital Public Goods Registry",
   "country": "GLOBAL",
   "site": "https://www.digitalpublicgoods.net/registry",
   "api": "https://app.digitalpublicgoods.net/api/dpgs",
   "route": "REST API",
   "claim": "vetted against the DPG Standard"
  },
  {
   "key": "EU/code.europa.eu",
   "label": "code.europa.eu",
   "country": "EU",
   "site": "https://code.europa.eu/",
   "api": "https://code.europa.eu/api/v4/projects",
   "route": "GitLab API",
   "claim": "built by EU institutions"
  }
 ],
 "surveyed_not_ingested": [
  {
   "country": "US",
   "flag": "\ud83c\uddfa\ud83c\uddf8",
   "name": "code.gov",
   "url": "https://code.gov",
   "status": "retired",
   "detail": "302s to a Digital.gov policy page; api.code.gov returns the same HTML. The federal inventory that defined the code.json schema is gone. Its schema outlived it - Canada still uses it."
  },
  {
   "country": "IN",
   "flag": "\ud83c\uddee\ud83c\uddf3",
   "name": "OpenForge",
   "url": "https://openforge.gov.in/",
   "status": "no-code",
   "detail": "Operational as a SERVICE but empty as a catalogue. Tuleap Community Edition 16.12 (current), CORS-open REST API, 1,502 active public projects with real names (DigiLocker toolkits, eGov SmartCity, EPrabandhan) - but ZERO accessible source code. /api/projects/<id>/git returns an empty repositories array for 40 of 40 sampled projects; frs_packages is empty; the file-release pages say \"empty\"; and 0 of 25 git plugin pages carry a clonable URL. Not auth-gated - there is simply nothing published. Adding it would inject 1,502 entries with no repository URL, which is both the dedupe identity and the whole promise of the catalogue. Re-check periodically: if code lands, this becomes the largest single source here."
  },
  {
   "country": "KR",
   "flag": "\ud83c\uddf0\ud83c\uddf7",
   "name": "oss.kr (Open Source Portal)",
   "url": "https://www.oss.kr/",
   "status": "wrong-shape",
   "detail": "Live and substantial, but it is a national OSS PROMOTION portal, not a catalogue of government-produced software: developer contests, a contribution academy, licence verification, Open Up centre, news. Its /opensource/hub/<id> pages profile UPSTREAM projects (Node.js and the like) rather than Korean public-sector code, with no adoption data. Closest analogue here is SILL's recommendation axis, minus the government-use signal that makes SILL worth having. Nothing to ingest without changing what the catalogue means."
  },
  {
   "country": "BR",
   "flag": "\ud83c\udde7\ud83c\uddf7",
   "name": "Portal do Software Publico",
   "url": "https://www.softwarepublico.gov.br/",
   "status": "broken",
   "detail": "TLS certificate expired; /social/ 404s. Historically the most ambitious public software portal outside Europe - worth re-checking."
  },
  {
   "country": "ES",
   "flag": "\ud83c\uddea\ud83c\uddf8",
   "name": "CTT",
   "url": "https://administracionelectronica.gob.es/ctt",
   "status": "bot-protected",
   "detail": "Centro de Transferencia de Tecnologia holds a real solutions directory, but every route is behind an F5/BIG-IP bot challenge (TSPD) that returns HTTP 200 with a CAPTCHA page instead of data - the HTML, the RSS feed and every /api/ path alike. Solving or bypassing a CAPTCHA is off the table, so this cannot be harvested as it stands. The legitimate route would be Spain asking to allowlist a harvester, or publishing the directory via datos.gob.es. Re-check rather than retry: the block is deliberate."
  },
  {
   "country": "global",
   "flag": "\ud83c\udf10",
   "name": "State of Public Code / Software Heritage",
   "url": "https://www.softwareheritage.org/2026/07/01/public_code_2026_launch/",
   "status": "different-shape",
   "detail": "288,411 repositories with at least one government-email contribution across all 193 UN member states. A measurement dataset, not a curated catalogue - it answers 'who contributes' rather than 'what can we adopt'. Useful as discovery input for finding catalogues we have missed."
  },
  {
   "country": "CY",
   "flag": "\ud83c\udde8\ud83c\uddfe",
   "name": "Cyprus - no code platform found",
   "url": "https://www.cyprus.gov.cy/",
   "status": "none-found",
   "detail": "Checked properly rather than left open. The Software Heritage domain registry has collected 634 responding Cyprus government domains and NONE is a code platform or forge; there is no Cyprus entry in its github-gov-orgs.csv; and its candidate list names only parliament.cy. Keyword matches for git/code/repo across the subdomain list are false positives (digitalcoalition, reportdruginfo). Cyprus appears simply not to publish government source code centrally. EGDI rank 38 of 193, so this is a genuine gap rather than a discovery failure."
  },
  {
   "country": "EU facets",
   "flag": "\ud83c\uddea\ud83c\uddfa",
   "name": "remaining EU catalogue facets",
   "url": "https://interoperable-europe.ec.europa.eu/eu-oss-catalogue",
   "status": "unresolved",
   "detail": "Reading the EU catalogue's SOURCE FACET NAMES from the page HTML resolved two of the three unknowns: hosting_platform:ogcio is Ireland's OGCIO, and hosting_platform:arte is Portugal's ARTE state technology agency - NOT the Franco-German broadcaster, which is what it was first read as here. Both are now ingested. Still unidentified: hosting_platform:city_of_ghent (a Belgian municipality, likely a handful of repos) and hosting_platform:dmrid_dits (github.com/DMRID is an individual user with one repo, not a registry)."
  },
  {
   "country": "DK/BG",
   "flag": "\u26a0",
   "name": "translation debt (OS2 + Bulgaria)",
   "url": "https://govoss-catalog.vercel.app/status.html",
   "status": "needs-research",
   "detail": "English coverage dropped from 100% to 91% when OS2 Denmark and Bulgaria were added: 265 strings remain untranslated (171 Bulgarian, 82 Danish, 12 other). Recorded rather than papered over - every entry still carries description_lang so a consumer can tell, and meta.json reports the real figure. The Bulgarian set is mostly long EU-funding project titles rather than software summaries, so it needs judgement about what is worth translating at all."
  },
  {
   "country": "meta",
   "flag": "\ud83d\udcd6",
   "name": "OSOR \"OSS repositories\" list",
   "url": "https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/oss-repositories",
   "status": "discovery-source",
   "detail": "The best discovery resource found so far, and it should have been checked first: a hand-curated, server-rendered directory of ~29 public-sector OSS catalogues with owner, language and geographic coverage. Unlike the EU OSS Catalogue on the same portal, this page renders fine. It confirmed 6 sources already ingested and surfaced these NOT yet evaluated in depth: OS2 (os2.eu, Danish municipal community - the Denmark source never found by guessing), dev.egov.bg (Bulgaria's e-government dev portal), ICT ReUse Belgium, Helsingborg City (SE municipal), Adullact (FR, runs gitlab.adullact.net), Forja redIRIS (ES academic) and OW2. publiccode.directory is a dead domain."
  },
  {
   "country": "MD",
   "flag": "\ud83c\uddf2\ud83c\udde9",
   "name": "OpenCode Moldova",
   "url": "https://opencode.md/en/registry/",
   "status": "needs-research",
   "detail": "\"Registry of Open Source Solutions\" - a real national portal covering DPGs, open licences, approved git repositories and requirements for open source solutions. But it is WordPress with only stock post types (no custom solutions type in /wp-json/wp/v2/types) and the registry page contains zero repository links, so what is published looks like policy and guidance rather than a structured software list. Worth a closer read before writing off - it would be a new country."
  },
  {
   "country": "ES",
   "flag": "\ud83c\uddea\ud83c\uddf8",
   "name": "Comptoir du Libre (crosswalk)",
   "url": "https://comptoir-du-libre.org/api/v1/softwares.json",
   "status": "ready",
   "detail": "Not a national catalogue but a CROSSWALK, and an open one: 780 entries in a single JSON with url_repository, wikidata, sill, cnll, framalibre and wikipedia ids on the same row. Would improve dedupe rather than add coverage - it maps SILL ids to Wikidata QIDs to repo URLs, which is exactly the identity resolution this catalogue does by hand."
  },
  {
   "country": "n/a",
   "flag": "\u26a0",
   "name": "UNODC GlobE \"Directory of Open-Source Registries\"",
   "url": "https://globenetwork.unodc.org/globenetwork/en/directory-of-open-source-registries/index.html",
   "status": "false-lead",
   "detail": "NOT about open-source software. GlobE is UNODC's Global Operational Network of Anti-Corruption Law Enforcement Authorities, and \"open-source registries\" here means open-source INTELLIGENCE - publicly available official records such as company and beneficial-ownership registries. Its stated purpose: \"Information from open-source registries is useful for anti-corruption law enforcement authorities... collected by investigators and prosecutors without the need of a formal mutual legal assistance request.\" Recorded because it surfaced in a software-catalogue search and reads plausibly relevant from the title alone."
  },
  {
   "country": "NL",
   "flag": "\ud83c\uddf3\ud83c\uddf1",
   "name": "Dutch OSS register (api.developer.overheid.nl)",
   "url": "https://api.developer.overheid.nl/oss-register/v1",
   "status": "ready",
   "detail": "A real register, and the one source here that is blocked only by paperwork: every read returns 401 without an x-api-key, and a key has not been requested. Not urgent - the Dutch CODE PLATFORM at code.overheid.nl is harvested and needs no key, and is arguably the better source anyway (first-hand repositories rather than a register of pointers). Recorded here because it was previously visible only as a '0 records' warning on the status page; when that page merged into this one the warning had nowhere to live, and a known gap with no home is a gap that gets forgotten."
  }
 ],
 "sources": [
  {
   "name": "FR/sill",
   "count": 667
  },
  {
   "name": "IT/developers-italia",
   "count": 537
  },
  {
   "name": "DE/openCode",
   "count": 412
  },
  {
   "name": "DK/os2",
   "count": 299
  },
  {
   "name": "GLOBAL/dpg",
   "count": 248
  },
  {
   "name": "BE/iMio",
   "count": 236
  },
  {
   "name": "BG/governmentbg",
   "count": 191
  },
  {
   "name": "SE/offentligkod",
   "count": 148
  },
  {
   "name": "DE/opensource.muenchen.de",
   "count": 141
  },
  {
   "name": "NL/code.overheid.nl",
   "count": 135
  },
  {
   "name": "PT/arte",
   "count": 89
  },
  {
   "name": "CA/code.open.canada.ca",
   "count": 67
  },
  {
   "name": "TW/code.gov.tw",
   "count": 57
  },
  {
   "name": "FI/avoinkoodi",
   "count": 54
  },
  {
   "name": "FR/awesome-codegouvfr",
   "count": 19
  },
  {
   "name": "EU/code.europa.eu",
   "count": 8
  },
  {
   "name": "IE/ogcio",
   "count": 5
  }
 ],
 "licences_spdx": [
  {
   "id": "EUPL-1.2",
   "count": 428
  },
  {
   "id": "MIT",
   "count": 342
  },
  {
   "id": "Apache-2.0",
   "count": 206
  },
  {
   "id": "AGPL-3.0-or-later",
   "count": 172
  },
  {
   "id": "GPL-2.0",
   "count": 141
  },
  {
   "id": "GPL-3.0-or-later",
   "count": 85
  },
  {
   "id": "MPL-2.0",
   "count": 84
  },
  {
   "id": "GPL-3.0",
   "count": 83
  },
  {
   "id": "AGPL-3.0-only",
   "count": 83
  },
  {
   "id": "GPL-2.0-only",
   "count": 70
  },
  {
   "id": "AGPL-3.0",
   "count": 70
  },
  {
   "id": "GPL-3.0-only",
   "count": 59
  },
  {
   "id": "BSD-3-Clause",
   "count": 57
  },
  {
   "id": "NOASSERTION",
   "count": 39
  },
  {
   "id": "GPL-2.0-or-later",
   "count": 37
  },
  {
   "id": "GPL",
   "count": 30
  },
  {
   "id": "CC-BY-4.0",
   "count": 28
  },
  {
   "id": "CC-BY-SA-4.0",
   "count": 24
  },
  {
   "id": "LGPL-3.0-only",
   "count": 19
  },
  {
   "id": "CC0-1.0",
   "count": 13
  },
  {
   "id": "LGPL-3.0",
   "count": 13
  },
  {
   "id": "LGPL",
   "count": 10
  },
  {
   "id": "0BSD",
   "count": 10
  },
  {
   "id": "BSD-2-Clause",
   "count": 9
  },
  {
   "id": "LGPL-3.0-or-later",
   "count": 8
  },
  {
   "id": "BSD",
   "count": 8
  },
  {
   "id": "GPL3",
   "count": 8
  },
  {
   "id": "GNU",
   "count": 7
  },
  {
   "id": "LGPL-2.0-only",
   "count": 6
  },
  {
   "id": "EUPL",
   "count": 6
  },
  {
   "id": "LGPL-2.1-only",
   "count": 5
  },
  {
   "id": "Apache",
   "count": 5
  },
  {
   "id": "CECILL-B",
   "count": 5
  },
  {
   "id": "EPL-2.0",
   "count": 4
  },
  {
   "id": "CC-BY-NC-SA-4.0",
   "count": 4
  },
  {
   "id": "AGPL",
   "count": 4
  },
  {
   "id": "LGPL-2.0-or-later",
   "count": 4
  },
  {
   "id": "LGPL-2.1",
   "count": 4
  },
  {
   "id": "EPL",
   "count": 3
  },
  {
   "id": "agpl-3.0",
   "count": 3
  },
  {
   "id": "CPL-1.0",
   "count": 3
  },
  {
   "id": "EPL-1.0",
   "count": 3
  },
  {
   "id": "AGPL-1.0-or-later",
   "count": 3
  },
  {
   "id": "BSD-3-Clause-Clear",
   "count": 2
  },
  {
   "id": "EUPL-1.1",
   "count": 2
  },
  {
   "id": "CC-BY-NC-SA-3.0",
   "count": 2
  },
  {
   "id": "OdbL-1.0",
   "count": 2
  },
  {
   "id": "LGPL-2.1-or-later",
   "count": 2
  },
  {
   "id": "CECILL-2.1",
   "count": 2
  },
  {
   "id": "GPLv2+CPE",
   "count": 2
  },
  {
   "id": "PostgreSQL",
   "count": 2
  },
  {
   "id": "EUPL-1.2-or-later",
   "count": 2
  },
  {
   "id": "AGPL-3",
   "count": 2
  },
  {
   "id": "FREEWARE",
   "count": 1
  },
  {
   "id": "BSD-3",
   "count": 1
  },
  {
   "id": "GPLv3.0",
   "count": 1
  },
  {
   "id": "NSP",
   "count": 1
  },
  {
   "id": "OSL-2.0",
   "count": 1
  },
  {
   "id": "other",
   "count": 1
  },
  {
   "id": "PolyForm-Noncommercial-1.0.0",
   "count": 1
  },
  {
   "id": "WTFPL",
   "count": 1
  },
  {
   "id": "AFL-1.1",
   "count": 1
  },
  {
   "id": "EUPL-v1.2",
   "count": 1
  },
  {
   "id": "OSL-3.0",
   "count": 1
  },
  {
   "id": "MIT-0",
   "count": 1
  },
  {
   "id": "SSPL",
   "count": 1
  },
  {
   "id": "CC0",
   "count": 1
  },
  {
   "id": "LGPLv2",
   "count": 1
  },
  {
   "id": "LPPL",
   "count": 1
  },
  {
   "id": "LGPL-v2.1-only",
   "count": 1
  },
  {
   "id": "gpl-3.0",
   "count": 1
  },
  {
   "id": "Artistic-2.0",
   "count": 1
  },
  {
   "id": "Freemium",
   "count": 1
  },
  {
   "id": "CC-BY-SA-3.0",
   "count": 1
  },
  {
   "id": "ODC-By-1.0",
   "count": 1
  },
  {
   "id": "OLDAP-2.8",
   "count": 1
  },
  {
   "id": "ODbL",
   "count": 1
  },
  {
   "id": "Freeware",
   "count": 1
  },
  {
   "id": "LGPLv2.1",
   "count": 1
  },
  {
   "id": "Zlib",
   "count": 1
  },
  {
   "id": "OSL-1.0",
   "count": 1
  },
  {
   "id": "XXXXXXXXX",
   "count": 1
  },
  {
   "id": "NPOSL-3.0",
   "count": 1
  },
  {
   "id": "CPA",
   "count": 1
  },
  {
   "id": "X11",
   "count": 1
  },
  {
   "id": "CC-BY-NC-4.0",
   "count": 1
  },
  {
   "id": "Ms-PL",
   "count": 1
  },
  {
   "id": "gnu",
   "count": 1
  },
  {
   "id": "EULA",
   "count": 1
  },
  {
   "id": "AFL-2.0",
   "count": 1
  },
  {
   "id": "ISC",
   "count": 1
  },
  {
   "id": "GPL-3",
   "count": 1
  },
  {
   "id": "BSD-3.0",
   "count": 1
  },
  {
   "id": "Zimbra-1.3",
   "count": 1
  }
 ],
 "replaces_disclaimer": "CURATED AND PARTIAL. Hand-seeded, not exhaustive, not authoritative. Absence of a mapping is NOT evidence that no replacement exists.",
 "confidence_values": {
  "strong": "like-for-like functional substitute for the common use case",
  "partial": "covers the main use case with real gaps",
  "adjacent": "same domain, different shape - needs a workflow change"
 },
 "kind_values": {
  "software": "replaces the software itself",
  "service": "the paid item is a hosted SERVICE or CONTENT subscription; self-hosting this replaces the software but you still need hosting/content. Drupal does not replace hosting; Moodle does not produce training content.",
  "paid-tier": "the paid item is a commercial edition of software that is ALREADY open source. Usually the cheapest win in a procurement review - often no migration at all, just a licence you stop renewing."
 },
 "files": {
  "entries": "/entries.json",
  "meta": "/meta.json",
  "by_product": "/by-product.json",
  "by_category": "/by-category/<category-key>.json",
  "sources": "/sources.json",
  "status": "/status.json",
  "versioned": "/v1/entries.json"
 },
 "known_gaps": {
  "note": "Absence is a finding: a category with no entries tells a European public-sector audience where the gaps in their own commons are.",
  "no_results_observed_for": [
   "social media scheduling / management",
   "SMS / mass notification platforms",
   "mobile field data collection",
   "digital signage"
  ],
  "not_replaceable_by_software": [
   "managed hosting (Pantheon, WP Engine) \u2014 a CMS does not replace hosting",
   "training content subscriptions (LinkedIn Learning, Pluralsight, GO1) \u2014 an LMS does not produce course content"
  ],
  "unresolved_national_catalogues": [
   "IE",
   "PT",
   "CY"
  ],
  "needs_api_key": [
   "NL"
  ]
 },
 "replaces_seed_orphans": []
}