Скачане към съдържанието
Обзор Обзор Новини Новини
Споделяне

Уебхукове и събития

Събития в реално време. Доставени с HMAC подпис.

PaperOffice извиква вашия край, веднага щом се промени документ, задача, работно пространство или задача. Без polling.

22 типа събития, HMAC-SHA256 подпис, три стратегии за повторен опит и дневник на доставките за всеки опит.

HMAC-SHA256 при всяка доставка До 10 повторения (стандартно 5) Идипотентен по Event-ID

Налични събития

22 типове събития, групирани по сущност

Абонирайте се за отделни събития или използвайте плейсхолдера * за всички.

Документи

14
  • document.uploaded Нов документ е качен в работно пространство
  • document.created Алиас за document.uploaded (съвместимост)
  • document.processed OCR/AI-IDP пайплайн успешно завършен
  • document.edited Документ редактиран: актуализирани са метаданни, тагове или съдържание
  • document.deleted Документ преместен в кошчето
  • document.restored Документ възстановен от кошчето
  • document.moved Документ преместен между работни пространства
  • document.version_created Нова версия на съществуващ документ
  • document.lifecycle_changed Променен статус на съхранение/архивиране
  • document.comment_added Създаден коментар към документ
  • document.note_added Приложена вътрешна бележка
  • document.tag_added Етикет присвоен на документ
  • document.legal_hold_placed Активиран правен задържател (непроменяем)
  • document.legal_hold_released Правният задържател е отменен

Задачи

3
  • job.completed Асинхронна задача успешно завършена
  • job.failed Асинхронна задача окончателно неуспешна
  • job.progress Обновление на прогреса при дълги задачи

Workspaces

2
  • workspace.shared Работно пространство споделено с потребител или екип
  • workspace.unshared Достъпът до работното пространство е отнет

Задачи

3
  • task.created Създадена е нова задача
  • task.completed Задачата е маркирана като завършена
  • task.overdue Задачата е излязла от срока за изпълнение

Пейлоад и заглавка

Всяко известие следва една и съща схема

Предсказуемо JSON тяло, фиксирани HTTP заглавки, ISO-8601 UTC времеви маркер.

Тяло на заявката

{
  "event_type": "document.processed",
  "event_id": "a3b7f9c1d4e8b2a6c9f1d4e7b2a5c8f1",
  "timestamp": "2026-04-17T14:23:11Z",
  "subscription_id": 42,
  "data": {
    "pofid": "doc_01HZY8K3M7P2Q9R5T1V6W4X2Y8",
    "workspace_id": 17,
    "filename": "invoice-2026-04-17.pdf",
    "mime_type": "application/pdf",
    "size_bytes": 284521,
    "processing_result": {
      "ocr_done": true,
      "classification": "invoice",
      "confidence": 0.98
    }
  }
}

HTTP заглавка на заявката

Заглавка Примерна стойност Значение
Content-Type application/json Винаги JSON, кодирано в UTF-8
User-Agent PaperOffice-Webhook/1.0 Фиксиран идентификатор за бели списъци на защитна стена
X-PaperOffice-Event document.processed Тип на доставеното събитие
X-PaperOffice-Event-ID a3b7f9c1… 128-битов уникален идентификатор. Използвайте го като ключ за идемпотентност.
X-PaperOffice-Subscription-ID 42 Идентификатор на абонамента, който получава събитието
X-PaperOffice-Signature sha256=… HMAC-SHA256 на суровото тяло, кодирано в шестнадесетичен формат
cURL
curl -X POST "https://api.paperoffice.ai/latest/webhooks/subscribe" \  -H "Authorization: Bearer po_ut_YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "name": "My Production Webhook",    "url": "https://yourdomain.com/webhooks/paperoffice",    "events": ["document.processed", "job.completed", "job.failed"],    "retry_policy": "exponential",    "max_retries": 5,    "timeout_ms": 10000  }'

Верификация на подписа

Верифицирайте всяко доставяне с HMAC-SHA256

Изчислете HMAC-SHA256 върху суровото тяло на заявката с вашия споделен секрет и сравнете резултата с X-PaperOffice-Signature — задължително с константно време.

  • Сравнение в константно време

    hash_equals, hmac.compare_digest или crypto.timingSafeEqual: Сравнението не трябва да разкрива разлики във времето на изпълнение.

  • Подписване на тялото на Rohen

    Подписът важи за непромененото тяло на заявката. Парсирайте JSON едва след проверката, иначе хешът ще се промени.

  • Абониране чрез API

    POST /latest/webhooks/subscribe с име, URL и събития. Ако оставите тайната празна, PaperOffice я генерира и я връща веднъж.

Повторен опит и доставка

Три стратегии за повторен опит, до 10 повторения

Изберете политиката за всеки абонамент. Всеки опит се логва с код на състоянието, тяло на отговора и измерване на времето.

  • Стандартен exponential

    Експоненциално (по подразбиране)

    Интервалът между опитите се удвоява след всеки неуспешен опит.

  • linear

    Линеен

    Интервалът между опитите нараства с фиксирана стъпка.

  • none

    Без

    Без повторение, дори при 5xx (изпрати и забрави). Полезно за тестови хукове.

  • Успех HTTP 2xx в рамките на таймаут прозореца
  • Макс. повторения До 10 повторения (стандартно 5)
  • Изтичане на времето 1 000–30 000 ms на опит (стандартно 10 000)
  • Протокол за доставяне Всеки опит се протоколира; протоколът остава достъпен дори след изтриване на абонамента.

Управление-API

Пет крайни точки под /latest/webhooks/

Създаване, извличане, актуализиране и изтриване на абонаменти — включително тестова крайна точка. Всеки повик използва Bearer токен.

  • POST /webhooks/subscribe Създаване на абонамент; полезните натоварвания се подписват с HMAC-SHA256 MCP инструментpo-webhooks-subscribe
  • GET /webhooks/list Извличане на всички уебхук абонаменти за акаунта MCP инструментpo-webhooks-list
  • POST /webhooks/update Актуализиране на URL, събития, заглавки, политика за повторен опит или активен статус MCP инструментpo-webhooks-update
  • POST /webhooks/delete Изтриване на абонамент; протоколът за доставяне се запазва MCP инструментpo-webhooks-delete
  • POST /webhooks/test Изпращане на тестово събитие до абонамент и проверка на доставката MCP инструментpo-webhooks-test

Сигурност

Засилена от основата

Шест механизма, които се активират при всяка доставка — от страна на PaperOffice и ваша.

  • HMAC-SHA256

    Всяка доставка се подписва с вашия тайен ключ. Сравнението трябва задължително да протича в константно време.

  • SSRF защита

    Частни и вътрешни IP адреси, localhost и облачни метаданни крайници се блокират при абонамент и при изпращане.

  • Устойчив на DNS rebinding

    IP адресът се превалидира при изпращане и се фиксира чрез CURLOPT_RESOLVE.

  • Препоръчва се HTTPS

    Приемат се http и https. За производствена среда препоръчваме HTTPS.

  • Идипотентност чрез Event ID

    Всяко доставяне носи уникална X-PaperOffice-Event-ID. Извършвайте дедупликация на вашата страна.

  • Пълен протокол на доставката

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

Ограничения

Настройване на поведенето при доставка за всеки абонамент

Всички стойности се задават при създаване или по-късно чрез /webhooks/update — за всеки абонамент, а не за акаунта.

  • 0–10 Повторения при всяка доставка (стандартно 5)
  • 1 000–30 000 мс Време за изчакване на опит (стандартно 10.000)
  • 3 Политики за повторен опит: none, linear, exponential
  • HMAC-SHA256 Подпис при всяка доставка

Webhooks са налични от план Professional. Кой план е подходящ за вашата конфигурация, вижте в прегледа на цените.

Видео

Уебхукове в действие

Вижте как работят уебхуковете на PaperOffice в практиката — във видеото.

Уебхукове в действие

Въпроси

Често задавани въпроси относно Webhooks

Как да потвърдя доставката?

Изчислете HMAC-SHA256 върху суровия request body, използвайки тайната на вашия абонамент, и сравнете резултата в константно време със заглавката X-PaperOffice-Signature (формат sha256=<hex>). Ако сигнатурата не съвпада, отговорете с HTTP 401 и не обработвайте тялото.

Откъде идва тайната?

При създаване на абонамента чрез POST /latest/webhooks/subscribe. Оставете полето secret празно, за да генерира PaperOffice тайна и да я върне веднъж в отговора. Чрез POST /latest/webhooks/update можете да я замените по всяко време.

Какво се случва, ако моят endpoint не отговори?

Всеки отговор извън HTTP 2xx или таймаут се брои като неуспешен опит. В зависимост от политиката за повторен опит (експоненциална, линейна, без) PaperOffice повтаря доставката до зададения брой повторни опити (0–10, стандартно 5). Всеки опит е записан в дневника на доставките със статус код, отговор и времеви метрики.

Може ли една и съща доставка да пристигне два пъти?

Да, възможно е при повторни опити след таймаут. Затова използвайте дедупликация чрез X-PaperOffice-Event-ID: ID-то е уникално за всяко събитие и може да служи като ключ за идемпотентност във вашата база данни.

Какви събития мога да абонирам?

22 типа събития от четири групи: документи, задачи, работни пространства и действия. Можете да абонирате отделни събития или всички с помощта на плейсхолдера *. Чрез филтри (например workspace_id или pofid) можете допълнително да ограничите абонамента.

В кой план са включени уебхукове?

Уебхуковете са налични от план Professional. Кой план е подходящ за вашата конфигурация, показва ценовата таблица.

Къде искате да изпробвате PaperOffice?

Компютърът и смартфонът са свързани: работен плот на компютъра, заснемане на телефона.

Вашата пробна версия е готова

Къде искате да започнете?

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

app.paperoffice.ai

Започнете на компютър

Ще изпратим вашия личен линк за достъп до имейл адреса ви.

Безплатна регистрация Отваряне на приложението Приложение PaperOffice Пълният продукт: уеб, настолно приложение и мобилно. Заснемане, организация, търсене и работа по документи с екипа. Необходим е безплатен акаунт Отваряне на Playground Playground Изпробвайте избрани функции веднага — без регистрация, с ограничен демо API ключ. Без регистрация, но с ограничен демо API ключ