Hand-crafted from their docs, with JSDoc when appropriate and nullability manually added.
import { Webhook } from "@puzzmo/revenue-cat-webhook-types"
const handler = (req: Webhook) => {
switch (req.event.type) {
case "INITIAL_PURCHASE":
// req as WebhookInitialPurchase
break
case "RENEWAL":
// req as WebhookRenewal
break
}
}
Generally speaking, the types are nearly always the same across the webhooks, but it's good to have a centrally maintained source of truth for nullability until there are official types. See here for more discussion.