use utoipa::OpenApi; use crate::dto::api; use crate::routes; #[derive(OpenApi)] #[openapi( info( title = "Ollama Proxy", description = "OpenAI-compatible proxy for local Ollama models", version = "0.1.0", license( name = "MIT", url = "https://opensource.org/licenses/MIT" ), ), paths( routes::v1::chat::completions, routes::v1::chat::chat_completions, routes::v1::models::list_models, routes::v1::models::load_model, routes::v1::models::unload_model, ), components( schemas( api::ErrorResponse, api::ModelsResponse, api::ModelInfo, api::LoadModelResponse, api::LoadModelBody, api::UnloadModelResponse, api::BaseLLMRequest, api::CompletionRequest, api::CompletionObject, api::FinishReason, api::CompletionResponse, api::Choice, api::Usage, api::CompletionChunk, api::ChatRequest, api::Message, api::Role, api::ChatCompletionResponse, api::ChatChoice, api::ChatCompletionChunk, api::ChatChunkChoice, api::ChatDelta, ) ), tags( (name = "chat", description = "Chat & completions"), (name = "models", description = "Model management") ) )] pub struct ApiDoc;