Salt la conținut
Sursa Developers

Prezentare generală a webhookurilor

Sursa înregistrează un eveniment pentru fiecare modificare importantă: o fișă este publicată, verificată sau arhivată, un anunț este citit, o întrebare rămâne fără răspuns. Puteți primi evenimentele în două moduri și le puteți folosi pe amândouă împreună:

WebhookuriFluxul de evenimente
CumSursa trimite fiecare eveniment la adresa HTTPS indicată, în momentul în care se produce.Citiți GET /v1/webhook-events când doriți.
ÎntârziereSecunde.Cât de des interogați.
NecesităUn receptor HTTPS public.Doar o cheie API cu rolul admin și domeniul webhooks:manage.
Potrivit pentruReacția la modificări: notificări, sincronizare, pornirea unui workflow.Joburi pe loturi, recuperarea după o întrerupere, reconciliere.

Ambele transportă aceleași evenimente, cu aceiași identificatori. Fiecare eveniment se păstrează în flux 30 de zile, indiferent dacă vreun webhook era abonat la el sau nu.

Evenimentul

{
  "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
}
CâmpSemnificație
idIdentificatorul evenimentului, evt_ urmat de 32 de caractere hexazecimale. Același la fiecare încercare de livrare și în flux.
typeCe s-a întâmplat, sub forma <object>.<past-tense verb>: card.updated, access_request.resolved.
created_atMomentul modificării, în UTC.
api_versionVersiunea API-ului a cărei schemă o urmează data.
objectTipul și identificatorul obiectului la care se referă evenimentul.
dataDetaliile. Forma lor depinde de tip și este descrisă în catalogul evenimentelor.
data.previous_attributesÎn evenimentele *.updated: valorile anterioare ale câmpurilor care s-au schimbat.
sequence, payload, testDoar în livrările webhookurilor: poziția în ordinea livrărilor webhookului, modul conținutului și dacă este un eveniment de test.

data conține doar ce ar putea vedea prin API orice cititor al obiectului. Nu conține niciodată liste de acces, permisiunile altor persoane sau câmpuri ascunse. Motivele din evenimente sunt coduri neutre scurte, cum ar fi no_hits, restricted sau index_failed.

Tipuri de evenimente

Evenimentele acoperă aceste domenii:

DomeniuExemple
Fișecard.created, card.updated, card.published, card.archived, card.deleted, card.indexed, card.index_failed
Verificarecard.verified, card.unverified, verification.expired, verification.requested
Structurăcollection.created, folder.updated
Colaborarecomment.created, draft.publish_requested, announcement.sent, announcement.read
Răspunsuriquestion.unanswered, question.feedback_created, access_request.created
Persoane și accesuser.created, user.deactivated, group.member_added, api_key.expiring
Surse și importsource.sync_completed, import.sync_completed, import.document_failed
Joburijob.completed, job.failed, export.ready
Webhookuriwebhook.endpoint_disabled, webhook.ping

Lista completă, cu schema și un exemplu pentru fiecare eveniment, se află în catalogul evenimentelor din referința API. GET /v1/webhooks/catalog returnează tipurile disponibile în instalarea dumneavoastră.

În timp se adaugă tipuri noi de evenimente, iar evenimentele existente primesc câmpuri noi. Tipurile de evenimente nu sunt niciodată redenumite sau eliminate. Receptorul trebuie să ignore tipurile și câmpurile pe care nu le cunoaște.

Cine ce primește

Un webhook primește un eveniment doar dacă obiectul evenimentului îi este vizibil, la fel ca unei chei API: după rolul, profilul de date și colecțiile lui. Un webhook limitat la colecția support nu primește niciodată evenimente despre fișele din finance. Evenimentele despre persoane, chei, surse, importuri, joburi, exporturi, facturare, aplicații și despre webhookurile înseși ajung doar la webhookurile cu rolul admin.

În aceste limite, fiecare webhook își alege evenimentele:

  • după tip, cu măști: card.* pentru fiecare eveniment al fișelor, * pentru fiecare eveniment;
  • după colecție și după etichetă, pentru evenimentele fișelor.

Modul conținutului unui webhook este full (evenimentul cu data, valoarea implicită) sau thin (evenimentul fără data: receptorul citește obiectul prin API cu propria cheie și vede întotdeauna starea lui curentă).

Livrarea pe scurt

  • Un POST HTTPS cu evenimentul în format JSON, semnat cu secretul webhookului în două formate: Standard Webhooks (webhook-signature) și formatul anterior X-KB-Signature.
  • Orice răspuns 2xx în cel mult 10 secunde este un succes.
  • O livrare eșuată este reîncercată aproape trei zile, cu pauze din ce în ce mai lungi. Retry-After dintr-un răspuns 429 sau 503 este respectat; 410 dezactivează webhookul; 10 eșecuri consecutive îl pun în pauză până când este reluat.
  • Livrările către un webhook sunt trimise strict în ordine. Un webhook lent nu întârzie alte webhookuri.
  • Același eveniment poate sosi de mai multe ori: eliminați dublurile după webhook-id.

Primiți webhookuri prezintă pas cu pas un receptor complet, cu verificarea semnăturilor în Node.js, Python și Go.

Gestionarea webhookurilor

SarcinăEndpoint
Creați un webhook și primiți secretul luiPOST /v1/webhooks
Modificați adresa, evenimentele sau stareaPATCH /v1/webhooks/{webhook_id}
Trimiteți un eveniment de testPOST /v1/webhooks/{webhook_id}/test
Reînnoiți secretulPOST /v1/webhooks/{webhook_id}/rotate-secret
Reluați un webhook pus în pauzăPOST /v1/webhooks/{webhook_id}/resume
Vedeți livrările și răspunsurileGET /v1/webhooks/{webhook_id}/deliveries
Trimiteți din nou o livrarePOST /v1/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver

Gestionarea webhookurilor necesită o cheie cu rolul admin și domeniul webhooks:manage sau un administrator în interfața de administrare. O organizație poate avea cel mult 20 de webhookuri. Webhookurile fac parte din planul organizației; fără ele, aceste endpointuri răspund 403 cu codul webhooks.feature_disabled.