SDKsGo SDKAdmin API
Webhook Management
Create and manage webhook endpoints with the Go SDK.
Webhook Management
CreateWebhook()
webhook, err := client.Admin.CreateWebhook(ctx, &avnologyid.CreateWebhookParams{
URL: "https://myapp.com/webhooks/avnology",
Events: []string{"user.created", "user.updated", "user.deleted"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println("Webhook ID:", webhook.ID)
fmt.Println("Secret:", webhook.Secret) // Save for signature verificationSignature verification
import "github.com/avnology/sdk-go/webhook"
func webhookHandler(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
if err != nil {
http.Error(w, "Bad request", http.StatusBadRequest)
return
}
signature := r.Header.Get("X-Avnology-Signature")
valid, err := webhook.VerifySignature(body, signature, os.Getenv("WEBHOOK_SECRET"))
if err != nil || !valid {
http.Error(w, "Invalid signature", http.StatusUnauthorized)
return
}
var event webhook.Event
if err := json.Unmarshal(body, &event); err != nil {
http.Error(w, "Invalid payload", http.StatusBadRequest)
return
}
switch event.Type {
case "user.created":
handleUserCreated(event)
case "user.deleted":
handleUserDeleted(event)
default:
log.Printf("Unhandled event: %s", event.Type)
}
w.WriteHeader(http.StatusOK)
}ListDeliveries()
deliveries, err := client.Admin.ListWebhookDeliveries(ctx, &avnologyid.ListDeliveriesParams{
WebhookID: "wh_abc123",
PageSize: 25,
})ReplayDelivery()
err := client.Admin.ReplayWebhookDelivery(ctx, &avnologyid.ReplayDeliveryParams{
WebhookID: "wh_abc123",
DeliveryID: "del_def456",
})See also
- Webhook verification -- Cross-SDK verification guide