// 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}}",
        "contact": {},
        "version": "{{.Version}}"
    },
    "host": "{{.Host}}",
    "basePath": "{{.BasePath}}",
    "paths": {
        "/api/v1/learning/lessons/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Fetch the content for a specific lesson",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Learning"
                ],
                "summary": "Get lesson content",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Lesson ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.LessonResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/learning/lessons/{id}/complete": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Mark a lesson as completed for the authenticated user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Learning"
                ],
                "summary": "Mark lesson as completed",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Lesson ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.SuccessResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/learning/paths": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Retrieve all available learning paths with user progress if enrolled",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Learning"
                ],
                "summary": "Get all learning paths",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/domain.LearningPathResponse"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/learning/paths/{id}/enroll": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Enroll the authenticated user in a specific learning path",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Learning"
                ],
                "summary": "Enroll in a learning path",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Learning Path ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.SuccessResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/learning/paths/{id}/progress": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get the authenticated user's progress for a specific learning path",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Learning"
                ],
                "summary": "Get user progress for a learning path",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Learning Path ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.ProgressResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/learning/quizzes/{id}/submit": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Submit user's answers to a quiz for grading",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Learning"
                ],
                "summary": "Submit quiz answers",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Quiz ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Quiz answers",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.QuizSubmissionRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.QuizResultResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/pronunciation/activity": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Record that a user completed a pronunciation practice session for streak tracking",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Pronunciation"
                ],
                "summary": "Record pronunciation practice activity",
                "parameters": [
                    {
                        "description": "Pronunciation session data",
                        "name": "request",
                        "in": "body",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.SuccessResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/streak/activity": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Record a user activity to maintain their streak - this is called internally by other services",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Streak"
                ],
                "summary": "Record activity (Internal)",
                "parameters": [
                    {
                        "enum": [
                            "lesson_completed",
                            "quiz_passed",
                            "daily_goal_met"
                        ],
                        "type": "string",
                        "description": "Type of activity",
                        "name": "activity_type",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.SuccessResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/streak/calendar": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get GitHub-like activity calendar showing daily learning activities",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Streak"
                ],
                "summary": "Get activity calendar",
                "parameters": [
                    {
                        "type": "integer",
                        "example": 2025,
                        "description": "Year (default: current year)",
                        "name": "year",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.ActivityCalendarResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/streak/freeze": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Freeze the user's current streak to prevent it from being lost due to inactivity (limited uses per month)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Streak"
                ],
                "summary": "Freeze streak",
                "parameters": [
                    {
                        "description": "Freeze reason",
                        "name": "request",
                        "in": "body",
                        "schema": {
                            "$ref": "#/definitions/domain.FreezeStreakRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.SuccessResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/streak/info": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get the current user's streak information including current streak, longest streak, and freeze status",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Streak"
                ],
                "summary": "Get user streak information",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.StreakInfo"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/forgot-password": {
            "post": {
                "description": "Send password reset link to user's email",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Request password reset",
                "parameters": [
                    {
                        "description": "User Email",
                        "name": "email",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.ForgotPasswordRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.MessageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/login": {
            "post": {
                "description": "Authenticate user with email and password",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Login user",
                "parameters": [
                    {
                        "description": "User Login Credentials",
                        "name": "credentials",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.LoginRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.AuthResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/logout": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Invalidate user's session token",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Logout user",
                "parameters": [
                    {
                        "description": "Refresh Token (optional)",
                        "name": "refreshToken",
                        "in": "body",
                        "schema": {
                            "$ref": "#/definitions/domain.RefreshTokenRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.MessageResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/refresh": {
            "post": {
                "description": "Use refresh token to get a new access token",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Refresh access token",
                "parameters": [
                    {
                        "description": "Refresh Token",
                        "name": "refreshToken",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.RefreshTokenRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.TokenResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/register": {
            "post": {
                "description": "Creates a new user account with email and password",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Register a new user",
                "parameters": [
                    {
                        "description": "User Registration Information",
                        "name": "userInfo",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.RegisterRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/domain.AuthResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/reset-password": {
            "post": {
                "description": "Set new password using reset token",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Reset password",
                "parameters": [
                    {
                        "description": "Password Reset Information",
                        "name": "resetInfo",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.ResetPasswordRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.MessageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/social": {
            "post": {
                "description": "Authenticate or register user using social providers (Google, Apple)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Social authentication",
                "parameters": [
                    {
                        "description": "Social Authentication Information",
                        "name": "socialInfo",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.SocialAuthRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.AuthResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/email/edit": {
            "post": {
                "description": "Corrects and improves a user's drafted email to make it more professional.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Email"
                ],
                "summary": "Edit an existing email",
                "parameters": [
                    {
                        "description": "The user's email draft and optional tone/template.",
                        "name": "editRequest",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/entities.EditEmailRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/entities.EmailResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/email/generate": {
            "post": {
                "description": "Generates a complete, professional email from a user's prompt (which can be in English or Amharic).",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Email"
                ],
                "summary": "Generate a new email",
                "parameters": [
                    {
                        "description": "The user's prompt and optional tone/template.",
                        "name": "generateRequest",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/entities.GenerateEmailRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/entities.EmailResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/grammar/check": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Analyzes text for grammatical errors and returns corrections and explanations.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Grammar"
                ],
                "summary": "Check Grammar",
                "parameters": [
                    {
                        "description": "Text to be checked",
                        "name": "text",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.GrammarRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Returns corrected text and explanation",
                        "schema": {
                            "$ref": "#/definitions/models.GrammarResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/interview/answer": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Submit an answer for the current session question",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Interview"
                ],
                "summary": "Submit user's answer",
                "parameters": [
                    {
                        "description": "Answer input",
                        "name": "input",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/models.SubmitAnswerRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Answer submitted successfully",
                        "schema": {
                            "$ref": "#/definitions/models.Feedback"
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "schema": {
                            "$ref": "#/definitions/models.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "schema": {
                            "$ref": "#/definitions/models.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/interview/question": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Retrieves the next question for the current session",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Interview"
                ],
                "summary": "Get the next interview question",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Session ID",
                        "name": "session_id",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Next question returned",
                        "schema": {
                            "$ref": "#/definitions/models.NextQuestionReturn"
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "schema": {
                            "$ref": "#/definitions/models.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/interview/start": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Creates a new interview session for the authenticated user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Interview"
                ],
                "summary": "Start a new interview session",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/models.SessionReturn"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/models.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "schema": {
                            "$ref": "#/definitions/models.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/interview/{session_id}/end": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Ends the session and returns the final summary",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Interview"
                ],
                "summary": "End an interview session",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Session ID",
                        "name": "session_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Session summary returned",
                        "schema": {
                            "$ref": "#/definitions/models.SessionSummary"
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "schema": {
                            "$ref": "#/definitions/models.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "schema": {
                            "$ref": "#/definitions/models.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/pronunciation/assess": {
            "post": {
                "description": "Accepts a target sentence and the user's recorded audio. It analyzes the user's speech against the target text and returns detailed feedback on their pronunciation. This is a multipart/form-data request.",
                "consumes": [
                    "multipart/form-data"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Pronunciation"
                ],
                "summary": "Assess user's pronunciation",
                "parameters": [
                    {
                        "type": "string",
                        "description": "The exact sentence the user was asked to say.",
                        "name": "target_text",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "file",
                        "description": "The user's recorded audio file (e.g., in ogg, flac, or wav format).",
                        "name": "audio_data",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/entities.PronunciationFeedback"
                        }
                    },
                    "400": {
                        "description": "Returns an error if the form data is invalid or missing.",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Returns an error if the AI service fails during assessment.",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/pronunciation/sentence": {
            "get": {
                "description": "Dynamically generates a single, new English sentence tailored for pronunciation practice for Amharic speakers. Each request returns a unique sentence.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Pronunciation"
                ],
                "summary": "Get a practice sentence",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/entities.PracticeSentence"
                        }
                    },
                    "500": {
                        "description": "Returns an error if the AI service fails to generate a sentence.",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/users/me": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get the profile of the authenticated user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Users"
                ],
                "summary": "Get user profile",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.User"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Allow a user to delete their account",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Users"
                ],
                "summary": "Delete user account",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.MessageResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            },
            "patch": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update parts of the user's profile (name, settings)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Users"
                ],
                "summary": "Update user profile",
                "parameters": [
                    {
                        "description": "Profile Update Information",
                        "name": "profileInfo",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.UpdateProfileRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.User"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/me/push-token": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Register a device token (FCM/APNs) for push notifications",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Users"
                ],
                "summary": "Register push token",
                "parameters": [
                    {
                        "description": "Push Token Information",
                        "name": "tokenInfo",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.PushTokenRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.MessageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/domain.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/ws/conversation": {
            "get": {
                "description": "Establishes a WebSocket for a real-time, voice-based conversation with an AI. The connection automatically terminates after 3 minutes.\n\n### Conversation Lifecycle:\n1. **Connect**: The client establishes a WebSocket connection to this endpoint.\n2. **Speak**: The user speaks. The client continuously streams their voice as binary audio messages.\n3. **Pause**: The user stops speaking. After ~2-3 seconds of silence, the client sends a final text message.\n4. **Process**: The server receives the signal and immediately sends back a text message ` + "`" + `{\"status\": \"processing\"}` + "`" + `. The frontend UI should update to show this.\n5. **Respond**: The server, after finishing the AI processing, sends the AI's spoken response back as a single binary audio message. The frontend plays this audio.\n6. **Repeat**: The process repeats from step 2.\n7. **Timeout**: The connection is automatically and forcefully closed by the server after 3 minutes.\n\n### Client Responsibilities:\n- **Must** stream user's voice as raw ` + "`" + `BinaryMessage` + "`" + ` chunks.\n- **Must** implement silence detection (~2-3 seconds).\n- **Must** send a ` + "`" + `TextMessage` + "`" + ` with the JSON ` + "`" + `{\"type\": \"end_of_speech\"}` + "`" + ` after detecting silence.\n- **Must** handle incoming ` + "`" + `TextMessage` + "`" + ` status updates (e.g., ` + "`" + `{\"status\": \"processing\"}` + "`" + `) to update the UI.\n- **Must** be able to receive and play back ` + "`" + `BinaryMessage` + "`" + ` audio from the server.",
                "tags": [
                    "Conversation"
                ],
                "summary": "Real-time AI Voice Conversation",
                "responses": {
                    "101": {
                        "description": "Switching Protocols",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "domain.ActivityCalendarDay": {
            "type": "object",
            "properties": {
                "activity_count": {
                    "description": "Number of activities on this day",
                    "type": "integer"
                },
                "activity_types": {
                    "description": "Types of activities done",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "date": {
                    "description": "YYYY-MM-DD format",
                    "type": "string"
                },
                "has_activity": {
                    "description": "Whether user was active on this day",
                    "type": "boolean"
                }
            }
        },
        "domain.ActivityCalendarResponse": {
            "type": "object",
            "properties": {
                "active_days": {
                    "type": "integer"
                },
                "current_streak": {
                    "type": "integer"
                },
                "longest_streak": {
                    "type": "integer"
                },
                "summary": {
                    "$ref": "#/definitions/domain.ActivityCalendarSummary"
                },
                "total_days": {
                    "type": "integer"
                },
                "weeks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.ActivityCalendarWeek"
                    }
                },
                "year": {
                    "type": "integer"
                }
            }
        },
        "domain.ActivityCalendarSummary": {
            "type": "object",
            "properties": {
                "activity_breakdown": {
                    "description": "Count by activity type",
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                },
                "consecutive_weeks": {
                    "description": "Weeks with at least one activity",
                    "type": "integer"
                },
                "most_active_count": {
                    "description": "Max activities in a single day",
                    "type": "integer"
                },
                "most_active_day": {
                    "description": "Date with most activities",
                    "type": "string"
                },
                "total_activities": {
                    "type": "integer"
                }
            }
        },
        "domain.ActivityCalendarWeek": {
            "type": "object",
            "properties": {
                "days": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.ActivityCalendarDay"
                    }
                }
            }
        },
        "domain.AuthResponse": {
            "type": "object",
            "properties": {
                "access_token": {
                    "type": "string"
                },
                "expires_in": {
                    "type": "integer"
                },
                "refresh_token": {
                    "type": "string"
                },
                "user": {
                    "$ref": "#/definitions/domain.User"
                }
            }
        },
        "domain.ErrorResponse": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                }
            }
        },
        "domain.ForgotPasswordRequest": {
            "type": "object",
            "required": [
                "email"
            ],
            "properties": {
                "email": {
                    "type": "string",
                    "example": "john@lissanai.com"
                }
            }
        },
        "domain.FreezeStreakRequest": {
            "type": "object",
            "properties": {
                "reason": {
                    "type": "string",
                    "example": "Vacation"
                }
            }
        },
        "domain.LearningPathResponse": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string"
                },
                "completed_lessons": {
                    "type": "integer"
                },
                "created_at": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "duration": {
                    "description": "in minutes",
                    "type": "integer"
                },
                "id": {
                    "type": "string"
                },
                "is_enrolled": {
                    "type": "boolean"
                },
                "lesson_ids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "level": {
                    "description": "beginner, intermediate, advanced",
                    "type": "string"
                },
                "title": {
                    "type": "string"
                },
                "total_lessons": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                },
                "user_progress": {
                    "type": "number"
                }
            }
        },
        "domain.LessonResponse": {
            "type": "object",
            "properties": {
                "content": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "duration": {
                    "description": "in minutes",
                    "type": "integer"
                },
                "id": {
                    "type": "string"
                },
                "is_completed": {
                    "type": "boolean"
                },
                "order": {
                    "type": "integer"
                },
                "path_id": {
                    "type": "string"
                },
                "quiz": {
                    "$ref": "#/definitions/domain.Quiz"
                },
                "quiz_id": {
                    "type": "string"
                },
                "title": {
                    "type": "string"
                },
                "type": {
                    "description": "video, text, quiz, exercise",
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "domain.LoginRequest": {
            "type": "object",
            "required": [
                "email",
                "password"
            ],
            "properties": {
                "email": {
                    "type": "string",
                    "example": "john@lissanai.com"
                },
                "password": {
                    "type": "string",
                    "example": "strongpassword123"
                }
            }
        },
        "domain.MessageResponse": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                }
            }
        },
        "domain.ProgressResponse": {
            "type": "object",
            "properties": {
                "completed_lessons": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "current_lesson": {
                    "type": "string"
                },
                "enrolled_at": {
                    "type": "string"
                },
                "last_accessed_at": {
                    "type": "string"
                },
                "path_id": {
                    "type": "string"
                },
                "path_title": {
                    "type": "string"
                },
                "progress": {
                    "type": "number"
                },
                "total_lessons": {
                    "type": "integer"
                }
            }
        },
        "domain.PushTokenRequest": {
            "type": "object",
            "required": [
                "platform",
                "token"
            ],
            "properties": {
                "platform": {
                    "type": "string",
                    "example": "ios"
                },
                "token": {
                    "type": "string",
                    "example": "fcm_token_123"
                }
            }
        },
        "domain.Question": {
            "type": "object",
            "properties": {
                "correct": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "points": {
                    "type": "integer"
                },
                "text": {
                    "type": "string"
                },
                "type": {
                    "description": "multiple_choice, true_false, text",
                    "type": "string"
                }
            }
        },
        "domain.Quiz": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "lesson_id": {
                    "type": "string"
                },
                "questions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.Question"
                    }
                },
                "title": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "domain.QuizResultResponse": {
            "type": "object",
            "properties": {
                "answers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "correct_answers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "created_at": {
                    "type": "string"
                },
                "lesson_id": {
                    "type": "string"
                },
                "max_score": {
                    "type": "integer"
                },
                "passed": {
                    "type": "boolean"
                },
                "percentage": {
                    "type": "number"
                },
                "quiz_id": {
                    "type": "string"
                },
                "score": {
                    "type": "number"
                }
            }
        },
        "domain.QuizSubmissionRequest": {
            "type": "object",
            "required": [
                "answers",
                "quiz_id"
            ],
            "properties": {
                "answers": {
                    "description": "question_id -\u003e answer",
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "quiz_id": {
                    "type": "string"
                }
            }
        },
        "domain.RefreshTokenRequest": {
            "type": "object",
            "required": [
                "refresh_token"
            ],
            "properties": {
                "refresh_token": {
                    "type": "string",
                    "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
                }
            }
        },
        "domain.RegisterRequest": {
            "type": "object",
            "required": [
                "email",
                "name",
                "password"
            ],
            "properties": {
                "email": {
                    "type": "string",
                    "example": "john@lissanai.com"
                },
                "name": {
                    "type": "string",
                    "example": "John Doe"
                },
                "password": {
                    "type": "string",
                    "minLength": 8,
                    "example": "strongpassword123"
                }
            }
        },
        "domain.ResetPasswordRequest": {
            "type": "object",
            "required": [
                "new_password",
                "token"
            ],
            "properties": {
                "new_password": {
                    "type": "string",
                    "minLength": 8,
                    "example": "newstrongpassword123"
                },
                "token": {
                    "type": "string",
                    "example": "reset_token_123"
                }
            }
        },
        "domain.SocialAuthRequest": {
            "type": "object",
            "required": [
                "access_token",
                "provider"
            ],
            "properties": {
                "access_token": {
                    "type": "string",
                    "example": "ya29.a0AfH6SMC..."
                },
                "email": {
                    "type": "string",
                    "example": "john@lissanai.com"
                },
                "name": {
                    "type": "string",
                    "example": "John Doe"
                },
                "provider": {
                    "type": "string",
                    "example": "google"
                }
            }
        },
        "domain.StreakInfo": {
            "type": "object",
            "properties": {
                "can_freeze": {
                    "type": "boolean"
                },
                "current_streak": {
                    "type": "integer"
                },
                "days_until_loss": {
                    "type": "integer"
                },
                "freeze_count": {
                    "type": "integer"
                },
                "last_activity_date": {
                    "type": "string"
                },
                "longest_streak": {
                    "type": "integer"
                },
                "max_freezes": {
                    "type": "integer"
                },
                "streak_frozen": {
                    "type": "boolean"
                }
            }
        },
        "domain.SuccessResponse": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                }
            }
        },
        "domain.TokenResponse": {
            "type": "object",
            "properties": {
                "access_token": {
                    "type": "string"
                },
                "expires_in": {
                    "type": "integer"
                }
            }
        },
        "domain.UpdateProfileRequest": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "example": "John Updated"
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": true
                }
            }
        },
        "domain.User": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "current_streak": {
                    "description": "Streak System",
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "freeze_count": {
                    "type": "integer"
                },
                "id": {
                    "type": "string"
                },
                "last_activity_date": {
                    "type": "string"
                },
                "longest_streak": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "provider": {
                    "type": "string"
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": true
                },
                "streak_frozen": {
                    "type": "boolean"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "entities.EditEmailRequest": {
            "type": "object",
            "required": [
                "draft"
            ],
            "properties": {
                "draft": {
                    "type": "string"
                },
                "template_type": {
                    "type": "string"
                },
                "tone": {
                    "type": "string"
                }
            }
        },
        "entities.EmailResponse": {
            "type": "object",
            "properties": {
                "body": {
                    "type": "string"
                },
                "subject": {
                    "type": "string"
                }
            }
        },
        "entities.GenerateEmailRequest": {
            "type": "object",
            "required": [
                "prompt"
            ],
            "properties": {
                "prompt": {
                    "type": "string"
                },
                "template_type": {
                    "type": "string"
                },
                "tone": {
                    "type": "string"
                }
            }
        },
        "entities.PracticeSentence": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "text": {
                    "type": "string"
                }
            }
        },
        "entities.PronunciationFeedback": {
            "type": "object",
            "properties": {
                "full_feedback_summary": {
                    "type": "string"
                },
                "mispronouncedwords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "overall_accuracy_score": {
                    "type": "number"
                }
            }
        },
        "handler.GrammarRequest": {
            "type": "object",
            "required": [
                "text"
            ],
            "properties": {
                "text": {
                    "type": "string",
                    "example": "he have two cats"
                }
            }
        },
        "models.Correction": {
            "type": "object",
            "properties": {
                "corrected_phrase": {
                    "type": "string"
                },
                "explanation": {
                    "$ref": "#/definitions/models.Explanation"
                },
                "original_phrase": {
                    "type": "string"
                }
            }
        },
        "models.ErrorResponse": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                }
            }
        },
        "models.Explanation": {
            "type": "object",
            "properties": {
                "amharic": {
                    "type": "string"
                },
                "english": {
                    "type": "string"
                }
            }
        },
        "models.Feedback": {
            "type": "object",
            "properties": {
                "feedback_points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.FeedbackPoint"
                    }
                },
                "overall_summary": {
                    "type": "string"
                },
                "score_percentage": {
                    "type": "integer"
                }
            }
        },
        "models.FeedbackPoint": {
            "type": "object",
            "properties": {
                "focus_phrase": {
                    "type": "string"
                },
                "suggestion": {
                    "type": "string"
                },
                "type": {
                    "description": "grammar, pronunciation, structure",
                    "type": "string"
                }
            }
        },
        "models.GrammarResponse": {
            "type": "object",
            "properties": {
                "corrected_text": {
                    "type": "string",
                    "example": "He has two cats"
                },
                "corrections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.Correction"
                    }
                }
            }
        },
        "models.NextQuestionReturn": {
            "type": "object",
            "properties": {
                "question": {
                    "type": "string"
                }
            }
        },
        "models.SessionReturn": {
            "type": "object",
            "properties": {
                "question_number": {
                    "type": "integer"
                },
                "session_id": {
                    "type": "string"
                }
            }
        },
        "models.SessionSummary": {
            "type": "object",
            "properties": {
                "completed": {
                    "type": "integer"
                },
                "created_at": {
                    "type": "integer"
                },
                "final_score": {
                    "description": "out of 100",
                    "type": "integer"
                },
                "session_id": {
                    "type": "string"
                },
                "strengths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "total_questions": {
                    "type": "integer"
                },
                "weaknesses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "models.SubmitAnswerRequest": {
            "type": "object",
            "properties": {
                "answer": {
                    "type": "string",
                    "example": "My answer to the question"
                },
                "session_id": {
                    "type": "string",
                    "example": "13c70d60-8dab-4b08-b454-5225dcca1809"
                }
            }
        }
    },
    "securityDefinitions": {
        "BearerAuth": {
            "description": "Type \"Bearer\" followed by a space and JWT token.",
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        }
    }
}`

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
	Version:          "1.0",
	Host:             "localhost:8080",
	BasePath:         "/api/v1",
	Schemes:          []string{},
	Title:            "LissanAI API",
	Description:      "AI-powered English coach for Ethiopians seeking global job opportunities",
	InfoInstanceName: "swagger",
	SwaggerTemplate:  docTemplate,
	LeftDelim:        "{{",
	RightDelim:       "}}",
}

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