Webhooks
Os webhooks permitem receber notificações em tempo real sobre eventos no teu workspace Ignite. Em vez de fazeres polling à API à procura de alterações, os webhooks enviam dados para o teu servidor à medida que os eventos ocorrem.
O que são webhooks?
Os webhooks são callbacks HTTP disparados quando ocorrem eventos específicos. Quando um evento acontece (por exemplo, um vídeo é criado ou atualizado), o Ignite envia um pedido HTTP POST para o teu endpoint configurado com informação sobre o evento.
Casos de utilização
- Sincronização com CMS — Manter o teu sistema de gestão de conteúdos externo alinhado com as alterações aos vídeos
- Automatização de fluxos de trabalho — Disparar fluxos automáticos quando vídeos são criados, atualizados ou eliminados
- Notificações — Enviar alertas à equipa quando o processamento do vídeo termina
- Análise — Acompanhar eventos do ciclo de vida dos vídeos no teu próprio sistema de analytics
Como funciona
Criar uma subscrição de webhook
Configura uma subscrição de webhook na interface de administração do Ignite. Precisas de indicar:
- Um URL de endpoint no teu servidor que aceite pedidos HTTP
POST - Os tipos de evento a que queres subscrever-te
Receber eventos
Quando ocorre um evento subscrito, o Ignite envia um pedido HTTP POST para o teu endpoint com:
- O tipo de evento no cabeçalho
X-Webhook-Event - Uma assinatura para verificação no cabeçalho
X-Webhook-Signature - Um ID de entrega único no cabeçalho
X-Webhook-Delivery-Id - O objeto de vídeo completo como corpo JSON
Processar e responder
O teu endpoint deve:
- Verificar a assinatura do webhook
- Processar os dados do evento
- Devolver um código de estado
2xxno prazo de 30 segundos
Os webhooks podem chegar fora de ordem ou ser entregues mais do que uma vez. O teu cliente é responsável por verificar o timestamp updatedAt e o id do vídeo para garantir ordenação e consistência dos dados. Compara sempre o timestamp recebido com os dados guardados antes de aplicar atualizações e usa o cabeçalho X-Webhook-Delivery-Id para detetar e ignorar entregas duplicadas.
Subscrição de webhook
Uma subscrição de webhook é uma configuração que define para onde os eventos são enviados e que eventos escutar.
Propriedades da subscrição
| Propriedade | Tipo | Descrição |
|---|---|---|
id | string | Identificador único da subscrição |
url | string | URL do endpoint para onde os eventos serão enviados (HTTP ou HTTPS) |
events | object | Que tipos de evento estão ativos |
events.videoCreated | boolean | Receber eventos quando vídeos são criados |
events.videoUpdated | boolean | Receber eventos quando vídeos são atualizados |
events.videoDeleted | boolean | Receber eventos quando vídeos são eliminados |
active | boolean | Se o webhook está atualmente ativo |
signingSecret | string | Chave secreta usada na verificação da assinatura (gerada automaticamente) |
workspace | string | O workspace a que este webhook pertence |
Exemplo de objeto de subscrição
{
"id": "507f1f77bcf86cd799439011",
"url": "https://your-server.com/webhook",
"events": {
"videoCreated": true,
"videoUpdated": true,
"videoDeleted": false
},
"active": true,
"signingSecret": "whsec_abc123...",
"workspace": "507f1f77bcf86cd799439000"
}Formato do pedido HTTP
Quando ocorre um evento, o Ignite envia um pedido POST para o teu endpoint:
Cabeçalhos
| Cabeçalho | Descrição |
|---|---|
Content-Type | application/json |
X-Webhook-Event | O tipo de evento (por exemplo, video.created) |
X-Webhook-Signature | Assinatura HMAC-SHA256 para verificação |
X-Webhook-Delivery-Id | Identificador único desta entrega (útil para idempotência) |
Corpo
O corpo do pedido contém o objeto de vídeo completo em JSON. Vê a documentação do objeto Video para a estrutura completa.
{
"id": "507f1f77bcf86cd799439011",
"title": "My Video",
"status": "COMPLETE",
"visibility": "public",
"duration": 120,
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-15T10:30:00.000Z",
// ... all other video properties
}Próximos passos
- Tipos de eventos — Conhece os tipos de evento disponíveis
- Verificação de assinatura — Protege o teu endpoint de webhook
- Exemplos de webhooks — Vê exemplos completos de implementação