{
  "version": "2.0",
  "title": "Pathshalaa Tutor V2 APIs - Mobile App Documentation",
  "description": "Complete API structure documentation for newly created V2 Tutor APIs. This document is designed for mobile app developers to integrate tutor functionality.",
  "base_url": "{{base_url}}/api/v2/tutor",
  "authentication": {
    "type": "Bearer Token",
    "header": "Authorization: Bearer {token}",
    "description": "Most endpoints require authentication using Sanctum token. Include the token in the Authorization header."
  },
  "api_categories": [
    {
      "category": "Authentication",
      "description": "Endpoints for tutor authentication and OTP verification",
      "endpoints": [
        {
          "name": "Send Login OTP",
          "method": "POST",
          "endpoint": "/api/v2/tutor/send-otp",
          "authentication_required": false,
          "description": "Generate and send OTP for tutor login via email or mobile number",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "identifier",
                "type": "string",
                "required": true,
                "description": "Email address or 10-digit mobile number",
                "example": "tutor@example.com or 9876543210"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "OTP generated successfully",
                "data": {
                  "identifier_type": "email",
                  "expires_in": "15 minutes"
                }
              }
            },
            "errors": [
              {
                "status": 422,
                "error_code": "VALIDATION_ERROR",
                "message": "The identifier must be either a valid email or a 10-digit mobile number"
              },
              {
                "status": 404,
                "error_code": "TUTOR_NOT_FOUND",
                "message": "Tutor not found with the provided email/mobile"
              }
            ]
          }
        },
        {
          "name": "Verify OTP",
          "method": "POST",
          "endpoint": "/api/v2/tutor/verify-otp",
          "authentication_required": false,
          "description": "Verify OTP and update email/mobile verification status",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "identifier",
                "type": "string",
                "required": true,
                "description": "Email or 10-digit mobile number",
                "example": "tutor@example.com"
              },
              {
                "name": "otp",
                "type": "string",
                "required": true,
                "description": "6-digit OTP received by user",
                "example": "123456"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "OTP verified successfully",
                "data": {
                  "identifier_type": "email",
                  "verification_status": true
                }
              }
            },
            "errors": [
              {
                "status": 401,
                "error_code": "INVALID_OTP",
                "message": "Invalid OTP"
              },
              {
                "status": 401,
                "error_code": "OTP_EXPIRED",
                "message": "OTP has expired"
              }
            ]
          }
        },
        {
          "name": "Login Tutor",
          "method": "POST",
          "endpoint": "/api/v2/tutor/login",
          "authentication_required": false,
          "description": "Login tutor with email/password, email/OTP, or mobile/OTP",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "login_type",
                "type": "string",
                "required": true,
                "enum": ["email_password", "email_otp", "mobile_otp"],
                "description": "Type of login method"
              },
              {
                "name": "email",
                "type": "string",
                "required": "conditional",
                "description": "Required for email_password and email_otp login types",
                "example": "tutor@example.com"
              },
              {
                "name": "mobile",
                "type": "string",
                "required": "conditional",
                "description": "Required for mobile_otp login type (10 digits)",
                "example": "9876543210"
              },
              {
                "name": "password",
                "type": "string",
                "required": "conditional",
                "description": "Required for email_password login type"
              },
              {
                "name": "otp",
                "type": "string",
                "required": "conditional",
                "description": "Required for email_otp and mobile_otp login types (6 digits)"
              },
              {
                "name": "device_token_id",
                "type": "string",
                "required": true,
                "description": "Device token for push notifications"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Login successful",
                "data": {
                  "user": {
                    "id": 1,
                    "name": "John Doe",
                    "email": "tutor@example.com",
                    "mobile_no": "9876543210",
                    "role_id": 3
                  },
                  "token": "1|abc123xyz...",
                  "login_type": "email_password"
                }
              }
            },
            "errors": [
              {
                "status": 401,
                "error_code": "INVALID_PASSWORD",
                "message": "Invalid password"
              },
              {
                "status": 404,
                "error_code": "TUTOR_NOT_FOUND",
                "message": "Tutor not found"
              }
            ]
          }
        }
      ]
    },
    {
      "category": "Profile Management",
      "description": "Endpoints for managing tutor profile information",
      "endpoints": [
        {
          "name": "Get Profile",
          "method": "GET",
          "endpoint": "/api/v2/tutor/profile",
          "authentication_required": true,
          "description": "Get authenticated tutor's profile information",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Profile fetched successfully",
                "data": {
                  "id": 1,
                  "name": "John Doe",
                  "email": "tutor@example.com",
                  "mobile_no": "9876543210",
                  "is_email_verified": true,
                  "is_mobile_verified": true,
                  "role_id": 3,
                  "profile_image": "https://example.com/profile.jpg"
                }
              }
            }
          }
        },
        {
          "name": "Update Profile",
          "method": "POST",
          "endpoint": "/api/v2/tutor/profile",
          "authentication_required": true,
          "description": "Update authenticated tutor's profile information",
          "request": {
            "content_type": "multipart/form-data",
            "parameters": [
              {
                "name": "name",
                "type": "string",
                "required": false,
                "description": "Tutor's name"
              },
              {
                "name": "email",
                "type": "string",
                "required": false,
                "description": "Tutor's email address"
              },
              {
                "name": "mobile_no",
                "type": "string",
                "required": false,
                "description": "10-digit mobile number"
              },
              {
                "name": "profile_image",
                "type": "file",
                "required": false,
                "description": "Profile image file (jpg, png, max 2MB)"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Profile updated successfully",
                "data": {
                  "id": 1,
                  "name": "Updated Name",
                  "email": "updated@example.com"
                }
              }
            }
          }
        }
      ]
    },
    {
      "category": "Dashboard & Analytics",
      "description": "Endpoints for tutor dashboard and analytics",
      "endpoints": [
        {
          "name": "Get Dashboard",
          "method": "GET",
          "endpoint": "/api/v2/tutor/dashboard",
          "authentication_required": true,
          "description": "Get tutor dashboard with statistics and overview",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Dashboard data fetched successfully",
                "data": {
                  "total_classes": 5,
                  "total_students": 150,
                  "total_test_series": 25,
                  "active_batches": 3,
                  "recent_activity": []
                }
              }
            }
          }
        }
      ]
    },
    {
      "category": "Class/Batch Management",
      "description": "Endpoints for creating and managing classes/batches",
      "endpoints": [
        {
          "name": "Create Class/Batch",
          "method": "POST",
          "endpoint": "/api/v2/tutor/create-class-batch",
          "authentication_required": true,
          "description": "Create a new class or batch for students",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "group_name",
                "type": "string",
                "required": true,
                "description": "Name of the class/batch"
              },
              {
                "name": "description",
                "type": "string",
                "required": false,
                "description": "Description of the class"
              },
              {
                "name": "category_id",
                "type": "integer",
                "required": false,
                "description": "Category/Subject ID"
              }
            ]
          },
          "response": {
            "success": {
              "status": 201,
              "example": {
                "status": true,
                "message": "Class created successfully",
                "data": {
                  "id": 1,
                  "group_name": "Mathematics Grade 10",
                  "enrollment_code": "ABC123",
                  "qr_code_url": "https://example.com/qr/ABC123.png"
                }
              }
            }
          }
        },
        {
          "name": "View Class Details",
          "method": "GET",
          "endpoint": "/api/v2/tutor/class-details",
          "authentication_required": true,
          "description": "Get details of a specific class/batch",
          "request": {
            "parameters": [
              {
                "name": "class_id",
                "type": "integer",
                "required": true,
                "location": "query",
                "description": "Class/Batch ID",
                "example": "?class_id=89"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "id": 89,
                  "group_name": "Mathematics Grade 10",
                  "total_students": 45,
                  "enrollment_code": "ABC123",
                  "students": []
                }
              }
            }
          }
        },
        {
          "name": "List All Groups/Batches",
          "method": "GET",
          "endpoint": "/api/v2/tutor/groups",
          "authentication_required": true,
          "description": "Get list of all batches created by tutor",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": []
              }
            }
          }
        },
        {
          "name": "Get Group Details",
          "method": "GET",
          "endpoint": "/api/v2/tutor/groups/{id}",
          "authentication_required": true,
          "description": "Get detailed information about a specific group/batch",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "id": 1,
                  "group_name": "Mathematics Grade 10",
                  "students_count": 45
                }
              }
            }
          }
        },
        {
          "name": "Update Group",
          "method": "PUT",
          "endpoint": "/api/v2/tutor/groups/{id}",
          "authentication_required": true,
          "description": "Update group/batch details",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "group_name",
                "type": "string",
                "required": false
              },
              {
                "name": "description",
                "type": "string",
                "required": false
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Group updated successfully"
              }
            }
          }
        },
        {
          "name": "Delete Group",
          "method": "DELETE",
          "endpoint": "/api/v2/tutor/groups/{id}",
          "authentication_required": true,
          "description": "Delete a group/batch",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Group deleted successfully"
              }
            }
          }
        },
        {
          "name": "Get Group Activity",
          "method": "GET",
          "endpoint": "/api/v2/tutor/groups/{id}/activity",
          "authentication_required": true,
          "description": "Get activity logs for a group",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "activities": []
                }
              }
            }
          }
        },
        {
          "name": "Regenerate Enrollment Code",
          "method": "POST",
          "endpoint": "/api/v2/tutor/groups/{id}/regenerate-code",
          "authentication_required": true,
          "description": "Regenerate enrollment code for a group",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "enrollment_code": "XYZ789"
                }
              }
            }
          }
        },
        {
          "name": "Get Enrollment Status",
          "method": "GET",
          "endpoint": "/api/v2/tutor/groups/{id}/enrollment-status",
          "authentication_required": true,
          "description": "Get enrollment status for a group",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "total_enrolled": 45,
                  "pending_approvals": 3
                }
              }
            }
          }
        }
      ]
    },
    {
      "category": "Student Management",
      "description": "Endpoints for managing students in classes/batches",
      "endpoints": [
        {
          "name": "Add Student",
          "method": "POST",
          "endpoint": "/api/v2/tutor/add-student",
          "authentication_required": true,
          "description": "Add a new student to a class/batch",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "group_id",
                "type": "integer",
                "required": true,
                "description": "Class/Batch ID"
              },
              {
                "name": "student_name",
                "type": "string",
                "required": true,
                "description": "Student's name"
              },
              {
                "name": "email",
                "type": "string",
                "required": false,
                "description": "Student's email"
              },
              {
                "name": "mobile",
                "type": "string",
                "required": false,
                "description": "Student's mobile number"
              }
            ]
          },
          "response": {
            "success": {
              "status": 201,
              "example": {
                "status": true,
                "message": "Student added successfully",
                "data": {
                  "id": 1,
                  "name": "Student Name"
                }
              }
            }
          }
        },
        {
          "name": "Remove Student",
          "method": "DELETE",
          "endpoint": "/api/v2/tutor/remove-student/{id}",
          "authentication_required": true,
          "description": "Remove a student from class/batch",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Student removed successfully"
              }
            }
          }
        },
        {
          "name": "Import Students (Bulk)",
          "method": "POST",
          "endpoint": "/api/v2/tutor/import-students",
          "authentication_required": true,
          "description": "Import multiple students from CSV/Excel file",
          "request": {
            "content_type": "multipart/form-data",
            "parameters": [
              {
                "name": "group_id",
                "type": "integer",
                "required": true,
                "description": "Class/Batch ID"
              },
              {
                "name": "file",
                "type": "file",
                "required": true,
                "description": "CSV/Excel file with student data"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Students imported successfully",
                "data": {
                  "imported_count": 45,
                  "failed_count": 2
                }
              }
            }
          }
        },
        {
          "name": "Track Student Progress",
          "method": "POST",
          "endpoint": "/api/v2/tutor/track-student",
          "authentication_required": true,
          "description": "Track student progress and participation",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "student_id",
                "type": "integer",
                "required": true
              },
              {
                "name": "test_id",
                "type": "integer",
                "required": false
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "student_id": 1,
                  "tests_completed": 10,
                  "average_score": 85.5
                }
              }
            }
          }
        },
        {
          "name": "Share Enrollment Link",
          "method": "POST",
          "endpoint": "/api/v2/tutor/share-enrollment",
          "authentication_required": true,
          "description": "Share enrollment link/QR code with students",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "group_id",
                "type": "integer",
                "required": true
              },
              {
                "name": "share_method",
                "type": "string",
                "enum": ["email", "sms", "whatsapp"],
                "required": true
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Enrollment link shared successfully",
                "data": {
                  "enrollment_link": "https://app.pathshalaa.com/enroll/ABC123",
                  "qr_code_url": "https://example.com/qr/ABC123.png"
                }
              }
            }
          }
        }
      ]
    },
    {
      "category": "Question Bank",
      "description": "Endpoints for accessing and managing question bank",
      "endpoints": [
        {
          "name": "Get Question Bank",
          "method": "GET",
          "endpoint": "/api/v2/tutor/question-bank",
          "authentication_required": true,
          "description": "Get questions from question bank (subject-wise & chapter-wise)",
          "request": {
            "parameters": [
              {
                "name": "category_id",
                "type": "integer",
                "required": false,
                "location": "query",
                "description": "Category/Chapter ID to filter questions",
                "example": "?category_id=89"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "questions": []
                }
              }
            }
          }
        },
        {
          "name": "Get Question Bank Hierarchy",
          "method": "GET",
          "endpoint": "/api/v2/tutor/question-bank/hierarchy",
          "authentication_required": true,
          "description": "Get hierarchical structure of subjects and chapters",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "subjects": [
                    {
                      "id": 1,
                      "name": "Mathematics",
                      "chapters": []
                    }
                  ]
                }
              }
            }
          }
        },
        {
          "name": "Clear Hierarchy Cache",
          "method": "POST",
          "endpoint": "/api/v2/tutor/question-bank/clear-cache",
          "authentication_required": true,
          "description": "Clear question bank hierarchy cache",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Cache cleared successfully"
              }
            }
          }
        },
        {
          "name": "Get Question Details",
          "method": "GET",
          "endpoint": "/api/v2/tutor/questions/{id}",
          "authentication_required": true,
          "description": "Get details of a specific question",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "id": 1,
                  "question_text": "What is 2+2?",
                  "options": []
                }
              }
            }
          }
        },
        {
          "name": "Update Question",
          "method": "PUT",
          "endpoint": "/api/v2/tutor/questions/{id}",
          "authentication_required": true,
          "description": "Update a question in the question bank",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "question_text",
                "type": "string",
                "required": false
              },
              {
                "name": "options",
                "type": "array",
                "required": false
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Question updated successfully"
              }
            }
          }
        },
        {
          "name": "Delete Question",
          "method": "DELETE",
          "endpoint": "/api/v2/tutor/questions/{id}",
          "authentication_required": true,
          "description": "Soft delete a question",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Question deleted successfully"
              }
            }
          }
        },
        {
          "name": "Restore Question",
          "method": "POST",
          "endpoint": "/api/v2/tutor/questions/{id}/restore",
          "authentication_required": true,
          "description": "Restore a soft-deleted question",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Question restored successfully"
              }
            }
          }
        },
        {
          "name": "Get Question History",
          "method": "GET",
          "endpoint": "/api/v2/tutor/questions/{id}/history",
          "authentication_required": true,
          "description": "Get edit history of a question",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "history": []
                }
              }
            }
          }
        },
        {
          "name": "Get Available Questions",
          "method": "GET",
          "endpoint": "/api/v2/tutor/questions/available",
          "authentication_required": true,
          "description": "Get list of available questions for selection",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": []
              }
            }
          }
        },
        {
          "name": "Select Questions Manually",
          "method": "POST",
          "endpoint": "/api/v2/tutor/questions/select",
          "authentication_required": true,
          "description": "Manually select questions for a test",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "test_id",
                "type": "integer",
                "required": true
              },
              {
                "name": "question_ids",
                "type": "array",
                "required": true,
                "description": "Array of question IDs"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Questions selected successfully"
              }
            }
          }
        }
      ]
    },
    {
      "category": "Test/Paper Management",
      "description": "Endpoints for creating and managing test papers",
      "endpoints": [
        {
          "name": "Create Paper",
          "method": "POST",
          "endpoint": "/api/v2/tutor/create-paper",
          "authentication_required": true,
          "description": "Create a new test paper",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "title",
                "type": "string",
                "required": true,
                "description": "Test paper title"
              },
              {
                "name": "description",
                "type": "string",
                "required": false
              },
              {
                "name": "total_marks",
                "type": "integer",
                "required": true
              },
              {
                "name": "duration_minutes",
                "type": "integer",
                "required": true
              }
            ]
          },
          "response": {
            "success": {
              "status": 201,
              "example": {
                "status": true,
                "message": "Paper created successfully",
                "data": {
                  "id": 1,
                  "title": "Mathematics Test 1"
                }
              }
            }
          }
        },
        {
          "name": "Add Questions to Paper",
          "method": "POST",
          "endpoint": "/api/v2/tutor/questions/add",
          "authentication_required": true,
          "description": "Add questions to test paper (from bank or custom)",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "test_id",
                "type": "integer",
                "required": true
              },
              {
                "name": "questions",
                "type": "array",
                "required": true,
                "description": "Array of question objects or IDs"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Questions added successfully"
              }
            }
          }
        },
        {
          "name": "Get Chapters for Paper Generation",
          "method": "POST",
          "endpoint": "/api/v2/tutor/get-chapters-for-paper-generation",
          "authentication_required": true,
          "description": "Get list of chapters available for paper generation",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "subject_id",
                "type": "integer",
                "required": true
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "chapters": []
                }
              }
            }
          }
        },
        {
          "name": "Auto-Generate Paper from Chapter",
          "method": "POST",
          "endpoint": "/api/v2/tutor/auto-generate-paper-from-chapter",
          "authentication_required": true,
          "description": "Automatically generate test paper from a chapter",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "chapter_id",
                "type": "integer",
                "required": true,
                "description": "Chapter/Category ID"
              },
              {
                "name": "num_questions",
                "type": "integer",
                "required": true,
                "description": "Number of questions to generate"
              },
              {
                "name": "difficulty_level",
                "type": "string",
                "required": false,
                "enum": ["easy", "medium", "hard", "mixed"]
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Paper generated successfully",
                "data": {
                  "test_id": 1,
                  "questions_count": 50
                }
              }
            }
          }
        },
        {
          "name": "Export Test to DOCX",
          "method": "POST",
          "endpoint": "/api/v2/tutor/test-series/{id}/export-docx",
          "authentication_required": true,
          "description": "Export test series to DOCX format",
          "response": {
            "success": {
              "status": 200,
              "content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
              "description": "Returns DOCX file for download"
            }
          }
        },
        {
          "name": "Export Answer Key",
          "method": "POST",
          "endpoint": "/api/v2/tutor/test-series/{id}/export-answer-key",
          "authentication_required": true,
          "description": "Export standalone answer key for test",
          "response": {
            "success": {
              "status": 200,
              "description": "Returns answer key file for download"
            }
          }
        },
        {
          "name": "Assign Test to Groups",
          "method": "POST",
          "endpoint": "/api/v2/tutor/test-series/{id}/assign-to-groups",
          "authentication_required": true,
          "description": "Assign test series to multiple groups/batches",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "group_ids",
                "type": "array",
                "required": true,
                "description": "Array of group/batch IDs"
              },
              {
                "name": "start_date",
                "type": "string",
                "required": false,
                "format": "date-time"
              },
              {
                "name": "end_date",
                "type": "string",
                "required": false,
                "format": "date-time"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Test assigned to groups successfully"
              }
            }
          }
        },
        {
          "name": "Get Assigned Groups",
          "method": "GET",
          "endpoint": "/api/v2/tutor/test-series/{id}/groups",
          "authentication_required": true,
          "description": "Get list of groups assigned to a test",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "groups": []
                }
              }
            }
          }
        }
      ]
    },
    {
      "category": "Analytics & Results",
      "description": "Endpoints for viewing analytics, results, and leaderboards",
      "endpoints": [
        {
          "name": "Get Batch Analytics",
          "method": "GET",
          "endpoint": "/api/v2/tutor/analytics/batch/{batchId}/test/{testId}",
          "authentication_required": true,
          "description": "Get analytics for a batch's test performance",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "batch_id": 1,
                  "test_id": 1,
                  "average_score": 75.5,
                  "total_students": 45,
                  "completed": 40,
                  "pending": 5
                }
              }
            }
          }
        },
        {
          "name": "Get Global Leaderboard",
          "method": "GET",
          "endpoint": "/api/v2/tutor/leaderboard/test/{testId}",
          "authentication_required": true,
          "description": "Get global leaderboard for a test",
          "request": {
            "parameters": [
              {
                "name": "limit",
                "type": "integer",
                "required": false,
                "location": "query",
                "default": 50,
                "description": "Number of top students to fetch"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "leaderboard": [
                    {
                      "rank": 1,
                      "student_name": "John Doe",
                      "score": 95.5
                    }
                  ]
                }
              }
            }
          }
        },
        {
          "name": "Get Batch Leaderboard",
          "method": "GET",
          "endpoint": "/api/v2/tutor/leaderboard/batch/{batchId}/test/{testId}",
          "authentication_required": true,
          "description": "Get leaderboard for a specific batch",
          "request": {
            "parameters": [
              {
                "name": "limit",
                "type": "integer",
                "required": false,
                "location": "query",
                "default": 50
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "batch_id": 1,
                  "leaderboard": []
                }
              }
            }
          }
        },
        {
          "name": "Export Results to Excel",
          "method": "POST",
          "endpoint": "/api/v2/tutor/results/export-excel",
          "authentication_required": true,
          "description": "Export batch results to Excel file",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "batch_id",
                "type": "integer",
                "required": true
              },
              {
                "name": "test_id",
                "type": "integer",
                "required": true
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
              "description": "Returns Excel file for download"
            }
          }
        },
        {
          "name": "Get Student Performance Trends",
          "method": "GET",
          "endpoint": "/api/v2/tutor/trends/student/{studentId}",
          "authentication_required": true,
          "description": "Get performance trends for a student over time",
          "request": {
            "parameters": [
              {
                "name": "period",
                "type": "string",
                "required": false,
                "location": "query",
                "enum": ["1month", "3months", "6months", "1year"],
                "default": "3months"
              },
              {
                "name": "batch_id",
                "type": "integer",
                "required": false,
                "location": "query"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "student_id": 1,
                  "trends": []
                }
              }
            }
          }
        }
      ]
    },
    {
      "category": "Syllabus Planner",
      "description": "Endpoints for managing syllabus and topic planning",
      "endpoints": [
        {
          "name": "List All Syllabi",
          "method": "GET",
          "endpoint": "/api/v2/tutor/syllabus",
          "authentication_required": true,
          "description": "Get list of all syllabi created by tutor",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": []
              }
            }
          }
        },
        {
          "name": "Create Syllabus",
          "method": "POST",
          "endpoint": "/api/v2/tutor/syllabus",
          "authentication_required": true,
          "description": "Create a new syllabus",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "title",
                "type": "string",
                "required": true
              },
              {
                "name": "description",
                "type": "string",
                "required": false
              },
              {
                "name": "topics",
                "type": "array",
                "required": true,
                "description": "Array of topic objects with week assignments"
              }
            ]
          },
          "response": {
            "success": {
              "status": 201,
              "example": {
                "status": true,
                "message": "Syllabus created successfully",
                "data": {
                  "id": 1
                }
              }
            }
          }
        },
        {
          "name": "Get Syllabus Details",
          "method": "GET",
          "endpoint": "/api/v2/tutor/syllabus/{id}",
          "authentication_required": true,
          "description": "Get single syllabus with all topics",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "id": 1,
                  "title": "Grade 10 Mathematics",
                  "topics": []
                }
              }
            }
          }
        },
        {
          "name": "Update Syllabus",
          "method": "PUT",
          "endpoint": "/api/v2/tutor/syllabus/{id}",
          "authentication_required": true,
          "description": "Update syllabus details",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Syllabus updated successfully"
              }
            }
          }
        },
        {
          "name": "Delete Syllabus",
          "method": "DELETE",
          "endpoint": "/api/v2/tutor/syllabus/{id}",
          "authentication_required": true,
          "description": "Soft delete a syllabus",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Syllabus deleted successfully"
              }
            }
          }
        },
        {
          "name": "Get Weekly View",
          "method": "GET",
          "endpoint": "/api/v2/tutor/syllabus/{id}/weekly",
          "authentication_required": true,
          "description": "Get weekly view of syllabus topics",
          "request": {
            "parameters": [
              {
                "name": "week",
                "type": "integer",
                "required": false,
                "location": "query",
                "description": "Week number",
                "example": "?week=1"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "week": 1,
                  "topics": []
                }
              }
            }
          }
        },
        {
          "name": "Get Weeks Overview",
          "method": "GET",
          "endpoint": "/api/v2/tutor/syllabus/{id}/weeks-overview",
          "authentication_required": true,
          "description": "Get overview of all weeks in syllabus",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "weeks": []
                }
              }
            }
          }
        },
        {
          "name": "Get Syllabus Progress",
          "method": "GET",
          "endpoint": "/api/v2/tutor/syllabus/{id}/progress",
          "authentication_required": true,
          "description": "Get overall progress of syllabus completion",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "total_topics": 50,
                  "completed_topics": 30,
                  "progress_percentage": 60
                }
              }
            }
          }
        },
        {
          "name": "Generate Weekly Test",
          "method": "POST",
          "endpoint": "/api/v2/tutor/syllabus/{id}/generate-weekly-test",
          "authentication_required": true,
          "description": "Auto-generate test from completed topics",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "week_number",
                "type": "integer",
                "required": false
              },
              {
                "name": "num_questions",
                "type": "integer",
                "required": true
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Weekly test generated successfully",
                "data": {
                  "test_id": 1
                }
              }
            }
          }
        },
        {
          "name": "Get Syllabus Dashboard",
          "method": "GET",
          "endpoint": "/api/v2/tutor/syllabus/{id}/dashboard",
          "authentication_required": true,
          "description": "Get comprehensive dashboard for syllabus",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "progress": {},
                  "upcoming_topics": [],
                  "completed_topics": []
                }
              }
            }
          }
        },
        {
          "name": "Mark Topic Complete",
          "method": "POST",
          "endpoint": "/api/v2/tutor/syllabus-topics/{id}/complete",
          "authentication_required": true,
          "description": "Mark a topic as completed",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Topic marked as complete"
              }
            }
          }
        },
        {
          "name": "Mark Topic Incomplete",
          "method": "POST",
          "endpoint": "/api/v2/tutor/syllabus-topics/{id}/incomplete",
          "authentication_required": true,
          "description": "Mark a topic as incomplete",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Topic marked as incomplete"
              }
            }
          }
        },
        {
          "name": "Bulk Mark Topics Complete",
          "method": "POST",
          "endpoint": "/api/v2/tutor/syllabus-topics/bulk-complete",
          "authentication_required": true,
          "description": "Mark multiple topics as complete at once",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "topic_ids",
                "type": "array",
                "required": true,
                "description": "Array of topic IDs to mark complete"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Topics marked as complete successfully",
                "data": {
                  "updated_count": 5
                }
              }
            }
          }
        }
      ]
    }
  ],
  "student_endpoints": [
    {
      "category": "Student Enrollment",
      "description": "Endpoints for students to enroll in classes",
      "endpoints": [
        {
          "name": "Enroll in Group",
          "method": "POST",
          "endpoint": "/api/v2/student/enroll",
          "authentication_required": true,
          "description": "Student enrolls in a group using enrollment code",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "enrollment_code",
                "type": "string",
                "required": true,
                "description": "6-digit enrollment code provided by tutor"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Enrolled successfully",
                "data": {
                  "group_id": 1,
                  "group_name": "Mathematics Grade 10"
                }
              }
            }
          }
        }
      ]
    },
    {
      "category": "Student Test Flow",
      "description": "Endpoints for students taking tests with language selection",
      "endpoints": [
        {
          "name": "Start Test",
          "method": "POST",
          "endpoint": "/api/v2/student/test/{id}/start",
          "authentication_required": true,
          "description": "Start test with language selection",
          "request": {
            "content_type": "application/json",
            "parameters": [
              {
                "name": "language",
                "type": "string",
                "required": true,
                "description": "Language code (en, hi, mr, etc.)"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "message": "Test started successfully",
                "data": {
                  "test_id": 1,
                  "language": "hi",
                  "start_time": "2025-01-15 10:00:00"
                }
              }
            }
          }
        },
        {
          "name": "Get Test Questions",
          "method": "GET",
          "endpoint": "/api/v2/student/test/{id}/questions",
          "authentication_required": true,
          "description": "Get questions in selected language",
          "request": {
            "parameters": [
              {
                "name": "language",
                "type": "string",
                "required": false,
                "location": "query",
                "description": "Language code",
                "example": "?language=hi"
              }
            ]
          },
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "questions": []
                }
              }
            }
          }
        },
        {
          "name": "Get Available Languages",
          "method": "GET",
          "endpoint": "/api/v2/test/{id}/languages",
          "authentication_required": false,
          "description": "Get available languages for a test",
          "response": {
            "success": {
              "status": 200,
              "example": {
                "status": true,
                "data": {
                  "available_languages": [
                    {
                      "code": "en",
                      "name": "English"
                    },
                    {
                      "code": "hi",
                      "name": "Hindi"
                    }
                  ]
                }
              }
            }
          }
        }
      ]
    }
  ],
  "common_error_codes": {
    "VALIDATION_ERROR": "Request validation failed",
    "TUTOR_NOT_FOUND": "Tutor account not found",
    "INVALID_OTP": "Provided OTP is invalid",
    "OTP_EXPIRED": "OTP has expired (valid for 15 minutes)",
    "INVALID_PASSWORD": "Password is incorrect",
    "UNAUTHORIZED": "Authentication required or token invalid",
    "FORBIDDEN": "Access denied to this resource",
    "NOT_FOUND": "Requested resource not found",
    "INTERNAL_SERVER_ERROR": "Unexpected server error occurred"
  },
  "notes_for_developers": {
    "authentication": "After successful login, store the token and include it in all subsequent requests in the Authorization header as 'Bearer {token}'",
    "pagination": "Most list endpoints support pagination. Use 'page' and 'per_page' query parameters",
    "date_format": "All dates should be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)",
    "file_uploads": "Use multipart/form-data for endpoints accepting file uploads",
    "error_handling": "All error responses follow a consistent format with status, message, and error_code fields",
    "rate_limiting": "API may be rate-limited. Check response headers for rate limit information",
    "versioning": "This is V2 API. Always use /api/v2 prefix for these endpoints"
  }
}
