API-Referenz
Die Endpunkte, die Cursor-Paginierung, die Wertformate und die Fehlercodes.
Basis-URL und Authentifizierung
Alle Endpunkte liegen unter https://sdai.ch/api/v1 und erwarten den Header Authorization: Bearer <Schlüssel>. Die vollständige Spezifikation ist unter openapi.json veröffentlicht.
Die Endpunkte
| Methode und Pfad | Was er liefert |
|---|---|
GET /me | die Organisation, den Plan und den Namen des aufrufenden Schlüssels |
GET /batiments | Ihre Gebäude, paginiert |
GET /batiments/{id} | ein Gebäude |
GET /batiments/{id}/zones | die Meldergruppen eines Gebäudes |
GET /batiments/{id}/terminaux | die gesteuerten Endgeräte eines Gebäudes |
GET /batiments/{id}/equipements | die Einrichtungen eines Gebäudes, mit optionalen Filtern type und etat |
GET /matrices | Ihre Matrizen, mit optionalem Filter batiment_id |
GET /matrices/{id} | eine Matrix mit ihrem vollständigen Raster |
Die Filter type und etat der Einrichtungen vergleichen den Wert exakt, auf freien Zeichenketten: ein unbekannter Wert ergibt eine leere Liste, ein leerer Wert einen 400. Eine batiment_id, die nicht Ihnen gehört, ergibt einen 404, nie eine leere Liste.
Paginierung
Listen werden über einen Cursor durchlaufen, nie über eine Seitennummer:
?limit=zwischen 1 und 100, standardmässig 50. Ein Wert ausserhalb der Grenzen ergibt einen 400, nie einen stillen Rückfall auf den Standardwert.?cursor=erhält den Wertnext_cursorder vorherigen Antwort, unverändert.next_cursoristnullauf der letzten Seite.
# erste Seite
curl -H "Authorization: Bearer $SCHLUESSEL" "https://sdai.ch/api/v1/batiments?limit=50"
# nächste Seite
curl -H "Authorization: Bearer $SCHLUESSEL" "https://sdai.ch/api/v1/batiments?limit=50&cursor=cmr8kd..."
Der Cursor ist undurchsichtig: versuchen Sie nicht, ihn zu bauen oder zu deuten. Er schützt Sie vor einem klassischen Fehler der Seitennummerierung, bei dem eine gleichzeitige Erstellung die Folgeseiten verschiebt und Sie eine Zeile überspringen, ohne dass etwas darauf hinweist.
Wertformate
- Englische Hülle (
data,next_cursor), französische Fachfelder in Kleinbuchstaben mit Unterstrichen:batiment_id,type_detection,is_example. - Daten im Format ISO 8601 UTC, zum Beispiel
2026-05-12T09:00:00.000Z. Ein fehlendes Datum istnull, nie eine leere Zeichenkette. - Geschlossene Wertelisten: nur
categorie_test_integral(CAT_I,CAT_II,CAT_III) und dieactioneiner Matrixzelle (FERME,OUVERT,ACTIVE,ARRETE,DEBLOQUE,RAPPEL) haben einen garantierten Wertebereich. - Freie Felder:
statut,type,etat,categorie,type_detection,etat_securite,type_commandeundcategorie_asservissementwerden in der Anwendung erfasst. Behandeln Sie jeden unerwarteten Wert als normal, statt ihn abzulehnen.
Zwei Punkte zu den Gebäuden
nombre_detecteurs,nombre_zonesundnombre_bouclessind deklarative Felder des Gebäudedatenblatts, von Hand erfasst. Es sind keine berechneten Zähler. Für eine echte Zählung paginieren Sie/zonesoder/equipements.is_exampleisttruebeim Demo-Gebäude, das bei der Registrierung erstellt wird. Es ist in den Listen enthalten: filtern Sie es selbst heraus, wenn Sie es nicht möchten.
Das Raster einer Matrix
GET /matrices/{id} liefert die Matrix mit ihren expliziten Achsen:
{ "data": {
"id": "...", "batiment_id": "...", "nom": "Matrice principale", "version": 3,
"statut": "APPROUVEE",
"zones": [ { "id": "...", "code": "Z01", "type_detection": "FUMEE", "ordre": 1 } ],
"terminaux": [ { "id": "...", "code": "T01", "etat_securite": "FERME", "ordre": 1 } ],
"asservissements": [
{ "zone_id": "...", "terminal_id": "...", "type_commande": "AUTO_SIMPLE",
"action": "FERME", "delai_secondes": 30, "critere": null, "remarque": null }
],
"truncated": false
} }
Daraus folgen drei Dinge:
- Die Achsen stammen vom Gebäude, nicht von den Zellen. Eine Meldergruppe, die kein Endgerät steuert, erscheint trotzdem in
zones. Das ist gewollt: eine leere Zeile der Matrix ist eine Information, kein Fehlen. - Das Raster ist dünn besetzt. Nur gesteuerte Schnittpunkte erscheinen in
asservissements. Bauen Sie das Raster auf, indem Siezonesundterminauxkreuzen und dann die Zellen einsetzen. - Die Obergrenze wird angekündigt. Höchstens 5000 Zellen werden geliefert. Darüber hinaus wird
truncatedzutrue. Es gibt nie eine stille Kürzung.
Die hier gelieferten Achsen sind bewusst auf das reduziert, was zur Beschriftung einer Zeile oder Spalte nötig ist. Für das vollständige Datenblatt einer Meldergruppe oder eines Endgeräts rufen Sie /batiments/{id}/zones oder /batiments/{id}/terminaux auf.
Fehler
Alle Fehler haben dieselbe Form:
{ "error": { "code": "not_found", "message": "Resource not found.", "request_id": "req_..." } }
Behandeln Sie den code programmatisch: bad_request, unauthorized, plan_required, not_found, rate_limited, server_error. Die request_id wird auch im Header X-Request-Id zurückgegeben: nennen Sie sie, wenn Sie uns an support@sdai.ch schreiben.
Zwei Antworten sind bewusst nicht unterscheidbar:
- Der 401 sagt nicht, ob der Schlüssel unbekannt, widerrufen oder abgelaufen ist.
- Der 404 sagt nicht, ob die Ressource nicht existiert oder ob sie einer anderen Organisation gehört.
In beiden Fällen würde eine Unterscheidung einem Dritten verraten, was er nicht wissen darf.
Grenzen der Version 1
- Schreibgeschützt.
- Mängel, Berichte und Kontrollen sind noch nicht verfügbar.
- Die Organisation wird immer aus dem Schlüssel abgeleitet: kein Endpunkt akzeptiert eine Organisations-Kennung.
Ein Bedarf, der nicht in diesen Rahmen passt? Schreiben Sie uns an support@sdai.ch, das lenkt die weitere Entwicklung.
Informative Dokumentation von sdai.ch. Screenshots und Bezeichnungen können je nach Plan und Berechtigungen variieren. Normativ massgebend sind allein die offiziellen Texte (VKF, SES, SIA).
Verwandte Anleitungen
Mit der öffentlichen API starten
Einen Schlüssel erstellen, den ersten Aufruf machen und die Antworten der sdai.ch-API verstehen.
Steuermatrizen verstehen
Was eine Steuermatrix ist, warum Sie sie in sdai.ch erstellen und was Ihnen die Konflikterkennung bringt.
Ihre Organisation verwalten
Ihr Teambereich in sdai.ch: Mitglieder, Rollen, Plan und Abrechnung am selben Ort.
Glossarbegriffe
Brandfallsteuerungs-Matrix (Steuermatrix)
Die Kreuztabelle, die Zone für Zone festlegt, welche Befehle jede angesteuerte Einrichtung bei einer Detektion erhält. Die Referenz des integralen Tests.
Brandfallsteuerung (BFS)
Automatische oder manuelle Ansteuerung einer Gebäudeeinrichtung im Brandfall: Brandschutztüren, Entrauchung, Aufzüge, Lüftung.
Melderzone
Die Gliederung der Anlage in Zonen entlang der Brandabschnitte: der Schlüssel zu schneller Lokalisierung und kohärenten Brandfallsteuerungen.