GET /api/v1/cities/{slug}/council-papers
Kommunale Ratsinformationen je Stadt (OParl, Tier A)
Kommunale Ratsinformationen einer Stadt aus dem OParl-1.x-Standard (OParl "Paper" = Vorlagen, Anträge, Beschlüsse): je Paper Titel, Referenz, Datum, Paper-Typ und der Link zur Hauptdatei (main_file_url, das PDF wird NICHT gespiegelt). Abgedeckt sind die fünf lizenzgeklärten Städte Dresden, Köln, Düsseldorf, Münster und Leipzig (je eigene Lizenz in der attribution). Read-only aus dem deduplizierten Store (kein Live-Pull im Request-Pfad). Filter q (Titel-Stichwort), paper_type und since (ab ISO-Datum), mit Pagination (limit/offset). Nicht abgedeckte Stadt -> 404 mit Hint. Keine Paper -> 200 source_status="no_data", data=null. Deaktiviert -> 200 source_status="disabled". Zusätzlich unter dem Alias /api/v1/cities/{slug}/council/papers erreichbar.
Parameter
| Name | In | Pflicht | Typ | Beschreibung |
|---|---|---|---|---|
slug | path | ja | string | |
q | query | nein | string | Titel-Stichwort (Teilstring, parametrisierter LIKE-Filter). |
paper_type | query | nein | string | Exakter Paper-Typ (z. B. Beschlussvorlage, Antrag). |
since | query | nein | string | Nur Paper ab diesem ISO-Datum YYYY-MM-DD; ungültiges Datum -> 422. |
limit | query | nein | integer | Seitengröße (Default 50, Cap 100). |
offset | query | nein | integer | Seiten-Offset (>= 0); Overflow -> leere Seite, no_data. |
Code-Beispiele
curl "https://infranode.dev/api/v1/cities/hamburg/council-papers"const res = await fetch("https://infranode.dev/api/v1/cities/hamburg/council-papers");
const data = await res.json();
console.log(data);import httpx
res = httpx.get("https://infranode.dev/api/v1/cities/hamburg/council-papers")
res.raise_for_status()
print(res.json())