Catalog and products
Use ATM product, price, discount, and discount-code records as portable commerce refs.
Compatible with the closed-beta ATM app APIs and versioned ATM event headers. Check atm-api-version on every webhook or XRPC receiver event.
Product and price separation
ATM follows a Product/Price model. Product records describe what is sold. Price records describe how that product is paid for. A product can point to a default price by strongRef.
money.atmosphere.product
Public identity for what is sold.
money.atmosphere.price
Amount, currency, one-time or recurring cadence, and custom amount rules.
money.atmosphere.discount
Public offer terms mirrored to processor coupon objects.
money.atmosphere.discountCode
Customer-facing redemption codes and restrictions.
Where records are written
Creator-owned catalog records are written to the creator's PDS. ATM indexes and resolves them during checkout, then mirrors the necessary processor objects privately.
App fulfillment links
Apps can register private fulfillment links for ATM catalog records. This lets ATM show "open in app" handoffs and send product update or archive events without putting app-private fulfillment state on protocol.
Archive, do not delete
Normal creator-facing product removal should archive a product rather than deleting the public record. Archived products stay resolvable for old receipts, payments, attestations, and support workflows.