API-Leitfaden (v1)

Versionierte, öffentliche API. Referenz: ADR-0019. Interaktiv ausprobieren: /docs/api. Maschinenlesbar: GET /api/v1/openapi.json.

Basis

https://landnutzen.vercel.app/api/v1

Pfad-versioniert (/api/v1). Breaking Changes → /api/v2; neue Felder werden additiv innerhalb v1 ergänzt (Contract bleibt stabil).

Authentifizierung

Zweistufig — die API funktioniert ohne Key:

ModusWieLimit
Anonymkein HeaderIP-Tageslimit (Mass-Scraping-Schutz)
API-KeyAuthorization: Bearer ln_… oder X-API-Key: ln_…eigenes, höheres Tageslimit + Audit

Gespeichert wird nur ein SHA-256-Hash des Keys, nie der Klartext. Ungültiger/widerrufener Key → 401. Key-Ausstellung erfolgt aktuell durch die Plattform (Self-Service folgt mit dem Admin-Dashboard).

Endpunkte

GET /api/v1/report

ParameterOrtPflichtBeispiel
addressQueryjaRathausplatz 1, 2230 Gänserndorf
curl "https://landnutzen.vercel.app/api/v1/report?address=Rathausplatz%201%2C%202230%20Gänserndorf"

POST /api/v1/report

curl -X POST https://landnutzen.vercel.app/api/v1/report \
  -H "Content-Type: application/json" \
  -d '{"address":"Rathausplatz 1, 2230 Gänserndorf"}'

Erfolg (200) = Report-JSON nach Report-Contract — kein Wrapper. Antwort- Header: X-RateLimit-Limit, X-RateLimit-Remaining, X-Auth-Mode.

Fehler-Envelope

Stabil bei jedem Nicht-2xx:

{ "error": { "code": "address_missing", "message": "…" } }
StatuscodeBedeutung
400address_missing / invalid_jsonEingabe fehlt/ungültig
401unauthorizedAPI-Key ungültig oder widerrufen
429rate_limitedTageslimit erreicht (Retry-After)
500internalunerwarteter Fehler

Ehrliche Datenlage

Nicht verfügbare oder unsichere Datenschichten stehen in jedem Report unter meta.degraded (Layer, Grund, Fallback). Die Widmung ist eine Indikation (nicht rechtsverbindlich), Kostenrahmen sind Grob-Schätzungen. Quellen/Lizenzen je Report unter sources — siehe Datenquellen & Lizenzen.