REST-facing proxy for X-Road services. Rust reimplementation of buerokratt/XTR.
Point XTR at a folder of service definitions. Callers speak plain HTTP to XTR; XTR speaks mTLS to the X-Road Security Server on their behalf. Two service kinds share one deployment:
- SOAP — auto-generated from WSDL files. Ships with 194 live endpoints for real Estonian X-Road services (Ariregister + Maa-amet + Keskkonnaamet + RMK + Kliimaministeerium). SOAP responses are translated to JSON.
- REST — hand-written DSL, passthrough. Body + headers + query forwarded verbatim over mTLS per X-Road Message Protocol for REST v1.0.4.
Version: 0.3.0-rc · License: Apache-2.0
· Docs: turnerrainer.github.io/XTR
· Images: docker.io/turnerrainer/xtr:rc, ghcr.io/turnerrainer/xtr:rc
(the :rc tag always floats to the latest release-candidate;
pin to :0.3.0-rc for reproducible deploys).
Upgrading from
0.2.0-rc.1? Existing SOAP DSLs work unchanged (nokind:field → SOAP). ReadMIGRATION.mdfor the two externally-visible additions (405 method enforcement on non-POST for SOAP DSLs, newsecurity_server.trust_ca_pathfield). Rundocker run --rm -v $(pwd)/xtr.yaml:/app/xtr.yaml:ro turnerrainer/xtr:rc doctor --strict— the doctor now includes REST-lane rules and prints exactly what to change.
docker run -d --name xtr -p 8080:8080 turnerrainer/xtr:rc
curl -sX POST http://localhost:8080/ariregister/lihtandmed_v3 \
-H 'content-type: application/json' \
-d '{"ariregister_kasutajanimi":"x","ariregister_parool":"x","ariregistri_kood":"70006317","ariregister_sessioon":"","ariregister_valjundi_formaat":"","evnimi":"","evarv":"","keel":""}'Real call against the real Estonian Business Register — returns
upstream_soap_fault: Incorrect user name or password. for fake creds,
proving the wire round-trip works.
git clone -b dev https://github.com/turnerrainer/XTR.git xtr
cd xtr
docker compose up -d --build- Book — turnerrainer.github.io/XTR (getting started, config, WSDL folder-drop, REST passthrough, Security Server, doctor, failure modes)
- Migration —
MIGRATION.md— upgrade guides with doctor recipe, per-change before/after, LLM prompt template, CI gate recipe - Config validator —
book/src/doctor.md—xtr-on-rust doctorsubcommand recipe + full rule catalogue - Design —
docs/DESIGN.md— what XTR does and why - Security —
SECURITY.md— reporting, supply-chain posture, SSRF operator recipe - Standards —
STANDARDS.md— every generic build/docs/test/publish rule the project meets - Changelog —
CHANGELOG.md— includes[0.3.0-rc]REST-lane feature entry - AI-assistant context —
CLAUDE.md— first file to read for Claude Code + friends - Original JVM XTR — https://github.com/buerokratt/XTR