38 const sig = req.headers.get('stripe-signature')
39 if (!sig) return new Response('no sig', { status: 400 })
40
41 const event = stripe.webhooks.constructEvent(
42 body, sig, env.STRIPE_WEBHOOK_SECRET
43 )
4444− if (event.type === 'invoice.paid') return
44+ switch (event.type) {
45+ case 'customer.subscription.deleted': {
46+ await downgradeWorkspace(event.data.object)
47+ break
48+ }
49+ case 'customer.subscription.updated': {
50+ await syncSubscriptionState(event.data.object)
51+ break
52+ }
53+ }
54
55 return new Response('ok', { status: 200 })