Webhooks et API de notifications DeHub
Votre serveur et DeHub dialoguent dans les deux sens. DeHub envoie des événements signés à votre webhook, et votre serveur envoie des notifications aux personnes qui ont ajouté votre app.
Recevoir des événements
Réglez webhookUrl dans votre manifeste. DeHub envoie un POST avec ce corps :
{ "event": "app_added", "token": "eyJhbGciOiJFUzI1NiIs…" }
| Événement | Quand |
|---|---|
app_added | Quelqu’un a ajouté votre app. Cette personne peut maintenant recevoir vos notifications. |
app_removed | Quelqu’un a retiré votre app. Arrêtez de lui envoyer des notifications. |
payment | Quelqu'un a payé votre app avec dehub.actions.pay(). Le jeton ajoute amount, chainId, txHash et le memo. |
tip | Sur demande. Le portefeuille propriétaire a reçu un pourboire. Ajoute actor, amount, currency et le postId quand le pourboire portait sur une publication. |
follow | Sur demande. Quelqu'un a suivi le portefeuille propriétaire. Ajoute actor. |
mention | Sur demande. Quelqu'un a mentionné le portefeuille propriétaire. Ajoute actor et le postId. |
ping | Un test envoyé depuis le bouton Webhook sur dehub.io/apps/dev. |
tip, follow et le mention concernent le portefeuille propriétaire de votre app, donc sub est ce portefeuille. Indiquez ceux que vous voulez dans votre manifeste, puis soumettez-le à nouveau :
"webhookUrl": "https://tipjar.example.com/api/dehub-webhook",
"webhookEvents": ["tip", "follow", "mention"]
token est un JWT signé avec typ: "event", le nom event de l’événement, sub (le portefeuille de l’utilisateur) et aud (votre domaine). Vérifiez-le avec les mêmes clés publiques que les jetons de connexion, et ignorez tout corps dont le jeton n'est pas vérifié. Répondez en 5 secondes avec un 2xx. Une erreur réseau ou un 5xx est relancé une fois après 3 secondes. Chaque tentative est listée sous Webhook sur dehub.io/apps/dev. Considérez quand même dehub.context's client.added comme la référence quand quelqu’un ouvre votre app.
Envoyer des notifications
Créez une clé de notification sur dehub.io/apps/dev. Elle ne s’affiche qu’une fois ; DeHub n’en garde qu’une empreinte, donc une clé perdue est remplacée, pas récupérée.
curl -X POST https://aigxuutjaqsywioxjefr.supabase.co/functions/v1/miniapp-notify \
-H 'Authorization: Bearer dhmk_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{
"notificationId": "turn-42",
"title": "Your turn",
"body": "Sam played a move. Tap to answer.",
"targetUrl": "https://chess.example.com/game/42",
"wallets": ["0xabc…"]
}'
| Champ | Règles |
|---|---|
notificationId | Obligatoire. 128 caractères maximum. Le même id atteint une personne au plus une fois en 24 heures. |
title | Obligatoire. 32 caractères maximum. |
body | 128 caractères maximum. |
targetUrl | Un lien https sur le domaine de votre app, ouvert quand on touche la notification. |
wallets | Qui notifier. Sans ce champ, tous ceux qui ont ajouté votre app sont notifiés (jusqu’à 1 000 par appel). |
La réponse indique à qui l’envoi a été fait et pourquoi certaines personnes ont été ignorées : { sent, sentTo, skipped: { duplicate, rateLimited, notAdded } }. Chaque personne reçoit au plus une notification toutes les 30 secondes et dix par jour de votre app, et seulement si elle l’a ajoutée et a laissé ses notifications activées.
Reçus de paiement
dehub.actions.pay() ne se résout qu'après que DeHub a vérifié le transfert sur la chaîne, et remet à votre app un reçu signé à vérifier sur votre serveur. Le webhook payment est une seconde copie pour votre serveur, envoyée en arrière-plan. Voir Paiements.
Ouvrir DeHub