{"lexicon":1,"id":"money.atmosphere.price","defs":{"main":{"type":"record","description":"Public ATM price record describing amount, currency, and billing cadence for a product.","key":"any","record":{"type":"object","required":["productUri","currency","type","createdAt"],"properties":{"productUri":{"type":"string","format":"at-uri"},"lookupKey":{"type":"string","maxLength":200},"nickname":{"type":"string","maxGraphemes":100,"maxLength":1000},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Lowercase ISO 4217 currency code, matching Stripe Price."},"unitAmount":{"type":"integer","minimum":0,"description":"Amount in the smallest unit of currency (e.g. cents for USD). Zero means a free/non-payment price: ATM paid checkout enforces payment minimums (recurring subscriptions especially), so zero-amount prices represent free offerings granted outside the charge flow, never a chargeable price. Required when billingScheme is per-unit (or absent) and customUnitAmount is not enabled; omit for tiered prices, whose amounts live in tiers. When customUnitAmount is enabled, this is the default/preset display amount rather than a fixed charge. Matches Stripe Price.unit_amount, which is null for tiered prices."},"customUnitAmount":{"type":"object","required":["enabled"],"description":"Stripe-compatible customer-chosen amount configuration. When enabled, unitAmount should be treated as the default/preset display amount rather than a fixed charge.","properties":{"enabled":{"type":"boolean"},"preset":{"type":"integer","minimum":0,"description":"Initial amount shown to the buyer, in the smallest unit of currency."},"minimum":{"type":"integer","minimum":1,"description":"Minimum buyer-entered amount, in the smallest unit of currency."},"maximum":{"type":"integer","minimum":1,"description":"Maximum buyer-entered amount, in the smallest unit of currency."}}},"billingScheme":{"type":"string","knownValues":["per-unit","tiered"],"maxLength":32,"description":"Stripe-compatible billing scheme. Supper membership tiers use per-unit; tiered is reserved for quantity or usage based apps."},"tiersMode":{"type":"string","knownValues":["graduated","volume"],"maxLength":32,"description":"Stripe-compatible tier mode when billingScheme is tiered."},"tiers":{"type":"array","maxLength":100,"items":{"type":"ref","ref":"#tier"},"description":"Stripe-compatible quantity or usage tiers for future non-Supper apps. Supper membership tiers are represented as separate recurring prices instead."},"type":{"type":"string","knownValues":["one-time","recurring"],"maxLength":16},"recurring":{"type":"object","required":["interval"],"properties":{"interval":{"type":"string","knownValues":["day","week","month","year"],"maxLength":16},"intervalCount":{"type":"integer","minimum":1,"maximum":1095,"description":"Number of interval units between billings (Stripe allows up to 3 years per cycle, e.g. 156 weeks or 1095 days). Absent means 1, matching Stripe Price.recurring.interval_count."}}},"archived":{"type":"boolean"},"createdAt":{"type":"string","format":"datetime"},"updatedAt":{"type":"string","format":"datetime"}}}},"tier":{"type":"object","properties":{"upTo":{"type":"integer","minimum":1,"description":"Inclusive upper quantity bound for this tier, matching Stripe tiers[].up_to. Omit on the final tier (no upper bound, Stripe's \"inf\")."},"unitAmount":{"type":"integer","minimum":0},"flatAmount":{"type":"integer","minimum":0}}}}}