{"lexicon":1,"id":"money.atmosphere.payment.createSubscriptionChangeSession","defs":{"main":{"type":"procedure","description":"Create a short-lived ATM hosted URL for a previously previewed membership tier change. Requires service auth from the same registered requesting app and a new single-use payer assertion. Before confirmation, ATM revalidates quoteHash, expiry, subscription revision, exact target CIDs, processor price, and any required creator subscription approval. After an exact-payer confirmation, the same method may mint a fresh status/payment-continuation URL for that immutable change without reconfirming or extending the quote. The URL's session id is correlation rather than authority: confirmation additionally requires the payer's matching ATM OAuth browser session. No app-callable confirmation method exists.","input":{"encoding":"application/json","schema":{"type":"object","required":["payerDid","payerAssertion","changeId","quoteHash"],"properties":{"payerDid":{"type":"string","format":"did"},"payerAssertion":{"type":"string","maxLength":4096},"changeId":{"type":"string","maxLength":128},"quoteHash":{"type":"string","minLength":64,"maxLength":64},"returnUrl":{"type":"string","format":"uri","maxLength":1024}}}},"output":{"encoding":"application/json","schema":{"type":"object","required":["change","url","expiresAt"],"properties":{"change":{"type":"ref","ref":"money.atmosphere.payment.defs#subscriptionChange"},"url":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"datetime"}}}},"errors":[{"name":"FeatureUnavailable"},{"name":"AppNotRegistered"},{"name":"RateLimited"},{"name":"InvalidPayerAssertion"},{"name":"PayerDidMismatch"},{"name":"SubscriptionChangeNotFound"},{"name":"SubscriptionNotFound"},{"name":"SubscriptionRevisionMismatch"},{"name":"SubscriptionNotEligible"},{"name":"QuoteMismatch"},{"name":"QuoteExpired"},{"name":"TargetChanged"},{"name":"SubscriptionChangeNotConfirmable"},{"name":"InvalidReturnUrl"},{"name":"SubscriptionChangeFailed"}]}}}