scopemy.city
Bürgerobservatorium
MeldenWhatsApp

API und Integrationen

Veröffentlichte Meldungen sind über eine JSON-API, über Open311 (kompatibel mit GIS wie ArcGIS oder QGIS und Unterhaltssystemen), über Webhooks und über ein einbettbares Widget verfügbar.

Grundsätze

OpenAPI-3.1-Spezifikation: openapi.yaml · openapi.json

curl -H 'Accept: application/json' 'https://scopemy.city/api/v1/signalements?statut=resolu&limite=20'

JSON-API

GET /api/v1/signalements

Seitenweise Liste der veröffentlichten Meldungen

Parameter von GET /api/v1/signalements
ParameterOrtBeschreibung
bbox queryAusschnitt minLng,minLat,maxLng,maxLat (WGS84).
categorie queryEine oder mehrere Kategorien (Codes durch Kommas getrennt).
statut querynouveau, en_cours, resolu oder rejete (mehrere durch Kommas getrennt).
depuis queryErstellt ab diesem Datum (JJJJ-MM-TT).
jusqua queryErstellt bis einschliesslich diesem Datum (JJJJ-MM-TT).
q querySuche in Titel, Adresse, Beschreibung, Referenz und Bezeichnungen.
lang querySprache der Bezeichnungen (fr, de, it, en), unter den Sprachen der Website.
limite queryMeldungen pro Seite (1 bis 100, Standard 50).
curseur queryUndurchsichtiger Cursor der nächsten Seite (pagination.suivant).

Antwortcodes: 200, 400, 429

GET /api/v1/signalements/{reference}

Eine veröffentlichte Meldung, nach Referenz

Parameter von GET /api/v1/signalements/{reference}
ParameterOrtBeschreibung
reference * pathReferenz SC-XXXX-XXXX (oder alte FMC-XXXXXX).

Antwortcodes: 200, 404

GET /api/v1/carte

Meldungen im sichtbaren Kartenausschnitt, bei kleinem Zoom gruppiert

Parameter von GET /api/v1/carte
ParameterOrtBeschreibung
bbox * queryAngezeigter Ausschnitt minLng,minLat,maxLng,maxLat (WGS84).
zoom queryWeb-Mercator-Zoomstufe (0 bis 22).
categorie queryEine oder mehrere Kategorien (Codes durch Kommas getrennt).
statut querynouveau, en_cours, resolu oder rejete (mehrere durch Kommas getrennt).
depuis queryErstellt ab diesem Datum (JJJJ-MM-TT).
jusqua queryErstellt bis einschliesslich diesem Datum (JJJJ-MM-TT).
q querySuche in Titel, Adresse, Beschreibung, Referenz und Bezeichnungen.

Antwortcodes: 200, 400

Open311 GeoReport v2

Nur JSON-Format. Dienste sind die Kategorien der Website, Anfragen die veröffentlichten Meldungen; status ist open (neu, in Bearbeitung) oder closed (erledigt, abgelehnt).

GET /open311/v2/discovery.json

Open311-Discovery

Antwortcodes: 200

GET /open311/v2/services.json

Dienste (Kategorien der Website)

Antwortcodes: 200

GET /open311/v2/requests.json

Veröffentlichte Anfragen (Open311-Filter)

Parameter von GET /open311/v2/requests.json
ParameterOrtBeschreibung
service_request_id queryEine oder mehrere Referenzen, durch Kommas getrennt.
service_code queryDienstcode (Kategorie).
status queryopen (neu, in Bearbeitung) oder closed (erledigt, abgelehnt).
start_date queryISO-8601-Datum (tagesgenau).
end_date queryISO-8601-Datum (tagesgenau, einschliesslich).
page querySeite (übliche Erweiterung, ab 1).
page_size querySeitengrösse (1 bis 100, Standard 50).

Antwortcodes: 200

POST /open311/v2/requests.json

Anfrage einreichen (API-Schlüssel mit Schreibrecht)

Antwortcodes: 201, 400, 401, 403

GET /open311/v2/requests/{id}.json

Eine veröffentlichte Anfrage

Parameter von GET /open311/v2/requests/{id}.json
ParameterOrtBeschreibung
id * pathReferenz der Meldung.

Antwortcodes: 200, 404

Offene Daten

GET /donnees/signalements.csv

CSV-Export der veröffentlichten Meldungen (CC BY 4.0)

Antwortcodes: 200

GET /donnees/signalements.geojson

GeoJSON-Export der veröffentlichten Meldungen (CC BY 4.0)

Antwortcodes: 200

GET /donnees/statistiques.json

Öffentliche Statistiken (Umfang, mittlere Fristen, Erledigungsquote)

Antwortcodes: 200

Webhooks

Ein Gemeinwesen kann eine https-Adresse für diese Ereignisse abonnieren (Verwaltung, Seite API). Wir senden innert 5 Minuten einen JSON-POST; eine noch nicht veröffentlichte Meldung enthält nur Referenz, Kategorie, Status, Position und Daten.

EreignisBeschreibung
signalement.creeMeldung erstellt (wartet auf Moderation)
signalement.publieMeldung veröffentlicht
signalement.statutStatus geändert (data.ancien_statut enthält den alten)
signalement.reponseOffizielle Antwort hinzugefügt oder geändert
signalement.affecteEiner Dienststelle oder Person zugewiesen (Dienststellenportal)

Jede Sendung ist im Header X-Scopemy-Signature signiert: t=Zeitstempel,v1=HMAC-SHA256 des Textes „t.Körper“ mit Ihrem Geheimnis. Prüfen Sie ihn in konstanter Zeit und lehnen Sie Zeitstempel älter als 5 Minuten ab. X-Scopemy-Delivery liefert eine stabile Kennung: ignorieren Sie bereits erhaltene Sendungen.

$corps = file_get_contents('php://input');
[$t, $sig] = sscanf($_SERVER['HTTP_X_SCOPEMY_SIGNATURE'] ?? '', 't=%d,v1=%s');
$attendu = hash_hmac('sha256', $t . '.' . $corps, $secret);
if (!$sig || !hash_equals($attendu, $sig) || abs(time() - $t) > 300) {
    http_response_code(400); exit;
}
$evenement = json_decode($corps, true);   // id, type, tenant, data.signalement
http_response_code(204);

Jede 2xx-Antwort gilt als Empfang. Andernfalls versuchen wir es bis zu 8 Mal, mit doppelter Wartezeit (1 Min., 2 Min., 4 Min. …, höchstens 6 Std.). Weiterleitungen werden nicht verfolgt.

Widget für die Gemeindewebsite

Fügen Sie diesen Code in eine Seite der Gemeindewebsite ein, um Karte und neueste Meldungen im Erscheinungsbild des Gemeinwesens zu zeigen. Die Website muss zuerst in der Verwaltung freigegeben werden (Seite API).

<script src="https://scopemy.city/embed.js" data-vue="carte-liste" data-hauteur="560" async></script>

Optionen: data-vue (carte-liste, carte oder liste), data-hauteur (in Pixeln oder auto), data-lang (fr, de, it, en). Das Widget setzt keine Cookies.