A webhookok áttekintése
A Sursa minden fontos változásról eseményt rögzít: egy kártyát közzétesznek, ellenőriznek vagy archiválnak, egy közleményt elolvasnak, egy kérdés megválaszolatlan marad. Az eseményeket kétféleképpen fogadhatod, és a kettőt együtt is használhatod:
| Webhookok | Eseménycsatorna | |
|---|---|---|
| Hogyan | A Sursa minden eseményt azonnal elküld a HTTPS-címedre. | Akkor olvasod a GET /v1/webhook-events végpontot, amikor szeretnéd. |
| Késleltetés | Másodpercek. | Amilyen gyakran lekérdezed. |
| Feltétel | Nyilvánosan elérhető HTTPS-fogadó. | Csak egy admin szerepkörű és webhooks:manage hatókörű API-kulcs. |
| Mire jó | Reagálás a változásokra: értesítés, szinkronizálás, munkafolyamat indítása. | Kötegelt feladatok, felzárkózás kiesés után, egyeztetés. |
Mindkettő ugyanazokat az eseményeket szállítja, ugyanazokkal az azonosítókkal. Minden esemény 30 napig megmarad a csatornában, függetlenül attól, hogy feliratkozott-e rá bármely webhook.
Az esemény
{
"id": "evt_0123456789abcdef0123456789abcdef",
"type": "card.updated",
"created_at": "2026-10-24T10:00:03Z",
"org_id": 1,
"api_version": "1.60.0",
"sequence": 1042,
"object": {"type": "card", "id": "3f2c9a7e-5b1d-4c8e-9f0a-1b2c3d4e5f60"},
"payload": "full",
"data": {
"card": {"id": "3f2c9a7e-5b1d-4c8e-9f0a-1b2c3d4e5f60", "title": "Refund policy", "collection": "support", "version": 4},
"actor_id": 7,
"previous_attributes": {"title": "Refunds"}
},
"test": false
}
| Mező | Jelentése |
|---|---|
id | Az esemény azonosítója: evt_ és 32 hexadecimális karakter. Minden kézbesítési kísérletben és a csatornában is ugyanaz. |
type | Mi történt, <object>.<past-tense verb> alakban: card.updated, access_request.resolved. |
created_at | Mikor történt a változás, UTC szerint. |
api_version | Az API-nak az a verziója, amelynek a sémáját a data követi. |
object | Annak az objektumnak a típusa és azonosítója, amelyről az esemény szól. |
data | A részletek. A szerkezete a típustól függ, és az eseménykatalógus írja le. |
data.previous_attributes | A *.updated eseményekben: a megváltozott mezők korábbi értékei. |
sequence, payload, test | Csak webhookkézbesítésekben: a hely a webhook sorrendjében, az adattartalom-mód, és hogy tesztesemény-e. |
A data csak azt tartalmazza, amit az objektum bármely olvasója az API-n keresztül láthatna. Soha nem tartalmaz
hozzáférési listákat, mások jogosultságait vagy rejtett mezőket. Az eseményekben szereplő indokok rövid semleges kódok,
például no_hits, restricted vagy index_failed.
Eseménytípusok
Az események a következő területeket fedik le:
| Terület | Példák |
|---|---|
| Kártyák | card.created, card.updated, card.published, card.archived, card.deleted, card.indexed, card.index_failed |
| Ellenőrzés | card.verified, card.unverified, verification.expired, verification.requested |
| Szerkezet | collection.created, folder.updated |
| Együttműködés | comment.created, draft.publish_requested, announcement.sent, announcement.read |
| Válaszok | question.unanswered, question.feedback_created, access_request.created |
| Személyek és hozzáférés | user.created, user.deactivated, group.member_added, api_key.expiring |
| Források és importálás | source.sync_completed, import.sync_completed, import.document_failed |
| Feladatok | job.completed, job.failed, export.ready |
| Webhookok | webhook.endpoint_disabled, webhook.ping |
A teljes lista az egyes események sémájával és példájával az API-referencia
eseménykatalógusában található. A GET /v1/webhooks/catalog a telepítéseden
elérhető típusokat adja vissza.
Idővel új eseménytípusok jelennek meg, a meglévő események pedig új mezőket kapnak. Az eseménytípusokat soha nem nevezik át és nem távolítják el. A fogadódnak ki kell hagynia az általa nem ismert típusokat és mezőket.
Ki mit kap meg
Egy webhook csak akkor kap meg egy eseményt, ha az esemény objektuma látható a webhook számára, ugyanúgy, mint egy
API-kulcs számára: a szerepköre, az adatprofilja és a gyűjteményei alapján. A support gyűjteményre korlátozott
webhook soha nem kap eseményt a finance gyűjtemény kártyáiról. A személyekről, kulcsokról, forrásokról,
importálásokról, feladatokról, exportálásokról, a számlázásról, az alkalmazásokról és magukról a webhookokról szóló
események csak az admin szerepkörű webhookokhoz jutnak el.
Ezen belül minden webhook maga választja ki az eseményeit:
- típus szerint, mintákkal:
card.*minden kártyaeseményhez,*minden eseményhez; - gyűjtemény és címke szerint, a kártyaeseményeknél.
A webhook adattartalom-módja full (az esemény a data mezővel, ez az alapértelmezett) vagy thin (az esemény
data nélkül: a fogadód a saját kulcsával olvassa ki az objektumot az API-n keresztül, és mindig az aktuális
állapotát látja).
A kézbesítés röviden
- HTTPS
POSTkérés, JSON-ként az eseménnyel, a webhook titkos kulcsával kétféle formátumban aláírva: Standard Webhooks (webhook-signature) és a korábbiX-KB-Signature. - Bármely
2xxválasz 10 másodpercen belül sikernek számít. - A sikertelen kézbesítést a Sursa közel három napig próbálja újra, egyre hosszabb szünetekkel. A
429vagy503válaszRetry-Afterfejlécét figyelembe veszi; a410válasz letiltja a webhookot; 10 egymást követő hiba szünetelteti, amíg újra nem indítják. - Az egy webhooknak szóló kézbesítések szigorúan sorrendben mennek ki. Egy lassú webhook nem késlelteti a többit.
- Ugyanaz az esemény többször is megérkezhet: az ismétlődéseket a
webhook-idalapján szűrd ki.
A Webhookok fogadása útmutató egy teljes fogadót mutat be, aláírás-ellenőrzéssel Node.js, Python és Go nyelven.
Webhookok kezelése
| Teendő | Végpont |
|---|---|
| Webhook létrehozása és a titkos kulcsának lekérése | POST /v1/webhooks |
| A cím, az események vagy az állapot módosítása | PATCH /v1/webhooks/{webhook_id} |
| Tesztesemény küldése | POST /v1/webhooks/{webhook_id}/test |
| Az aláíró titkos kulcs megújítása | POST /v1/webhooks/{webhook_id}/rotate-secret |
| Szüneteltetett webhook újraindítása | POST /v1/webhooks/{webhook_id}/resume |
| A kézbesítések és a válaszok megtekintése | GET /v1/webhooks/{webhook_id}/deliveries |
| Kézbesítés újraküldése | POST /v1/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver |
A webhookok kezeléséhez admin szerepkörű és webhooks:manage hatókörű kulcs kell, vagy egy adminisztrátor az adminisztrációs felületen.
Egy szervezetnek legfeljebb 20 webhookja lehet. A webhookok a szervezet csomagjának részei; nélkülük ezek a végpontok
403 választ adnak a webhooks.feature_disabled kóddal.