Step 01
App configuration is coming soon.
App configuration for Atmosphere Tickets within ATM is coming soon. Developers will be able to register the app DID that originates ticket checkout, set the app fee policy, add webhook delivery, and confirm organizer payment-account readiness.
- Use the app DID as the checkout originator.
- Send ticket lifecycle webhooks to your app backend.
- Keep app fees, settlement, refunds, and receipts in ATM.
Step 02
Use the community event graph for events and social context.
Event apps should publish event and RSVP/social intent through
community.lexicon.calendar.event and
community.lexicon.calendar.rsvp whenever those records
can represent the event. Apps keep discovery, feeds, sharing,
comments, follows, organizer pages, SEO, widgets, and the branded
attendee path. Ticket tiers, capacity group labels, check-in list
metadata, and public offers live under the
tickets.atmosphere namespace.
community.lexicon.calendar.event
community.lexicon.calendar.rsvp
tickets.atmosphere.ticketTier
tickets.atmosphere.capacityGroup
tickets.atmosphere.checkInList
tickets.atmosphere.publicOffer
Lexicons
Publish only the ticket catalog pieces apps can safely share.
Atmosphere Tickets lexicons describe public event-scoped catalog
semantics. They do not publish buyer PII, exact inventory ledgers,
checkout holds, issued ticket IDs, QR secrets, attendee answers, or
check-in logs. Because NSIDs use reverse-DNS, the
atmosphere.tickets domain publishes under
tickets.atmosphere.*.
tickets.atmosphere.ticketTier
Public tier metadata linked to a
community.lexicon.calendar.event record and
optional ATM product, price, capacity group, sales window,
order limit, visibility, and availability display hint.
tickets.atmosphere.capacityGroup
Public label and visibility metadata for tiers that share a capacity pool. The authoritative counters and lock state remain private inside Tickets.
tickets.atmosphere.checkInList
Public metadata for a scanner list, including the event, name, description, and optional accepted tier refs. Staff permissions and scan history stay private.
tickets.atmosphere.publicOffer
Intentional public offer metadata for discounts, presales, affiliates, or access windows. Private redemption, abuse, and eligibility checks stay in service state.
Shared definitions are used by XRPC responses and authenticated app views. Treat hold IDs, ticket IDs, checkout sessions, and verification results as service-only values unless a response says otherwise.
tickets.atmosphere.defs#priceAmount
tickets.atmosphere.defs#eventInput
tickets.atmosphere.defs#ticketHoldItemRequest
tickets.atmosphere.defs#ticketHoldItem
tickets.atmosphere.defs#ticketTierSummary
tickets.atmosphere.defs#capacityGroupSummary
tickets.atmosphere.defs#eventSummary
tickets.atmosphere.defs#ticketAvailability
tickets.atmosphere.defs#ticketHoldCheckout
tickets.atmosphere.defs#ticketPresentation
tickets.atmosphere.defs#brand
tickets.atmosphere.defs#issuedTicket
tickets.atmosphere.defs#issuedTicketWithContext
tickets.atmosphere.defs#verificationResult
Step 03
Create holds before checkout.
Paid and scarce tickets start with a private hold. Tickets locks the tier and capacity groups in a transaction, reserves inventory for a short checkout window, and gives ATM a hold reference for checkout.
- Read the public event record, RSVP/social state, and ticket tier metadata.
- Create a hold with app DID, organizer DID, tier, and quantity.
- Send the buyer to ATM checkout with the hold reference.
- Issue tickets only after ATM confirms payment by webhook.
Step 04
Keep private ticket state off protocol.
Buyer PII, exact counters, attendee answers, issued ticket IDs, QR secrets, pass token hashes, and check-in logs stay in private service state. Apps can render attendee and scanner UX through authenticated service calls without exposing secrets in public records.
- Verification is idempotent and audit-friendly.
- Refunds and voids preserve ticket status history.
- Expired or cancelled holds release capacity.
XRPC surface
Use the small service contract for the ticket path.
POST /xrpc/tickets.atmosphere.createTicketTier
POST /xrpc/tickets.atmosphere.updateTicketTier
POST /xrpc/tickets.atmosphere.archiveTicketTier
POST /xrpc/tickets.atmosphere.createCapacityGroup
POST /xrpc/tickets.atmosphere.updateCapacityGroup
GET /xrpc/tickets.atmosphere.getTicketAvailability
POST /xrpc/tickets.atmosphere.createTicketHold
POST /xrpc/tickets.atmosphere.releaseTicketHold
GET /xrpc/tickets.atmosphere.listBuyerTickets
GET /xrpc/tickets.atmosphere.listOrganizerTickets
POST /xrpc/tickets.atmosphere.verifyTicket
POST /xrpc/tickets.atmosphere.checkInTicket
Use ATM for checkout initiation, app fees, settlement, receipts, payment attestations, and payment dashboard visibility.