Aller au contenu principal
Fonctionne dans Claude · Vérifié par Anthropic
Aperçu Aperçu Actualités Actualités
Partager

Webhooks et événements

Événements en temps réel. Livraison signée HMAC.

PaperOffice appelle votre point de terminaison dès qu'un document, un job, un espace de travail ou une tâche change. Aucun polling requis.

22 types d'événements, signature HMAC-SHA256, trois stratégies de retry et un journal de livraison par tentative.

HMAC-SHA256 à chaque livraison Jusqu'à 10 répétitions (standard 5) Idempotent par ID d'événement
Événements en temps réel. Livraison signée HMAC.

Événements disponibles

22 événements, regroupés par entité

Abonnez-vous à des événements individuels ou utilisez le joker * pour tous.

Documents

14
  • document.uploaded Nouveau document téléchargé dans un espace de travail
  • document.created Alias pour document.uploaded (compatibilité)
  • document.processed Pipeline OCR/AI-IDP terminé avec succès
  • document.edited Document modifié : métadonnées, étiquettes ou contenu mis à jour
  • document.deleted Document supprimé ; delete_mode indique trash (corbeille dans Business et Compliance) ou instant (définitivement dans la valeur par défaut)
  • document.restored Document restauré depuis la corbeille (Business et Compliance)
  • document.moved Document déplacé entre des espaces de travail
  • document.version_created Nouvelle version d'un document existant
  • document.lifecycle_changed Statut de conservation/archivage modifié
  • document.comment_added Commentaire ajouté à un document
  • document.note_added Note interne jointe
  • document.tag_added Étiquette attribuée à un document
  • document.legal_hold_placed Conservation légale activée (immuable)
  • document.legal_hold_released Conservation légale levée

Tâches

3
  • job.completed Tâche asynchrone terminée avec succès
  • job.failed Tâche asynchrone échouée définitivement
  • job.progress Mise à jour de l'avancement pour les tâches longues

Workspaces

2
  • workspace.shared Espace de travail partagé avec un utilisateur ou une équipe
  • workspace.unshared Accès à l'espace de travail révoqué

Tâches

3
  • task.created Nouvelle tâche créée
  • task.completed Tâche marquée comme terminée
  • task.overdue Date limite de la tâche dépassée

Payload et en-tête

Chaque livraison suit le même schéma

Corps JSON prévisible, en-têtes HTTP fixes, horodatage UTC ISO-8601.

Corps de la requête

{
  "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

En-tête Valeur d'exemple Signification
Content-Type application/json Toujours JSON, encodé en UTF-8
User-Agent PaperOffice-Webhook/1.0 Identifiant fixe pour les listes autorisées du pare-feu
X-PaperOffice-Event document.processed Type d'événement livré
X-PaperOffice-Event-ID a3b7f9c1… ID unique de 128 bits. Utilisez-le comme clé d'idempotence.
X-PaperOffice-Subscription-ID 42 ID de l'abonnement qui reçoit l'événement
X-PaperOffice-Signature sha256=… HMAC-SHA256 du corps brut, encodé en hexadécimal
cURL
curl -X POST "https://api.paperoffice.ai/latest/webhooks/subscribe" \  -H "Authorization: Bearer po_ut_YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "name": "My Production Webhook",    "url": "https://yourdomain.com/webhooks/paperoffice",    "events": ["document.processed", "job.completed", "job.failed"],    "retry_policy": "exponential",    "max_retries": 5,    "timeout_ms": 10000  }'

Vérification de la signature

Vérifiez chaque livraison avec HMAC-SHA256

Calculez l'HMAC-SHA256 sur le corps brut de la requête avec votre secret partagé et comparez le résultat à X-PaperOffice-Signature — impérativement avec une exécution à temps constant.

  • Comparaison à temps constant

    hash_equals, hmac.compare_digest ou crypto.timingSafeEqual : La comparaison ne doit pas révéler de différences de temps d'exécution.

  • Signer le corps brut

    La signature s'applique au corps de la requête non modifié. Analysez le JSON uniquement après la vérification, sinon le hash sera différent.

  • Abonnement via API

    POST /latest/webhooks/subscribe avec name, url et events. Si secret reste vide, PaperOffice le génère et le renvoie une seule fois.

Retry et livraison

Trois stratégies de retry, jusqu'à 10 tentatives

Choisissez la politique par abonnement. Chaque tentative est journalisée avec le code de statut, le corps de la réponse et la mesure du temps.

  • Par défaut exponential

    Exponentiel (par défaut)

    L'intervalle entre les tentatives double après chaque échec.

  • linear

    Linéaire

    L'intervalle entre les tentatives augmente d'un pas fixe.

  • none

    Aucune

    Aucune répétition, même en cas d'erreurs 5xx (envoyer et oublier). Utile pour les hooks de test.

  • Succès HTTP 2xx dans la fenêtre de délai d'attente
  • Nombre max. de répétitions Jusqu'à 10 répétitions (par défaut 5)
  • Délai d'expiration 1 000 à 30 000 ms par tentative (valeur par défaut 10 000). La première tentative de livraison est limitée à 2 ou 5 secondes selon l'événement, les répétitions utilisent la valeur complète.
  • Journal de livraison Chaque tentative est enregistrée ; le journal reste disponible même après la suppression de l'abonnement.

Gestion-API

Cinq points de terminaison sous /latest/webhooks/

Créer, lister, mettre à jour et supprimer des abonnements — incluant un point de terminaison de test. Chaque appel nécessite un jeton Bearer.

  • POST /webhooks/subscribe Créer un abonnement ; les payloads sont signés avec HMAC-SHA256 Outil MCPpo-webhooks-subscribe
  • GET /webhooks/list Lister tous les abonnements webhook du compte Outil MCPpo-webhooks-list
  • POST /webhooks/update Mettre à jour l'URL, les événements, les en-têtes, la politique de nouvelle tentative ou le statut actif Outil MCPpo-webhooks-update
  • POST /webhooks/delete Supprimer l'abonnement ; le journal de livraison reste intact Outil MCPpo-webhooks-delete
  • POST /webhooks/test Envoyer un événement de test à un abonnement et vérifier la livraison Outil MCPpo-webhooks-test

Sécurité

Durci dès la conception

Six mécanismes qui s'activent à chaque livraison — du côté de PaperOffice et du vôtre.

  • HMAC-SHA256

    Chaque livraison est signée avec votre secret. La comparaison doit impérativement s'effectuer en temps constant.

  • Protection SSRF

    Les adresses IP privées et internes, le localhost et les points de terminaison de métadonnées cloud sont bloqués lors de l'abonnement et de l'envoi.

  • Sécurisé contre le DNS Rebinding

    L'adresse cible est vérifiée à nouveau au moment de la livraison.

  • HTTPS recommandé

    http et https sont acceptés. Pour la production, nous recommandons HTTPS.

  • Idempotence par ID d'événement

    Chaque livraison inclut un X-PaperOffice-Event-ID unique. Désactivez les doublons de votre côté.

  • Journal de livraison complet

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

Limites

Comportement de livraison configurable par abonnement

Vous définissez toutes les valeurs lors de la création ou ultérieurement via /webhooks/update — par abonnement, et non par compte.

  • 0–10 Répétitions par livraison (par défaut 5)
  • 1.000–30.000 ms Délai d'expiration par tentative (par défaut 10 000, première tentative 2–5 s)
  • 3 Politiques de retry : none, linear, exponential
  • HMAC-SHA256 Signature à chaque livraison

Les webhooks sont disponibles à partir du plan Professional. Le tableau comparatif des prix indique quel plan convient à votre configuration.

Questions

Questions fréquentes sur les webhooks

Comment vérifier une livraison ?

Calculez l'empreinte HMAC-SHA256 du corps brut de la requête à l'aide du secret de votre abonnement et comparez le résultat en temps constant avec l'en-tête X-PaperOffice-Signature (format sha256=<hex>). Si la signature ne correspond pas, répondez avec un code HTTP 401 et ne traitez pas le corps de la requête.

D'où vient le secret ?

Lors de la création de l'abonnement via POST /latest/webhooks/subscribe. Laissez le champ secret vide, PaperOffice génère un secret et le renvoie une seule fois dans la réponse. Vous pouvez le remplacer à tout moment via POST /latest/webhooks/update.

Que se passe-t-il si mon point de terminaison ne répond pas ?

Chaque réponse en dehors de HTTP 2xx ou un délai d'expiration compte comme une tentative échouée. Selon la politique de retry (exponentielle, linéaire, aucune), PaperOffice répète la livraison jusqu'au nombre défini de tentatives (0–10, par défaut 5). Chaque tentative est enregistrée dans le journal de livraison avec le code d'état, la réponse et l'horodatage.

Une même livraison peut-elle arriver deux fois ?

Oui, cela est possible lors des tentatives de retry après un délai d'expiration. Veuillez donc effectuer la déduplication via X-PaperOffice-Event-ID : l'ID est unique par événement et convient comme clé d'idempotence dans votre base de données.

Quels événements puis-je abonner ?

22 types d'événements provenant de quatre groupes : Documents, Jobs, Espaces de travail et Tâches. Vous pouvez vous abonner à des événements individuels ou à tous avec le joker *. Utilisez des filtres (par exemple workspace_id ou pofid) pour restreindre davantage un abonnement.

Dans quel plan les webhooks sont-ils inclus ?

Les webhooks sont disponibles à partir du plan Professional. Le plan adapté à votre configuration est indiqué dans le tableau des prix.

PaperOffice AI · Problem Solver

Racontez-nous, ce qui vous fait perdre du temps au quotidien.

Décrivez simplement. Aucun terme technique n'est nécessaire.

Ou commencez avec un exemple

Comment souhaitez-vous utiliser PaperOffice ?

Ordinateur et smartphone sont connectés : espace de travail sur l'ordinateur, capture sur le téléphone.

Où souhaitez-vous commencer ?

L'espace de travail complet est optimisé pour l'ordinateur. La version mobile convient pour capturer, vérifier et approuver des documents.

S’inscrire gratuitement app.paperoffice.ai

Commencer sur l'ordinateur

Nous vous envoyons votre lien d'accès personnel par e-mail.