CloudSignLab

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/organizationDie Organisation des Schlüssels.
GET /api/v1/risksRisikoregister: Eintrittswahrscheinlichkeit, Auswirkung, Restwerte, Behandlung, Status.
GET /api/v1/controlsMaßnahmen mit Framework-Referenzen und Status.
GET /api/v1/incidentsVorfälle mit Schweregrad, Status und NIS2-Kennzeichen.
GET /api/v1/suppliersLieferantenregister ohne Kontaktdaten.
GET /api/v1/policiesVerö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.created
  • risk.created
  • policy.published
  • finding.created
  • task.created
  • supplier_check.answered
  • supplier_check.decided
  • check.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.