// API client for Banner backend const API_BASE_URL = "/api"; export interface HealthResponse { status: string; timestamp: string; } export interface StatusResponse { status: string; bot: { status: string; uptime: string; }; cache: { status: string; courses: string; subjects: string; }; banner_api: { status: string; }; git: { commit: string; short: string; }; timestamp: string; } export interface MetricsResponse { banner_api: { status: string; }; timestamp: string; } export class BannerApiClient { private baseUrl: string; constructor(baseUrl: string = API_BASE_URL) { this.baseUrl = baseUrl; } private async request(endpoint: string): Promise { const response = await fetch(`${this.baseUrl}${endpoint}`); if (!response.ok) { throw new Error( `API request failed: ${response.status} ${response.statusText}` ); } return response.json(); } async getHealth(): Promise { return this.request("/health"); } async getStatus(): Promise { return this.request("/status"); } async getMetrics(): Promise { return this.request("/metrics"); } } // Export a default instance export const apiClient = new BannerApiClient();