Artikel über: Schnittstellen
Dieser Artikel ist auch verfügbar in:

Webhooks

Schnell navigieren:



Webhooks verwenden


Um Webhooks mit Robaws zu verwenden, registriere deinen Webhook-Endpoint per POST auf /api/v2/webhook-endpoints. Für die vollständige Request-Definition siehe die API-Referenzdokumente. Bitte speichere das Secret, das wir dir beim Erstellen des Endpoints zurückgeben, denn du brauchst es, um unsere Signaturen zu verifizieren.


Nach ein paar Sekunden, sobald dein Subscription aktiv ist, solltest du HTTP-POST-Aufrufe von uns an die URL erhalten, die du angegeben hast.


Das ist ein Beispiel für so einen HTTP-POST:


POST https://your-host/your-webhook-endpoint

Content-Type: application/json

Robaws-Signature: t=1674742714,v1=signature


{
"id":"37de8552-0007-4269-a76c-06a9415c8b65",
"event":"client.updated",
"data": {
....
}
}


Signatur verifizieren


Es ist wichtig, dass du die Signatur prüfst, die wir im Header „Robaws-Signature“ mitsenden. Sonst kannst du nicht sicher sein, dass der HTTP-Call wirklich von Robaws kommt. Das ist besonders wichtig, weil wir im Event nicht nur die ID senden, sondern die vollständigen Daten.


Um unsere Signatur zu verifizieren, brauchst du das Secret, das wir dir beim Erstellen des Endpoints zurückgegeben haben.


Schritt 1: Timestamp und Signatur aus dem Header extrahieren


Splitte den Header mit dem Zeichen , als Trennzeichen, um eine Liste von Elementen zu erhalten. Splitte danach jedes Element mit dem Zeichen = als Trennzeichen, um ein Prefix-Value-Paar zu bekommen.

Der Wert zum Prefix t entspricht dem Timestamp, und v1 entspricht der Signatur. Alle anderen Elemente kannst du ignorieren.

Wenn du diese dann erneut auf "=" splittest, bekommst du die Werte, die du brauchst.


Schritt 2: Den String signed_payload vorbereiten


Der String signed_payload wird erstellt, indem du Folgendes aneinanderhängst:


Den Timestamp (als String)

Das Zeichen .

Das eigentliche JSON-Payload (also den Request-Body)


Schritt 3: Die erwartete Signatur bestimmen


Berechne ein HMAC mit der Hash-Funktion SHA256. Verwende das Signing-Secret des Endpoints als Key und den String signed_payload als Message. Konvertiere das Ergebnis in eine Hex-Repräsentation.


Schritt 4: Signaturen vergleichen


Vergleiche die Signatur aus dem Header mit der erwarteten Signatur. Wenn sie übereinstimmt, berechne die Differenz zwischen dem aktuellen Timestamp und dem empfangenen Timestamp und entscheide, ob die Differenz innerhalb deiner Toleranz liegt, um Replay-Attacken zu verhindern. Um Timing-Attacken zu vermeiden, verwende einen Constant-Time-Stringvergleich, um die erwartete Signatur mit jeder empfangenen Signatur zu vergleichen.


Ein paar Hinweise


  • Nur Admin-User können Endpoints registrieren. Aktuell gibt es keine UI, um Webhook-Endpoints zu registrieren. Das geht nur über die API.
  • Wir betrachten den Webhook als erfolgreich, wenn dein Endpoint eine 2XX-Response zurückgibt. Wir versuchen mehrmals erneut zuzustellen, solange dein Endpoint nicht erfolgreich antwortet. Unser Connection-Timeout liegt bei 2 Sekunden und der Read-Timeout ebenfalls bei 2 Sekunden. Das heißt: Wenn wir innerhalb von 2 Sekunden keine Antwort bekommen, versuchen wir die Anfrage weiter zuzustellen, bis wir eine Antwort erhalten. Wenn wir nie eine erfolgreiche Antwort erhalten, können wir deinen Webhook ohne Vorwarnung pausieren.
  • Webhooks kannst du einfach testen mit https://webhook.site


Unterstützte Event-Typen


Aktuell werden folgende Event-Typen unterstützt. Wenn du ein weiteres Event brauchst, melde dich bitte bei uns über support@robaws.com.


Kunden


client.created

client.updated


Ausgangsrechnungen


sales-invoice.created

sales-invoice.updated


Angebote


offer.created

offer.updated

offer.recalculated


Nachtragsangebote


settlement.created

settlement.updated

settlement.recalculated


Projekte


project.created

project.updated


Artikel


article.created

article.updated

article.stock-changed


Mitarbeiter


employee.created

employee.updated


Termine und Planung


planning-item.created

planning-item.updated


Arbeitsaufträge


work-order.created

work-order.updated


Betriebsmittel


material.created

material.updated


Anlagen-Tracking


installation.created

installation.updated


Dokumente & Bilder


document.created

document.updated


Kommentare und Chat


comment.created

comment.updated


Verkaufsaufträge


sales-order.created

sales-order.updated


Formularantworten


form-answer.created

form-answer.updated'''


Aktualisiert am: 05/01/2026

War dieser Beitrag hilfreich?

Teilen Sie Ihr Feedback mit

Stornieren

Danke!