Un endpoint webhook est une URL sur votre serveur que DynamiHost appelle quand quelque chose se passe sur votre compte. Aujourd'hui, le catalogue d'événements a un seul événement : scan.created, envoyé à chaque scan de vos codes.
En configurer un
- Ouvrez Webhooks dans le tableau de bord et ajoutez l'URL de votre endpoint. Ce doit être une adresse HTTPS publique.
- Enregistrez le secret de signature affiché pour l'endpoint. Vous en avez besoin pour vérifier que les livraisons viennent vraiment de DynamiHost.
- Utilisez le bouton Test pour envoyer une livraison d'exemple et observer le journal de votre serveur.

À quoi ressemble une livraison
POST /your-endpoint HTTP/1.1
Content-Type: application/json
x-dynamihost-event: scan.created
x-dynamihost-signature: 9f2c... (hex HMAC)
{"event": "scan.created", "timestamp": 1792400000, "data": { "...": "scan details" }}Vérifier la signature
La signature est le HMAC-SHA256 hexadécimal de timestamp + "." + raw body, avec pour clé le secret de signature de votre endpoint. Vérifiez-la avant de faire confiance à une livraison :
import { createHmac, timingSafeEqual } from "node:crypto";
function isGenuine(secret, timestamp, rawBody, header) {
const expected = createHmac("sha256", secret)
.update(timestamp + "." + rawBody, "utf8")
.digest("hex");
const a = Buffer.from(expected, "hex");
const b = Buffer.from(header, "hex");
return a.length === b.length && timingSafeEqual(a, b);
}Vérifiez toujours contre le corps brut de la requête, exactement tel que reçu. Analyser et ré-encoder le JSON d'abord changera les octets et chaque vérification de signature échouera.
Réessais et désactivation automatique
- Les livraisons en échec (réponses non 2xx, délais dépassés, hôtes injoignables) sont réessayées avec des délais croissants.
- Un endpoint qui continue d'échouer est désactivé automatiquement après 10 échecs consécutifs, et le compte est notifié par email. Corrigez le récepteur, puis réactivez-le depuis la page Webhooks.
- Faites tourner le secret de signature depuis la même page chaque fois qu'il a pu fuiter. L'ancien secret cesse de fonctionner immédiatement.