Obs Client
Classes
Classes
ObsClient
ObsClient - TypeScript SDK for Epic Flow Observability Platform
Features:
- REST API resources for errors, logs, sessions, and projects
- Real-time event streaming via Server-Sent Events (SSE)
- Type-safe async iterators for streaming data
- Automatic reconnection with exponential backoff
Constructor
constructor(config: ObsClientConfig)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | ObsClientConfig | Yes |
Properties
| Property | Type | Required | Description |
|---|---|---|---|
errors | ErrorsResource | Yes | |
logs | LogsResource | Yes | |
sessions | SessionsResource | Yes | |
projects | ProjectsResource | Yes | |
stream | StreamResource | Yes |
Examples:
const client = new ObsClient({
serverUrl: 'http://localhost:3010',
apiKey: 'your-api-key'
});
// REST API usage
const errors = await client.errors.list({ projectId: 'my-app' });
// Streaming usage
for await (const error of client.stream.errors('my-app')) {
console.log('Real-time error:', error.message);
}
HttpClient
Constructor
constructor(config: ObsClientConfig)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | ObsClientConfig | Yes |
Methods
get
get(path: string, options?: { params?: Record<string, unknown>; } | undefined): Promise<T>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | |
options | { params?: Record<string, unknown>; } | undefined | No |
Returns:
Promise<T> -
post
post(path: string, body?: unknown): Promise<T>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | |
body | unknown | No |
Returns:
Promise<T> -
put
put(path: string, body?: unknown): Promise<T>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | |
body | unknown | No |
Returns:
Promise<T> -
delete
delete(path: string): Promise<T>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes |
Returns:
Promise<T> -
request
request(config: RequestConfig): Promise<T>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | RequestConfig | Yes |
Returns:
Promise<T> -
SSEClient
SSE Client for handling Server-Sent Events connections
Features:
- Async iterator interface for streaming events
- Automatic reconnection with exponential backoff
- Event parsing and type safety
- Graceful connection cleanup
Constructor
constructor(config: ObsClientConfig)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
config | ObsClientConfig | Yes |
Methods
connect
Connect to SSE endpoint and return async iterable
connect(endpoint: string, options: SSEConnectionOptions): AsyncIterableIterator<SSEEvent>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint | string | Yes | |
options | SSEConnectionOptions | Yes |
Returns:
AsyncIterableIterator<SSEEvent> -
resetReconnection
Reset reconnection state (useful for manual reconnection)
resetReconnection(): void
ErrorsResource
Constructor
constructor(http: HttpClient)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
http | HttpClient | Yes |
Methods
list
list(filters: ErrorFilters): Promise<ErrorListResponse>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
filters | ErrorFilters | Yes |
Returns:
Promise<ErrorListResponse> -
get
get(id: string): Promise<ErrorEvent>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes |
Returns:
Promise<ErrorEvent> -
stats
stats(projectId: string, options?: StatsOptions | undefined): Promise<ErrorStats>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | |
options | StatsOptions | undefined | No |
Returns:
Promise<ErrorStats> -
LogsResource
Constructor
constructor(http: HttpClient)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
http | HttpClient | Yes |
Methods
list
list(filters: LogFilters): Promise<LogListResponse>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
filters | LogFilters | Yes |
Returns:
Promise<LogListResponse> -
get
get(id: string): Promise<LogEvent>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes |
Returns:
Promise<LogEvent> -
create
create(input: CreateLogInput): Promise<LogEvent>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
input | CreateLogInput | Yes |
Returns:
Promise<LogEvent> -
ProjectsResource
Constructor
constructor(http: HttpClient)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
http | HttpClient | Yes |
Methods
create
create(input: CreateProjectInput): Promise<Project>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
input | CreateProjectInput | Yes |
Returns:
Promise<Project> -
list
list(): Promise<Project[]>
Returns:
Promise<Project[]> -
get
get(id: string): Promise<Project>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes |
Returns:
Promise<Project> -
update
update(id: string, input: UpdateProjectInput): Promise<Project>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
input | UpdateProjectInput | Yes |
Returns:
Promise<Project> -
delete
delete(id: string): Promise<{ success: boolean; }>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes |
Returns:
Promise<{ success: boolean; }> -
stats
stats(id: string, options?: StatsOptions | undefined): Promise<ProjectStats>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
options | StatsOptions | undefined | No |
Returns:
Promise<ProjectStats> -
SessionsResource
Constructor
constructor(http: HttpClient)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
http | HttpClient | Yes |
Methods
list
list(filters: SessionFilters): Promise<SessionListResponse>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
filters | SessionFilters | Yes |
Returns:
Promise<SessionListResponse> -
get
get(id: string): Promise<Session>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes |
Returns:
Promise<Session> -
getBreadcrumbs
getBreadcrumbs(id: string): Promise<Breadcrumb[]>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes |
Returns:
Promise<Breadcrumb[]> -
StreamResource
StreamResource - Handle real-time event streaming via SSE
Provides async iterators for streaming errors, logs, and sessions in real-time.
Constructor
constructor(sseClient: SSEClient)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
sseClient | SSEClient | Yes |
Methods
tail
Tail all events from a project
tail(options: StreamOptions): AsyncIterableIterator<ObsEvent>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
options | StreamOptions | Yes | - Stream configuration options |
Returns:
AsyncIterableIterator<ObsEvent> - Async iterator of observability events
Examples:
for await (const event of client.stream.tail({ projectId: 'my-app', eventTypes: ['error'] })) {
if (event.type === 'error') {
console.log('Error:', event.message);
}
}
errors
Stream only error events
errors(projectId: string, options?: Omit<StreamOptions, "projectId" | "eventTypes"> | undefined): AsyncIterableIterator<ErrorEvent>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | - Project ID to stream from |
options | Omit<StreamOptions, "projectId" | "eventTypes"> | undefined | No | - Additional stream options |
Returns:
AsyncIterableIterator<ErrorEvent> - Async iterator of error events
Examples:
for await (const error of client.stream.errors('my-app', { level: 'fatal' })) {
console.log('Fatal error:', error.message);
}
logs
Stream only log events
logs(projectId: string, options?: Omit<StreamOptions, "projectId" | "eventTypes"> | undefined): AsyncIterableIterator<LogEvent>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | - Project ID to stream from |
options | Omit<StreamOptions, "projectId" | "eventTypes"> | undefined | No | - Additional stream options |
Returns:
AsyncIterableIterator<LogEvent> - Async iterator of log events
Examples:
for await (const log of client.stream.logs('my-app', { level: 'error' })) {
console.log('Log:', log.message);
}
sessions
Stream only session events
sessions(projectId: string, options?: Omit<StreamOptions, "projectId" | "eventTypes"> | undefined): AsyncIterableIterator<Session>
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | - Project ID to stream from |
options | Omit<StreamOptions, "projectId" | "eventTypes"> | undefined | No | - Additional stream options |
Returns:
AsyncIterableIterator<Session> - Async iterator of session events
Examples:
for await (const session of client.stream.sessions('my-app')) {
console.log('Session:', session.id);
}
Examples:
const client = new ObsClient({ ... });
// Stream all events
for await (const event of client.stream.tail({ projectId: 'my-app' })) {
console.log('Event:', event);
}
// Stream only errors
for await (const error of client.stream.errors('my-app')) {
console.log('Error:', error.message);
}
ObsError
Constructor
constructor(message: string)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
message | string | Yes |
AuthError
Constructor
constructor(message: string)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
message | string | Yes |
NotFoundError
Constructor
constructor(message: string)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
message | string | Yes |
RateLimitError
Constructor
constructor(message: string)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
message | string | Yes |
ApiError
Constructor
constructor(message: string)
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
message | string | Yes |