Entwickler
API und Webhooks
Verbinden Sie CloudSignLab mit Ihren Reporting- und Ticket-Werkzeugen. Die API liest die Register einer Organisation; Webhooks informieren Ihre Systeme, wenn etwas passiert. Beides gehört zum Modul Integrationen (ab Professional).
Authentifizierung
Inhaber und Administratoren erstellen API-Schlüssel unter Organisation → Integrationen. Senden Sie den Schlüssel im Authorization-Header. Schlüssel lesen nur, gehören zu einer Organisation und können jederzeit widerrufen werden.
curl https://cloudsignlab.com/api/v1/risks?page=1&perPage=50 \
-H "Authorization: Bearer csl_…"{
"data": [{ "id": "…", "number": 7, "title": "Ransomware on file server",
"likelihood": 3, "impact": 5, "status": "open", … }],
"total": 42, "page": 1, "perPage": 50
}Listen sind seitenweise (perPage bis 100). Jeder Schlüssel darf 300 Anfragen in 10 Minuten stellen; darüber antwortet die API mit 429. Wenn die Sicherheitsregeln der Organisation erlaubte Netzwerke festlegen, funktionieren Schlüssel nur von diesen Adressen (andere erhalten 403).
Endpunkte
| GET /api/v1/organization | Die Organisation des Schlüssels. |
| GET /api/v1/risks | Risikoregister: Eintrittswahrscheinlichkeit, Auswirkung, Restwerte, Behandlung, Status. |
| GET /api/v1/controls | Maßnahmen mit Framework-Referenzen und Status. |
| GET /api/v1/incidents | Vorfälle mit Schweregrad, Status und NIS2-Kennzeichen. |
| GET /api/v1/suppliers | Lieferantenregister ohne Kontaktdaten. |
| GET /api/v1/policies | Veröffentlichte Richtlinien mit Version. |
Webhooks
Ein Webhook erhält für jedes abonnierte Ereignis einen JSON-POST. Der Inhalt enthält Kennungen und einen Link, keine personenbezogenen Daten; Details lesen Sie über die API.
incident.createdrisk.createdpolicy.publishedfinding.createdtask.createdsupplier_check.answeredsupplier_check.decidedcheck.failed
{
"id": "5f0c…",
"event": "incident.created",
"occurredAt": "2026-10-01T08:15:00.000Z",
"organization": { "id": "…", "name": "Example GmbH" },
"target": { "id": "…", "url": "https://cloudsignlab.com/dashboard/…" }
}Jede Anfrage trägt X-CloudSignLab-Timestamp und X-CloudSignLab-Signature (HMAC-SHA256 von „timestamp.body“ mit dem Signaturgeheimnis). Lehnen Sie Anfragen ab, die älter als 5 Minuten sind oder eine falsche Signatur haben:
import { createHmac, timingSafeEqual } from "node:crypto";
const verify = (secret, timestamp, body, signature) => {
const expected = "sha256=" +
createHmac("sha256", secret).update(`${timestamp}.${body}`).digest("hex");
const fresh = Math.abs(Date.now() / 1000 - Number(timestamp)) < 300;
return fresh && expected.length === signature.length &&
timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
};Slack- und Microsoft-Teams-Kanäle erhalten stattdessen eine kurze Nachricht mit Link. Nach 20 fehlgeschlagenen Zustellungen in Folge stoppt eine Integration, bis sie wieder eingeschaltet wird.