Reference
#Monetization Subscriptions
You can programmatically access details of your users subscription when using Zuplo monetization. Here's an example inbound policy that logs the subscription details.
import { MonetizationInboundPolicy, ZuploContext, ZuploRequest, } from "@zuplo/runtime"; export default async function policy( request: ZuploRequest, context: ZuploContext, options: never, policyName: string, ) { const subscription = MonetizationInboundPolicy.getSubscription(context); context.log.info(subscription); return request; }ts
This would log the following structure
{ "id": "sbsc_n8y6RkUYmAthRGt4tUM8EePt", "planIds": ["plan_1GkE37DZRQs29J2PpXC0sTjB"], "planExternalIds": ["prod_PbcDg7ohd8QzCj"], "createdOn": "2024-02-23T21:16:59Z", "updatedOn": "2024-02-23T21:16:59Z", "quotaResetAnchor": "2024-02-23T21:16:59Z", "status": "active", "type": "periodic", "renewalStrategy": "monthly", "region": "us-central1", "customerKey": "0bcdec7c-ee20-439f-914a-a38f5d8256b3", "subscriptionExternalId": "sub_1On673I1Q9RiM35BdA28auPZ", "customerExternalId": "cus_PcKmSeuE3fiVAY", "metadata": { "subscriber": { "email": "example@example.com", "sub": "auth0|65d9dab23c1p7e25f84b8b09" } }, "nextBillingCycle": "2024-03-23T00:00:00Z", "meters": { "requests": { "max": 10, "available": 10 } } }json
If no subscription is available, getSubscription
will return undefined
.
Note how you can see details about the subscriber (e-mail and JWT 'sub' from the dev-portal sign-in) and the current consumption level of the meters specified on their plan.
This information is only available in the pipeline after the
MonetizationInboundPolicy
has executed (this loads the subscription data).