Kafka Events

12 Kafka event topics produced by the Ticketing Service.

CloudEvents 1.0 Format

All events follow the CloudEvents 1.0 specification with tenant_id as the partition key for multi-tenant isolation.

Event Envelope

CloudEvents 1.0 envelopejson
{
  "specversion": "1.0",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "type": "eventzr.ticketing.purchase.created.v1",
  "source": "ticketing-svc",
  "time": "2026-03-03T12:00:00.000Z",
  "datacontenttype": "application/json",
  "subject": "purchase-uuid",
  "tenantid": "tenant-uuid",
  "data": {
    "id": "purchase-uuid",
    "tierId": "tier-uuid",
    "userId": "user-uuid",
    "quantity": 2,
    "totalAmountCents": 5000,
    "status": "confirmed"
  }
}

Pass Events (2)

TopicDescription
eventzr.ticketing.pass.issued.v1A new pass has been issued after a successful purchase
eventzr.ticketing.pass.updated.v1A pass has been updated (status change, transfer, etc.)

Purchase Events (2)

TopicDescription
eventzr.ticketing.purchase.created.v1A new purchase has been created
eventzr.ticketing.purchase.cancelled.v1A purchase has been cancelled

Transfer Events (4)

TopicDescription
eventzr.ticketing.transfer.initiated.v1A pass transfer has been initiated
eventzr.ticketing.transfer.completed.v1A pass transfer has been completed (accepted)
eventzr.ticketing.transfer.rejected.v1A pass transfer has been rejected by the recipient
eventzr.ticketing.transfer.cancelled.v1A pass transfer has been cancelled by the sender

Refund Events (3)

TopicDescription
eventzr.ticketing.refund.requested.v1A refund has been requested
eventzr.ticketing.refund.approved.v1A refund has been approved by the organizer
eventzr.ticketing.refund.rejected.v1A refund has been rejected by the organizer

Check-in Events (1)

TopicDescription
eventzr.ticketing.checkin.completed.v1A pass has been successfully checked in at the event

Consuming Events

Example: Listen for purchase eventstypescript
import { KafkaBrokerModule } from '@eventzr/kafka';

// In your consumer service:
@KafkaListener({ topic: 'eventzr.ticketing.purchase.created.v1' })
async handlePurchaseCreated(event: CloudEvent<PurchaseCreatedPayload>) {
  const { tenantid, data } = event;
  console.log(`New purchase ${data.id} for tenant ${tenantid}`);
  // Process the purchase event...
}