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:

ParameterTypeRequiredDescription
configObsClientConfigYes

Properties

PropertyTypeRequiredDescription
errorsErrorsResourceYes
logsLogsResourceYes
sessionsSessionsResourceYes
projectsProjectsResourceYes
streamStreamResourceYes

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:

ParameterTypeRequiredDescription
configObsClientConfigYes

Methods

get

get(path: string, options?: { params?: Record<string, unknown>; } | undefined): Promise<T>

Parameters:

ParameterTypeRequiredDescription
pathstringYes
options{ params?: Record<string, unknown>; } | undefinedNo

Returns:

Promise<T> -

post

post(path: string, body?: unknown): Promise<T>

Parameters:

ParameterTypeRequiredDescription
pathstringYes
bodyunknownNo

Returns:

Promise<T> -

put

put(path: string, body?: unknown): Promise<T>

Parameters:

ParameterTypeRequiredDescription
pathstringYes
bodyunknownNo

Returns:

Promise<T> -

delete

delete(path: string): Promise<T>

Parameters:

ParameterTypeRequiredDescription
pathstringYes

Returns:

Promise<T> -

request

request(config: RequestConfig): Promise<T>

Parameters:

ParameterTypeRequiredDescription
configRequestConfigYes

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:

ParameterTypeRequiredDescription
configObsClientConfigYes

Methods

connect

Connect to SSE endpoint and return async iterable

connect(endpoint: string, options: SSEConnectionOptions): AsyncIterableIterator<SSEEvent>

Parameters:

ParameterTypeRequiredDescription
endpointstringYes
optionsSSEConnectionOptionsYes

Returns:

AsyncIterableIterator<SSEEvent> -

resetReconnection

Reset reconnection state (useful for manual reconnection)

resetReconnection(): void

ErrorsResource

Constructor

constructor(http: HttpClient)

Parameters:

ParameterTypeRequiredDescription
httpHttpClientYes

Methods

list

list(filters: ErrorFilters): Promise<ErrorListResponse>

Parameters:

ParameterTypeRequiredDescription
filtersErrorFiltersYes

Returns:

Promise<ErrorListResponse> -

get

get(id: string): Promise<ErrorEvent>

Parameters:

ParameterTypeRequiredDescription
idstringYes

Returns:

Promise<ErrorEvent> -

stats

stats(projectId: string, options?: StatsOptions | undefined): Promise<ErrorStats>

Parameters:

ParameterTypeRequiredDescription
projectIdstringYes
optionsStatsOptions | undefinedNo

Returns:

Promise<ErrorStats> -

LogsResource

Constructor

constructor(http: HttpClient)

Parameters:

ParameterTypeRequiredDescription
httpHttpClientYes

Methods

list

list(filters: LogFilters): Promise<LogListResponse>

Parameters:

ParameterTypeRequiredDescription
filtersLogFiltersYes

Returns:

Promise<LogListResponse> -

get

get(id: string): Promise<LogEvent>

Parameters:

ParameterTypeRequiredDescription
idstringYes

Returns:

Promise<LogEvent> -

create

create(input: CreateLogInput): Promise<LogEvent>

Parameters:

ParameterTypeRequiredDescription
inputCreateLogInputYes

Returns:

Promise<LogEvent> -

ProjectsResource

Constructor

constructor(http: HttpClient)

Parameters:

ParameterTypeRequiredDescription
httpHttpClientYes

Methods

create

create(input: CreateProjectInput): Promise<Project>

Parameters:

ParameterTypeRequiredDescription
inputCreateProjectInputYes

Returns:

Promise<Project> -

list

list(): Promise<Project[]>

Returns:

Promise<Project[]> -

get

get(id: string): Promise<Project>

Parameters:

ParameterTypeRequiredDescription
idstringYes

Returns:

Promise<Project> -

update

update(id: string, input: UpdateProjectInput): Promise<Project>

Parameters:

ParameterTypeRequiredDescription
idstringYes
inputUpdateProjectInputYes

Returns:

Promise<Project> -

delete

delete(id: string): Promise<{ success: boolean; }>

Parameters:

ParameterTypeRequiredDescription
idstringYes

Returns:

Promise<{ success: boolean; }> -

stats

stats(id: string, options?: StatsOptions | undefined): Promise<ProjectStats>

Parameters:

ParameterTypeRequiredDescription
idstringYes
optionsStatsOptions | undefinedNo

Returns:

Promise<ProjectStats> -

SessionsResource

Constructor

constructor(http: HttpClient)

Parameters:

ParameterTypeRequiredDescription
httpHttpClientYes

Methods

list

list(filters: SessionFilters): Promise<SessionListResponse>

Parameters:

ParameterTypeRequiredDescription
filtersSessionFiltersYes

Returns:

Promise<SessionListResponse> -

get

get(id: string): Promise<Session>

Parameters:

ParameterTypeRequiredDescription
idstringYes

Returns:

Promise<Session> -

getBreadcrumbs

getBreadcrumbs(id: string): Promise<Breadcrumb[]>

Parameters:

ParameterTypeRequiredDescription
idstringYes

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:

ParameterTypeRequiredDescription
sseClientSSEClientYes

Methods

tail

Tail all events from a project

tail(options: StreamOptions): AsyncIterableIterator<ObsEvent>

Parameters:

ParameterTypeRequiredDescription
optionsStreamOptionsYes- 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:

ParameterTypeRequiredDescription
projectIdstringYes- Project ID to stream from
optionsOmit<StreamOptions, "projectId" | "eventTypes"> | undefinedNo- 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:

ParameterTypeRequiredDescription
projectIdstringYes- Project ID to stream from
optionsOmit<StreamOptions, "projectId" | "eventTypes"> | undefinedNo- 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:

ParameterTypeRequiredDescription
projectIdstringYes- Project ID to stream from
optionsOmit<StreamOptions, "projectId" | "eventTypes"> | undefinedNo- 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:

ParameterTypeRequiredDescription
messagestringYes

AuthError

Constructor

constructor(message: string)

Parameters:

ParameterTypeRequiredDescription
messagestringYes

NotFoundError

Constructor

constructor(message: string)

Parameters:

ParameterTypeRequiredDescription
messagestringYes

RateLimitError

Constructor

constructor(message: string)

Parameters:

ParameterTypeRequiredDescription
messagestringYes

ApiError

Constructor

constructor(message: string)

Parameters:

ParameterTypeRequiredDescription
messagestringYes
Previous
Types