Prepare Products in the App/environment, then create and publish an Offering. Resolution requires entitlements:read; choose Current or a fixed Version deliberately.
Offerings & JSON delivery
Organize Product hierarchies, publish and resolve a fixed Offering Version.
SDK examples target the current API. Check matching SDK versions and HTTP alternatives
Before you start
Offering
An Offering is a published, ordered collection of Products and metadata. Organize Products in up to three levels, with groups in the first two levels.
- Create an Offering and select at most 20 distinct Products from the current App/environment. Organize groups with the drag tree; moving a group preserves its subtree.
- Drafts may contain empty groups. Every group needs a Product before publication. Duplicate Products, duplicate group keys and level four are rejected.
- Publish and optionally select the Version as Current. Resolve explicitly by Current, ID, lookup key or a fixed Version; missing Current never returns the entire catalog.
Resolve and render your own UI
Requires entitlements:read. Browser identity comes from its Customer Token; omit customerId. A trusted backend can supply a verified Customer. The response contains offering, candidates, availability and optional check. Disable Products according to availability/reason when a platform binding is missing or commercial execution is unavailable.
Resolving an Offering does not purchase, grant access or create a Funnel/Paywall. If Product terms differ from published evidence, obtain a new quote or update the Offering rather than displaying old terms and buying new ones.
// SDK variant: grow is an identified client from the Browser SDK reference.const result = await grow.resolveOffering({ selector: { type: "current" }, commerce: { provider: "stripe", currency: "USD" },});const { offering, candidates, availability } = result;// Preserve offering.id (the Version), offering.offeringId and document.items.// Build your UI from the hierarchy; disable Products whose availability is false.// Resolve again by Version when restoring the same selection:await grow.resolveOffering({ selector: { type: "version", versionId: offering.id }, commerce: { provider: "stripe", currency: "USD" },});HTTP operations
Use these operations with your HTTP integration. Each reference includes complete request/response fields and credential requirements; SDK snippets are an alternative when a matching SDK is available.
| Operation | HTTP | Permission |
|---|---|---|
| resolveOffering | POST /api/v1/offerings/resolve | entitlements:read |
Operation and permission
resolveOffering
- HTTP
- POST /api/v1/offerings/resolve
- Permission
- entitlements:read
Related:resolveOffering
Check your result
Expected outcome
Receive a pinned Offering Version, its hierarchy and per-Product availability. Disable unavailable choices and render your own UI or use an independent Paywall.