{"lexicon":1,"id":"money.atmosphere.catalog.registerAppLink","defs":{"main":{"type":"procedure","description":"Private app callback that links an ATM product record to the app surface responsible for fulfillment. Requires a service-auth JWT signed by the app DID.","input":{"encoding":"application/json","schema":{"type":"object","required":["creatorDid","product"],"nullable":["appProductRef","fulfillmentUrl","appLabel","appUrl","appIconUrl"],"properties":{"creatorDid":{"type":"string","format":"did"},"product":{"type":"ref","ref":"com.atproto.repo.strongRef"},"appProductRef":{"type":"object","properties":{"type":{"type":"string","knownValues":["shop","commission","membership","membership_tier","custom"],"maxLength":32},"id":{"type":"string","maxLength":512},"uri":{"type":"string","format":"at-uri"},"cid":{"type":"string","format":"cid"}}},"fulfillmentUrl":{"type":"string","format":"uri"},"appLabel":{"type":"string","maxGraphemes":80,"maxLength":800},"appUrl":{"type":"string","format":"uri"},"appIconUrl":{"type":"string","format":"uri"},"role":{"type":"string","knownValues":["fulfillment","storefront","analytics"],"maxLength":32},"status":{"type":"string","knownValues":["active","archived"],"maxLength":32}}}},"output":{"encoding":"application/json","schema":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"}}}},"errors":[{"name":"CreatorProductMismatch","description":"Product URI authority must match creatorDid."},{"name":"RecipientAppApprovalRequired","description":"The creator has not approved this app for the linked payment type."},{"name":"RecipientAppApprovalBlocked","description":"The creator blocked this app."},{"name":"RecipientAppReapprovalRequired","description":"The app's approval terms changed and need creator re-approval."},{"name":"RegistrationFailed","description":"The product app link could not be registered."}]}}}