Webhook Notikumi reāllaikā
Saņemiet reāllaika paziņojumus par visiem notikumiem. Dokumenti apstrādāti, OCR pabeigta, klasifikācija veikta.
{
"event_type": "document.processed",
"event_id": "a3b7f9c1d4e8b2a6",
"timestamp": "2026-04-17T14:23:11Z",
"subscription_id": 42,
"data": { "pofid": "doc_01HZY8K3…" }
} Uzticas vadošie uzņēmumi visā pasaulē
22 notikumu tipi, grupēti pēc vienības
Abonējiet individuālus notikumus vai izmantojiet wildcards * visam.
Dokumenti
14-
dokuments.augšupielādētsJauns dokuments augšupielādēts darbvietā -
dokuments.izveidotsAlias priekš document.uploaded (saderībai) -
dokuments.apstrādātsOCR/AI-IDP plūsma beidzās veiksmīgi -
dokuments.rediģētsMetadati, birkas vai saturs atjaunināts -
dokuments.dzēstsDokuments pārvietots uz atkritni -
dokuments.atjaunotsDokuments atgūts no atkritnes -
dokuments.pārvietotsDokuments pārvietots starp darbvietām -
dokuments.versija_izveidotaJauna versija pievienota esošam dokumentam -
dokuments.dzīves_cikls_mainītsSaglabāšanas / arhivēšanas statuss mainīts -
dokuments.komentārs_pievienotsKomentārs publicēts dokumentam -
dokuments.piezīme_pievienotaPievienota iekšēja piezīme -
dokuments.birka_pievienotaDokumentam piešķirta birka -
dokuments.juridiskā_saglabāšana_uzliktaAktivēta juridiskā saglabāšana (nemaināma) -
dokuments.juridiskā_saglabāšana_noņemtaJuridiskā saglabāšana atcelta
Uzdevumi (Jobs)
3-
uzdevums.pabeigtsAsinhronais uzdevums veiksmīgi pabeigts -
darbs.neizdevāsAsinhronais uzdevums neizdevās termināli -
darbs.progreseProgresa atjauninājums ilgstošu uzdevumu laikā
Workspaces
2-
darbvietas.koplietotsWorkspace kopīgots ar lietotāju vai komandu -
darbvietas.atcelts_koplietojumsWorkspace piekļuve atsaukta
Taski
3-
uzdevums.izveidotsIzveidots jauns taskis -
uzdevums.pabeigtsTaskis atzīmēts kā pabeigts -
uzdevums.nokavētsTaskis pārsniedzis termiņu
Katra piegāde seko vienai shēmai
Prognozējams JSON ķermenis, piecas parakstītas HTTP galvenes, ISO-8601 UTC laika zīmogi.
{
"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
}
}
} Satura-veids lietojums/json Vienmēr JSON, kodēts UTF-8 Lietotāja-aģents PaperOffice-Webhook/1.0 Fiksēts identifikators ugunsmūra atļauju sarakstiem X-PaperOffice-Notikums dokuments.apstrādāts Piegādājamais notikuma tips X-PaperOffice-Notikuma-ID a3b7f9c1… 128-bitu unikāls ID. Izmantot idempotencei. X-PaperOffice-Abonementa-ID 42 Tā abonementa ID, kurš saņem notikumu X-PaperOffice-Paraksts sha256=… Neapstrādāta ķermeņa HMAC-SHA256, kodēts heksadecimalā Verificēt katru piegādi ar HMAC-SHA256
Aprēķiniet HMAC-SHA256 pār neapstrādāto pieprasījuma ķermeni, izmantojot savu koplietojamo noslēpumu, pēc tam salīdziniet to ar X-PaperOffice-Signature, izmantojot salīdzināšanu ar konstantu laiku (hash_equals, crypto.timingSafeEqual).
import crypto from 'crypto';
import express from 'express';
const app = express();
const WEBHOOK_SECRET = process.env.PAPEROFFICE_WEBHOOK_SECRET;
app.post('/webhooks/paperoffice', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.header('X-PaperOffice-Signature'); // "sha256=..."
const eventId = req.header('X-PaperOffice-Event-ID');
const eventType = req.header('X-PaperOffice-Event');
const expected = 'sha256=' + crypto
.createHmac('sha256', WEBHOOK_SECRET)
.update(req.body)
.digest('hex');
if (!signature || !crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))) {
return res.status(401).send('invalid signature');
}
const event = JSON.parse(req.body.toString());
// eventId als Idempotency-Key speichern -> gleiche ID nicht zweimal verarbeiten
console.log(eventType, event.data);
res.status(200).send('ok');
}); Trīs atkārtotu mēģinājumu stratēģijas, līdz 10 mēģinājumiem
Izvēlieties politiku katram abonementam. Katrs mēģinājums tiek reģistrēts ar statusa kodu, atbildes ķermeni un laiku.
exponential Eksponenciāls (noklusējums)
Aizkave dubultojas pēc katra mēģinājuma: 30s, 60s, 120s, 240s, 480s…
linear Lineārs
Fiksēts pieaugums: 30s, 60s, 90s, 120s, 150s…
none Nav
Sūtīt un aizmirst. Nav atkārtotu mēģinājumu pat pie 5xx kļūdām. Noderīgi testa āķiem.
9 beigu punkti zem /latest/webhooks/
Pilns CRUD abonementiem, piegādes žurnāliem, vienreizējiem darba abonementiem un testa beigu punkts — viss ar OAuth2 Bearer, viss MCP gatavs.
/webhooks/subscribe Izveidot jaunu abonementu (neierobežots uz kontu) po_webhooks_subscribe /webhooks/list Uzskaitīt visus konta abonementus po_webhooks_list /webhooks/update Atjaunināt esošu abonementu po_webhooks_update /webhooks/delete Mīksti dzēst abonementu (piegādes žurnāls saglabāts) po_webhooks_delete /webhooks/deliveries Iegūt piegādes žurnālu ar filtriem (event_type, success_only) po_webhooks_deliveries /webhooks/test Nosūtīt test.ping notikumu, lai pārbaudītu piegādi po_webhooks_test /webhooks/subscribe-job Vienreizējs āķis konkrētam job_id po_webhooks_subscribe_job /webhooks/job-subscriptions Uzskaitīt ar darbu saistītos abonementus po_webhooks_job_subscriptions /webhooks/info Pieejami notikumi, beigu punkti, atkārtotu mēģinājumu politikas, paraksta informācija po_webhooks_info Aizsargāts pēc dizaina
HMAC-SHA256
Katra krava parakstīta ar jūsu noslēpumu. Salīdzināšana ar konstantu laiku ir obligāta.
SSRF aizsardzība
Privātās / iekšējās IP adreses, localhost un mākoņa metadatu beigu punkti bloķēti abonēšanas un nosūtīšanas laikā.
Drošs pret DNS atkārtotu piesaisti
IP atkārtoti validēta nosūtīšanas laikā, fiksēta, izmantojot CURLOPT_RESOLVE.
HTTPS stingri ieteicams
http un https pieņemti. HTTPS ieteicams ražošanas videi.
Notikuma-ID idempotence
Katra piegāde satur unikālu X-PaperOffice-Event-ID. Veiciet deduplikāciju savā pusē.
Pilns audita ceļš
Visi mēģinājumi reģistrēti: statusa kods, atbildes ķermenis, laiks, kļūdas ziņojums.
Neierobežoti abonementi, piegādes uzvedība pilnībā konfigurējama
Pieejams visos tarifu plānos. Maksā par lietojumu: 1 kredīts par veiksmīgu piegādi (HTTP 2xx). Atkārtoti mēģinājumi, testa notikumi un neizdevušās piegādes ir bezmaksas.
Saņemt notikumus?
Konfigurējiet savus webhookus.