UNPKG

survey-mcp-server

Version:

Survey management server handling survey creation, response collection, analysis, and reporting with database access for data management

81 lines (80 loc) 2.16 kB
import { BaseService, ServiceConfig, HealthCheckResult } from './base.js'; declare module 'axios' { interface InternalAxiosRequestConfig { metadata?: { startTime: number; endTime: number; }; } interface AxiosRequestConfig { metadata?: { startTime: number; endTime?: number; }; } } export interface ApiEndpoint { name: string; baseUrl: string; timeout?: number; retryConfig?: { maxAttempts: number; baseDelay: number; }; headers?: Record<string, string>; rateLimit?: { requestsPerMinute: number; burstSize: number; }; } export interface ApiRequest { endpoint: string; method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path: string; data?: any; params?: Record<string, any>; headers?: Record<string, string>; timeout?: number; skipSecurityCheck?: boolean; } export interface ApiResponse<T = any> { data: T; status: number; statusText: string; headers: Record<string, string>; responseTime: number; } export interface RateLimitState { requests: number[]; lastRequest: Date; } export declare class ExternalApiService extends BaseService { private endpoints; private clients; private rateLimitStates; private requestCount; private errorCount; constructor(config?: Partial<ServiceConfig>); private initializeEndpoints; registerEndpoint(endpoint: ApiEndpoint): void; protected performHealthCheck(): Promise<HealthCheckResult>; private checkEndpointHealth; makeRequest<T = any>(request: ApiRequest): Promise<ApiResponse<T>>; private checkRateLimit; private isRetryableError; private sanitizeHeaders; getEndpointStats(): { [endpointName: string]: any; }; getServiceStats(): { requestCount: number; errorCount: number; successRate: number; endpoints: string[]; endpointStats: { [endpointName: string]: any; }; }; shutdown(): Promise<void>; } export declare const externalApiService: ExternalApiService;