Webhooki Notikumi reāllaikā
Ar HMAC parakstīti atgriezeniskie zvani katram dokumenta, uzdevuma, darbvietas un taska notikumam. 22 notikumu tipi, eksponenciāli atkārtojumi, ieteicams HTTPS.
{
"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/IDP cauruļvads veiksmīgi pabeigts -
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ā
Darbvietas
2-
darbvietas.koplietotsDarbvietā koplietota ar lietotāju vai komandu -
darbvietas.atcelts_koplietojumsDarbvietas piekļuve atsaukta
Taski
3-
uzdevums.izveidotsIzveidots jauns taskis -
uzdevums.pabeigtsTaskis atzīmēts kā pabeigts -
uzdevums.nokavētsTaskis pārsniedzis termiņu
Abonējiet ["*"], lai saņemtu katru jūsu konta notikumu.
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.
Jūsu pirmais āķis 60 sekundēs
Izveidojiet beigu punktu, abonējiet, izmantojot API, palaidiet testa notikumu. Tas ir viss.