law-source-eurlex/MODULE.md
flemming-it 0e768ae6db
All checks were successful
CI / Linux x86_64 (Forgejo) (push) Successful in 1m45s
feat: law-source-eurlex 0.1.0 (source.eu-recht)
Fetch one EU legal act from EUR-Lex by CELEX number and return its
FORMEX-4 XML content-addressed (SHA-256), so a flow's audit trail
pins the exact Gesetzesstand it processed.

- CELLAR content negotiation (application/xml;type=fmx4) on
  publications.europa.eu; 303 multiple-choice item selection
- host-pinned redirect handling (max 3 hops), 64 MB body cap
- consolidated CELEX (0...-YYYYMMDD) yields consolidation_date
- net permission pinned to publications.europa.eu; no auth
- 10 unit tests (no network), wasm32-wasip2 build green

Signed-off-by: flemming-it <sf@flemming.it>
2026-07-17 00:29:06 +02:00

1.4 KiB

source.eu-recht

law-source-eurlex inputs and outputs

Fetch EU legal acts from EUR-Lex by CELEX number

What it does

Resolves a CELEX identifier (e.g. 32016R0679 for the GDPR, or the consolidated form 02016R0679-20160504) against the public EUR-Lex CELLAR endpoint and returns the act's FORMEX-4 XML plus a metadata record. The fetched bytes are content-addressed (SHA-256), so the flow's audit trail pins the exact Gesetzesstand that was processed — a later re-fetch of "the same" CELEX that renders differently upstream becomes visible instead of silent.

Public EUR-Lex data only; network permission is pinned to publications.europa.eu (CELLAR, the EU Publications Office store behind EUR-Lex).

How to use

steps:
  - id: fetch
    use: source.eu-recht@^0
    with:
      celex: "32016R0679"
      language: "DE"          # optional, default DE
  - id: normalize
    use: text.akoma-normalize@^0    # 0.2+ understands FORMEX-4
    with:
      content: "{{ fetch.formex }}"
      mime: "application/x-formex+xml"

Outputs: formex (bytes, application/xml) and meta (JSON with celex, language, url, source_sha256, byte_len, and consolidation_date for consolidated CELEX numbers).

License

Apache-2.0 — a Ch∆In platform module (Flemming.AI).