Ce navigateur ne peut pas afficher la page correctement. Veuillez le mettre à jour vers la dernière version.

Miharu

Guide d’intégration Webhook

Quand vous configurez un Webhook, Miharu envoie ses résultats de surveillance (alertes système) à l’URL de votre choix, sous forme de POST HTTP avec un corps JSON. Vous pouvez ainsi le relier à Zapier, Make, n8n, votre propre serveur et bien d’autres, pour traiter les notifications comme vous l’entendez.

Cette fonctionnalité s’adresse aux développeurs et aux utilisateurs avancés. Un point de terminaison de réception est nécessaire de votre côté.

1. Configuration

  1. 1Dans l’app, ouvrez « Notifications externes » → « Webhook ».
  2. 2Saisissez l’URL du Webhook de destination (elle doit commencer par https://).
  3. 3Si besoin, définissez le filtre de notifications (par exemple, un seul groupe de surveillance).
  4. 4À l’enregistrement, une notification de test confirmant la configuration est envoyée.

2. Spécification HTTP

Méthode
POST
Corps
JSON (UTF-8)
En-têtes principaux
Content-Type: application/json; charset=utf-8 User-Agent: Miharu-Webhook/1.0 X-Miharu-Event: <event> (type d’événement) X-Miharu-Notification-Id: <id> (ID unique de la notification)
Délai d’attente
10 secondes
Condition de réussite
Renvoyer un statut HTTP 2xx
Renvoyez 2xx sans attendre. Si une réponse autre que 2xx survient 10 fois de suite, l’envoi vers ce Webhook s’arrête automatiquement (réactivable en le reconfigurant dans l’app). Effectuez les traitements lourds de façon asynchrone, après avoir répondu.

Aucun en-tête de signature (HMAC ou autre) n’est envoyé. L’URL du Webhook est elle-même le secret (voir la section Sécurité).

3. Payload (champs communs)

source stringValeur fixe "miharu"
version stringVersion de la spécification du payload (actuellement "1")
id stringID unique de la notification (UUID). Un même événement conserve le même id lors des réémissions (à utiliser pour dédupliquer).
timestamp stringHeure de l’événement (ISO 8601, UTC)
language stringCode de langue (en/ja/de/pt/es/fr/ko)
event stringType d’événement (tableau ci-dessous)
monitor object / nullPage surveillée {id, name, url}. null pour les événements system.
message objectTexte d’affichage {body, label}. label vaut null le cas échéant.
detail objectDétails par type d’événement (ci-dessous)

4. Types d’événement et detail

page_changedDétection de modifications (le contenu de la page a changé depuis la dernière vérification){ diff: [...], truncated: bool }
keyword_hitDétection de mots-clés{ hits: [{ keywords: [...], excerpts: [...] }] }
new_linkDétection de nouveaux liens{ links: [{ text, url }] }
price_changedChangement de prix ou de valeur{ target_name, before, after }
text_changedChangement de texte{ target_name, before, after }
systemNotification système (configuration terminée, surveillance en pause, etc.){ kind: string } (chaîne indiquant la nature)

Le diff de page_changed

diff est un tableau des modifications. Chaque élément est l’un des suivants :

Si truncated vaut true, la différence était volumineuse et a été partiellement omise.

5. Exemples

Détection de modifications (page_changed)

JSON
{
  "source": "miharu",
  "version": "1",
  "id": "5c2e1b7a-9f3d-5a6b-8c4e-1d2f3a4b5c6d",
  "timestamp": "2026-05-22T01:23:45Z",
  "language": "fr",
  "event": "page_changed",
  "monitor": { "id": "abc123", "name": "Page produit", "url": "https://example.com/item" },
  "message": { "body": "La page a été mise à jour.", "label": "Mise à jour" },
  "detail": {
    "diff": [
      { "op": "replaced", "before": "Rupture de stock", "after": "En stock" },
      { "op": "added", "text": "Réassort effectué aujourd’hui" }
    ],
    "truncated": false
  }
}

Détection de mots-clés (keyword_hit)

JSON
{
  "source": "miharu", "version": "1", "id": "…",
  "timestamp": "2026-05-22T01:23:45Z", "language": "fr",
  "event": "keyword_hit",
  "monitor": { "id": "abc123", "name": "Page de disponibilité", "url": "https://example.com/stock" },
  "message": { "body": "Un mot-clé a été détecté.", "label": "Mot-clé" },
  "detail": { "hits": [ { "keywords": ["réassort"], "excerpts": ["…réassort effectué aujourd’hui…"] } ] }
}

Détection de nouveaux liens (new_link)

JSON
{
  "…": "…",
  "event": "new_link",
  "message": { "body": "Un nouveau lien a été détecté.", "label": "Nouveau lien" },
  "detail": { "links": [ { "text": "Annonce d’un nouveau produit", "url": "https://example.com/news/123" } ] }
}

Changement de prix ou de valeur (price_changed)

JSON
{
  "…": "…",
  "event": "price_changed",
  "message": { "body": "« Prix » a changé.\n\n1980 → 1480", "label": "Prix/Valeur" },
  "detail": { "target_name": "Prix", "before": "1980", "after": "1480" }
}

6. Idempotence (déduplication)

Un même événement arrive toujours avec le même id, y compris lors des réémissions (la même valeur figure aussi dans l’en-tête X-Miharu-Notification-Id). Utilisez id de votre côté pour éviter de traiter deux fois la même notification.

7. Sécurité

8. Intégrations

Générez une URL de réception dans votre service et enregistrez-la comme URL de Webhook dans Miharu.

9. Limites

10. Résolution des problèmes


Pour toute remarque ou suggestion, écrivez-nous depuis « Avis et suggestions » dans l’app.

Tous les canaux de notification se configurent depuis l’app.Obtenir l’app