Sitemap
Nederlands
EUR €
NIEUW
Claude & ChatGPT — Op volle kracht.
Alle documenten · 409+ AI-tools · 30 sec setup
Claude· ChatGPT· Cursor· Gemini· +50
Nu verbinden
Platform
50+ AI-modules en tools
Oplossingen
Branches, processen, risico's
Ontwikkelaar
API, SDK's, documentatie
Bronnen
Tutorials, blog, ondersteuning
Bedrijf
Team, partners, carrières
Prijzen
Webhooks

Webhooks Real-time gebeurtenissen

HMAC-ondertekende callbacks voor elke gebeurtenis van documenten, taken, werkruimten en opdrachten. 22 gebeurtenistypen, exponentiële opnieuw proberen-pogingen, HTTPS aanbevolen.

22+
Gebeurtenistypen
<1s
Latentie
HMAC
SHA-256 ondertekend
POST /uw-eindpunt
Verzoekheaders
X-PaperOffice-Event: document.processed
X-PaperOffice-Event-ID: a3b7f9c1d4e8b2a6
X-PaperOffice-Signature: sha256=9f8a2c…
JSON-body
{
  "event_type": "document.processed",
  "event_id": "a3b7f9c1d4e8b2a6",
  "timestamp": "2026-04-17T14:23:11Z",
  "subscription_id": 42,
  "data": { "pofid": "doc_01HZY8K3…" }
}
Handtekening geverifieerd HMAC-SHA256 · Gebeurtenis-ID gelogd

Vertrouwd door toonaangevende bedrijven wereldwijd

Beschikbare gebeurtenissen

22 gebeurtenistypen, gegroepeerd per entiteit

Abonneer u op individuele gebeurtenissen of gebruik het jokerteken * voor alles.

Documenten

14
  • document.uploaded Nieuw document geüpload naar een werkruimte
  • document.created Alias voor document.uploaded (compatibiliteit)
  • document.processed OCR/IDP-pipeline succesvol voltooid
  • document.bewerkt Metadata, tags of inhoud bijgewerkt
  • document.verwijderd Document verplaatst naar prullenbak
  • document.hersteld Document hersteld vanuit prullenbak
  • document.verplaatst Document verplaatst tussen werkruimten
  • document.versie_aangemaakt Nieuwe versie toegevoegd aan een bestaand document
  • document.levenscyclus_gewijzigd Bewaar-/archiveringsstatus gewijzigd
  • document.opmerking_toegevoegd Reactie geplaatst op een document
  • document.notitie_toegevoegd Interne notitie bijgevoegd
  • document.label_toegevoegd Tag toegewezen aan een document
  • document.juridische_bevriezing_geplaatst Juridische vergrendeling geactiveerd (onveranderlijk)
  • document.juridische_bevriezing_opgeheven Juridische vergrendeling opgeheven

Taken

3
  • taak.voltooid Asynchrone taak succesvol voltooid
  • taak.mislukt Asynchrone taak definitief mislukt
  • taak.voortgang Voortgangsupdate tijdens langlopende taken

Werkruimten

2
  • werkruimte.gedeeld Werkruimte gedeeld met een gebruiker of team
  • werkruimte.delen_opgeheven Toegang tot werkruimte ingetrokken

Opdrachten

3
  • taak.aangemaakt Nieuwe opdracht aangemaakt
  • taak.voltooid Opdracht gemarkeerd als voltooid
  • taak.verlopen Opdracht heeft de vervaldatum overschreden

Abonneer u op ["*"] om elke gebeurtenis van uw account te ontvangen.

Payload en headers

Elke levering volgt hetzelfde schema

Voorspelbare JSON-body, vijf ondertekende HTTP-headers, ISO-8601 UTC-tijdstempels.

Verzoekbody (JSON)
{
  "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
    }
  }
}
HTTP-verzoekheaders
Content-Type application/json Altijd JSON, UTF-8 gecodeerd
User-Agent PaperOffice-Webhook/1.0 Vaste identifier voor firewall-toestemmingslijsten
X-PaperOffice-Event document.verwerkt Gebeurtenistype dat wordt geleverd
X-PaperOffice-Event-ID a3b7f9c1… 128-bit unieke ID. Gebruik voor idempotentie.
X-PaperOffice-Subscription-ID 42 ID van het abonnement dat de gebeurtenis ontvangt
X-PaperOffice-Signature sha256=… HMAC-SHA256 van de ruwe body, hex-gecodeerd
Handtekeningverificatie

Verifieer elke levering met HMAC-SHA256

Bereken HMAC-SHA256 over de ruwe verzoekbody met uw gedeelde geheim en vergelijk dit vervolgens met X-PaperOffice-Signature met behulp van een constant-tijdvergelijking (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');
});
Opnieuw proberen en levering

Drie opnieuw proberen-strategieën, tot 10 pogingen

Kies een beleid per abonnement. Elke poging wordt gelogd met statuscode, antwoordbody en timing.

linear

Lineair

Vaste groei: 30s, 60s, 90s, 120s, 150s…

none

Geen

Fire-and-forget. Geen opnieuw proberen, zelfs niet bij 5xx. Handig voor test-webhooks.

Succes HTTP 2xx binnen uw time-outvenster
Max. opnieuw proberen 0–10 pogingen (standaard 5)
Time-out 1.000–30.000 ms per poging (standaard 10.000)
Leveringslogboek Elke poging opgeslagen in webhook_deliveries voor audit
Beheer-API

9 eindpunten onder /latest/webhooks/

Volledige CRUD voor abonnementen, leveringslogboeken, eenmalige taakabonnementen en een test-eindpunt — allemaal OAuth2 Bearer, allemaal MCP-gereed.

POST /webhooks/subscribe Maak een nieuw abonnement aan (onbeperkt per account) po_webhooks_subscribe
GET /webhooks/list Toon alle abonnementen van het account po_webhooks_list
POST /webhooks/update Werk een bestaand abonnement bij po_webhooks_update
POST /webhooks/delete Zacht verwijderen van een abonnement (leveringslogboek behouden) po_webhooks_delete
GET /webhooks/deliveries Haal leveringslogboek op met filters (event_type, success_only) po_webhooks_deliveries
POST /webhooks/test Verzend een test.ping-gebeurtenis om de levering te verifiëren po_webhooks_test
POST /webhooks/subscribe-job Eenmalige webhook voor een specifieke job_id po_webhooks_subscribe_job
GET /webhooks/job-subscriptions Toon taak-gebonden abonnementen po_webhooks_job_subscriptions
GET /webhooks/info Beschikbare gebeurtenissen, eindpunten, opnieuw proberen-beleidsregels, handtekeninginformatie po_webhooks_info
Enterprise-beveiliging

Ontworpen voor verharding

HMAC-SHA256

Elke payload ondertekend met uw geheim. Constant-tijdvergelijking verplicht.

SSRF-bescherming

Privé-/interne IP's, localhost en cloud-metadata-eindpunten geblokkeerd bij abonneren en verzenden.

Veilig tegen DNS-rebinding

IP opnieuw gevalideerd op verzendtijdstip, vastgezet via CURLOPT_RESOLVE.

HTTPS sterk aanbevolen

http en https geaccepteerd. HTTPS aanbevolen voor productie.

Event-ID idempotentie

Elke levering bevat een unieke X-PaperOffice-Event-ID. Dedupliceer aan uw kant.

Volledig audittrail

Alle pogingen gelogd: statuscode, antwoordbody, timing, foutmelding.

Limieten

Onbeperkte abonnementen, leveringsgedrag volledig configureerbaar

Abonnementen / account
Actieve taakabonnementen
10.000 ms
Standaard time-out
5
Standaard max. opnieuw proberen

Beschikbaar op alle abonnementen. Pay-per-use: 1 credit per succesvolle levering (HTTP 2xx). Opnieuw proberen, testgebeurtenissen en mislukte leveringen zijn gratis.

Nu beginnen

Uw eerste webhook in 60 seconden

Maak een eindpunt aan, abonneer via API, vuur een testgebeurtenis af. Dat is alles.

HMAC-SHA256 Exponentiële back-off Volledig audittrail