Skip to content

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:

ts
{
  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

sale.completed, invoice.requested, consumer.linked

Logistics (Agente)

shipment.created, shipment.status_changed, pedimento.stamped

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

ts
import type { EventDataOf } from '@r-bsoftware/ecosystem-sdk/event-payloads'

const data = event.data as EventDataOf<'payment.received'>
// data.amountCents, data.currency, data.invoiceId — typed

Naming rules

  • <domain>.<verb> — past-tense verb, snake_case
  • Nouns singular (payment.received, not payments.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.

Red Broom Software Ecosystem