Skip to main content

Notification Service — Event Schemas

Status: populated Owner: Platform Engineering Last updated: 2026-04-18

This service is a pure consumer of NATS events. It publishes no NATS events.

1. Consumed Subjects

SubjectStreamProducerConsumer groupNotifications triggered
auth.eventsAUTH_EVENTSauth-servicenotif-auth-consumerUSER_REGISTERED email
billing.eventsBILLING_EVENTSbilling-servicenotif-billing-consumerINVOICE_GENERATED email
operator.healthOPERATOR_HEALTHoperator-management-servicenotif-operator-consumerOPERATOR_DOWN email + SMS
system.alertsSYSTEM_ALERTSmultiplenotif-system-consumerSYSTEM_ALERT email/SMS by severity

2. Consumed Event Schemas

auth.user.registered.v1 (from auth.events)

interface AuthUserRegistered {
schemaVersion: '1';
userId: string;
accountId: string;
tenantId: string;
email: string;
registeredAt: string;
}

→ Triggers: USER_REGISTERED email to userId.

billing.invoice.generated.v1 (from billing.events)

interface BillingInvoiceGenerated {
schemaVersion: '1';
invoiceId: string;
accountId: string;
tenantId: string;
periodStart: string;
periodEnd: string;
totalMessages: number;
subtotalAmount: string;
currency: string;
s3Key: string;
generatedAt: string;
}

→ Triggers: INVOICE_GENERATED email to all account.admin users of accountId.

operator.health.status_changed.v1 (from operator.health)

interface OperatorHealthStatusChanged {
schemaVersion: '1';
operatorId: string;
operatorName: string;
previousStatus: 'UP' | 'DEGRADED' | 'DOWN';
newStatus: 'UP' | 'DEGRADED' | 'DOWN';
reason: string;
at: string;
}

→ Triggers: OPERATOR_DOWN email + SMS to platform.admin users when newStatus = 'DOWN'. → Triggers: OPERATOR_RECOVERED email when newStatus = 'UP' (recovery notification).

system.alerts.raised.v1 (from system.alerts)

interface SystemAlertRaised {
schemaVersion: '1';
alertId: string;
severity: 'INFO' | 'WARN' | 'CRITICAL';
title: string;
detail: string;
source: string;
raisedAt: string;
}

→ Triggers:

  • CRITICAL: SYSTEM_SECURITY_ALERT email + SMS to platform.admin (ignores opt-out).
  • WARN: SYSTEM_INFO_ALERT email to platform.admin (respects opt-out).
  • INFO: SYSTEM_INFO_ALERT email to platform.admin (respects opt-out, lower priority).

3. Event Routing Table

Event typeNotification typeChannelsCategoryOpt-out respected
auth.user.registered.v1USER_REGISTEREDEMAILACCOUNTNo
billing.invoice.generated.v1INVOICE_GENERATEDEMAILBILLINGNo
operator.health.status_changed.v1 (DOWN)OPERATOR_DOWNEMAIL + SMSOPERATOR_ALERTYes
operator.health.status_changed.v1 (UP from DOWN)OPERATOR_RECOVEREDEMAILOPERATOR_ALERTYes
system.alerts.raised.v1 (CRITICAL)SYSTEM_SECURITY_ALERTEMAIL + SMSSYSTEM_SECURITYNo
system.alerts.raised.v1 (WARN/INFO)SYSTEM_INFO_ALERTEMAILSYSTEM_INFOYes

4. PII Policy

  • auth.user.registered.v1 contains email — do not log raw email; store masked form in notification_log.recipient_address.
  • SMS recipient phone numbers: E.164 format in delivery call; masked in logs.
  • NATS consumer does not forward event payloads to external systems unredacted.