package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
vayu "github.com/vayucode/vayu-sdks/go"
)
// Register the webhook (run once)
// v := vayu.NewVayu(os.Getenv("VAYU_API_KEY"))
// v.Webhooks.Subscribe(vayu.WebhookSubscribeRequest{
// CallbackUrl: "https://your-server.com/webhooks/vayu",
// EventType: "Overage",
// })
func main() {
http.HandleFunc("/webhooks/vayu", func(w http.ResponseWriter, r *http.Request) {
body, _ := io.ReadAll(r.Body)
var event map[string]interface{}
json.Unmarshal(body, &event)
switch event["type"] {
case "Overage":
fmt.Printf("%s: %.0f/%.0f used (%.0f over limit)\n",
event["productName"], event["consumedAmount"],
event["provisionedAmount"], event["exceededAmount"])
case "InvoiceApproved":
fmt.Printf("Invoice %s for %s: $%.2f %s\n",
event["invoiceId"], event["customerName"],
event["amount"], event["currency"])
case "TierCrossed":
fmt.Printf("%s: customer moved from tier %.0f → %.0f\n",
event["productName"], event["previousTier"], event["currentTier"])
case "AnonymousCustomer":
fmt.Printf("New anonymous customer created: %s\n", event["externalId"])
default:
fmt.Printf("Unhandled event: %s\n", event["type"])
}
w.WriteHeader(http.StatusOK)
})
fmt.Println("Listening on :3000")
http.ListenAndServe(":3000", nil)
}