/** * Summary of a single endpoint for display on the interactive selection screen. */ export interface OperationSummary { nickname: string; method: string; path: string; summary: string; } /** * Tag with its summarised endpoints, used on the interactive selection screen. */ export interface TagSummary { tag: string; operations: OperationSummary[]; } /** * Selection filter map: tag → array of selected operation nicknames. */ export type SelectionFilter = Record; /** * Simplified representation of an OpenAPI component schema. * Used to generate domain models (entities) and mappers. */ export interface OpenApiSchema { properties?: Record< string, { type?: string; format?: string; description?: string; example?: unknown; enum?: unknown[]; $ref?: string; items?: { $ref?: string; type?: string }; } >; required?: string[]; description?: string; } /** * Representation of an OpenAPI operation (GET, POST, etc.) within a path. * Contains the information needed to generate repositories and use cases. */ export interface OpenApiOperation { tags?: string[]; operationId?: string; summary?: string; description?: string; parameters?: Array<{ name: string; in: string; required: boolean; description?: string; schema?: { type?: string }; }>; requestBody?: { description?: string; content?: Record< string, { schema?: { $ref?: string; type?: string; }; } >; }; responses?: Record< string, { content?: Record< string, { schema?: { $ref?: string; type?: string; items?: { $ref?: string }; }; } >; } >; } /** * A single parameter of a normalised API operation, ready for Mustache template consumption. */ export interface TagOperationParam { paramName: string; dataType: string; description: string; required: boolean; '-last': boolean; testValue?: string; } /** * Normalised operation ready to be consumed by Mustache templates. * Each instance represents an endpoint grouped under an API tag. */ export interface TagOperation { nickname: string; summary: string; notes: string; httpMethod: string; uppercaseHttpMethod: string; path: string; allParams: TagOperationParam[]; hasQueryParams: boolean; queryParams: unknown[]; hasBodyParam: boolean; bodyParam: string; returnType: string | boolean; returnBaseType: string | boolean; returnTypeVarName: string | boolean; returnBaseTypeVarName: string | boolean; isListContainer: boolean; vendorExtensions: Record; }