DeHub-webhooks en meldingen-API
Je server en DeHub praten in beide richtingen. DeHub stuurt ondertekende events naar je webhook, en je server stuurt meldingen naar mensen die je app hebben toegevoegd.
Events ontvangen
Zet webhookUrl in je manifest. DeHub stuurt een POST met deze body:
{ "event": "app_added", "token": "eyJhbGciOiJFUzI1NiIs…" }
| Event | Wanneer |
|---|---|
app_added | Iemand heeft je app toegevoegd. Diegene kan nu je meldingen ontvangen. |
app_removed | Iemand heeft je app verwijderd. Stuur diegene geen meldingen meer. |
payment | Iemand betaalde je app met dehub.actions.pay(). Het token voegt toe: amount, chainId, txHash en de memo. |
tip | Op aanvraag. De eigenaarswallet kreeg een fooi. Voegt toe: actor, amount, currency en de postId als de fooi op een bericht was. |
follow | Op aanvraag. Iemand volgde de eigenaarswallet. Voegt toe: actor. |
mention | Op aanvraag. Iemand noemde de eigenaarswallet. Voegt toe: actor en de postId. |
ping | Een test verstuurd met de Webhook-knop op dehub.io/apps/dev. |
tip, follow en de mention gaan over de wallet die je app bezit, dus sub is die wallet. Zet de gewenste in je manifest en dien het opnieuw in:
"webhookUrl": "https://tipjar.example.com/api/dehub-webhook",
"webhookEvents": ["tip", "follow", "mention"]
token is een ondertekende JWT met typ: "event", de event -naam, sub (de wallet van de gebruiker) en aud (je domein). Controleer hem met dezelfde publieke sleutels als inlogtokens, en negeer elke body waarvan het token niet klopt. Antwoord binnen 5 seconden met een 2xx. Een netwerkfout of 5xx wordt na 3 seconden één keer opnieuw geprobeerd. Elke poging staat onder Webhook op dehub.io/apps/dev. Zie toch dehub.context's client.added als de waarheid wanneer iemand je app opent.
Meldingen versturen
Maak een meldingssleutel op dehub.io/apps/dev. Hij wordt één keer getoond; DeHub bewaart alleen een hash, dus een kwijtgeraakte sleutel wordt vervangen, niet teruggehaald.
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…"]
}'
| Veld | Regels |
|---|---|
notificationId | Verplicht. Maximaal 128 tekens. Hetzelfde id bereikt iemand hooguit één keer per 24 uur. |
title | Verplicht. Maximaal 32 tekens. |
body | Maximaal 128 tekens. |
targetUrl | Een https-link op het domein van je app, geopend als de melding wordt aangetikt. |
wallets | Wie een melding krijgt. Laat het weg om iedereen te bereiken die je app heeft toegevoegd (maximaal 1.000 per aanroep). |
Het antwoord vertelt naar wie is verstuurd en waarom iemand is overgeslagen: { sent, sentTo, skipped: { duplicate, rateLimited, notAdded } }. Iedereen krijgt hooguit één melding per 30 seconden en tien per dag van je app, en alleen als ze hem hebben toegevoegd en de meldingen aan hebben laten staan.
Betaalbewijzen
dehub.actions.pay() wordt pas afgerond nadat DeHub de overdracht on-chain heeft gecontroleerd, en geeft je app een ondertekend bewijs om op je server te controleren. De payment webhook is een tweede kopie voor je server, op de achtergrond verstuurd. Zie Betalingen.
DeHub openen