Webhooks
Webhooki pozwalają dostawać powiadomienia w czasie rzeczywistym o zdarzeniach w przestrzeni roboczej Ignite. Zamiast odpytywać API o zmiany, webhooki wysyłają dane na Twój serwer, gdy coś się dzieje.
Czym są webhooki?
Webhooki to wywołania HTTP uruchamiane przy określonych zdarzeniach. Gdy coś się wydarzy (np. utworzenie lub aktualizacja wideo), Ignite wysyła żądanie HTTP POST na skonfigurowany endpoint z informacją o zdarzeniu.
Przypadki użycia
- Synchronizacja z CMS — utrzymuj zewnętrzny system zarządzania treścią zgodny ze zmianami wideo
- Automatyzacja procesów — uruchamiaj przepływy, gdy wideo jest tworzone, aktualizowane lub usuwane
- Powiadomienia — informuj zespół o zakończeniu przetwarzania wideo
- Analityka — śledź cykl życia wideo we własnym systemie analityki
Jak to działa
Utworzenie subskrypcji webhooka
Skonfiguruj subskrypcję w panelu administracyjnym Ignite. Potrzebujesz:
- adresu URL endpointu na serwerze, który przyjmie żądania HTTP POST
- typów zdarzeń, na które chcesz subskrybować
Odbieranie zdarzeń
Gdy wystąpi subskrybowane zdarzenie, Ignite wysyła żądanie HTTP POST na Twój endpoint z:
- typem zdarzenia w nagłówku
X-Webhook-Event - podpisem do weryfikacji w nagłówku
X-Webhook-Signature - unikalnym identyfikatorem dostawy w nagłówku
X-Webhook-Delivery-Id - pełnym obiektem wideo w treści JSON
Przetwarzanie i odpowiedź
Twój endpoint powinien:
- Zweryfikować podpis webhooka
- Przetworzyć dane zdarzenia
- Zwrócić kod statusu
2xxw ciągu 30 sekund
Webhooki mogą przychodzić w innej kolejności lub być dostarczane więcej niż raz. Po Twojej stronie musisz sprawdzać znacznik czasu updatedAt i identyfikator wideo id, żeby zachować właściwą kolejność i spójność danych. Zawsze porównuj przychodzący znacznik z tym, co masz zapisane, zanim zastosujesz aktualizacje, i używaj nagłówka X-Webhook-Delivery-Id, żeby wykrywać duplikaty i je pomijać.
Subskrypcja webhooka
Subskrypcja webhooka to konfiguracja określająca, dokąd wysyłać zdarzenia i które zdarzenia nasłuchiwać.
Właściwości subskrypcji
| Właściwość | Typ | Opis |
|---|---|---|
id | string | Unikalny identyfikator subskrypcji |
url | string | Adres URL endpointu, pod który trafią zdarzenia (HTTP lub HTTPS) |
events | object | Które typy zdarzeń są włączone |
events.videoCreated | boolean | Otrzymuj zdarzenia przy tworzeniu wideo |
events.videoUpdated | boolean | Otrzymuj zdarzenia przy aktualizacji wideo |
events.videoDeleted | boolean | Otrzymuj zdarzenia przy usuwaniu wideo |
active | boolean | Czy webhook jest aktywny |
signingSecret | string | Tajny klucz do weryfikacji podpisu (generowany automatycznie) |
workspace | string | Przestrzeń robocza, do której należy webhook |
Przykładowy obiekt subskrypcji
{
"id": "507f1f77bcf86cd799439011",
"url": "https://your-server.com/webhook",
"events": {
"videoCreated": true,
"videoUpdated": true,
"videoDeleted": false
},
"active": true,
"signingSecret": "whsec_abc123...",
"workspace": "507f1f77bcf86cd799439000"
}Format żądania HTTP
Gdy wystąpi zdarzenie, Ignite wysyła żądanie POST na Twój endpoint:
Nagłówki
| Nagłówek | Opis |
|---|---|
Content-Type | application/json |
X-Webhook-Event | Typ zdarzenia (np. video.created) |
X-Webhook-Signature | Podpis HMAC-SHA256 do weryfikacji |
X-Webhook-Delivery-Id | Unikalny identyfikator tej dostawy (przydatny przy idempotentności) |
Treść
Treść żądania to pełny obiekt wideo w JSON. Pełną strukturę opisuje dokumentacja obiektu wideo.
{
"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
}Co dalej
- Typy zdarzeń — dostępne typy zdarzeń
- Weryfikacja podpisu — zabezpieczanie endpointu webhooka
- Przykłady webhooków — pełne przykłady implementacji