breathe-api
Version:
Model Context Protocol server for Breathe HR APIs with Swagger/OpenAPI support - also works with custom APIs
95 lines • 2.61 kB
TypeScript
import { Brand } from './security.js';
export type EnvironmentName = 'production' | 'staging' | 'development' | 'sandbox';
export type EnvironmentSecret = Brand<string, 'EnvironmentSecret'>;
export interface ApiAuthConfig {
type: 'none' | 'basic' | 'bearer' | 'api-key';
username?: string;
password?: EnvironmentSecret;
token?: EnvironmentSecret;
apiKey?: EnvironmentSecret;
apiKeyHeader?: string;
}
export interface ApiEndpointConfig {
path: string;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
description?: string;
rateLimit?: {
requests: number;
windowMs: number;
};
}
export interface EnvironmentConfig {
name: EnvironmentName;
displayName: string;
description?: string;
baseUrl: string;
auth: ApiAuthConfig;
endpoints?: Record<string, ApiEndpointConfig>;
metadata?: {
region?: string;
version?: string;
lastUpdated?: string;
contact?: string;
swaggerUrl?: string;
customHeaders?: Record<string, string>;
};
isActive: boolean;
}
export interface ResourceUri {
scheme: 'breathe' | 'swagger' | 'config';
environment: EnvironmentName;
resourceType: 'api' | 'employees' | 'leave' | 'timesheets' | 'kudos' | 'config' | 'swagger';
path?: string[];
query?: Record<string, string>;
}
export interface ResourceMetadata {
uri: string;
name: string;
description?: string;
mimeType?: string;
size?: number;
lastModified?: string;
environment?: EnvironmentName;
tags?: string[];
}
export interface ResourceTemplate {
uriTemplate: string;
name: string;
description?: string;
mimeType?: string;
parameters?: Array<{
name: string;
description?: string;
required?: boolean;
values?: string[];
}>;
}
export interface ResourceContent {
uri: string;
mimeType?: string;
text?: string;
blob?: string;
}
export interface ResourceManagerConfig {
environments: Record<EnvironmentName, EnvironmentConfig>;
defaultEnvironment: EnvironmentName;
cacheEnabled?: boolean;
cacheTTL?: number;
autoDiscovery?: boolean;
}
export interface ApiDiscoveryResult {
environment: EnvironmentName;
endpoints: Array<{
path: string;
method: string;
description?: string;
parameters?: Array<{
name: string;
in: 'path' | 'query' | 'header' | 'body';
required?: boolean;
type?: string;
}>;
}>;
timestamp: string;
}
//# sourceMappingURL=resources.d.ts.map