Webhookai Realaus laiko įvykiai
HMAC pasirašyti grįtiniai ryšiai kiekvienam dokumento, darbo, darbo srities ir užduoties įvykiui. 22 įvykių tipai, eksponentiniai kartojimai, rekomenduojama HTTPS.
{
"event_type": "document.processed",
"event_id": "a3b7f9c1d4e8b2a6",
"timestamp": "2026-04-17T14:23:11Z",
"subscription_id": 42,
"data": { "pofid": "doc_01HZY8K3…" }
} Pasitiki pirmaujančios įmonės visame pasaulyje
22 įvykių tipai, sugrupuoti pagal subjektą
Prenumeruokite atskirus įvykius arba naudokite pakaitos simbolį * viskam.
Dokumentai
14-
document.uploadedNaujas dokumentas įkeltas į darbo sritį -
document.createdDokumentų įkėlimo (document.uploaded) aliasas (suderinamumui) -
document.processedOCR/IDP vamzdynas sėkmingai baigtas -
document.editedAtnaujinti metaduomenys, žymos arba turinys -
document.deletedDokumentas perkeltas į šiukšlinę -
document.restoredDokumentas atstatytas iš šiukšlinės -
document.movedDokumentas perkeltas tarp darbo sričių -
document.version_createdPridėta nauja versija esamam dokumentui -
document.lifecycle_changedPakeista išsaugojimo / archyvavimo būsena -
document.comment_addedKomentaras pridėtas prie dokumento -
document.note_addedPridėta vidinė pastaba -
document.tag_addedŽymė priskirta dokumentui -
document.legal_hold_placedSuaktyvintas teisinis draudimas (nekintamas) -
document.legal_hold_releasedTeisinės saugos atšaukimas
Užduotys
3-
darbas.atliktasAsinchroninė užduotis sėkmingai baigta -
darbas.nepavykoAsinchroninė užduotis nepavyko galutinai -
darbas.eigaEigos atnaujinimas ilgai trunkančių užduočių metu
Darbo sritys
2-
darbo_vieta.bendrinamaDarbo sritis bendrinama su naudotoju arba komanda -
darbo_vieta.nebebendrinamaDarbo srities prieigos atšaukimas
Užduotys
3-
uzduotis.sukurtaSukurta nauja užduotis -
uzduotis.atliktaUžduotis pažymėta kaip baigta -
uzduotis.praleistaUžduotis viršijo terminą
Prenumeruokite ["*"], kad gautumėte kiekvieną savo paskyros įvykį.
Kiekvienas pristatymas laikosi tos pačios schemos
Nuspėjamas JSON kūnas, penkios pasirašytos HTTP antraštės, ISO-8601 UTC laiko žymos.
{
"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
}
}
} Content-Type application/json Visada JSON, koduota UTF-8 User-Agent PaperOffice-Webhook/1.0 Fiksuotas identifikatorius ugniasienių leidimų sąrašams X-PaperOffice-Event document.processed Pristatomo įvykio tipas X-PaperOffice-Event-ID a3b7f9c1… 128 bitų unikalus ID. Naudokite idempotentiškumui užtikrinti. X-PaperOffice-Subscription-ID 42 Prenumeratos, gaunančios įvykį, ID X-PaperOffice-Signature sha256=… HMAC-SHA256 nuo žalio kūno, koduota šešioliktainiu formatu Patikrinkite kiekvieną pristatymą naudodami HMAC-SHA256
Apskaičiuokite HMAC-SHA256 virš neapdoroto užklausos kūno naudodami savo bendrąjį slaptąjį raktą, tada palyginkite su X-PaperOffice-Signature naudodami pastovaus laiko palyginimą (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');
}); Trys kartojimo strategijos, iki 10 bandymų
Pasirinkite politiką kiekvienai prenumeratai. Kiekvienas bandymas registruojamas su būsenos kodu, atsako kūnu ir laiku.
exponential Eksponentinė (numatytoji)
Atsitraukimas dvigubėja po kiekvieno bandymo: 30 s, 60 s, 120 s, 240 s, 480 s…
linear Tiesinė
Fiksuotas augimas: 30 s, 60 s, 90 s, 120 s, 150 s…
none Nėra
Siųsti ir pamiršti. Jokių pakartojimų net esant 5xx klaidoms. Naudinga testiniams įvykiams.
9 galiniai taškai pagal /latest/webhooks/
Pilnas CRUD prenumeratoms, pristatymo žurnalams, vienkartinio darbo užduočių prenumeratoms ir testinis galinis taškas – visi su OAuth2 Bearer, visi paruošti MCP.
/webhooks/subscribe Sukurti naują prenumeratą (neribotai vienai paskyrai) po_webhooks_subscribe /webhooks/list Išvardyti visas paskyros prenumeratas po_webhooks_list /webhooks/update Atnaujinti esamą prenumeratą po_webhooks_update /webhooks/delete Švelniai ištrinti prenumeratą (pristatymo žurnalas išsaugomas) po_webhooks_delete /webhooks/deliveries Gauti pristatymo žurnalą su filtrais (event_type, success_only) po_webhooks_deliveries /webhooks/test Siųsti test.ping įvykį pristatymui patikrinti po_webhooks_test /webhooks/subscribe-job Vienkartinis įvykis konkrečiam job_id po_webhooks_subscribe_job /webhooks/job-subscriptions Išvardyti su darbo užduotimis susietas prenumeratas po_webhooks_job_subscriptions /webhooks/info Galimi įvykiai, galiniai taškai, pakartojimo politikos, parašo informacija po_webhooks_info Sustiprinta pagal projektą
HMAC-SHA256
Kiekvienas krovinys pasirašytas jūsų slaptu raktu. Privalomas pastovaus laiko palyginimas.
SSRF apsauga
Privatūs / vidiniai IP, localhost ir debesų metaduomenų galiniai taškai blokuojami prenumeratos ir siuntimo metu.
Saugu nuo DNS persiejimo
IP iš naujo patvirtinamas siuntimo metu, fiksuojamas naudojant CURLOPT_RESOLVE.
HTTPS stipriai rekomenduojama
Priimami http ir https. Gamintai rekomenduojama HTTPS.
Įvykio-ID idempotiškumas
Kiekvienas pristatymas turi unikalų X-PaperOffice-Event-ID. Dublikatus šalinkite savo pusėje.
Pilnas audito takas
Visi bandymai registruojami: būsenos kodas, atsako kūnas, laikas, klaidos pranešimas.
Neribotos prenumeratos, pristatymo elgsena visiškai konfigūruojama
Prieinama visuose planuose. Mokėjimas pagal naudojimą: 1 kreditas už sėkmingą pristatymą (HTTP 2xx). Pakartojimai, testiniai įvykiai ir nepavykę pristatymai nemokami.
Jūsų pirmasis įvykis per 60 sekundžių
Sukurkite galinį tašką, užsiprenumeruokite per API, paleiskite testinį įvykį. Tai viskas.