Get the current subscription status and transfer balance. This is also the PLAN response of the onboarding program: it carries the caller's regional price_tier, the welcome onboarding_offer (null when none was issued) and the experiments assignments per surface.
Regional pricing rule (mmm/onboarding/PLAN.md): the tier is resolved, in order, from storefront_country (the store's storefront country, sent by the Apple and Google apps), the Stripe customer's billing country when a customer exists, else the client IP as a DISPLAY ESTIMATE (price_tier.estimate: true). The store charges its own storefront's price; the Stripe tier actually charged is finalized from the card's billing country once the payment method is attached, before the trial ends. The regional price is tied to the storefront/billing country, never to a VPN exit.
ISO 3166-1 alpha-2 (or alpha-3) storefront country of the app's store (StoreKit Storefront.countryCode, Play billing region).
Responses1 status · show schema
The initial data balance in bytes for the period.
The current data balance in bytes.
Data tied up in pending contracts.
ONE of the active subscriptions, or absent. Shipped clients read this through the sdk and treat it as the plan indicator, so it keeps its single-value meaning and cannot name more than one store; use subscriptions for the full set.
udid
EVERY store currently billing this network, one entry per store, so a caller can offer a cancel path for each -- a user subscribed on two stores is charged by both and has to cancel in both places. Not gated on Pro: an active renewal row means a store is taking money now, which is exactly when the cancel path must be reachable.
udid
udid
udid
The balance carries revenue. Not the same as pro -- a data code is paid but data-only.
The balance carries the Pro entitlement. A network is Pro exactly when it has an in-window balance with this set.
always USD
how the country was resolved
true when the tier is a display estimate (ip or default)
The caller's welcome offer; null when none was issued.
When the offer was first redeemed; null until then.
The store of the first redemption; null until then.
The caller's variant per experiment surface, keyed by surface (offer.in_app, email.sequence, offer.intro_step, offer.final_screen, offer.email, offer.account, email., cadence). Only running experiments appear. A network keeps its variant for the life of an experiment (hash(networkid, experimentid), server-side). The variant holdout on offer.in_app means: show the regular plan picker, no offer screen, do not issue the offer in-app. Stamp the surface's experiment_id/variant on offer.screen.shown.
a registry variant name; holdout means show nothing