V4 Webhooks
Was ist ein Webhook?
Ein Webhook ist ein im Push-Prinzip funktionierender HTTP-Rückruf, der von Frame.io ausgelöst wird, sobald in Ihrem Konto etwas Interessantes geschieht, etwa wenn die Transkodierung einer neuen Datei abgeschlossen, ein Kommentar hinzugefügt oder ein Projekt erstellt wird.
Anstatt die API abzufragen, stellen Sie eine öffentliche HTTPS-URL bereit; von Frame.io wird in Echtzeit eine JSON-Payload an diese URL gesendet, damit Sie Folgendes durchführen können:
Weitere Informationen darüber, was ein Webhook ist und was damit gemacht wird, finden Sie unter https://docs.webhook.site/ (in englischer Sprache).
Endpunkt-Übersicht
Authentifizierung: Für alle V4-Endpunkte ist ein OAuth-2.0-Zugriffstoken erforderlich, der über die Adobe Developer Console bezogen wurde.Ältere Entwicklungstoken und JWTs werden nicht akzeptiert.
Änderungen und Aktualisierungen in Frame V4
In der Vorgängerversion erstellte Webhooks werden mit folgenden Änderungen in V4 übertragen:
- Payload-Struktur: Konto-ID zur Payload hinzugefügt
- Endpunkt-Änderungen: Die
team_idwird nicht mehr in der JSON-Payload bereitgestellt, sondern stattdessen im Pfadparameter der URL:https://api.frame.io/v4/accounts/:account_id/workspaces/:workspace_id/webhooks. - API-Integration: Aufgrund von Änderungen in der API-Struktur, den Endpunkten und den Authentifizierungsmethoden müssen alle vorhandenen Codes für eingehende Webhooks aktualisiert werden, mit denen nachfolgende Aufrufe an die Frame.io-API durchgeführt werden, um nach Ressourcen zu suchen und diese anzureichern.
- Ereignistypen: Asset-Webhooks wurden in separate Datei- und Ordner-Ereignisse aufgeteilt. Alle Webhooks aus der Vorgängerversion mit Asset-Ereignissen müssen aktualisiert werden, damit sie die entsprechenden Datei- und Ordner-Ereignisse enthalten.
Webhook-Status nach Migration: Wenn Ihr Konto nach Frame.io V4 migriert wird, werden vorhandene Webhooks aus vorherigen Versionen automatisch deaktiviert.Dadurch wird gewährleistet, dass Sie Ihre Webhook-Endpunkte und Integrationslogik ändern können, damit diese mit den Aktualisierungen in V4 funktionieren, bevor Sie sie wieder aktivieren.Webhooks, die nicht für die Kompatibilität mit V4 aktualisiert wurden, werden auf Fehler stoßen, wenn sie ohne ordnungsgemäße Änderungen aktiviert werden.Sie können überprüfen, welche Webhooks inaktiv sind, indem Sie das Feld is_active über die API untersuchen oder Ihre Webhook-Einstellungen überprüfen, bevor Sie sie wieder einschalten.
Abonnements für Webhook-Ereignisse
Identifizieren Sie beim Erstellen und Aktualisieren von Webhooks, an welchen Ereignissen Sie interessiert sind.Wählen Sie so wenige oder so viele aus, wie Sie möchten. Beachten Sie, dass das Erlebnis besser ist, wenn Sie weniger Ereignisse abonnieren und Ihre Webhooks mit verschiedenen Benennungseinstellungen logisch auf verschiedene Endpunkte aufteilen. Dadurch können Sie Ihre Geschäftslogik auf der empfangenden Seite modellieren, sodass in gemeinsam genutzten Funktionen weniger gefiltert und weitergeleitet wird.
Gültigkeitsbereich des Ereignisses: Alle Ereignisse sind auf den Arbeitsbereich beschränkt, der während der Erstellung des Webhooks bereitgestellt wurde.Das bedeutet, Ereignisse werden für Aktionen gesendet, die in allen Projekten in diesem Arbeitsbereich durchgeführt werden.
Projekte
Dateien
Ordner
Kommentare
Metadaten
Sammlungen
Selbstdefinierte Felder
Freigaben
Payload von Webhook-Nachrichten
Alle Webhook-Payloads enthalten das Feld type, in dem das aufgetretene Ereignis angegeben wird, und das Objekt resource.Das Objekt resource enthält den type und die ID der Frame.io-Ressource, die mit dem Ereignis verknüpft ist.
Beispiel-Payload
Im obigen Beispiel eines file.created-Ereignisses wird von der resource.id die ID der neu erstellten Datei angegeben.Zusätzlich sind die Objekte workspace, project und user enthalten, die die zugehörige workspace.id, project.id und user.id enthalten.Mit diesen Werten können API-Aufrufe reduziert werden, indem eingehende Ereignisse gefiltert oder lokal zwischengespeicherte Daten abgerufen werden.
Wir fügen der abonnierten Ressource keine zusätzlichen Informationen hinzu, die über die Ressourcen-ID hinausgehen.
Falls Sie für Ihre Anwendung zusätzliche Informationen oder Kontext benötigen, empfehlen wir einen API-Aufruf, um weitere Informationen über die referenzierten Ressourcen abzurufen.
Sicherheit
Standardmäßig haben alle Webhooks einen Signaturschlüssel.Mit diesem nicht konfigurierbaren Signiergeheimnis kann verifiziert werden, dass die Anfrage von Frame.io stammt.
Die Antwort-Payload für den konfigurierten Webhook enthält das Signiergeheimnis, das für diesen Webhook spezifisch ist.Dieses Geheimnis wird nur in dieser ersten Erstellungsantwort des Webhooks bereitgestellt. Speichern Sie es daher sicher in Ihrem Geheimnisspeicher oder in Umgebungsvariablen.Damit können Sie später verifizieren, dass der Webhook direkt von unseren Servern stammt und nicht abgefangen oder manipuliert wurde.
Verifizieren von Webhook-Signaturen
Zum Schutz einer Integration vor Man-in-the-Middle- und Replay-Angriffen ist es wichtig, die Signatur der Webhook-Payload zu verifizieren.Durch die Verifizierung wird gewährleistet, dass Webhook-Payloads tatsächlich von Frame.io gesendet wurden und der Inhalt der Payload nicht während des Transports verändert wurde.
In der POST-Anfrage sind die folgenden HTTP-Header enthalten:
Mit dem Zeitstempel wird die Systemzeit von Frame.io-Systemen wiedergegeben und angezeigt, wann der ausgehende Webhook gesendet wurde.Damit können Replay-Angriffe verhindert werden.Wir empfehlen, zu verifizieren, dass diese Zeit innerhalb von 5 Minuten der lokalen Zeit liegt.Die Signatur ist ein HMAC-SHA-256-Hash, in dem der Signaturschlüssel verwendet wird, der bei der Ersterstellung des Webhooks bereitgestellt wird.Führen Sie diese Schritten aus, um die Signatur zu verifizieren:
Der bereitgestellten Signatur ist das Präfix v0= vorangestellt.Derzeit gibt es in Frame.io nur diese eine Version für das Signieren von Anfragen.Achten Sie darauf, dass dieses Präfix der berechneten Signatur vorangestellt ist.
Wiederholungen und Protokollierung
-
Fünf Versuche insgesamt (erster plus 4 Wiederholungen)
-
Exponentieller Rückzug beginnt bei 15 Sek. (plus Jitter)
-
Bei einem Nicht-
2xx-Status oder einer Zeitüberschreitung von mehr als 5 Sekunden wird die Wiederholung ausgelöst.
In Frame.io wird ein Fehlerprotokoll mit folgenden Parametern geführt: webhook_id, account_id, event_type, resource_id, user_id.
Webhook-Tutorial
Schritt 1: Empfangsende einrichten (zuerst durchführen, damit Sie wissen, wie Ihre URL lauten wird)
Hier verwenden wir webhook.site, mit dem Sie einfach einmalige Webhook-Empfangende erstellen können, die ohne jegliche Geschäftslogik zum Inspizieren von Payloads und zum Senden grundlegender Antworten verwendet werden können.Wenn Sie zum ersten Mal zu https://webhook.site navigieren, wird ein eindeutiger Webhook-Endpunkt für Sie erstellt, den Sie sofort kopieren und verwenden können.
Diese URL ist für Ihre Sitzung eindeutig.

Schritt 2: Ereignisse wählen, die Sie abonnieren möchten
In dieser Anleitung halten wir es einfach und richten diesen Webhook so ein, dass nur file.created-Ereignisse abonniert werden.Die JSON-Payload, die wir für die Webhook-Erstellung verwenden, lautet wie folgt.
Schritt 3: Webhook-Ressource mit Postman erstellen
Führen Sie mit Postman einen API-Aufruf durch und erstellen Sie die Webhook-Ressource. Geben Sie dabei in der Payload den Endpunkt webhook.site an.
Schritt 4: Testen
Jetzt, da Sie das Webhook-Abonnement erstellt und einen Endpunkt eingerichtet haben, um Webhooks zu empfangen, sollten Sie all dies testen. Lösen Sie den ersten Webhook aus, indem Sie die entsprechende Aktion durchführen, durch die er ausgelöst würde.
Da unser Beispiel so eingerichtet ist, dass es bei file.created ausgelöst wird, werden wir ein neues Asset in ein beliebiges Projekt innerhalb desjenigen Kontos und Arbeitsbereichs hochladen, in dem der Webhook eingerichtet wurde.

Zusätzliche Ressourcen
Ngrok ist ein fantastisches Tool für Entwickelnde, die mit Webhooks arbeiten und diese über eine öffentlich zugängliche URL freilegen müssen.Damit werden sichere Tunnel von Ihrer lokalen Umgebung ins Internet erstellt. Außerdem wird Ihnen ermöglicht, Ihren lokalen Server freizulegen, um Webhook-Payloads in Echtzeit zu empfangen.
Hookdeck ist eine Plattform, die Teams anhand eines robusten Ereignis-Gateways dabei hilft, Webhooks zuverlässig zu verwalten.Die Verarbeitung von Webhooks wird zentralisiert. Es wird darauf geachtet, dass keine Ereignisse verpasst werden, und es gibt Funktionen wie Filterung, Warteschlangen und Wiederholung fehlgeschlagener Webhooks.
Webhook.site ist ein herausragendes Tool für das Prototyping und Testen von Webhooks. Es bietet eine einfache, aber mächtige Plattform, um HTTP-Anfragen zu erfassen und zu untersuchen, die an eindeutige, automatisch generierte URLs gesendet werden.
Val.town ist ein exzellentes Tool für das schnelle Prototyping von Webhook-Handlern, da der Prozess des Schreibens, Testens und Bereitstellens kleiner JavaScript- und Python-Funktionen direkt über den Browser vereinfacht wird.