Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

121 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

open-apis

Autonomously curated catalog of free, open Norwegian APIs — built for AI code agents.

What this is

A machine-readable catalog of Norwegian public APIs (weather, transport, business register, statistics, geodata, …) with metadata that AI coding agents actually need: when to use it, what to chain it with, sample requests, and citation-grounded descriptions.

The catalog is self-maintaining: a daily pipeline harvests Felles datakatalog, proposes new entries via curator subagents, verifies citations, runs live smoke tests, and opens PRs.

Status

Bootstrap — the schema is in place, the first hand-curated entry (met.locationforecast) validates end-to-end, and the harvester pulls live FDK data.

Browse the catalog

A generated landing page lives at derived/index.md — human-readable index of every entry grouped by status, with views by category and by provider. Machine consumers should read derived/index.json.

These artifacts are rebuilt by uv run open-apis index from the YAML under catalog/. They are derived data — never edit by hand.

Quick start

uv sync
uv run open-apis schema      # regenerate catalog/schema.json
uv run open-apis validate catalog/by-provider/met/locationforecast.yaml
uv run open-apis smoke    catalog/by-provider/met/locationforecast.yaml
uv run open-apis harvest dataservices 2   # 200 entries from FDK
uv run open-apis index       # rebuild derived/ landing + index.json

Architecture

See CLAUDE.md for the autonomy model. Short version:

  • Source of truth: pipeline/models.py (Pydantic) → catalog/schema.json
  • Catalog: catalog/by-provider/<provider>/<api>.yaml (canonical) and catalog/staging/... (quarantine)
  • Raw artifacts: raw/<provider>/<date>/... (immutable, citations point here)
  • Pipeline: pipeline/{harvest_fdk,validate,smoke,citations}.py
  • Agent infrastructure: .claude/{agents,skills,hooks,rules}/

Autonomy split: deterministic CI + local LLM curation

  • GitHub Actions runs the pure-Python validators and smoke tests. No LLM. No API key. Free.
  • LLM curation runs on your machine via a Claude Code scheduled task (~/.claude/scheduled-tasks/daily-harvest/). It uses your existing Claude Code subscription — no Anthropic API billing.

This split is intentional: the deterministic gates (schema, citation substring match, smoke) live in CI where they protect the main branch from any contributor; the agentic curation happens locally where it's free under your subscription.

Trust model

Every textual field in a catalog entry has a source_quote that must literally appear in the raw artifact it cites. The validator does this check with a string substring match — not another LLM. This is the deterministic anti-hallucination gate.

A separate citation-reviewer subagent (read-only, no write tools) independently verifies each entry. A Stop hook prevents Claude Code from terminating with unreviewed changes to catalog/.

License

  • Code: MIT
  • Catalog metadata: NLOD-2.0 (matches the upstream Felles datakatalog license)

Contributing

This is a single-developer + agent project. PRs from humans are welcome but the daily harvester does the bulk of the work.

About

Autonomously curated catalog of free Norwegian APIs for AI code agents.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages