Panoramica sui webhook
Applicazione di esempio
Se vuoi creare un consumer personale per i webhook di Frame.io, puoi scaricare ed estendere la nostra app di esempio su GitHub.
Introduzione
I webhook consentono di sfruttare gli eventi che si verificano all’interno di Frame.io trasformandoli in notifiche che possono essere inviate a sistemi esterni per l’elaborazione, i callback API e l’automazione dei flussi di lavoro.
Configurazione
I webhook possono essere configurati nella sezione Webhooks del nostro sito per sviluppatori. Un webhook richiede:
- Nome: viene visualizzato solo nel sito per sviluppatori.
- URL: dove consegnare gli eventi.
- Team: a quale team verrà aggiunto il webhook.
- Eventi: l’evento o gli eventi che devono attivare il webhook.
Eventi supportati
Un singolo webhook può sottoscrivere qualsiasi numero dei seguenti eventi:
Progetti
Risorse
Controllo delle versioni delle risorse
Quando viene attivato l’evento asset.versioned, ricevi un payload con l’ID della risorsa di cui è stato eseguito il controllo delle versioni, non dello stack di versioni stesso. Quindi, se pensi di poter passare questo id a un’altra funzione pensando che sia l’ID dello stack di versioni, devi prima cercare e rintracciare quella particolare risorsa “padre”.
Aggiornamenti delle etichette delle risorse
L’evento asset.label.updated non si attiva quando l’etichetta di stato viene cambiata tramite una chiamata PUT all’endpoint /v2/assets/:id tramite l’API pubblica (BES-408). Si attiva, invece, quando l’etichetta di stato viene aggiornata utilizzando app e integrazioni native di Frame.io (web, iOS, Premiere, After Effects, FCPX ecc.).
Commenti
Link di revisione
Collaboratori
Membri del team
Payload
Frame.io fornisce un payload JSON all’endpoint del webhook specificato. Ecco un esempio di payload per un evento asset.created:
Tutti i payload contengono un campo type, che indica il tipo di evento in corso, oltre a un oggetto resource. L’oggetto resource specifica il tipo (type) e l’id della risorsa correlata a questo evento. Nell’esempio precedente di un evento asset.created, questo sarebbe l’id della risorsa appena creata. Inoltre, sono inclusi gli oggetti user e team. Questi fanno riferimento all’utente che ha attivato l’evento e al contesto del team per la risorsa. Oltre al contesto immediato di utente e team, non includiamo informazioni aggiuntive sulla risorsa sottoscritta. Se l’applicazione richiede informazioni o contesto aggiuntivi, consigliamo di utilizzare la nostra API HTTP per effettuare richieste di follow-up.
Nuovi tentativi
Se si verifica un errore (risposta con codice di stato diverso da 200) o un timeout durante la consegna del webhook al servizio, il payload viene ripetuto tre volte, per un totale di quattro tentativi di consegna.
Sicurezza
Per impostazione predefinita, tutti i webhook sono forniti con una chiave di firma. Non è configurabile. Questa chiave può essere utilizzata per verificare che la richiesta provenga da Frame.io.
Verifica delle firme dei webhook
Per proteggere un’integrazione dagli attacchi man-in-the-middle e replay, è essenziale verificare le firme dei webhook. La verifica garantisce che i payload dei webhook siano stati effettivamente inviati da Frame.io e che il contenuto del payload non sia stato modificato durante il trasporto.
Nella richiesta POST sono incluse le seguenti intestazioni:
Segui questi passaggi per verificare la firma:
- Estrai la firma dalle intestazioni HTTP
- Crea un messaggio da firmare combinando la versione, l’ora di consegna e il corpo della richiesta:
v0:timestamp:body - Calcola la firma HMAC SHA256 utilizzando il secret di firma. Nota: la firma fornita ha il prefisso
v0=. Al momento Frame.io ha solo questa versione per firmare le richieste. Assicurati che questo prefisso venga anteposto alla firma calcolata. - Confronta!