{
    "openapi": "3.0.3",
    "info": {
        "title": "SkillUp 2.0 API",
        "description": "National Teacher E-Learning Platform API",
        "version": "2.0.0",
        "contact": {
            "name": "SkillUp Team"
        }
    },
    "servers": [
        {
            "url": "http://localhost:8000/api",
            "description": "Local"
        },
        {
            "url": "https://api.skillup.ng/api",
            "description": "Production"
        }
    ],
    "components": {
        "securitySchemes": {
            "BearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "Sanctum"
            }
        },
        "schemas": {
            "ApiResponse": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "boolean"
                    },
                    "message": {
                        "type": "string"
                    },
                    "data": {
                        "type": "object"
                    }
                }
            },
            "PaginatedResponse": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "boolean"
                    },
                    "message": {
                        "type": "string"
                    },
                    "data": {
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    },
                    "meta": {
                        "type": "object",
                        "properties": {
                            "current_page": {
                                "type": "integer"
                            },
                            "last_page": {
                                "type": "integer"
                            },
                            "per_page": {
                                "type": "integer"
                            },
                            "total": {
                                "type": "integer"
                            }
                        }
                    }
                }
            },
            "User": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "email": {
                        "type": "string",
                        "format": "email"
                    },
                    "phone": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time"
                    }
                }
            },
            "Course": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "level": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "is_mandatory": {
                        "type": "boolean"
                    },
                    "duration_hours": {
                        "type": "number"
                    },
                    "points": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time"
                    }
                }
            },
            "Enrollment": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "user_id": {
                        "type": "integer"
                    },
                    "course_id": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "string"
                    },
                    "progress_percentage": {
                        "type": "number"
                    },
                    "enrolled_at": {
                        "type": "string",
                        "format": "date-time"
                    }
                }
            },
            "Assessment": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    },
                    "total_mark": {
                        "type": "number"
                    },
                    "pass_mark": {
                        "type": "number"
                    },
                    "max_attempts": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "string"
                    }
                }
            },
            "Certificate": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "certificate_number": {
                        "type": "string"
                    },
                    "user_id": {
                        "type": "integer"
                    },
                    "course_id": {
                        "type": "integer"
                    },
                    "issued_at": {
                        "type": "string",
                        "format": "date-time"
                    }
                }
            },
            "Wallet": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "user_id": {
                        "type": "integer"
                    },
                    "available_balance": {
                        "type": "number"
                    },
                    "locked_balance": {
                        "type": "number"
                    },
                    "total_earned": {
                        "type": "number"
                    },
                    "total_withdrawn": {
                        "type": "number"
                    }
                }
            },
            "CashoutRequest": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "reference": {
                        "type": "string"
                    },
                    "amount": {
                        "type": "number"
                    },
                    "status": {
                        "type": "string"
                    },
                    "bank_account": {
                        "type": "object"
                    }
                }
            },
            "Forum": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    },
                    "threads_count": {
                        "type": "integer"
                    }
                }
            },
            "ForumThread": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "body": {
                        "type": "string"
                    },
                    "views_count": {
                        "type": "integer"
                    },
                    "is_pinned": {
                        "type": "boolean"
                    },
                    "is_locked": {
                        "type": "boolean"
                    }
                }
            },
            "LiveClass": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "platform": {
                        "type": "string"
                    },
                    "meeting_link": {
                        "type": "string"
                    },
                    "scheduled_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "status": {
                        "type": "string"
                    },
                    "duration_minutes": {
                        "type": "integer"
                    }
                }
            },
            "MentorshipProgram": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "max_mentees_per_mentor": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "string"
                    }
                }
            },
            "Notification": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "type": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "body": {
                        "type": "string"
                    },
                    "channel": {
                        "type": "string"
                    },
                    "read_at": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                }
            },
            "Report": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "format": {
                        "type": "string"
                    },
                    "file_path": {
                        "type": "string",
                        "nullable": true
                    }
                }
            },
            "SystemSetting": {
                "type": "object",
                "properties": {
                    "key": {
                        "type": "string"
                    },
                    "value": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    },
                    "group": {
                        "type": "string"
                    },
                    "is_public": {
                        "type": "boolean"
                    }
                }
            }
        }
    },
    "tags": [
        {
            "name": "Health",
            "description": "System health and public settings"
        },
        {
            "name": "Auth",
            "description": "Authentication, OTP, onboarding"
        },
        {
            "name": "Location",
            "description": "States, LGAs, schools"
        },
        {
            "name": "TRCN",
            "description": "Teacher registration verification"
        },
        {
            "name": "Courses",
            "description": "Course catalog management"
        },
        {
            "name": "Enrollment",
            "description": "Enrollment and progress tracking"
        },
        {
            "name": "Assessments",
            "description": "Quizzes and exams"
        },
        {
            "name": "Assignments",
            "description": "Graded assignments"
        },
        {
            "name": "Certificates",
            "description": "Certificate issuance and verification"
        },
        {
            "name": "Points",
            "description": "Teacher CPD points ledger"
        },
        {
            "name": "Wallet",
            "description": "Wallet and financial transactions"
        },
        {
            "name": "Cashout",
            "description": "Cashout requests and approvals"
        },
        {
            "name": "Forums",
            "description": "Community discussion forums"
        },
        {
            "name": "Mentorship",
            "description": "Mentorship programs and pairings"
        },
        {
            "name": "Live Classes",
            "description": "Live class scheduling and attendance"
        },
        {
            "name": "Dashboard",
            "description": "Teacher and admin dashboards"
        },
        {
            "name": "Reports",
            "description": "Report generation"
        },
        {
            "name": "Notifications",
            "description": "In-app notification management"
        },
        {
            "name": "System",
            "description": "System settings and activity logs"
        }
    ],
    "paths": {
        "/v1/health": {
            "get": {
                "tags": [
                    "Health"
                ],
                "summary": "Health check",
                "operationId": "health",
                "responses": {
                    "200": {
                        "description": "System health",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/settings": {
            "get": {
                "tags": [
                    "Health"
                ],
                "summary": "Public settings",
                "operationId": "publicSettings",
                "responses": {
                    "200": {
                        "description": "Public settings",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/auth/register": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Register new user",
                "operationId": "register",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "email": {
                                        "type": "string"
                                    },
                                    "phone": {
                                        "type": "string"
                                    },
                                    "password": {
                                        "type": "string"
                                    },
                                    "password_confirmation": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": [
                    {
                        "description": "User registered",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    },
                    {
                        "description": "Validation error"
                    }
                ]
            }
        },
        "/v1/auth/login": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Login",
                "operationId": "login",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "type": "string"
                                    },
                                    "password": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": [
                    {
                        "description": "Login successful",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    },
                    {
                        "description": "Invalid credentials"
                    }
                ]
            }
        },
        "/v1/auth/forgot-password": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Forgot password",
                "operationId": "forgotPassword",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Reset link sent",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/auth/reset-password": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Reset password",
                "operationId": "resetPassword",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "type": "string"
                                    },
                                    "token": {
                                        "type": "string"
                                    },
                                    "password": {
                                        "type": "string"
                                    },
                                    "password_confirmation": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Password reset",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/auth/send-otp": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Send OTP",
                "operationId": "sendOtp",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OTP sent",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/auth/verify-otp": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Verify OTP",
                "operationId": "verifyOtp",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "code": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": [
                    {
                        "description": "OTP verified",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    },
                    {
                        "description": "Invalid OTP"
                    }
                ]
            }
        },
        "/v1/auth/onboarding-profile": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Submit onboarding profile",
                "operationId": "onboardingProfile",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "gender": {
                                        "type": "string"
                                    },
                                    "date_of_birth": {
                                        "type": "string"
                                    },
                                    "state_of_origin_id": {
                                        "type": "integer"
                                    },
                                    "lga_of_origin_id": {
                                        "type": "integer"
                                    },
                                    "school_state_id": {
                                        "type": "integer"
                                    },
                                    "school_lga_id": {
                                        "type": "integer"
                                    },
                                    "school_id": {
                                        "type": "integer"
                                    },
                                    "subject_taught": {
                                        "type": "string"
                                    },
                                    "years_of_experience": {
                                        "type": "integer"
                                    },
                                    "qualification": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Profile created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/auth/onboarding/status": {
            "get": {
                "tags": [
                    "Auth"
                ],
                "summary": "Onboarding status",
                "operationId": "onboardingStatus",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Onboarding status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/auth/logout": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Logout",
                "operationId": "logout",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Logged out",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/auth/me": {
            "get": {
                "tags": [
                    "Auth"
                ],
                "summary": "Current user profile",
                "operationId": "me",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User profile",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/auth/profile": {
            "patch": {
                "tags": [
                    "Auth"
                ],
                "summary": "Update profile",
                "operationId": "updateProfile",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "gender": {
                                        "type": "string"
                                    },
                                    "subject_taught": {
                                        "type": "string"
                                    },
                                    "years_of_experience": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Profile updated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/auth/firebase": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Firebase login",
                "operationId": "firebaseLogin",
                "responses": {
                    "200": {
                        "description": "Firebase login successful",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/states": {
            "get": {
                "tags": [
                    "Location"
                ],
                "summary": "List states",
                "operationId": "states",
                "responses": {
                    "200": {
                        "description": "States list",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/lgas": {
            "get": {
                "tags": [
                    "Location"
                ],
                "summary": "List LGAs",
                "operationId": "lgas",
                "parameters": [
                    {
                        "name": "state_id",
                        "in": "query",
                        "required": false,
                        "description": "Filter by state",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "LGAs list",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/schools": {
            "get": {
                "tags": [
                    "Location"
                ],
                "summary": "List schools",
                "operationId": "schools",
                "parameters": [
                    {
                        "name": "lga_id",
                        "in": "query",
                        "required": false,
                        "description": "Filter by LGA",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "Search",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Schools list",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/trcn/verify": {
            "post": {
                "tags": [
                    "TRCN"
                ],
                "summary": "Submit TRCN verification",
                "operationId": "trcnVerify",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "trcn_number": {
                                        "type": "string"
                                    },
                                    "certificate_file": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Verification submitted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/trcn/status": {
            "get": {
                "tags": [
                    "TRCN"
                ],
                "summary": "TRCN verification status",
                "operationId": "trcnStatus",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Verification status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/trcn/verifications": {
            "get": {
                "tags": [
                    "TRCN"
                ],
                "summary": "[Admin] List TRCN verifications",
                "operationId": "adminTrcnList",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Verifications",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/trcn/verifications/{verification}/review": {
            "patch": {
                "tags": [
                    "TRCN"
                ],
                "summary": "[Admin] Review TRCN verification",
                "operationId": "adminTrcnReview",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "verification",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "status": {
                                        "type": "string"
                                    },
                                    "notes": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Reviewed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/schools/import": {
            "post": {
                "tags": [
                    "Location"
                ],
                "summary": "[Admin] Import schools",
                "operationId": "adminImportSchools",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Schools imported",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/courses": {
            "get": {
                "tags": [
                    "Courses"
                ],
                "summary": "List courses",
                "operationId": "coursesList",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "category_id",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "level",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "is_mandatory",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "track_id",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort_by",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort_dir",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Courses",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/courses/{course}": {
            "get": {
                "tags": [
                    "Courses"
                ],
                "summary": "Course detail",
                "operationId": "courseShow",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Course detail",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/courses/{course}/recommend-next": {
            "get": {
                "tags": [
                    "Courses"
                ],
                "summary": "Recommend next course",
                "operationId": "courseRecommend",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Recommendation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/courses": {
            "post": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Create course",
                "operationId": "adminCourseCreate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    },
                                    "category_id": {
                                        "type": "integer"
                                    },
                                    "type_id": {
                                        "type": "integer"
                                    },
                                    "track_id": {
                                        "type": "integer"
                                    },
                                    "level": {
                                        "type": "string"
                                    },
                                    "duration_hours": {
                                        "type": "number"
                                    },
                                    "points": {
                                        "type": "integer"
                                    },
                                    "is_mandatory": {
                                        "type": "boolean"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Course created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/courses/{course}": {
            "put": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Update course",
                "operationId": "adminCourseUpdate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Course updated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Delete course",
                "operationId": "adminCourseDelete",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Course deleted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/courses/{course}/publish": {
            "patch": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Publish course",
                "operationId": "adminCoursePublish",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Published",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/courses/{course}/archive": {
            "patch": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Archive course",
                "operationId": "adminCourseArchive",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Archived",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/courses/{course}/modules": {
            "post": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Add module",
                "operationId": "adminModuleCreate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    },
                                    "order": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Module added",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/modules/{module}": {
            "put": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Update module",
                "operationId": "adminModuleUpdate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Module updated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Delete module",
                "operationId": "adminModuleDelete",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Module deleted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/modules/reorder": {
            "post": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Reorder modules",
                "operationId": "adminModulesReorder",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "modules": {
                                        "type": "array"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Reordered",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/modules/{module}/contents": {
            "post": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Add content",
                "operationId": "adminContentCreate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Content added",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/contents/{content}": {
            "put": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Update content",
                "operationId": "adminContentUpdate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "content",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Content updated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Courses"
                ],
                "summary": "[Admin] Delete content",
                "operationId": "adminContentDelete",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "content",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Content deleted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/courses/{course}/enroll": {
            "post": {
                "tags": [
                    "Enrollment"
                ],
                "summary": "Enroll in course",
                "operationId": "enroll",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Enrolled",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/enrollments": {
            "get": {
                "tags": [
                    "Enrollment"
                ],
                "summary": "My enrollments",
                "operationId": "myEnrollments",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Enrollments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/courses/{course}/progress": {
            "get": {
                "tags": [
                    "Enrollment"
                ],
                "summary": "Course progress",
                "operationId": "courseProgress",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Progress",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/modules/{module}/complete": {
            "post": {
                "tags": [
                    "Enrollment"
                ],
                "summary": "Complete module",
                "operationId": "completeModule",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Module completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/contents/{content}/mark-complete": {
            "post": {
                "tags": [
                    "Enrollment"
                ],
                "summary": "Mark content complete",
                "operationId": "markContentComplete",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "content",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Content completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/courses/{course}/assign-users": {
            "post": {
                "tags": [
                    "Enrollment"
                ],
                "summary": "[Admin] Assign users to course",
                "operationId": "adminAssignUsers",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user_ids": {
                                        "type": "array"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Users assigned",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/courses/{course}/assessments": {
            "get": {
                "tags": [
                    "Assessments"
                ],
                "summary": "List assessments",
                "operationId": "assessmentsList",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Assessments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/assessments/{assessment}": {
            "get": {
                "tags": [
                    "Assessments"
                ],
                "summary": "Assessment detail",
                "operationId": "assessmentShow",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "assessment",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Assessment",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/assessments/{assessment}/start": {
            "post": {
                "tags": [
                    "Assessments"
                ],
                "summary": "Start assessment",
                "operationId": "assessmentStart",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "assessment",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Attempt started",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/assessments/attempts/{attempt}/submit": {
            "post": {
                "tags": [
                    "Assessments"
                ],
                "summary": "Submit attempt",
                "operationId": "assessmentSubmit",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "attempt",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "responses": {
                                        "type": "array"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Submitted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/assessments/attempts": {
            "get": {
                "tags": [
                    "Assessments"
                ],
                "summary": "My attempts",
                "operationId": "myAttempts",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Attempts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/assessments": {
            "post": {
                "tags": [
                    "Assessments"
                ],
                "summary": "[Admin] Create assessment",
                "operationId": "adminAssessmentCreate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "course_id": {
                                        "type": "integer"
                                    },
                                    "title": {
                                        "type": "string"
                                    },
                                    "type": {
                                        "type": "string"
                                    },
                                    "total_mark": {
                                        "type": "number"
                                    },
                                    "pass_mark": {
                                        "type": "number"
                                    },
                                    "max_attempts": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/assessments/{assessment}/questions": {
            "post": {
                "tags": [
                    "Assessments"
                ],
                "summary": "[Admin] Add question",
                "operationId": "adminQuestionCreate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "assessment",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "question_text": {
                                        "type": "string"
                                    },
                                    "question_type": {
                                        "type": "string"
                                    },
                                    "points": {
                                        "type": "number"
                                    },
                                    "order": {
                                        "type": "integer"
                                    },
                                    "options": {
                                        "type": "array"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Question added",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/assessments/{assessment}/publish": {
            "patch": {
                "tags": [
                    "Assessments"
                ],
                "summary": "[Admin] Publish assessment",
                "operationId": "adminAssessmentPublish",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "assessment",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Published",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/courses/{course}/assignments": {
            "get": {
                "tags": [
                    "Assignments"
                ],
                "summary": "List assignments",
                "operationId": "assignmentsList",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Assignments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/assignments/{assignment}": {
            "get": {
                "tags": [
                    "Assignments"
                ],
                "summary": "Assignment detail",
                "operationId": "assignmentShow",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "assignment",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Assignment",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/assignments/{assignment}/submit": {
            "post": {
                "tags": [
                    "Assignments"
                ],
                "summary": "Submit assignment",
                "operationId": "assignmentSubmit",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "assignment",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "content": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Submitted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/assignments/submissions": {
            "get": {
                "tags": [
                    "Assignments"
                ],
                "summary": "My submissions",
                "operationId": "mySubmissions",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Submissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/assignments": {
            "post": {
                "tags": [
                    "Assignments"
                ],
                "summary": "[Admin] Create assignment",
                "operationId": "adminAssignmentCreate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "course_id": {
                                        "type": "integer"
                                    },
                                    "title": {
                                        "type": "string"
                                    },
                                    "type": {
                                        "type": "string"
                                    },
                                    "total_mark": {
                                        "type": "number"
                                    },
                                    "pass_mark": {
                                        "type": "number"
                                    },
                                    "max_attempts": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/submissions/{submission}/grade": {
            "patch": {
                "tags": [
                    "Assignments"
                ],
                "summary": "[Admin] Grade submission",
                "operationId": "adminGrade",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "submission",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "score": {
                                        "type": "number"
                                    },
                                    "feedback": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Graded",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/assignments/{assignment}/submissions": {
            "get": {
                "tags": [
                    "Assignments"
                ],
                "summary": "[Admin] List submissions",
                "operationId": "adminSubmissions",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "assignment",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Submissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/certificates": {
            "get": {
                "tags": [
                    "Certificates"
                ],
                "summary": "My certificates",
                "operationId": "myCertificates",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Certificates",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/courses/{course}/certificate": {
            "post": {
                "tags": [
                    "Certificates"
                ],
                "summary": "Issue certificate",
                "operationId": "issueCertificate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "course",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Certificate issued",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/certificates/verify/{number}": {
            "get": {
                "tags": [
                    "Certificates"
                ],
                "summary": "Verify certificate (public)",
                "operationId": "verifyCertificate",
                "parameters": [
                    {
                        "name": "number",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Certificate details",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/points": {
            "get": {
                "tags": [
                    "Points"
                ],
                "summary": "My points balance",
                "operationId": "myPoints",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Points",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/points/adjust": {
            "post": {
                "tags": [
                    "Points"
                ],
                "summary": "[Admin] Adjust points",
                "operationId": "adminAdjustPoints",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user_id": {
                                        "type": "integer"
                                    },
                                    "points": {
                                        "type": "integer"
                                    },
                                    "description": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Points adjusted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/wallet": {
            "get": {
                "tags": [
                    "Wallet"
                ],
                "summary": "My wallet",
                "operationId": "myWallet",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Wallet",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/wallet/summary": {
            "get": {
                "tags": [
                    "Wallet"
                ],
                "summary": "Wallet summary",
                "operationId": "walletSummary",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Summary",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/wallet/transactions": {
            "get": {
                "tags": [
                    "Wallet"
                ],
                "summary": "Wallet transactions",
                "operationId": "walletTransactions",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Transactions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/wallet/locked-earnings": {
            "get": {
                "tags": [
                    "Wallet"
                ],
                "summary": "Locked earnings",
                "operationId": "lockedEarnings",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Locked earnings",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/bank-accounts": {
            "get": {
                "tags": [
                    "Wallet"
                ],
                "summary": "Bank accounts",
                "operationId": "bankAccounts",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Bank accounts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "Wallet"
                ],
                "summary": "Add bank account",
                "operationId": "addBankAccount",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "bank_name": {
                                        "type": "string"
                                    },
                                    "bank_code": {
                                        "type": "string"
                                    },
                                    "account_number": {
                                        "type": "string"
                                    },
                                    "account_name": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Bank account added",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/bank-accounts/{account}/default": {
            "patch": {
                "tags": [
                    "Wallet"
                ],
                "summary": "Set default bank account",
                "operationId": "setDefaultAccount",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "account",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Default set",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/bank-accounts/{account}": {
            "delete": {
                "tags": [
                    "Wallet"
                ],
                "summary": "Remove bank account",
                "operationId": "removeBankAccount",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "account",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Removed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/wallet/cashout": {
            "post": {
                "tags": [
                    "Cashout"
                ],
                "summary": "Request cashout",
                "operationId": "requestCashout",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "bank_account_id": {
                                        "type": "integer"
                                    },
                                    "amount": {
                                        "type": "number"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Cashout requested",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/wallet/cashouts": {
            "get": {
                "tags": [
                    "Cashout"
                ],
                "summary": "My cashouts",
                "operationId": "myCashouts",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Cashouts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/cashouts": {
            "get": {
                "tags": [
                    "Cashout"
                ],
                "summary": "[Admin] All cashouts",
                "operationId": "adminCashouts",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Cashouts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/cashouts/{cashout}/approve": {
            "patch": {
                "tags": [
                    "Cashout"
                ],
                "summary": "[Admin] Approve cashout",
                "operationId": "adminApproveCashout",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "cashout",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Approved",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/cashouts/{cashout}/reject": {
            "patch": {
                "tags": [
                    "Cashout"
                ],
                "summary": "[Admin] Reject cashout",
                "operationId": "adminRejectCashout",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "cashout",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "reason": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Rejected",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/wallet/{user}/credit": {
            "post": {
                "tags": [
                    "Wallet"
                ],
                "summary": "[Admin] Credit wallet",
                "operationId": "adminCreditWallet",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "amount": {
                                        "type": "number"
                                    },
                                    "description": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Credited",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/forums": {
            "get": {
                "tags": [
                    "Forums"
                ],
                "summary": "List forums",
                "operationId": "forumsList",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "course_id",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Forums",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/forums/{forum}/threads": {
            "get": {
                "tags": [
                    "Forums"
                ],
                "summary": "List threads",
                "operationId": "forumThreads",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "forum",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Threads",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "Forums"
                ],
                "summary": "Create thread",
                "operationId": "createThread",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "forum",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    },
                                    "body": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Thread created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/threads/{thread}": {
            "get": {
                "tags": [
                    "Forums"
                ],
                "summary": "Thread detail",
                "operationId": "showThread",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "thread",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Thread with posts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/threads/{thread}/posts": {
            "post": {
                "tags": [
                    "Forums"
                ],
                "summary": "Create post",
                "operationId": "createPost",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "thread",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "body": {
                                        "type": "string"
                                    },
                                    "parent_id": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Post created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/posts/{post}": {
            "put": {
                "tags": [
                    "Forums"
                ],
                "summary": "Update post",
                "operationId": "updatePost",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "post",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "body": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Post updated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Forums"
                ],
                "summary": "Delete post",
                "operationId": "deletePost",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "post",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Post deleted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/{type}/{id}/react": {
            "post": {
                "tags": [
                    "Forums"
                ],
                "summary": "React to thread/post",
                "operationId": "react",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "required": true,
                        "description": "thread or post",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "type": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Reaction toggled",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/posts/{post}/mark-answer": {
            "patch": {
                "tags": [
                    "Forums"
                ],
                "summary": "Mark post as answer",
                "operationId": "markAnswer",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "post",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Marked",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/forums": {
            "post": {
                "tags": [
                    "Forums"
                ],
                "summary": "[Admin] Create forum",
                "operationId": "adminForumCreate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    },
                                    "course_id": {
                                        "type": "integer"
                                    },
                                    "type": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Forum created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/threads/{thread}/pin": {
            "patch": {
                "tags": [
                    "Forums"
                ],
                "summary": "[Admin] Pin/unpin thread",
                "operationId": "adminPinThread",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "thread",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Toggled",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/threads/{thread}/lock": {
            "patch": {
                "tags": [
                    "Forums"
                ],
                "summary": "[Admin] Lock/unlock thread",
                "operationId": "adminLockThread",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "thread",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Toggled",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/mentorship/programs": {
            "get": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "List programs",
                "operationId": "mentorshipPrograms",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Programs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/mentorship/programs/{program}": {
            "get": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "Program detail",
                "operationId": "mentorshipProgramShow",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "program",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Program",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/mentorship/programs/{program}/apply": {
            "post": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "Apply as mentee",
                "operationId": "applyMentee",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "program",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "goals": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Applied",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/mentorships": {
            "get": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "My mentorships",
                "operationId": "myMentorships",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Mentorships",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/mentorships/{pairing}/sessions": {
            "get": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "Pairing sessions",
                "operationId": "mentorshipSessions",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "pairing",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sessions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "Schedule session",
                "operationId": "createSession",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "pairing",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    },
                                    "type": {
                                        "type": "string"
                                    },
                                    "scheduled_at": {
                                        "type": "string"
                                    },
                                    "duration_minutes": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Session scheduled",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/mentorship/sessions/{session}/complete": {
            "patch": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "Complete session",
                "operationId": "completeSession",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "session",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "summary": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/mentorships/{pairing}/notes": {
            "get": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "Pairing notes",
                "operationId": "mentorshipNotes",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "pairing",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Notes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "Add note",
                "operationId": "createNote",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "pairing",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "content": {
                                        "type": "string"
                                    },
                                    "session_id": {
                                        "type": "integer"
                                    },
                                    "is_private": {
                                        "type": "boolean"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Note added",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/mentorship/programs": {
            "post": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "[Admin] Create program",
                "operationId": "adminMentorshipCreate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    },
                                    "course_id": {
                                        "type": "integer"
                                    },
                                    "max_mentees_per_mentor": {
                                        "type": "integer"
                                    },
                                    "starts_at": {
                                        "type": "string"
                                    },
                                    "ends_at": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Program created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/mentorship/programs/{program}/pair": {
            "post": {
                "tags": [
                    "Mentorship"
                ],
                "summary": "[Admin] Create pairing",
                "operationId": "adminMentorshipPair",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "program",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "mentor_id": {
                                        "type": "integer"
                                    },
                                    "mentee_id": {
                                        "type": "integer"
                                    },
                                    "goals": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Paired",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/live-classes": {
            "get": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "List live classes",
                "operationId": "liveClassesList",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "course_id",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "upcoming",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Live classes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/live-classes/{liveClass}": {
            "get": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "Live class detail",
                "operationId": "liveClassShow",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "liveClass",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Live class",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/live-classes/{liveClass}/register": {
            "post": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "Register for class",
                "operationId": "liveClassRegister",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "liveClass",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Registered",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/live-classes/{liveClass}/join": {
            "post": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "Join live class",
                "operationId": "liveClassJoin",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "liveClass",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Joined with meeting details",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/live-classes/{liveClass}/leave": {
            "post": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "Leave live class",
                "operationId": "liveClassLeave",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "liveClass",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Left",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/live-classes": {
            "get": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "My registrations",
                "operationId": "myLiveClasses",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Registrations",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/attendance": {
            "get": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "My attendance",
                "operationId": "myAttendance",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Attendance records",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/live-classes": {
            "post": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "[Admin] Schedule class",
                "operationId": "adminLiveClassCreate",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    },
                                    "platform": {
                                        "type": "string"
                                    },
                                    "meeting_link": {
                                        "type": "string"
                                    },
                                    "scheduled_at": {
                                        "type": "string"
                                    },
                                    "duration_minutes": {
                                        "type": "integer"
                                    },
                                    "course_id": {
                                        "type": "integer"
                                    },
                                    "max_participants": {
                                        "type": "integer"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Scheduled",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/live-classes/{liveClass}/go-live": {
            "patch": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "[Admin] Go live",
                "operationId": "adminGoLive",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "liveClass",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Now live",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/live-classes/{liveClass}/end": {
            "patch": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "[Admin] End class",
                "operationId": "adminEndClass",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "liveClass",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ended",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/live-classes/{liveClass}/cancel": {
            "patch": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "[Admin] Cancel class",
                "operationId": "adminCancelClass",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "liveClass",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Cancelled",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/live-classes/{liveClass}/recording": {
            "patch": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "[Admin] Add recording",
                "operationId": "adminAddRecording",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "liveClass",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "recording_url": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Recording added",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/live-classes/{liveClass}/attendance": {
            "get": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "[Admin] Class attendance",
                "operationId": "adminClassAttendance",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "liveClass",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Attendance summary",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/attendance/mark": {
            "post": {
                "tags": [
                    "Live Classes"
                ],
                "summary": "[Admin] Mark attendance",
                "operationId": "adminMarkAttendance",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user_id": {
                                        "type": "integer"
                                    },
                                    "attendable_type": {
                                        "type": "string"
                                    },
                                    "attendable_id": {
                                        "type": "integer"
                                    },
                                    "status": {
                                        "type": "string"
                                    },
                                    "notes": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Attendance marked",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/dashboard": {
            "get": {
                "tags": [
                    "Dashboard"
                ],
                "summary": "Teacher dashboard",
                "operationId": "teacherDashboard",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Dashboard stats",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/dashboard": {
            "get": {
                "tags": [
                    "Dashboard"
                ],
                "summary": "[Admin] Platform dashboard",
                "operationId": "adminDashboard",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Admin dashboard",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/dashboard/state/{stateId}": {
            "get": {
                "tags": [
                    "Dashboard"
                ],
                "summary": "[Admin] State dashboard",
                "operationId": "adminStateDashboard",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "stateId",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "State stats",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/reports": {
            "get": {
                "tags": [
                    "Reports"
                ],
                "summary": "[Admin] List reports",
                "operationId": "adminReportsList",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/reports/generate": {
            "post": {
                "tags": [
                    "Reports"
                ],
                "summary": "[Admin] Generate report",
                "operationId": "adminGenerateReport",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "type": {
                                        "type": "string"
                                    },
                                    "format": {
                                        "type": "string"
                                    },
                                    "filters": {
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Report queued",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/reports/{report}": {
            "get": {
                "tags": [
                    "Reports"
                ],
                "summary": "[Admin] Report detail",
                "operationId": "adminReportShow",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "report",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Reports"
                ],
                "summary": "[Admin] Delete report",
                "operationId": "adminReportDelete",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "report",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Deleted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/notifications": {
            "get": {
                "tags": [
                    "Notifications"
                ],
                "summary": "My notifications",
                "operationId": "myNotifications",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Notifications",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/notifications/unread-count": {
            "get": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Unread count",
                "operationId": "unreadCount",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Count",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/notifications/{notification}/read": {
            "patch": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Mark read",
                "operationId": "markRead",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "notification",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Read",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/notifications/mark-all-read": {
            "post": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Mark all read",
                "operationId": "markAllRead",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "All read",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/my/notifications/{notification}": {
            "delete": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Delete notification",
                "operationId": "deleteNotification",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "notification",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Deleted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/notifications/broadcast": {
            "post": {
                "tags": [
                    "Notifications"
                ],
                "summary": "[Admin] Broadcast notification",
                "operationId": "adminBroadcast",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    },
                                    "body": {
                                        "type": "string"
                                    },
                                    "type": {
                                        "type": "string"
                                    },
                                    "channel": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Broadcast sent",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/settings": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "[Admin] All settings",
                "operationId": "adminSettings",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "group",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Settings",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/settings/{key}": {
            "put": {
                "tags": [
                    "System"
                ],
                "summary": "[Admin] Update setting",
                "operationId": "adminUpdateSetting",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "key",
                        "in": "path",
                        "required": true,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "value": {
                                        "type": "string"
                                    },
                                    "type": {
                                        "type": "string"
                                    },
                                    "group": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    },
                                    "is_public": {
                                        "type": "boolean"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Setting updated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/admin/activity-logs": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "[Admin] Activity logs",
                "operationId": "adminActivityLogs",
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "parameters": [
                    {
                        "name": "action",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "description": "",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Activity logs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedResponse"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}