Dart SDK - Webhooks#
Outbound HTTP notifications with HMAC-signed deliveries.
Create and manage#
final hook = await db.webhooks.create(
name: 'order.created',
url: 'https://myapp.com/hooks/orders',
events: ['order.created'],
secret: 'signing-secret', // used to HMAC-sign deliveries
);
await db.webhooks.list();
await db.webhooks.update(hookId, enabled: false);
await db.webhooks.remove(hookId);
DARTDeliveries#
await db.webhooks.listDeliveries(hookId);
await db.webhooks.send(hookId); // test delivery
await db.webhooks.retryDelivery(hookId, deliveryId);
DARTVerifying deliveries on your server#
Every delivery includes an X-Afribase-Signature header in the form
sha256=<hex> (HMAC-SHA256 of the body with the webhook's secret), plus
X-Afribase-Event and X-Afribase-Delivery headers.
import 'dart:convert';
import 'package:crypto/crypto.dart';
bool verifyWebhook(String rawBody, String signatureHeader, String secret) {
final expected = Hmac(sha256, utf8.encode(secret))
.convert(utf8.encode(rawBody))
.toString();
final received = signatureHeader.replaceFirst(RegExp('^sha256='), '');
return expected == received;
}
DARTNext: Edge functions.