Zum Hauptinhalt springen

Webhooks API

Webhooks konfigurieren, um Benachrichtigungen über Ereignisse zu erhalten.

Webhooks auflisten

GET /v1/webhooks

Antwort:

{
"success": true,
"webhooks": [
{
"id": "wh_abc123",
"url": "https://your-server.com/webhook",
"events": ["index.complete", "security.alert"],
"active": true,
"createdAt": "2024-01-10T08:00:00Z"
}
]
}

Webhook erstellen

POST /v1/webhooks

Anfragekörper:

{
"url": "https://your-server.com/webhook",
"events": ["index.complete", "security.alert"],
"secret": "ihr-webhook-geheimnis"
}

Antwort:

{
"success": true,
"webhook": {
"id": "wh_xyz789",
"url": "https://your-server.com/webhook",
"events": ["index.complete", "security.alert"],
"active": true
}
}

Webhook löschen

DELETE /v1/webhooks/:id

Verfügbare Ereignisse

EreignisBeschreibung
index.startedIndexierung hat begonnen
index.completeIndexierung erfolgreich abgeschlossen
index.failedIndexierung fehlgeschlagen
security.alertNeue Sicherheitslücke gefunden
analysis.completeAnalyse abgeschlossen

Webhook-Payload

Alle Webhooks erhalten einen JSON-Payload:

{
"event": "index.complete",
"timestamp": "2024-01-15T10:30:00Z",
"project": {
"id": "proj_abc123",
"name": "my-app"
},
"data": {
"filesCount": 234,
"symbolsCount": 1847,
"duration": 45
}
}

Signaturverifizierung

Webhooks enthalten einen Signatur-Header zur Verifizierung:

X-ArchiCore-Signature: sha256=abc123...

Verifizierung (Node.js):

const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');

return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(`sha256=${expected}`)
);
}

Wiederholungsrichtlinie

Fehlgeschlagene Webhook-Zustellungen werden wiederholt:

  • Versuch 1: Sofort
  • Versuch 2: Nach 1 Minute
  • Versuch 3: Nach 5 Minuten
  • Versuch 4: Nach 30 Minuten
  • Versuch 5: Nach 2 Stunden

Nach 5 fehlgeschlagenen Versuchen wird der Webhook deaktiviert.