# NODE.DC Notification Core

Platform-owned notification service for NODE.DC.

It owns:

- `notification_events`: immutable facts from Hub, Engine, Operational Core and future services.
- `notification_deliveries`: per-recipient, per-surface delivery/read state.

It does not use Authentik DB. Authentik remains the identity/session provider next to this service, not the notification data owner.

## API

Internal producer:

```text
POST /internal/notifications/events
```

Consumer surface API:

```text
GET /api/notifications?surface=hub|engine
POST /api/notifications/:deliveryId/read
POST /api/notifications/read-all
GET /api/notifications/stream
```

All endpoints require the shared internal token. App BFFs pass the resolved platform subject through:

```text
X-NODEDC-User-Id
X-NODEDC-User-Email
```

The recipient rule is platform-subject based: deliveries are created only for known NODE.DC subjects. An unknown email should be held as a pending intent/invite by the source workflow, not inserted as a delivery.
