Webhookit Reaaliaikaiset tapahtumat
HMAC-allekirjoitetut takaisinkutsut jokaiselle asiakirja-, työ-, työtila- ja tehtävätapahtumalle. 22 tapahtumatyyppiä, eksponentiaaliset uudelleenyritykset, HTTPS suositeltu.
{
"event_type": "document.processed",
"event_id": "a3b7f9c1d4e8b2a6",
"timestamp": "2026-04-17T14:23:11Z",
"subscription_id": 42,
"data": { "pofid": "doc_01HZY8K3…" }
} Johtavien yritysten luottamus maailmanlaajuisesti
22 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/IDP-putki valmistunut 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
Työtilat
2-
työtila.jaettuTyötila jaettu käyttäjälle tai tiimille -
työtila.jaettu_poisTyötilan käyttöoikeus evätty
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ä
Tilaa ["*"] vastaanottaaksesi kaikki tilisi tapahtumat.
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';
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');
}); 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.
Ensimmäinen webhookisi 60 sekunnissa
Luo päätepiste, tilaa API:n kautta, laukaise testitapahtuma. Siinä kaikki.