Przejdź do treści głównej
Przegląd Przegląd Aktualności Aktualności
Udostępnij

Webhooki i zdarzenia

Zdarzenia w czasie rzeczywistym. Dostarczane z podpisem HMAC.

PaperOffice wywołuje Państwa punkt końcowy, gdy tylko zmieni się dokument, zadanie, obszar roboczy lub zadanie. Bez odpytywania (polling).

22 typy zdarzeń, podpis HMAC-SHA256, trzy strategie ponawiania prób i dziennik dostaw dla każdej próby.

HMAC-SHA256 przy każdej dostawie Do 10 powtórzeń (standardowo 5) Idempotentny przez identyfikator zdarzenia

Dostępne zdarzenia

22 typy zdarzeń, pogrupowane według encji

Proszę subskrybować pojedyncze zdarzenia lub użyć symbolu wieloznacznego * dla wszystkich.

Dokumenty

14
  • document.uploaded Nowy dokument przesłany do przestrzeni roboczej
  • document.created Alias dla document.uploaded (kompatybilność)
  • document.processed Pomyślne zakończenie potoku OCR/AI-IDP
  • document.edited Dokument edytowany: zaktualizowano metadane, tagi lub treść
  • document.deleted Dokument przeniesiony do kosza
  • document.restored Dokument przywrócony z kosza
  • document.moved Dokument przeniesiony między przestrzeniami roboczymi
  • document.version_created Nowa wersja istniejącego dokumentu
  • document.lifecycle_changed Zmieniono status przechowywania/archiwizacji
  • document.comment_added Utworzono komentarz do dokumentu
  • document.note_added Dołączono notatkę wewnętrzną
  • document.tag_added Przypisano tag do dokumentu
  • document.legal_hold_placed Włączono Legal Hold (niezmienność)
  • document.legal_hold_released Uchycono Legal Hold

Zadania

3
  • job.completed Zadanie asynchroniczne pomyślnie zakończone
  • job.failed Zadanie asynchroniczne ostatecznie nieudane
  • job.progress Aktualisierung des Fortschritts przy dłuższych zadaniach

Workspaces

2
  • workspace.shared Przestrzeń robocza udostępniona użytkownikowi lub zespołowi
  • workspace.unshared Utrata dostępu do przestrzeni roboczej

Zadania

3
  • task.created Utworzono nowe zadanie
  • task.completed Oznaczono zadanie jako ukończone
  • task.overdue Przekroczono termin wykonania zadania

Treść i nagłówek

Każda dostawa stosuje ten sam schemat

Przewidywalny ciało JSON, stałe nagłówki HTTP, znacznik czasu ISO-8601 UTC.

Ciało żądania

{
  "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
    }
  }
}

Nagłówki żądania HTTP

Nagłówek Wartość przykładowa Znaczenie
Content-Type application/json Zawsze JSON, zakodowany w UTF-8
User-Agent PaperOffice-Webhook/1.0 Stały identyfikator dla list dozwolonych zapór ogniowych
X-PaperOffice-Event document.processed Typ dostarczonego zdarzenia
X-PaperOffice-Event-ID a3b7f9c1… 128-bitowy unikalny identyfikator. Proszę użyć go jako klucza idempotentności.
X-PaperOffice-Subscription-ID 42 ID subskrypcji odbierającej zdarzenie
X-PaperOffice-Signature sha256=… HMAC-SHA256 surowego ciała żądania, zakodowane w formacie hex
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  }'

Weryfikacja sygnatury

Proszę weryfikować każdą dostawę za pomocą HMAC-SHA256

Proszę obliczyć HMAC-SHA256 na podstawie surowego ciała żądania przy użyciu wspólnego klucza tajnego i porównać wynik z nagłówkiem X-PaperOffice-Signature — obowiązkowo z użyciem stałego czasu wykonania.

  • Porównanie o stałym czasie wykonania

    hash_equals, hmac.compare_digest lub crypto.timingSafeEqual: Porównanie nie może ujawniać różnic w czasie wykonania.

  • Podpisanie ciała żądania

    Podpis dotyczy niezmienionego ciała żądania. Proszę parsować JSON dopiero po weryfikacji, w przeciwnym razie hash będzie się różnił.

  • Subskrypcja przez API

    POST /latest/webhooks/subscribe z name, url i events. Jeśli secret pozostanie pusty, PaperOffice wygeneruje go i zwróci jednorazowo.

Ponawianie i dostawa

Trzy strategie ponawiania, do 10 powtórzeń

Proszę wybrać politykę dla każdej subskrypcji. Każda próba jest logowana z kodem statusu, ciałem odpowiedzi i pomiarem czasu.

  • Domyślne exponential

    Eksponencjalne (domyślne)

    Odstęp między próbami podwaja się po każdej nieudanej próbie.

  • linear

    Liniowy

    Odstęp między próbami rośnie o stały krok.

  • none

    Brak

    Brak ponownych prób, nawet w przypadku błędów 5xx (wyślij i zapomnij). Przydatne dla hooków testowych.

  • Sukces HTTP 2xx w oknie limitu czasu
  • Maks. liczba ponownych prób Do 10 ponownych prób (domyślnie 5)
  • Limit czasu 1000–30 000 ms na próbę (domyślnie 10 000)
  • Dziennik dostarczania Każda próba jest logowana; dziennik pozostaje dostępny nawet po usunięciu subskrypcji.

Zarządzanie-API

Pięć punktów końcowych pod /latest/webhooks/

Tworzenie, wyświetlanie, aktualizowanie i usuwanie subskrypcji — w tym punkt końcowy testowy. Każde wywołanie wymaga tokena Bearer.

  • POST /webhooks/subscribe Utwórz subskrypcję; ładunki są podpisywane za pomocą HMAC-SHA256 Narzędzie MCPpo-webhooks-subscribe
  • GET /webhooks/list Wyświetl wszystkie subskrypcje webhooków konta Narzędzie MCPpo-webhooks-list
  • POST /webhooks/update Zaktualizuj URL, zdarzenia, nagłówki, politykę ponawiania lub status aktywności Narzędzie MCPpo-webhooks-update
  • POST /webhooks/delete Usuń subskrypcję; protokół dostarczania pozostaje nienaruszony Narzędzie MCPpo-webhooks-delete
  • POST /webhooks/test Wyślij zdarzenie testowe do subskrypcji i sprawdź dostarczenie Narzędzie MCPpo-webhooks-test

Bezpieczeństwo

Wzmocnione od podstaw

Sześć mechanizmów działających przy każdym dostarczeniu — po stronie PaperOffice i po Państwa stronie.

  • HMAC-SHA256

    Każde dostarczenie jest podpisywane Państwa sekretem. Porównanie musi odbywać się w stałym czasie.

  • Ochrona przed SSRF

    Adresy IP prywatne i wewnętrzne, localhost oraz punkty końcowe metadanych chmurowych są blokowane podczas subskrypcji i wysyłania.

  • Bezpieczny przed DNS rebindingiem

    Adres IP jest ponownie weryfikowany podczas wysyłania i przypinany za pomocą CURLOPT_RESOLVE.

  • Zalecane HTTPS

    Akceptowane są protokoły http i https. W przypadku środowiska produkcyjnego zalecamy użycie HTTPS.

  • Idempotentność dzięki identyfikatorowi zdarzenia

    Każda dostawa zawiera unikalny identyfikator X-PaperOffice-Event-ID. Prosimy o deduplikację po swojej stronie.

  • Pełny protokół dostaw

    Wszystkie próby są logowane: kod statusu, ciało odpowiedzi, pomiar czasu, komunikat o błędzie.

Limity

Konfiguracja zachowania dostaw dla każdej subskrypcji

Wszystkie wartości ustawiają Państwo podczas tworzenia lub później za pomocą /webhooks/update — w zależności od subskrypcji, a nie konta.

  • 0–10 Powtórzenia na dostawę (domyślnie 5)
  • 1,0–30,0 s Limit czasu na próbę (domyślnie 10.000)
  • 3 Polityki ponawiania: none, linear, exponential
  • HMAC-SHA256 Podpis przy każdej dostawie

Webhooks są dostępne od planu Professional. Który plan pasuje do Państwa konfiguracji, pokaże przegląd cenowy.

Wideo

Webhooks w akcji

Proszę zobaczyć w filmie, jak działają webhooks PaperOffice w praktyce.

Webhooks w akcji

Pytania

Najczęściej zadawane pytania dotyczące webhooków

Jak zweryfikować dostarczenie?

Proszę obliczyć HMAC-SHA256 na surowym ciele żądania przy użyciu sekretu swojej subskrypcji i porównać wynik w stałym czasie z nagłówkiem X-PaperOffice-Signature (format sha256=<hex>). Jeśli sygnatura nie jest poprawna, proszę odpowiedzieć kodem HTTP 401 i nie przetwarzać ciała.

Skąd wziąć sekret?

Podczas tworzenia subskrypcji przez POST /latest/webhooks/subscribe. Jeśli pozostawią Państwo pole secret puste, PaperOffice wygeneruje sekret i zwróci go jednorazowo w odpowiedzi. Mogą Państwo go zastąpić w dowolnym momencie za pomocą POST /latest/webhooks/update.

Co się stanie, jeśli mój endpoint nie odpowie?

Każda odpowiedź spoza zakresu HTTP 2xx lub timeout jest liczona jako nieudana próba. W zależności od polityki ponownych prób (exponential, linear, none) PaperOffice powtarza dostarczanie do ustalonej liczby powtórzeń (0–10, domyślnie 5). Każda próba jest rejestrowana w dzienniku dostarczania wraz ze statusem HTTP, treścią odpowiedzi i czasem trwania.

Czy ta sama wiadomość może zostać dostarczona dwukrotnie?

Tak, jest to możliwe przy ponownych próbach po wystąpieniu timeoutu. Dlatego należy stosować deduplikację za pomocą nagłówka X-PaperOffice-Event-ID: identyfikator ten jest unikalny dla każdego zdarzenia i może służyć jako klucz idempotentny w bazie danych.

Jakie zdarzenia mogę subskrybować?

22 typy zdarzeń z czterech grup: dokumenty, zadania (jobs), workspace'y i aktywności. Można subskrybować pojedyncze zdarzenia lub wszystkie za pomocą symbolu wieloznacznego *. Subskrypcję można dodatkowo zawęzić za pomocą filtrów (np. workspace_id lub pofid).

W której cenniku dostępne są webhooks?

Webhooks są dostępne w planie Professional. Który plan najlepiej odpowiada Państwa potrzebom, pokaże przegląd cenowy.

Gdzie chcą Państwo wypróbować PaperOffice?

Komputer i smartfon są połączone: workspace na komputerze, przechwytywanie na telefonie.

Wersja testowa jest gotowa

Gdzie chcą Państwo zacząć?

Pełny workspace jest zoptymalizowany pod kątem komputera. Wersja mobilna nadaje się do przechwytywania, sprawdzania i udostępniania dokumentów.

app.paperoffice.ai

Rozpocznijcie na komputerze

Osobisty link dostępu zostanie wysłany na podany adres e-mail.

Zarejestrować się bezpłatnie Otwórz aplikację Aplikacja PaperOffice Pełny produkt: sieć, pulpit i urządzenia mobilne. Przechwytywanie, organizowanie, wyszukiwanie dokumentów i praca z zespołem. Wymagane jest bezpłatne konto Otwórz Playground Playground Wybrane funkcje natychmiast — z ograniczonym kluczem API demo. Z ograniczonym kluczem API demo