Events Registry
Canonical registry of every event type flowing across the RBS ecosystem. 101 events as of 2026-04-16.
Source of truth: ecosystem-sdk/packages/mcp-server/src/registry/events.jsonTyped payloads: @r-bsoftware/ecosystem-sdk/event-payloadsTransport: HMAC-SHA256 signed webhooks — see /integration/webhooks
Shape
Every event wraps a typed data payload in the standard envelope:
{
eventId: string // UUID for idempotency
eventType: string // e.g., "payment.received"
timestamp: string // ISO 8601
source: string // Emitting app slug
organizationId: string // RBS org ID
data: EventDataOf<eventType>
}Domains
The 101 events are organized by domain. Sample below; the full enumerated list lives in the source-of-truth JSON registry.
Payments (Colectiva)
payment.received, payment.failed, payment.refunded, payout.completed, payout.failed, transfer.initiated, transfer.settled, wallet.created, wallet.funded
Subscriptions (Camino)
subscription.activated, subscription.cancelled, subscription.changed, subscription.trial_started, subscription.trial_expiring, subscription.past_due, subscription.payment_received, subscription.renewed
CFDI (Constanza)
cfdi.stamped, cfdi.cancelled, cfdi.failed, cfdi.refund_stamped, poliza.created, fiscal.health_score_updated
CRM (Camino)
customer.created, customer.updated, customer.linked, activity.logged, deal.created, deal.updated, deal.closed, deal.billing_charged, brain.signal
Reservations (Mancha)
booking.created, booking.cancelled, appointment.completed
POS & commerce (Caracol, Comal, Cookie Monster)
sale.completed, invoice.requested, consumer.linked
Logistics (Agente)
shipment.created, shipment.status_changed, pedimento.stamped
Legal (Agora)
matter.created, matter.closed, time.logged, invoice.generated, trust.deposit, trust.withdrawal
Marketplace (Patadas)
business.submitted, business.matched, business.rejected
Platform / misc
account.deletion_requested, ai.usage
Typed consumption
import type { EventDataOf } from '@r-bsoftware/ecosystem-sdk/event-payloads'
const data = event.data as EventDataOf<'payment.received'>
// data.amountCents, data.currency, data.invoiceId — typedNaming rules
<domain>.<verb>— past-tense verb, snake_case- Nouns singular (
payment.received, notpayments.received) - Add to the JSON registry before emitting; regen types; then ship
Source of truth
- JSON:
/home/brillo/Projects/ecosystem-sdk/packages/mcp-server/src/registry/events.json - Types:
/home/brillo/Projects/ecosystem-sdk/packages/sdk/src/event-payloads.ts - MCP tool:
mcp__rbs-ecosystem__get_event_registry
Gotchas
- Don't invent event names locally. Add to the registry first; regen types; emit.
- Unknown event types → ignore with 200. The ecosystem grows; strict rejection breaks forward-compat.
- Payload shapes can add fields. Consumers must tolerate unknown keys.