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

46 lines
1.4 KiB
Markdown

# source.eu-recht
<!-- chain:io-card:start -->
<!-- Generated by `chain doc` from module.yaml — do not edit by hand. -->
![law-source-eurlex inputs and outputs](law-source-eurlex.io.svg)
<!-- chain:io-card:end -->
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
```yaml
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).