Event Catalog¶
All domain events flow through the Kafka event bus (ADR-0004). Events are versioned in contracts/event-schemas/ and must conform to the canonical JSON Schema before a producer is approved to publish.
Orders Events¶
| Event | Topic | Owner | Schema |
|---|---|---|---|
OrderPlaced |
chakra.orders.placed |
orders-team | OrderPlaced.json |
OrderAwaitingPayment |
chakra.orders.awaiting-payment |
orders-team | OrderAwaitingPayment.json |
OrderConfirmed |
chakra.orders.confirmed |
orders-team | OrderConfirmed.json |
OrderCancelled |
chakra.orders.cancelled |
orders-team | OrderCancelled.json |
Retention: 7 days (transactional events). The EventStoreDB stream is the permanent record; Kafka is for downstream integration.
Inventory Events¶
| Event | Topic | Owner | Schema |
|---|---|---|---|
StockReserved |
chakra.inventory.reserved |
inventory-team | StockReserved.json |
StockReleased |
chakra.inventory.released |
inventory-team | StockReleased.json |
StockReplenished |
chakra.inventory.replenished |
inventory-team | StockReplenished.json |
Retention: 7 days. The Redis CQRS projection is rebuilt from these events on failure.
Customers Events¶
| Event | Topic | Owner | Schema |
|---|---|---|---|
CustomerRegistered |
chakra.customers.registered |
customers-team | CustomerRegistered.json |
AddressUpdated |
chakra.customers.address-updated |
customers-team | AddressUpdated.json |
AccountSuspended |
chakra.customers.suspended |
customers-team | AccountSuspended.json |
Retention: 30 days (GDPR — customers team owns deletion compliance).
Event Consumption Map¶
| Consumer | Events consumed | Purpose |
|---|---|---|
| Inventory Service | OrderPlaced |
Trigger stock reservation |
| Inventory Redis Projection | StockReserved, StockReleased |
Maintain CQRS read model |
| Fulfillment Gateway | OrderConfirmed |
Dispatch to WMS via SOAP |
| Orders Service | (produces only) | — |
Schema Governance¶
- Schema changes are PRs to
contracts/event-schemas/. - Breaking changes require a new major version (
v2/OrderPlaced.json) and a consumer migration window. validate-contracts.shenforces that every schema file has a matching TypeScript interface inservices/*/src/domain/events/.
See ADR-0004 for the Kafka topic naming convention and partitioning strategy.