Webhookit Reaaliaikaiset tapahtumat
Vastaanota reaaliaikaisia ilmoituksia kaikista tapahtumista. Dokumentit käsitelty, OCR valmis, luokittelu tehty.
{
"event_type": "document.processed",
"event_id": "a3b7f9c1d4e8b2a6",
"timestamp": "2026-04-17T14:23:11Z",
"subscription_id": 42,
"data": { "pofid": "doc_01HZY8K3…" }
} Johtavien yritysten luottamus maailmanlaajuisesti
OEM PARTNERSHIP
Sole official DMS partner for QNAP and ASUSTOR.
Dedicated landing pages, direct integration, data stays on your NAS.
QNAP
Sole official DMS partner for QNAP NAS — documents stay on your device, AI runs through PaperOffice.
MoreASUSTOR
Listed by ASUSTOR as “the DMS for ASUSTOR NAS” — sole official partner.
More22 tapahtumatyyppiä ryhmiteltyinä entityn mukaan
Tilaa yksittäisiä tapahtumia tai käytä jokerimerkkiä * kaikkeen.
Asiakirjat
14-
asiakirja.ladattuUusi asiakirja ladattu työtilaan -
asiakirja.luotuAlias asiakirja.ladattu-yhteensopivuudelle -
asiakirja.käsiteltyOCR/<a href="/fi/">AI-IDP</a>-putki suoritettu onnistuneesti -
asiakirja.muokattuMetatiedot, tunnisteet tai sisältö päivitetty -
asiakirja.poistettuAsiakirja siirretty roskakoriin -
asiakirja.palautettuAsiakirja palautettu roskakorista -
asiakirja.siirrettyAsiakirja siirretty työtilojen välillä -
asiakirja.versio_luotuUusi versio lisätty olemassa olevaan asiakirjaan -
asiakirja.elinkaari_muutettuSäilytys- tai arkistointitila muuttunut -
asiakirja.kommentti_lisättyKommentti julkaistu asiakirjaan -
asiakirja.muistiinpano_lisättySisäinen muistiinpano liitetty -
asiakirja.tunniste_lisättyTunniste assigned asiakirjaan -
asiakirja.säilytysmääräys_asetettuLainmukainen pidätys aktivoitu (muuttumaton) -
asiakirja.säilytysmääräys_poistettuLainmukainen pidätys vapautettu
Työt
3-
työ.valmistunutAsynkroninen työ valmistunut onnistuneesti -
työ.epäonnistunutAsynkroninen työ epäonnistunut lopullisesti -
työ.edistyminenEdistymispäivitys pitkäkestoisten töiden aikana
Workspaces
2-
työtila.jaettuWorkspace jaettu käyttäjälle tai tiimille -
työtila.jaettu_poisWorkspace käyttöoikeus peruutettu
Tehtävät
3-
tehtävä.luotuUusi tehtävä luotu -
tehtävä.valmistunutTehtävä merkitty valmiiksi -
tehtävä.myöhässäTehtävä ylittänyt määräpäivänsä
Webhookit käytössä
Katso, miten PaperOffice Webhooks toimii käytännössä — videolla.
Jokainen toimitus noudattaa samaa skeemaa
Ennustettava JSON-runko, viisi allekirjoitettua HTTP-otsikkoa, ISO-8601 UTC-aikaleimat.
{
"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
}
}
} Sisältö-tyyppi application/json Aina JSON, UTF-8-koodattu User-Agent PaperOffice-Webhook/1.0 Kiinteä tunniste palomuurin sallimisluetteloita varten X-PaperOffice-Event asiakirja.käsitelty Toimitettava tapahtumatyyppi X-PaperOffice-Event-ID a3b7f9c1… 128-bittinen yksilöllinen tunnus. Käytä idempotenssiin. X-PaperOffice-Subscription-ID 42 Tapahtuman vastaanottavan tilauksen tunnus X-PaperOffice-Signature sha256=… Raakarungon HMAC-SHA256, heksadesimaalikoodattu Vahvista jokainen toimitus HMAC-SHA256:lla
Laske HMAC-SHA256 raakapyynnön rungolle käyttäen jaettua salaista avaintasi ja vertaa sitä kohtaan X-PaperOffice-Signature käyttäen vakioaikaista vertailua (hash_equals, crypto.timingSafeEqual).
import crypto from 'crypto';
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');
}); Kolme uudelleenyritysstrategiaa, jopa 10 yritystä
Valitse käytäntö tilausta kohden. Jokainen yritys kirjataan tilakoodin, vastausrungon ja ajoituksen kera.
exponential Eksponentiaalinen (oletus)
Takautuminen kaksinkertaistuu jokaisen yrityksen jälkeen: 30s, 60s, 120s, 240s, 480s…
linear Lineaarinen
Kiinteä kasvu: 30s, 60s, 90s, 120s, 150s…
none Ei mitään
Lähetä ja unohda. Ei uudelleenyrityksiä edes 5xx-virheissä. Hyödyllinen testiwahookeille.
9 päätepistettä kohdassa /latest/webhooks/
Täydellinen CRUD tilauksille, toimituslokeille, kertaluonteisille työtilauksille ja testipäätepisteelle — kaikki OAuth2 Bearer, kaikki MCP-valmiita.
/webhooks/subscribe Luo uusi tilaus (rajoittamaton per tili) po_webhooks_subscribe /webhooks/list Listaa kaikki tilin tilaukset po_webhooks_list /webhooks/update Päivitä olemassa oleva tilaus po_webhooks_update /webhooks/delete Poista tilaus pehmeästi (toimitusloki säilytetään) po_webhooks_delete /webhooks/deliveries Nouda toimitusloki suodattimilla (event_type, success_only) po_webhooks_deliveries /webhooks/test Lähetä test.ping-tapahtuma toimituksen vahvistamiseksi po_webhooks_test /webhooks/subscribe-job Kertaluonteinen webhook tietylle job_id:lle po_webhooks_subscribe_job /webhooks/job-subscriptions Listaa työkohtaiset tilaukset po_webhooks_job_subscriptions /webhooks/info Saatavilla olevat tapahtumat, päätepisteet, uudelleenyrityskäytännöt, allekirjoitustiedot po_webhooks_info Suunniteltu kovetetuksi
HMAC-SHA256
Jokainen hyötykuorma allekirjoitettu salaisella avaimellasi. Vakioaikainen vertailu pakollinen.
SSRF-suojaus
Yksityiset/sisäiset IP-osoitteet, localhost ja pilven metatietopäätepisteet estetty tilauksen ja lähetyksen yhteydessä.
DNS-uudelleensidontaturvallinen
IP vahvistetaan uudelleen lähetysajankohtana, kiinnitetty käyttäen CURLOPT_RESOLVE:a.
HTTPS vahvasti suositeltu
http ja https hyväksytty. HTTPS suositeltu tuotantokäyttöön.
Tapahtumatunnus-idempotenssi
Jokainen toimitus sisältää yksilöllisen X-PaperOffice-Event-ID:n. Poista päällekkäisyydet omalla puolellasi.
Täydellinen tarkastusloki
Kaikki yritykset kirjattu: tilakoodi, vastausruno, ajoitus, virheilmoitus.
Rajoittamattomat tilaukset, toimituskäyttäytyminen täysin konfiguroitavissa
Saatavilla kaikissa suunnitelmissa. Maksu käytön mukaan: 1 krediitti per onnistunut toimitus (HTTP 2xx). Uudelleenyritykset, testitapahtumat ja epäonnistuneet toimitukset ovat ilmaisia.
Vastaanotatko tapahtumia?
Määritä webhookisi.