Webhook V4
Cos’è un webhook?
Un webhook è un callback HTTP in stile push che Frame.io attiva non appena accade qualcosa di interessante nel tuo account, ad esempio quando un nuovo file completa la transcodifica, quando viene aggiunto un commento o quando viene creato un progetto.
Invece di interrogare l’API, fornisci un URL HTTPS pubblico; Frame.io invia un payload JSON a quell’URL in tempo reale così puoi:
Per ulteriori informazioni su cosa sia un webhook e cosa faccia, consulta https://docs.webhook.site/.
Panoramica degli endpoint
Autenticazione: tutti gli endpoint V4 richiedono un token di accesso OAuth 2.0 ottenuto tramite Adobe Developer Console. I token sviluppatore legacy e i JWT non vengono accettati.
Cambiamenti e aggiornamenti in Frame V4
I webhook creati nella versione legacy vengono trasferiti in V4 con i seguenti cambiamenti:
- Struttura del payload: l’ID account è stato aggiunto al payload
- Cambiamenti degli endpoint: il
team_idnon viene più fornito nel payload JSON, ma si trova invece nel parametro del percorso dell’URL:https://api.frame.io/v4/accounts/:account_id/workspaces/:workspace_id/webhooks - Integrazione API: a causa dei cambiamenti a struttura dell’API, endpoint e metodi di autenticazione, è necessario aggiornare qualsiasi codice esistente per i webhook in entrata che effettua chiamate successive all’API Frame.io per l’arricchimento e la ricerca delle risorse
- Tipi di eventi: i webhook delle risorse sono stati suddivisi in eventi di file e cartelle separati. Tutti i webhook provenienti dalla versione legacy con eventi di risorse devono essere aggiornati in modo da avere gli eventi di file e cartelle appropriati
Stato dei webhook dopo la migrazione: quando il tuo account viene migrato a Frame.io V4, i webhook esistenti delle versioni precedenti vengono automaticamente disabilitati. In questo modo puoi modificare gli endpoint dei webhook e la logica di integrazione in modo che funzionino con gli aggiornamenti di V4 prima di riattivarli. I webhook che non sono stati aggiornati in modo da essere compatibili con V4 avranno degli errori se vengono abilitati senza le modifiche appropriate. Puoi verificare quali webhook sono inattivi esaminando il campo is_active tramite l’API o rivedendo le impostazioni dei webhook prima di riattivarli.
Sottoscrizioni agli eventi webhook
Durante la creazione e l’aggiornamento dei webhook devi identificare gli eventi che ti interessano. Scegli quanti ne desideri. Tieni presente che l’esperienza è migliore se sottoscrivi meno eventi, suddividendo logicamente i tuoi webhook con diversi schemi di denominazione e diversi endpoint in modo da poter modellare la logica di business sul lato ricevente per eseguire meno operazioni di filtro e instradamento nelle funzioni condivise.
Ambito degli eventi: tutti gli eventi sono limitati all’area di lavoro fornita durante la creazione del webhook. Questo significa che gli eventi verranno inviati per le azioni intraprese in tutti i progetti in quella area di lavoro.
Progetti
File
Cartelle
Commenti
Metadati
Raccolte
Campi personalizzati
Condivisioni
Payload del messaggio webhook
Tutti i payload dei webhook contengono un campo type, che indica l’evento che si è verificato, nonché un oggetto resource. L’oggetto resource contiene il type e l’ID della risorsa Frame.io correlata all’evento.
Payload di esempio
Nell’esempio precedente di un evento file.created, il resource.id indica l’ID del file appena creato. Inoltre, sono inclusi gli oggetti workspace, project e user, che contengono i relativi workspace.id, project.id e user.id. Questi valori possono essere utilizzati per ridurre le chiamate API filtrando gli eventi in arrivo o cercando i dati memorizzati in cache localmente.
Non includiamo informazioni aggiuntive oltre all’ID della risorsa sottoscritta.
Se la tua applicazione richiede più informazioni o contesto, consigliamo di effettuare una chiamata API per cercare maggiori informazioni sulle risorse a cui si fa riferimento.
Sicurezza
Per impostazione predefinita, tutti i webhook hanno una chiave di firma. Questo secret di firma non configurabile può essere utilizzato per verificare che la richiesta provenga da Frame.io.
Il payload di risposta per il webhook che hai configurato include il secret di firma specifico per questo webhook. Questo secret viene fornito solo in questa risposta iniziale di creazione del webhook, quindi conservalo in un luogo sicuro nell’archivio dei secret o nelle variabili d’ambiente. Utilizzalo in seguito per verificare che il webhook provenga direttamente dai nostri server e non sia stato intercettato o manipolato in alcun modo.
Verifica delle firme dei webhook
Per proteggere un’integrazione da attacchi man-in-the-middle e replay, è essenziale verificare la firma del payload del 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 HTTP:
La marca temporale è l’ora dei sistemi Frame.io quando viene inviato il webhook in uscita. Può essere utilizzata per prevenire attacchi di tipo replay. Si consiglia di verificare che questo orario rientri nei 5 minuti dall’orario locale. La firma è un hash HMAC SHA256 che utilizza la chiave di firma fornita quando il webhook viene creato per la prima volta. Segui questi passaggi per verificare la firma:
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.
Nuovi tentativi e registrazione
-
Cinque tentativi totali (iniziale + 4 nuovi tentativi)
-
Back-off esponenziale che inizia a 15 s (+ jitter)
-
Uno stato non
2xxo un timeout >5 secondi attiva il nuovo tentativo
Frame.io gestisce un registro degli errori con: webhook_id, account_id, event_type, resource_id, user_id.
Esercitazione sui webhook
Passaggio 1: configura l’endpoint ricevente (da fare per primo in modo da conoscere quale sarà l’URL)
Qui stiamo usando webhook.site che consente di creare facilmente un ricevitore del webhook monouso da utilizzare per ispezionare i payload, inviando risposte di base senza alcuna logica di business. Quando vai per la prima volta in https://webhook.site, viene creato un endpoint di webhook unico che puoi copiare immediatamente per l’uso.
Questo URL è unico per la sessione.

Passaggio 2: scegli l’evento (o gli eventi) da sottoscrivere
Per questa esercitazione, punteremo alla semplicità e configureremo questo webhook in modo da sottoscrivere solo eventi file.created. Il payload JSON che useremo per la creazione del webhook sarà il seguente.
Passaggio 3: crea una risorsa webhook usando Postman
Usa Postman per effettuare una chiamata API al fine di creare la risorsa webhook, fornendo l’endpoint webhook.site nel payload.
Passaggio 4: test
Dopo aver creato la sottoscrizione del webhook e configurato un endpoint per ricevere i webhook, è il momento di testarlo attivando il primo webhook ed eseguendo l’azione appropriata che lo farebbe attivare.
Poiché il nostro esempio è stato configurato per attivarsi con il trigger file.created, procederemo caricando una nuova risorsa in qualsiasi progetto all’interno dell’account e dell’area di lavoro corrispondenti in cui è stato configurato il webhook.

Risorse aggiuntive
Ngrok è uno strumento fantastico per gli sviluppatori che lavorano con webhook che devono essere esposti su un URL accessibile pubblicamente. Permette di creare tunnel sicuri dal tuo ambiente locale a Internet e di esporre il tuo server locale in modo da ricevere i payload dei webhook in tempo reale.
Hookdeck è una piattaforma progettata per aiutare i team a gestire i webhook in modo affidabile grazie a un gateway degli eventi molto affidabile. Centralizza la gestione dei webhook, assicurando che nessun evento venga perso. Inoltre, offre funzionalità come filtri, accodamento e nuovi tentativi per i webhook non riusciti.
Webhook.site è uno strumento molto efficace per la prototipazione e il test dei webhook. È una piattaforma semplice, ma potente, che permette di acquisire e ispezionare le richieste HTTP inviate a URL unici generati automaticamente.
Val.town è uno strumento eccellente per la prototipazione rapida di gestori di webhook perché semplifica il processo di scrittura, test e distribuzione di piccole funzioni JavaScript e Python direttamente dal browser.