Integration
Outreach is a near-leaf service. Its only runtime integration is JWT verification against Identity's JWKS; its only outbound signal is a WebSocket broadcast consumed by the BO dashboard.
1. Sister Services
Direction:→calls /←called by /↔bidir.
| Sister | Direction | Surface | Contract | Auth | Failure Mode | Idempotency |
|---|---|---|---|---|---|---|
@nx/identity | → | JWKS endpoint (remote) | VerifierApplication verifies ES256 JWT | — (public JWKS) | reject request (401) if JWKS unreachable | n/a |
| BO dashboard | ← | WebSocket room subscribe | INQUIRY_SUBMITTED payload | WS session | client re-fetches via REST if event missed | n/a |
No HTTP calls to other BANA services. No Kafka topics consumed or produced.
@nx/coreis the only internal code dependency.
2. External Systems
| System | Direction | Surface | Auth | Failure Mode |
|---|---|---|---|---|
| PostgreSQL | → | PostgresCoreDataSource (schema outreach) | DB credentials | request fails on connection loss |
| Redis | → | WebSocket pub/sub fan-out | password (optional) | WS notify skipped if emitter not ready |
No email/SMTP provider is wired despite the package's "Communications" tagline — newsletter delivery is out of scope (see Domain Model).
3. Critical Cross-Service Flows
3.1 Real-time inquiry notification to BO
| Step | Detail |
|---|---|
| 2 | Notify is fire-and-forget after the row is committed |
| 3 | Two rooms: list room (outreach/inquiries) and per-inquiry room |
| 4 | BO must already have an open WS session subscribed to the room |
4. Contract Stability
| Surface | Stability | Versioning |
|---|---|---|
HTTP /inquiries/submit, /subscribers/subscribe, /subscribers/unsubscribe | stable | URL /v1/ |
HTTP /subscribers/statistics | beta (shape may grow) | URL /v1/ |
WS observation/outreach/inquiry/submitted | beta | path-based; payload additive |