// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs

import "github.com/swaggo/swag"

const docTemplate = `{
    "schemes": {{ marshal .Schemes }},
    "swagger": "2.0",
    "info": {
        "description": "{{escape .Description}}",
        "title": "{{.Title}}",
        "termsOfService": "https://duckduckgo.com/terms",
        "contact": {
            "name": "devbyben",
            "url": "https://github.com/benoitpetit/duckduckGO-chat-cli",
            "email": "contact@devbyben.fr"
        },
        "license": {
            "name": "MIT",
            "url": "https://opensource.org/licenses/MIT"
        },
        "version": "{{.Version}}"
    },
    "host": "{{.Host}}",
    "basePath": "{{.BasePath}}",
    "paths": {
        "/chat": {
            "post": {
                "description": "Send a message to the AI and receive a response",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Chat"
                ],
                "summary": "Send a chat message",
                "parameters": [
                    {
                        "description": "Chat message request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/ChatRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful chat response",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/ChatResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    },
                    "400": {
                        "description": "Invalid request",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "$ref": "#/definitions/APIError"
                                        }
                                    }
                                }
                            ]
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "$ref": "#/definitions/APIError"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/health": {
            "get": {
                "description": "Check the health status of the API server",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Health"
                ],
                "summary": "Health check",
                "responses": {
                    "200": {
                        "description": "Service is healthy",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/HealthResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/history": {
            "get": {
                "description": "Retrieve the complete chat session history",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Chat"
                ],
                "summary": "Get chat history",
                "parameters": [
                    {
                        "type": "integer",
                        "default": 50,
                        "description": "Maximum number of messages to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of messages to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Chat history retrieved successfully",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/HistoryResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    },
                    "400": {
                        "description": "Invalid query parameters",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "$ref": "#/definitions/APIError"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            },
            "delete": {
                "description": "Clear the current chat session history",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Chat"
                ],
                "summary": "Clear chat history",
                "responses": {
                    "200": {
                        "description": "Chat history cleared successfully",
                        "schema": {
                            "$ref": "#/definitions/APIResponse"
                        }
                    }
                }
            }
        },
        "/models": {
            "get": {
                "description": "Retrieve list of all available AI models",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Models"
                ],
                "summary": "Get available models",
                "responses": {
                    "200": {
                        "description": "Available models retrieved successfully",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/ModelsResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            },
            "post": {
                "description": "Change the current AI model for the chat session",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Models"
                ],
                "summary": "Change AI model",
                "parameters": [
                    {
                        "description": "Model change request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/ModelChangeRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Model changed successfully",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/ModelInfo"
                                        }
                                    }
                                }
                            ]
                        }
                    },
                    "400": {
                        "description": "Invalid request or model not found",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "$ref": "#/definitions/APIError"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/session": {
            "get": {
                "description": "Get information about the current chat session",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Session"
                ],
                "summary": "Get session information",
                "responses": {
                    "200": {
                        "description": "Session information retrieved successfully",
                        "schema": {
                            "$ref": "#/definitions/APIResponse"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "APIError": {
            "description": "API error information",
            "type": "object",
            "properties": {
                "code": {
                    "type": "string",
                    "example": "VALIDATION_ERROR"
                },
                "details": {
                    "type": "string",
                    "example": "Field 'message' is required"
                },
                "message": {
                    "type": "string",
                    "example": "Invalid request parameters"
                }
            }
        },
        "APIResponse": {
            "description": "Standard API response wrapper",
            "type": "object",
            "properties": {
                "data": {},
                "error": {
                    "$ref": "#/definitions/APIError"
                },
                "message": {
                    "type": "string",
                    "example": "Request processed successfully"
                },
                "success": {
                    "type": "boolean",
                    "example": true
                },
                "timestamp": {
                    "type": "string",
                    "example": "2023-01-01T12:00:00Z"
                }
            }
        },
        "ChatMetadata": {
            "description": "Metadata about the chat response",
            "type": "object",
            "properties": {
                "conversation_count": {
                    "type": "integer",
                    "example": 3
                },
                "processing_time_ms": {
                    "type": "integer",
                    "example": 1500
                },
                "tokens_estimate": {
                    "type": "integer",
                    "example": 45
                }
            }
        },
        "ChatRequest": {
            "description": "Chat message request payload",
            "type": "object",
            "required": [
                "message"
            ],
            "properties": {
                "message": {
                    "type": "string",
                    "maxLength": 10000,
                    "minLength": 1,
                    "example": "Hello, how are you?"
                },
                "model": {
                    "type": "string",
                    "example": "gpt-4o-mini"
                }
            }
        },
        "ChatResponse": {
            "description": "Chat response payload",
            "type": "object",
            "properties": {
                "message_id": {
                    "type": "string",
                    "example": "msg_123456"
                },
                "metadata": {
                    "$ref": "#/definitions/ChatMetadata"
                },
                "model": {
                    "type": "string",
                    "example": "gpt-4o-mini"
                },
                "response": {
                    "type": "string",
                    "example": "Hello! I'm doing well, thank you for asking."
                }
            }
        },
        "HealthResponse": {
            "description": "Health check response payload",
            "type": "object",
            "properties": {
                "services": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "status": {
                    "type": "string",
                    "example": "healthy"
                },
                "timestamp": {
                    "type": "string",
                    "example": "2023-01-01T12:00:00Z"
                },
                "uptime_seconds": {
                    "type": "integer",
                    "example": 3600
                },
                "version": {
                    "type": "string",
                    "example": "1.0.0"
                }
            }
        },
        "HistoryResponse": {
            "description": "Chat history response payload",
            "type": "object",
            "properties": {
                "messages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/MessageResponse"
                    }
                },
                "model": {
                    "type": "string",
                    "example": "gpt-4o-mini"
                },
                "session_id": {
                    "type": "string",
                    "example": "session_123456"
                },
                "total_messages": {
                    "type": "integer",
                    "example": 10
                }
            }
        },
        "MessageResponse": {
            "description": "Individual message in chat history",
            "type": "object",
            "properties": {
                "content": {
                    "type": "string",
                    "example": "Hello, how are you?"
                },
                "id": {
                    "type": "string",
                    "example": "msg_123456"
                },
                "role": {
                    "type": "string",
                    "example": "user"
                },
                "timestamp": {
                    "type": "string",
                    "example": "2023-01-01T12:00:00Z"
                }
            }
        },
        "ModelChangeRequest": {
            "description": "Model change request payload",
            "type": "object",
            "required": [
                "model"
            ],
            "properties": {
                "model": {
                    "type": "string",
                    "example": "gpt-4o-mini"
                }
            }
        },
        "ModelInfo": {
            "description": "Information about an available model",
            "type": "object",
            "properties": {
                "description": {
                    "type": "string",
                    "example": "Fast and efficient model for general conversations"
                },
                "id": {
                    "type": "string",
                    "example": "gpt-4o-mini"
                },
                "is_default": {
                    "type": "boolean",
                    "example": true
                },
                "name": {
                    "type": "string",
                    "example": "GPT-4o-mini"
                }
            }
        },
        "ModelsResponse": {
            "description": "Available models response payload",
            "type": "object",
            "properties": {
                "current_model": {
                    "type": "string",
                    "example": "gpt-4o-mini"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/ModelInfo"
                    }
                },
                "total_models": {
                    "type": "integer",
                    "example": 5
                }
            }
        }
    },
    "securityDefinitions": {
        "ApiKeyAuth": {
            "description": "API key authorization. Example: \"Bearer {api_key}\"",
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        }
    }
}`

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
	Version:          "1.0.0",
	Host:             "localhost:8080",
	BasePath:         "/api/v1",
	Schemes:          []string{"http", "https"},
	Title:            "duckduckGO-chat-cli API",
	Description:      "REST API for DuckDuckGo Chat CLI - programmatic access to AI chat functionality",
	InfoInstanceName: "swagger",
	SwaggerTemplate:  docTemplate,
	LeftDelim:        "{{",
	RightDelim:       "}}",
}

func init() {
	swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}
