Plan du site
Français
EUR €
NOUVEAU
Claude & ChatGPT — Surpuissants.
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

Rappels signés HMAC pour chaque événement de document, de tâche, d'espace de travail et d'élément. 22 types d'événements, nouvelles tentatives exponentielles, HTTPS recommandé.

22+
Types d'événements
<1s
Latence
HMAC
Signé SHA-256
POST /votre-point-de-terminaison
En-têtes de la 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.uploaded Nouveau document téléchargé dans un espace de travail
  • document.created Alias pour document.uploaded (compatibilité)
  • document.processed Le pipeline OCR/IDP s'est terminé avec succès
  • document.edited Métadonnées, balises ou contenu mis à jour
  • document.deleted Document déplacé vers la corbeille
  • document.restored Document récupéré depuis la corbeille
  • document.moved Document déplacé entre des espaces de travail
  • document.version_created Nouvelle version ajoutée à un document existant
  • document.lifecycle_changed Statut de rétention/archivage modifié
  • document.comment_added Commentaire publié sur un document
  • document.note_added Note interne jointe
  • document.tag_added Balise attribuée à un document
  • document.legal_hold_placed Gel juridique activé (immuable)
  • document.legal_hold_released Gel juridique levé

Tâches

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

Espaces de travail

2
  • espace.partagé Espace de travail partagé avec un utilisateur ou une équipe
  • espace.non_partagé Accès à l'espace de travail 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

Abonnez-vous à ["*"] pour recevoir tous les événements de votre compte.

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
    }
  }
}
En-têtes de la requête HTTP
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é entreprise

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

Votre premier webhook en 60 secondes

Créez un point de terminaison, abonnez-vous via l'API, déclenchez un événement de test. C'est tout.

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