You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
BIAN v14.0.0 introduces formal [AsyncAPI 3.0.0](https://www.asyncapi.com/docs/reference/specification/v3.0.0) specifications for all 259 service domains. This is the first time BIAN has provided machine-readable event definitions alongside its existing OpenAPI (REST) specs. Each service domain now includes an AsyncAPI YAML defining channels with `Created` and `Updated` message patterns (e.g., `OutboundMessage/Created`, `OutboundMessage/Updated`).
**BIAN's approach is transport-agnostic**: channel names like `OutboundMessage/Created` are abstract and don't prescribe Kafka topic names, message broker topology, or serialization format.
1065
+
1066
+
### Decision
1067
+
1068
+
Acknowledge BIAN AsyncAPI specs as a **reference for payload structure** but continue using Meridian's existing topic naming convention (`<service>.<event-name>.<version>`) and protobuf serialization.
1069
+
1070
+
**Rationale:**
1071
+
1072
+
1. **Topic naming**: Meridian's dot-notation convention (`current-account.account-created.v1`) encodes service ownership directly in the topic name, which is operationally valuable for filtering, access control, and debugging. BIAN's `OutboundMessage/Created` channel naming is transport-agnostic and doesn't provide this operational benefit.
1073
+
1074
+
2. **Payload alignment**: BIAN AsyncAPI schemas define JSON payloads matching the OpenAPI models. Meridian's Kafka events use protobuf serialization (per this ADR) with domain-specific event types rather than generic `ServiceDomainOutbound` wrappers. Our adapter layer (ADR-0005) handles the translation between BIAN's model structure and Meridian's internal event schemas.
1075
+
1076
+
3. **Serialization**: BIAN AsyncAPI specs assume JSON payloads. Meridian uses protobuf for type safety, performance, and consistency with gRPC APIs (per this ADR's original decision). This remains the correct choice for internal event coordination.
1077
+
1078
+
4. **Granularity**: BIAN defines two channels per domain (Created/Updated). Meridian uses fine-grained event types per BIAN behavior qualifier (AccountCreated, AccountSuspended, TransactionInitiated, etc.), which provides better consumer filtering and clearer domain semantics.
1079
+
1080
+
### Future Considerations
1081
+
1082
+
- **Payload structure review**: When implementing new service domains, cross-reference BIAN AsyncAPI payload schemas to ensure Meridian's protobuf event fields capture equivalent domain data.
1083
+
- **External integration**: If Meridian ever exposes event streams to external consumers, BIAN AsyncAPI specs could inform the external-facing contract while the internal protobuf events remain unchanged.
1084
+
- **BIAN evolution**: Monitor future BIAN releases for more prescriptive async patterns (e.g., CloudEvents envelope, transport-specific bindings) that may warrant revisiting this position.
0 commit comments