Plan du site Actualités
Français
EUR €
Actualités
NOUVEAU
Claude & ChatGPT — Supercharged.
Tous les documents · 409+ outils IA · Configuration en 30 s
Claude· ChatGPT· Cursor· Gemini· +50
Se connecter maintenant
Plateforme
Plus de 50 modules et outils IA
Solutions
Industries, processus, risques
Développeur
API, SDK, documentation
Ressources
Tutoriels, blog, support
Société
Équipe, partenaires, carrières
Tarifs
Webhooks

Webhooks Événements en temps réel

Recevez des notifications en temps réel pour tous les événements. Documents traités, OCR terminé, classification effectuée.

20+
Types d'événements
<1 s
Latence
100%
Fiable
POST /votre-point-de-terminaison
En-têtes de requête
X-PaperOffice-Event: document.processed
X-PaperOffice-Event-ID: a3b7f9c1d4e8b2a6
X-PaperOffice-Signature: sha256=9f8a2c…
Corps JSON
{
  "event_type": "document.processed",
  "event_id": "a3b7f9c1d4e8b2a6",
  "timestamp": "2026-04-17T14:23:11Z",
  "subscription_id": 42,
  "data": { "pofid": "doc_01HZY8K3…" }
}
Signature vérifiée HMAC-SHA256 · ID d'événement enregistré

La confiance des entreprises leaders dans le monde

Événements disponibles

22 types d'événements, regroupés par entité

Abonnez-vous à des événements individuels ou utilisez le caractère générique * pour tout recevoir.

Documents

14
  • document.téléversé Nouveau document téléchargé dans un espace de travail
  • document.créé Alias pour document.uploaded (compatibilité)
  • document.traité Pipelines OCR/AI-IDP terminés avec succès
  • document.modifié Métadonnées, balises ou contenu mis à jour
  • document.supprimé Document déplacé vers la corbeille
  • document.restauré Document récupéré depuis la corbeille
  • document.moved Document déplacé entre des espaces de travail
  • version_du_document_créée Nouvelle version ajoutée à un document existant
  • cycle_de_vie_du_document_modifié Statut de rétention/archivage modifié
  • commentaire_ajouté_au_document Commentaire publié sur un document
  • note_ajoutée_au_document Note interne jointe
  • étiquette_ajoutée_au_document Balise attribuée à un document
  • document.mise_en_conservation_appliquée Gel juridique activé (immuable)
  • document.mise_en_conservation_levée Gel juridique levé

Tâches

3
  • job.terminé Tâche asynchrone terminée avec succès
  • job.échec Échec terminal d'une tâche asynchrone
  • progression.tâche Mise à jour de la progression lors de tâches de longue durée

Workspaces

2
  • espace.partagé Workspace partagé avec un utilisateur ou une équipe
  • espace.non_partagé accès à Workspace révoqué

Éléments

3
  • tâche.créée Nouvel élément créé
  • tâche.terminée Élément marqué comme terminé
  • tâche.en_retard L'échéance de l'élément est dépassée
Charge utile et en-têtes

Chaque livraison suit le même schéma

Corps JSON prévisible, cinq en-têtes HTTP signés, horodatages UTC ISO-8601.

Corps de la requête (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 en-têtes de requête
Content-Type application/json Toujours en JSON, encodé UTF-8
User-Agent PaperOffice-Webhook/1.0 Identifiant fixe pour les listes d'autorisation de pare-feu
X-PaperOffice-Event document.traité Type d'événement en cours de livraison
X-PaperOffice-Event-ID a3b7f9c1… ID unique de 128 bits. À utiliser pour l'idempotence.
X-PaperOffice-Subscription-ID 42 ID de l'abonnement recevant l'événement
X-PaperOffice-Signature sha256=… HMAC-SHA256 du corps brut, encodé en hexadécimal
Vérification de la signature

Vérifiez chaque livraison avec HMAC-SHA256

Calculez HMAC-SHA256 sur le corps brut de la requête en utilisant votre secret partagé, puis comparez-le avec X-PaperOffice-Signature en utilisant une comparaison à temps constant (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');
});
Nouvelle tentative et livraison

Trois stratégies de nouvelle tentative, jusqu'à 10 tentatives

Choisissez une politique par abonnement. Chaque tentative est enregistrée avec le code d'état, le corps de la réponse et le timing.

linear

Linéaire

Croissance fixe : 30s, 60s, 90s, 120s, 150s…

none

Aucune

Fire-and-forget. Aucune nouvelle tentative même en cas d'erreur 5xx. Utile pour les webhooks de test.

Succès HTTP 2xx dans votre fenêtre de délai d'attente
Max de nouvelles tentatives 0–10 tentatives (par défaut 5)
Délai d'attente 1 000–30 000 ms par tentative (par défaut 10 000)
Journal de livraison Chaque tentative stockée dans webhook_deliveries pour l'audit
API de gestion

9 points de terminaison sous /latest/webhooks/

CRUD complet pour les abonnements, les journaux de livraison, les abonnements de tâches ponctuels et un point de terminaison de test — tous OAuth2 Bearer, tous prêts pour MCP.

POST /webhooks/subscribe Créer un nouvel abonnement (illimité par compte) po_webhooks_subscribe
GET /webhooks/list Lister tous les abonnements du compte po_webhooks_list
POST /webhooks/update Mettre à jour un abonnement existant po_webhooks_update
POST /webhooks/delete Supprimer doucement un abonnement (le journal de livraison est conservé) po_webhooks_delete
GET /webhooks/deliveries Récupérer le journal de livraison avec des filtres (event_type, success_only) po_webhooks_deliveries
POST /webhooks/test Envoyer un événement test.ping pour vérifier la livraison po_webhooks_test
POST /webhooks/subscribe-job Webhook ponctuel pour un job_id spécifique po_webhooks_subscribe_job
GET /webhooks/job-subscriptions Lister les abonnements limités aux tâches po_webhooks_job_subscriptions
GET /webhooks/info Événements disponibles, points de terminaison, politiques de nouvelle tentative, informations de signature po_webhooks_info
sécurité Enterprise

Renforcé par conception

HMAC-SHA256

Chaque charge utile est signée avec votre secret. La comparaison à temps constant est obligatoire.

Protection SSRF

IP privées/internes, localhost et points de terminaison de métadonnées cloud bloqués lors de l'abonnement et de la distribution.

Sûr contre le rebondissement DNS

IP revalidée au moment de la distribution, épinglée via CURLOPT_RESOLVE.

HTTPS fortement préféré

http et https acceptés. HTTPS recommandé pour la production.

Idempotence Event-ID

Chaque livraison porte un X-PaperOffice-Event-ID unique. Dédupliquez de votre côté.

Piste d'audit complète

Toutes les tentatives sont enregistrées : code d'état, corps de la réponse, timing, message d'erreur.

Limites

Abonnements illimités, comportement de livraison entièrement configurable

Abonnements / compte
Abonnements de tâches actifs
10 000 ms
Délai d'attente par défaut
5
Nombre maximal de nouvelles tentatives par défaut

Disponible sur tous les plans. Paiement à l'usage : 1 crédit par livraison réussie (HTTP 2xx). Les nouvelles tentatives, les événements de test et les livraisons échouées sont gratuits.

Commencer maintenant

Recevoir des événements ?

Configurez vos webhooks.

HMAC-SHA256 Attente exponentielle Piste d'audit complète