Webhooks

Votre site est prévenu quand un numéro est publié, remplacé, retiré ou remis en ligne : pour envoyer une newsletter, mettre à jour une page ou un catalogue.

Configurer

Dans Intégrations, ajoutez l’adresse https de votre point de réception (5 au plus) et choisissez les événements. Chaque point a son secret de signature ; le bouton « Envoyer un test » envoie un événement test.

Événements

TypeQuand
numero.publieUn numéro est publié
numero.remplaceLe PDF d’un numéro est remplacé
numero.retireUn numéro est retiré (hors ligne)
numero.remis_en_ligneUn numéro est remis en ligne

Format

requête reçue
POST /votre/point-de-reception
Content-Type: application/json
Liseuse-Signature: t=1790000000,v1=5f2b…

{
  "id": "evt_8c1f…",
  "type": "numero.publie",
  "cree_le": "2026-10-01T21:49:48.000Z",
  "donnees": {
    "id": "liseuse-pdf.com:inklura-escales-n12",
    "titre": "Escales n°12 · octobre 2026",
    "publication": { "code": "escales", "nom": "Escales" },
    "date": "2026-10-01", "pages": 12,
    "page_publique": "https://liseuse-pdf.com/apercu/inklura-escales-n12"
  }
}

Répondez par un code 2xx en moins de 4 secondes. Sans réponse ou en cas d’erreur 5xx, l’envoi est retenté après 1 minute, 5 minutes, 30 minutes puis 2 heures (même corps, même id, nouvelle signature). Les 50 derniers envois de chaque point de réception sont journalisés dans Intégrations avec leur réponse, et chacun peut être renvoyé (même identifiant id : ignorez les doublons). Vous pouvez aussi relire l’état avec GET /publications.

Vérifier la signature

v1 est le HMAC-SHA256 hexadécimal de <t>.<corps brut> avec votre secret. Refusez les signatures fausses ou de plus de 5 minutes. Les SDK le font pour vous :

réception
// Node.js (Express : express.raw({ type: "application/json" }))
const evenement = LiseusePDF.verifierWebhook(req.body, req.get("Liseuse-Signature"), process.env.LISEUSE_SECRET_WEBHOOK);

// PHP
$evenement = LiseusePDF::verifierWebhook(file_get_contents('php://input'), $_SERVER['HTTP_LISEUSE_SIGNATURE'] ?? '', getenv('LISEUSE_SECRET_WEBHOOK'));

# Python
evenement = LiseusePDF.verifier_webhook(request.get_data(), request.headers["Liseuse-Signature"], secret)