# HttpEventBridge API

Stores the app value exposed by HttpEventBridge.
Start the bridge before registering services and stop it during graceful shutdown.
Expose only schemas and metadata that are safe for clients to inspect.
Treat this property as runtime state unless the concrete API documents a stronger guarantee.

---
Canonical: /handbook/api/classes/_purista_base-http-bridge.HttpEventBridge/
Source: base-http-bridge/src/HttpEventBridge/HttpEventBridge.impl.ts
Format: Markdown for agents
---

Stores the app value exposed by HttpEventBridge.
Start the bridge before registering services and stop it during graceful shutdown.
Expose only schemas and metadata that are safe for clients to inspect.
Treat this property as runtime state unless the concrete API documents a stronger guarantee.

Package: `@purista/base-http-bridge`

## Signature

```typescript
class HttpEventBridge<CustomConfig>
```

## Members

### Constructors

- `new constructor<CustomConfig>(config: mapped, client: HttpEventBridgeClient)` — Creates an HTTP event bridge around a sidecar/platform client.

### Properties

- `app: Hono` — Hono application that hosts health, command, subscription and REST projection routes.
- `capabilities: EventBridgeCapabilities` — Runtime capability matrix used for strict startup validation.
- `client: HttpEventBridgeClient` — HTTP client adapter used for outgoing command invocations, event publication and health checks.
- `config: Complete<EventBridgeConfig<ConfigType>>`
- `defaultCommandTimeout: number` — The default time until when a command invocation automatically returns a time out error
- `inFlightExecutions: InFlightExecutionTracker`
- `instanceId: string` — Stable runtime instance id used to distinguish bridge processes.
- `isShuttingDown: boolean` — Indicates that shutdown has started and new HTTP requests should be rejected.
- `isStarted: boolean` — Indicates that the bridge has registered routes and started its HTTP server.
- `logger: Logger`
- `metricsRecorder: PuristaMetricsRecorder`
- `name: string` — Human-readable bridge name used in logs, traces, and metrics.
- `server: Server<typeof IncomingMessage, typeof ServerResponse> | Http2Server<typeof IncomingMessage, typeof ServerResponse, typeof Http2ServerRequest, typeof Http2ServerResponse> | Http2SecureServer<typeof IncomingMessage, typeof ServerResponse, typeof Http2ServerRequest, typeof Http2ServerResponse> | undefined` — Runtime server returned by the configured Hono `serve` adapter.
- `traceProvider: NodeTracerProvider`

### Methods

- `destroy(): Promise<void>` — Shut down event bridge as gracefully as possible
- `emitMessage<T>(message: Omit<EBMessage, "id" | "timestamp" | "correlationId">): Promise<Readonly<EBMessage>>` — Publishes an event message through the configured HTTP client.
- `getInFlightExecutionCount(): number` — Number of currently running handlers across all work kinds.
- `getInFlightExecutionCounts(): InFlightExecutionCounts` — Number of currently running handlers grouped by work kind.
- `getPausedSubscriptionConsumers(): PausedSubscriptionConsumersByRegistrationKey` — Returns paused subscription consumer states keyed by adapter registration key.
- `getTracer(): Tracer` — Returns open telemetry tracer of this service
- `invoke<T>(input: Omit<Command, "id" | "messageType" | "timestamp" | "correlationId">, ttl?: number): Promise<T>` — Invokes a PURISTA command over HTTP and returns the command payload.
- `isHealthy(): Promise<boolean>` — Reports whether the bridge is started and its sidecar/platform client is reachable.
- `isReady(): Promise<boolean>` — Reports whether the bridge can accept new HTTP requests.
- `openStream<Chunk, Final>(_input: Omit<StreamOpenRequest, "id" | "messageType" | "timestamp" | "correlationId">, _ttl?: number): Promise<StreamHandle<Chunk, Final>>` — Open a stream invocation.
- `registerCommand(address: EBMessageAddress, cb: (message: { contentEncoding: string; contentType: string; correlationId: string; eventName: string; id: string; messageType: Command; ... }) => Promise<Readonly<Omit<unknown, unknown>> | Readonly<Omit<unknown, unknown>>>, metadata: { expose: { contentEncodingRequest: string; contentEncodingResponse: string; contentTypeRequest: string; contentTypeResponse: string; deprecated: boolean; inputPayload: SchemaObject; ... } & { http: { method: unknown | unknown | unknown | unknown | unknown; mode: unknown | unknown; openApi: { additionalStatusCodes: unknown; description: unknown; isSecure: unknown; operationId: unknown; query: unknown; summary: unknown; ... }; path: string; stream: { documentationUrl: unknown; mode: unknown; protocol: unknown } } } }, eventBridgeConfig: DefinitionEventBridgeConfig): Promise<string>` — Registers the internal command endpoint, plus an optional REST projection.
- `registerStream(_address: EBMessageAddress, _cb: (message: StreamMessage) => Promise<void>, _metadata: StreamDefinitionMetadataBase, _eventBridgeConfig: DefinitionEventBridgeConfig): Promise<string>` — Register a service stream handler for a service target.
- `registerSubscription(subscription: Subscription, cb: (message: EBMessage) => Promise<Omit<{ contentEncoding: unknown; contentType: unknown; correlationId: unknown; eventName: unknown; id: unknown; messageType: unknown; ... }, unknown | unknown> | undefined>): Promise<string>` — Registers a subscription endpoint before the HTTP server starts.
- `resumeSubscriptionConsumer(_registrationKey: string): Promise<void>` — Resumes a paused subscription consumer by registration key.
- `runInFlight<T>(fn: () => Promise<T>, kind?: "command" | "subscription" | "stream" | "generic"): Promise<T>`
- `start(): Promise<void>` — Starts the Hono server and registers common middleware and the `/healthz` route.
- `startActiveSpan<F>(name: string, opts: SpanOptions, context: Context | undefined, fn: (span: Span) => Promise<F>): Promise<F>` — Start a child span for opentelemetry tracking
- `unregisterCommand(address: EBMessageAddress): Promise<void>` — Placeholder for transport-specific command unregistration.
- `unregisterStream(_address: EBMessageAddress): Promise<void>` — Unregister a service stream
- `unregisterSubscription(address: EBMessageAddress): Promise<void>` — Placeholder for transport-specific subscription unregistration.
- `waitForInFlightDrain(timeoutMs?: number): Promise<boolean>`
- `wrapInSpan<F>(name: string, opts: SpanOptions, fn: (span: Span) => Promise<F>, context?: Context): Promise<F>` — Start span for opentelemetry tracking on same level.
The created span will not become the "active" span within opentelemetry!
