Webhooks de V4
¿Qué es un webhook?
Un webhook es una devolución de llamada HTTP de tipo push que Frame.io activa en cuanto ocurre algo relevante en la cuenta (por ejemplo, cuando termina de transcodificarse un archivo nuevo, se añade un comentario o se crea un proyecto).
En lugar de sondear la API, proporcione una URL HTTPS pública. Frame.io envía una carga útil JSON a esa URL en tiempo real para que pueda:
Para obtener más información sobre qué es un webhook y qué hace, consulte https://docs.webhook.site/.
Información general del punto final
Autenticación: Todos los puntos finales V4 requieren un token de acceso OAuth 2.0 obtenido mediante Adobe Developer Console. No se aceptan tokens de desarrollador heredados ni JWT.
Cambios y actualizaciones en Frame V4
Los webhooks creados en la versión heredada se transfieren a V4 con los siguientes cambios:
- Estructura de la carga útil: Se ha añadido el ID de Account a la carga útil
- Cambios en el punto final:
team_idya no se proporciona en la carga útil JSON, sino en el parámetro de ruta de la URL:https://api.frame.io/v4/accounts/:account_id/workspaces/:workspace_id/webhooks - Integración de API: Debido a los cambios en la estructura de la API, los puntos finales y los métodos de autenticación, es necesario actualizar cualquier código existente de webhooks entrantes que realice llamadas posteriores a la API de Frame.io para enriquecer recursos o buscarlos
- Tipos de evento: Los webhooks de Assets se han dividido en eventos independientes de Files y Folders. Cualquier webhook procedente de la versión heredada con eventos de Assets debe actualizarse para incluir los eventos de Files y Folders correspondientes
Estado del webhook después de la migración: Cuando la cuenta migra a Frame.io V4, los webhooks existentes de versiones anteriores se desactivan automáticamente. Esto garantiza que pueda modificar los puntos finales de webhook y la lógica de integración para que funcionen con las actualizaciones de V4 antes de volver a activarlos. Los webhooks que no se hayan actualizado para ser compatibles con V4 encontrarán errores si se activan sin las modificaciones adecuadas. Puede comprobar qué webhooks están inactivos examinando el campo is_active mediante la API o revisando la configuración de webhooks antes de volver a activarlos.
Suscripciones a eventos de webhook
Al crear y actualizar webhooks, identifique qué eventos le interesan. Elija tantos como quiera, o solo unos pocos. Tenga en cuenta que la experiencia mejora si se suscribe a menos eventos y divide los webhooks de forma lógica con distintos esquemas de nomenclatura y distintos puntos finales. De este modo, podrá modelar la lógica empresarial en el punto final receptor para reducir el filtrado y el enrutamiento en funciones compartidas.
Ámbito de eventos: todos los eventos tienen como ámbito el Workspace proporcionado durante la creación del webhook. Esto significa que se enviarán eventos para las acciones realizadas en todos los proyectos de ese Workspace.
Proyectos
Archivos
Carpetas
Comentarios
Metadatos
Colecciones
Campos personalizados
Usos compartidos
Carga útil de mensajes de webhook
Todas las cargas útiles de webhook contienen un campo type, que indica el evento que se ha producido, y un objeto resource. El objeto resource contiene el tipo y el ID del recurso de Frame.io relacionado con el evento.
Ejemplo de carga útil
En el ejemplo anterior de un evento file.created, resource.id indica el ID del File recién creado. Además, se incluyen los objetos workspace, project y user, que contienen los valores relacionados workspace.id, project.id y user.id. Estos valores se pueden usar para reducir las llamadas de API mediante el filtrado de eventos entrantes o la búsqueda local de datos almacenados en caché.
No incluimos información adicional sobre el recurso suscrito aparte del ID del recurso.
Si la aplicación requiere información o contexto adicional, recomendamos realizar una llamada de API para buscar más información sobre los recursos a los que se hace referencia.
Seguridad
De forma predeterminada, todos los webhooks tienen una clave de firma. Este secreto de firma no configurable se puede usar para verificar que la solicitud procede de Frame.io.
La carga útil de respuesta del webhook configurado incluye el secreto de firma específico de este webhook. Este secreto solo se proporciona en la respuesta inicial de creación del webhook, así que almacénelo en un lugar seguro, como el almacenamiento de secretos o las variables de entorno. Úselo más adelante para verificar que el webhook procede directamente de nuestros servidores y que no se ha interceptado ni manipulado de ningún modo.
Verificación de firmas de webhook
Para proteger una integración contra ataques de intermediario y de repetición, es esencial verificar la firma de la carga útil del webhook. La verificación garantiza que las cargas útiles de webhook las haya enviado realmente Frame.io y que el contenido no se haya modificado durante el transporte.
La solicitud POST incluye los siguientes encabezados HTTP:
La marca de tiempo es la hora del sistema de Frame.io cuando se envía el webhook saliente. Puede usarse para evitar ataques de reproducción. Recomendamos verificar que esta hora esté dentro de un intervalo de 5 minutos con respecto a la hora local. La firma es un hash HMAC SHA-256 que usa la clave de firma proporcionada al crear el Webhook por primera vez. Siga estos pasos para verificar la firma:
La firma proporcionada lleva el prefijo v0=. Actualmente, Frame.io solo tiene esta versión para firmar solicitudes. Asegúrese de añadir este prefijo al principio de la firma calculada.
Reintentos y registro
-
Cinco intentos en total (el inicial y 4 reintentos)
-
Espera exponencial que comienza en 15 s, con variación aleatoria
-
Un estado que no sea
2xxo un tiempo de espera superior a 5 segundos activan el reintento
Frame.io conserva un registro de errores con webhook_id, account_id, event_type, resource_id y user_id.
Tutorial de webhooks
Paso 1: Configuración del punto final receptor (se hace en primer lugar para saber cuál será la URL)
Aquí usamos webhook.site, que permite crear fácilmente un receptor de webhook de un solo uso para inspeccionar cargas útiles y enviar respuestas básicas sin ninguna lógica empresarial real. Al acceder por primera vez a https://webhook.site, se crea un punto final de webhook único que puede copiar de inmediato para usarlo.
Esta URL es exclusiva de la sesión.

Paso 2: Elección de los eventos a los que desea suscribirse
En este tutorial, mantendremos la configuración sencilla y haremos que este webhook se suscriba únicamente a eventos file.created. La carga útil JSON que usaremos para la creación del webhook será la siguiente.
Paso 3: Creación de un recurso de webhook con Postman
Use Postman para realizar una llamada de API y crear el recurso de webhook, proporcionando el punto final de webhook.site en la carga útil.
Paso 4: Prueba
Ahora que ha creado la suscripción de webhook y tiene configurado un punto final para recibir webhooks, es el momento de probarlo activando el primer webhook mediante la acción correspondiente.
Dado que el ejemplo se ha configurado para activarse con el activador file.created, cargaremos un activo nuevo en cualquier Project de la Account y el Workspace correspondientes en los que se haya configurado el webhook.

Recursos adicionales
Ngrok es una herramienta excelente para desarrolladores que trabajan con webhooks que deben exponerse en una URL de acceso público. Crea túneles seguros desde el entorno local hacia Internet, lo que permite exponer el servidor local para recibir cargas útiles de webhook en tiempo real.
Hookdeck es una plataforma diseñada para ayudar a los equipos a gestionar webhooks de forma fiable mediante una puerta de enlace de eventos robusta. Centraliza la gestión de webhooks, garantiza que no se pierda ningún evento y ofrece funciones como filtrado, cola y reintento de webhooks fallidos.
Webhook.site es una herramienta extraordinaria para crear prototipos y probar webhooks. Ofrece una plataforma sencilla y eficaz para capturar e inspeccionar solicitudes HTTP enviadas a URL únicas generadas automáticamente.
Val.town es una herramienta excelente para crear rápidamente prototipos de controladores de webhook, ya que simplifica el proceso de escribir, probar e implementar pequeñas funciones de JavaScript y Python directamente desde el explorador.