Към съдържанието
Sursa Developers

Общ преглед на уебхуковете

Sursa записва събитие за всяка важна промяна: карта е публикувана, проверена или архивирана, съобщение е прочетено, въпрос е останал без отговор. Може да получавате събитията по два начина и да използвате двата заедно:

УебхуковеЛента със събития
КакSursa изпраща всяко събитие на вашия HTTPS адрес в момента, в който се случи.Четете GET /v1/webhook-events, когато искате.
ЗакъснениеСекунди.Толкова често, колкото проверявате.
ИзискваПубличен HTTPS получател.Само API ключ с ролята admin и обхвата webhooks:manage.
Подходящ заРеакция на промени: известяване, синхронизация, стартиране на работен процес.Пакетни задания, наваксване след прекъсване, сверка.

И двата начина носят едни и същи събития със същите ID. Всяко събитие се пази в лентата 30 дни, независимо дали някой уебхук е бил абониран за него.

Събитието

{
  "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
}
ПолеЗначение
idID на събитието: evt_ и 32 шестнайсетични знака. Едно и също при всеки опит за доставка и в лентата.
typeКакво се е случило, във вида <object>.<past-tense verb>: card.updated, access_request.resolved.
created_atКога е станала промяната, в UTC.
api_versionВерсията на API, по чиято схема е data.
objectТипът и ID на обекта, за който е събитието.
dataПодробностите. Структурата им зависи от типа и е описана в каталога на събитията.
data.previous_attributesВ събитията *.updated: предишните стойности на променените полета.
sequence, payload, testСамо в доставките на уебхуковете: позицията в реда на доставките на уебхука, режимът на тялото и дали това е тестово събитие.

data съдържа само онова, което всеки читател на обекта би могъл да види през API. То никога не съдържа списъци за достъп, правата на други хора или скрити полета. Причините в събитията са кратки неутрални кодове като no_hits, restricted или index_failed.

Типове събития

Събитията обхващат следните области:

ОбластПримери
Картиcard.created, card.updated, card.published, card.archived, card.deleted, card.indexed, card.index_failed
Проверкаcard.verified, card.unverified, verification.expired, verification.requested
Структураcollection.created, folder.updated
Съвместна работаcomment.created, draft.publish_requested, announcement.sent, announcement.read
Отговориquestion.unanswered, question.feedback_created, access_request.created
Хора и достъпuser.created, user.deactivated, group.member_added, api_key.expiring
Източници и импортsource.sync_completed, import.sync_completed, import.document_failed
Заданияjob.completed, job.failed, export.ready
Уебхуковеwebhook.endpoint_disabled, webhook.ping

Пълният списък със схемата и пример за всяко събитие е в каталога на събитията в справочника на API. GET /v1/webhooks/catalog връща типовете, налични във вашата инсталация.

С времето се добавят нови типове събития, а съществуващите събития получават нови полета. Типовете събития никога не се преименуват и не се премахват. Получателят ви трябва да пропуска типовете и полетата, които не познава.

Кой какво получава

Уебхукът получава събитие само ако обектът на събитието е видим за него – по същия начин, както за API ключ: според ролята, профила за достъп и колекциите му. Уебхук, ограничен до колекцията support, никога не получава събития за карти във finance. Събитията за хора, ключове, източници, импорти, задания, експорти, плащания, приложения и за самите уебхукове отиват само към уебхуковете с ролята admin.

В тези граници всеки уебхук избира своите събития:

  • по тип, с маски: card.* за всяко събитие на карта, * за всяко събитие;
  • по колекция и по етикет – за събитията на карти.

Режимът на тялото на уебхука е full (събитието с data, по подразбиране) или thin (събитието без data: получателят ви чете обекта през API със собствен ключ и винаги вижда текущото му състояние).

Накратко за доставката

  • HTTPS POST със събитието като JSON, подписан с тайната на уебхука в два формата: Standard Webhooks (webhook-signature) и по-ранния X-KB-Signature.
  • Всеки отговор 2xx до 10 секунди е успех.
  • При неуспех доставката се повтаря в продължение на почти три дни с нарастващи паузи. Retry-After в отговор 429 или 503 се спазва; 410 изключва уебхука; 10 поредни неуспеха го спират временно, докато не бъде възобновен.
  • Доставките към един уебхук се изпращат строго по ред. Бавен уебхук не забавя другите уебхукове.
  • Едно и също събитие може да пристигне повече от веднъж: отхвърляйте дубликатите по webhook-id.

Получаване на уебхукове показва стъпка по стъпка цялостен получател с проверка на подписа на Node.js, Python и Go.

Управление на уебхуковете

ЗадачаОперация
Създаване на уебхук и получаване на тайната муPOST /v1/webhooks
Промяна на адреса, събитията или състояниетоPATCH /v1/webhooks/{webhook_id}
Изпращане на тестово събитиеPOST /v1/webhooks/{webhook_id}/test
Смяна на тайнатаPOST /v1/webhooks/{webhook_id}/rotate-secret
Възобновяване на временно спрян уебхукPOST /v1/webhooks/{webhook_id}/resume
Преглед на доставките и отговоритеGET /v1/webhooks/{webhook_id}/deliveries
Повторно изпращане на доставкаPOST /v1/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver

За управлението на уебхуковете е нужен ключ с ролята admin и обхвата webhooks:manage или администратор в интерфейса за администриране. Една организация може да има до 20 уебхука. Уебхуковете са част от плана на организацията; без тях тези операции отговарят с 403 и кода webhooks.feature_disabled.