Developer docs

Integrate Tickets with your Atmosphere app.

Atmosphere Tickets gives event apps a shared ticketing layer for availability, holds, payment-linked issuance, QR pass tokens, verification, refunds, voids, and check-in. Your app keeps the community event graph, social surfaces, organizer workflow, and attendee experience.

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.*.

Record

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.

Record

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.

Record

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.

Record

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.

  1. Read the public event record, RSVP/social state, and ticket tier metadata.
  2. Create a hold with app DID, organizer DID, tier, and quantity.
  3. Send the buyer to ATM checkout with the hold reference.
  4. 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.