openapi-directory-mcp
Version:
Model Context Protocol server for accessing enhanced triple-source OpenAPI directory (APIs.guru + additional APIs + custom imports)
126 lines • 2.88 kB
TypeScript
/**
* Types and interfaces for custom OpenAPI specification management
*/
import { ApiGuruAPI } from "../types/api.js";
/**
* Custom spec manifest entry
*/
export interface CustomSpecEntry {
id: string;
name: string;
version: string;
title: string;
description: string;
originalFormat: "yaml" | "json";
sourceType: "file" | "url";
sourcePath: string;
imported: string;
lastModified: string;
fileSize: number;
securityScan?: SecurityScanResult;
}
/**
* Custom specs manifest
*/
export interface CustomSpecManifest {
version: string;
specs: Record<string, CustomSpecEntry>;
lastUpdated: string;
}
/**
* Security scan result for a custom spec
*/
export interface SecurityScanResult {
scannedAt: string;
issues: SecurityIssue[];
summary: {
critical: number;
high: number;
medium: number;
low: number;
};
blocked: boolean;
}
/**
* Individual security issue found in a spec
*/
export interface SecurityIssue {
type: "prompt_injection" | "script_injection" | "suspicious_content" | "eval_usage";
severity: "low" | "medium" | "high" | "critical";
location: string;
context: "example" | "description" | "parameter" | "schema" | "metadata";
pattern: string;
message: string;
suggestion?: string;
ruleId: string;
}
/**
* Security scanning rule definition
*/
export interface SecurityRule {
id: string;
pattern?: RegExp;
detect?: (content: string) => boolean;
type: SecurityIssue["type"];
severity: SecurityIssue["severity"];
contexts: SecurityIssue["context"][];
message: string;
suggestion?: string;
allowInExamples?: boolean;
description: string;
}
/**
* OpenAPI spec processing result
*/
export interface SpecProcessingResult {
spec: ApiGuruAPI;
originalFormat: "yaml" | "json";
securityScan: SecurityScanResult;
metadata: {
title: string;
description: string;
version: string;
fileSize: number;
};
}
/**
* Import command options
*/
export interface ImportOptions {
name?: string;
version?: string;
source: string;
skipSecurity?: boolean;
strictSecurity?: boolean;
interactive?: boolean;
}
/**
* CLI import result
*/
export interface ImportResult {
success: boolean;
specId?: string;
message: string;
securityScan?: SecurityScanResult;
warnings?: string[];
errors?: string[];
}
/**
* Custom spec storage paths
*/
export interface CustomSpecPaths {
baseDir: string;
manifestFile: string;
specsDir: string;
getSpecFile(name: string, version: string): string;
}
/**
* Validation result for OpenAPI spec
*/
export interface ValidationResult {
valid: boolean;
version?: string;
errors: string[];
warnings: string[];
}
//# sourceMappingURL=types.d.ts.map