{"openapi":"3.0.0","info":{"title":"Prashiskshan API Documentation","version":"1.0.0","description":"Comprehensive API documentation for Prashiskshan - NEP 2020 compliant internship management platform. This API supports student internship management, company operations, mentor oversight, and administrative functions.","contact":{"name":"Prashiskshan Support","email":"support@prashiskshan.com"},"license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"}},"servers":[{"url":"https://api.prashiskshan.com","description":"Development server"},{"url":"https://api.prashiskshan.com","description":"Production server"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Firebase ID Token obtained from authentication"}},"schemas":{"SuccessResponse":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean","example":true,"description":"Indicates if the request was successful"},"message":{"type":"string","example":"Operation completed successfully","description":"Human-readable success message"},"data":{"type":"object","description":"Response payload containing the requested data"}},"description":"Standard success response format"},"Error":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean","example":false,"description":"Always false for error responses"},"message":{"type":"string","example":"An error occurred","description":"Human-readable error message"},"error":{"type":"object","properties":{"code":{"type":"string","example":"VALIDATION_ERROR","description":"Machine-readable error code"},"details":{"type":"object","description":"Additional error details and context"}}},"requestId":{"type":"string","example":"req_1234567890","description":"Unique request identifier for debugging"}},"description":"Standard error response format"},"Pagination":{"type":"object","required":["currentPage","totalPages","totalItems","itemsPerPage"],"properties":{"currentPage":{"type":"integer","example":1,"minimum":1,"description":"Current page number"},"totalPages":{"type":"integer","example":10,"minimum":0,"description":"Total number of pages"},"totalItems":{"type":"integer","example":95,"minimum":0,"description":"Total number of items across all pages"},"itemsPerPage":{"type":"integer","example":10,"minimum":1,"description":"Number of items per page"},"hasNextPage":{"type":"boolean","example":true,"description":"Whether there is a next page"},"hasPrevPage":{"type":"boolean","example":false,"description":"Whether there is a previous page"}},"description":"Pagination metadata for list responses"},"InternshipStatus":{"type":"string","enum":["draft","pending_admin_verification","admin_approved","admin_rejected","mentor_rejected","open_for_applications","closed","cancelled"],"description":"Internship lifecycle status. Flow: draft → pending_admin_verification → admin_approved → open_for_applications → closed. Rejection paths: admin_rejected, mentor_rejected"},"ApplicationStatus":{"type":"string","enum":["pending","mentor_approved","shortlisted","accepted","rejected","withdrawn"],"description":"Application workflow status. Flow: pending → mentor_approved → shortlisted → accepted/rejected. Students can withdraw at any time."},"CreditRequestStatus":{"type":"string","enum":["pending","mentor_reviewing","mentor_approved","mentor_rejected","admin_reviewing","admin_approved","admin_rejected","completed"],"description":"Credit transfer workflow status. Flow: pending → mentor_reviewing → mentor_approved → admin_reviewing → admin_approved → completed. Rejection paths: mentor_rejected, admin_rejected"},"LogbookStatus":{"type":"string","enum":["submitted","mentor_reviewing","company_reviewing","approved","revision_requested","rejected"],"description":"Logbook review workflow status. Flow: submitted → mentor_reviewing → approved. Mentor can request revision."},"CompanyVerificationStatus":{"type":"string","enum":["pending_verification","verified","rejected","suspended","blocked"],"description":"Company verification workflow status. Flow: pending_verification → verified. Admin can suspend or block verified companies."},"Student":{"type":"object","properties":{"studentId":{"type":"string","example":"STD-2024001"},"firebaseUid":{"type":"string","example":"firebase-uid-123"},"email":{"type":"string","format":"email","example":"student@university.edu"},"profile":{"type":"object","properties":{"name":{"type":"string","example":"John Doe"},"department":{"type":"string","example":"Computer Science"},"year":{"type":"integer","example":3},"college":{"type":"string","example":"University Name"},"rollNumber":{"type":"string","example":"CS2024001"},"phone":{"type":"string","example":"+919876543210"},"bio":{"type":"string","example":"Passionate about software development"},"skills":{"type":"array","items":{"type":"string"},"example":["JavaScript","Node.js","React"]},"interests":{"type":"array","items":{"type":"string"},"example":["Web Development","AI"]}}},"credits":{"type":"number","example":12.5},"totalHours":{"type":"number","example":500},"status":{"type":"string","enum":["active","inactive","suspended","deleted"],"example":"active"}}},"Company":{"type":"object","properties":{"companyId":{"type":"string","example":"COM-2024001"},"firebaseUid":{"type":"string","example":"firebase-uid-456"},"companyName":{"type":"string","example":"Tech Solutions Inc"},"email":{"type":"string","format":"email","example":"contact@techsolutions.com"},"website":{"type":"string","format":"uri","example":"https://techsolutions.com"},"phone":{"type":"string","example":"+919876543210"},"address":{"type":"string","example":"123 Business Park, Mumbai"},"status":{"type":"string","enum":["pending","verified","rejected","suspended"],"example":"verified"},"documents":{"type":"object","properties":{"cinNumber":{"type":"string","example":"U72900MH2024PTC123456"},"gstCertificate":{"type":"string","format":"uri"}}}}},"Mentor":{"type":"object","properties":{"mentorId":{"type":"string","example":"MEN-2024001"},"firebaseUid":{"type":"string","example":"firebase-uid-789"},"email":{"type":"string","format":"email","example":"mentor@university.edu"},"profile":{"type":"object","properties":{"name":{"type":"string","example":"Dr. Jane Smith"},"department":{"type":"string","example":"Computer Science"},"designation":{"type":"string","example":"Associate Professor"},"expertiseAreas":{"type":"array","items":{"type":"string"},"example":["Web Development","Database Systems"]}}}}},"Internship":{"type":"object","properties":{"internshipId":{"type":"string","example":"INT-2024001"},"companyId":{"type":"string","example":"COM-2024001"},"title":{"type":"string","example":"Full Stack Development Intern"},"description":{"type":"string","example":"Join our dynamic team as a full stack development intern..."},"department":{"type":"string","example":"Computer Science"},"requiredSkills":{"type":"array","items":{"type":"string"},"example":["JavaScript","Node.js","React"]},"optionalSkills":{"type":"array","items":{"type":"string"},"example":["TypeScript","Docker"]},"duration":{"type":"string","example":"6 months"},"stipend":{"type":"number","example":20000},"location":{"type":"string","example":"Bangalore"},"workMode":{"type":"string","enum":["remote","onsite","hybrid"],"example":"hybrid"},"status":{"type":"string","enum":["draft","pending_admin_verification","admin_approved","admin_rejected","mentor_rejected","open_for_applications","closed","cancelled"],"example":"open_for_applications","description":"Internship workflow status"},"slots":{"type":"integer","example":5},"slotsRemaining":{"type":"integer","example":3,"description":"Available slots after acceptances"},"appliedCount":{"type":"integer","example":15,"description":"Total applications received"},"startDate":{"type":"string","format":"date","example":"2024-06-01"},"applicationDeadline":{"type":"string","format":"date-time","example":"2024-05-15T23:59:59Z"},"responsibilities":{"type":"array","items":{"type":"string"},"example":["Develop features","Write tests"]},"learningOpportunities":{"type":"array","items":{"type":"string"},"example":["Mentorship","Code reviews"]},"eligibilityRequirements":{"type":"object","properties":{"minYear":{"type":"integer","example":2},"minReadinessScore":{"type":"number","example":60},"requiredModules":{"type":"array","items":{"type":"string"}}}},"adminReview":{"type":"object","properties":{"reviewedBy":{"type":"string","example":"ADM-001"},"reviewedAt":{"type":"string","format":"date-time"},"decision":{"type":"string","enum":["approved","rejected"]},"comments":{"type":"string"},"reasons":{"type":"array","items":{"type":"string"}}},"description":"Admin verification details"},"mentorApproval":{"type":"object","properties":{"status":{"type":"string","enum":["pending","approved","rejected"],"default":"pending"},"mentorId":{"type":"string","example":"MEN-001"},"approvedAt":{"type":"string","format":"date-time"},"comments":{"type":"string"},"department":{"type":"string"}},"description":"Mentor approval details"},"aiTags":{"type":"object","properties":{"primarySkills":{"type":"array","items":{"type":"string"},"example":["JavaScript","React","Node.js"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"],"example":"intermediate"},"careerPath":{"type":"string","example":"Software Engineering"},"industryFit":{"type":"array","items":{"type":"string"},"example":["Technology","Startups"]},"learningIntensity":{"type":"string","example":"moderate"},"technicalDepth":{"type":"string","example":"moderate"},"generatedAt":{"type":"string","format":"date-time"}},"description":"AI-generated tags from Gemini API"},"auditTrail":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"actor":{"type":"string"},"actorRole":{"type":"string"},"action":{"type":"string"},"fromStatus":{"type":"string"},"toStatus":{"type":"string"},"reason":{"type":"string"}}},"description":"Complete audit trail of status changes"},"postedBy":{"type":"string","example":"COM-2024001"},"postedAt":{"type":"string","format":"date-time"},"closedAt":{"type":"string","format":"date-time"}}},"Application":{"type":"object","properties":{"applicationId":{"type":"string","example":"APP-2024001"},"studentId":{"type":"string","example":"STD-2024001"},"internshipId":{"type":"string","example":"INT-2024001"},"coverLetter":{"type":"string","example":"I am writing to express my interest..."},"resumeUrl":{"type":"string","format":"uri","example":"https://storage.example.com/resumes/resume.pdf"},"status":{"type":"string","enum":["pending","approved","rejected","shortlisted","withdrawn"],"example":"pending"},"appliedAt":{"type":"string","format":"date-time","example":"2024-01-15T10:30:00Z"}}},"Logbook":{"type":"object","properties":{"logbookId":{"type":"string","example":"LOG-2024001"},"studentId":{"type":"string","example":"STD-2024001"},"internshipId":{"type":"string","example":"INT-2024001"},"weekNumber":{"type":"integer","example":1},"hoursWorked":{"type":"number","example":40},"activities":{"type":"string","example":"This week I worked on..."},"tasksCompleted":{"type":"array","items":{"type":"string"},"example":["Implemented user authentication","Fixed bugs"]},"status":{"type":"string","enum":["pending","approved","revision_requested"],"example":"pending"}}}}},"security":[{"bearerAuth":[]}],"tags":[{"name":"Authentication","description":"User authentication and profile management"},{"name":"Students","description":"Student-specific endpoints for internships, applications, and learning"},{"name":"Companies","description":"Company-specific endpoints for internships and intern management"},{"name":"Mentors","description":"Mentor-specific endpoints for application and logbook review"},{"name":"Admin","description":"Administrative endpoints for system management"},{"name":"Testing","description":"Test endpoints for external services (Email, S3, Queue, Gemini)"},{"name":"Internship Verification","description":"Admin internship verification workflow endpoints"},{"name":"Internship Approval","description":"Mentor internship approval workflow endpoints"},{"name":"Internships","description":"Internship management endpoints"},{"name":"Applications","description":"Application management endpoints"},{"name":"Analytics","description":"Analytics and reporting endpoints"},{"name":"Student Management","description":"Mentor student management endpoints"},{"name":"Dashboard","description":"Dashboard endpoints for all user roles"}],"paths":{"/api/admins/dashboard":{"get":{"summary":"Get admin dashboard","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/companies/pending":{"get":{"summary":"Get pending companies","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/companies":{"get":{"summary":"Get companies (filter by status)","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/companies/{companyId}":{"get":{"summary":"Get company details","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/companies/{companyId}/verify":{"post":{"summary":"Verify company","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/companies/{companyId}/reject":{"post":{"summary":"Reject company","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/companies/:companyId/block":{"post":{"summary":"Block a company","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/companies/{companyId}/suspend":{"post":{"summary":"Suspend company","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/students/import/template":{"get":{"summary":"Download CSV template for student import","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/students/import":{"post":{"summary":"Bulk import students (accepts CSV/Excel file or JSON)","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/students/import/{jobId}":{"get":{"summary":"Get import job status","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/students/import/{jobId}/credentials":{"get":{"summary":"Download credentials for imported students","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/mentors/import/template":{"get":{"summary":"Download CSV template for mentor import","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/mentors/import":{"post":{"summary":"Bulk import mentors (accepts CSV/Excel file or JSON)","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/mentors/import/{jobId}":{"get":{"summary":"Get mentor import job status","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/mentors/import/{jobId}/credentials":{"get":{"summary":"Download credentials for imported mentors","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/mentors/assign":{"post":{"summary":"Assign mentor to students","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/pending":{"get":{"summary":"Get pending credit requests for admin approval","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/{requestId}":{"get":{"summary":"Get credit request details for admin review","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/{requestId}/review":{"post":{"summary":"Submit admin review (approve/reject)","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/{requestId}/resolve":{"post":{"summary":"Resolve administrative hold on credit request","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/analytics":{"get":{"summary":"Get system-wide credit transfer analytics","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/export":{"get":{"summary":"Export credit transfer report (CSV/JSON)","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/bottlenecks":{"get":{"summary":"Get approval pipeline bottleneck analysis","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/overdue":{"get":{"summary":"Get all overdue credit requests","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/reminders/stats":{"get":{"summary":"Get reminder statistics for overdue credit requests","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/reminders/send":{"post":{"summary":"Manually trigger sending reminders for overdue credit requests","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/credit-requests/reminders/schedule":{"post":{"summary":"Schedule automatic reminder job","tags":["Admin - Credit Transfer"],"security":[{"bearerAuth":[]}]}},"/api/admins/reports/system":{"post":{"summary":"Generate system report","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/analytics/system":{"get":{"summary":"Get system-wide analytics","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/analytics/college":{"get":{"summary":"Get college analytics","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/system/health":{"get":{"summary":"Get system health","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/ai/usage":{"get":{"summary":"Get AI usage statistics","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/{internshipId}/approve":{"post":{"summary":"Approve internship (legacy endpoint)","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/{internshipId}/reject":{"post":{"summary":"Reject internship (legacy endpoint)","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships":{"get":{"summary":"Get internships (filter by status)","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/list":{"get":{"summary":"List internships with filtering and pagination","tags":["Admin - Internship Management"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/bulk-approve":{"post":{"summary":"Bulk approve internships","tags":["Admin - Internship Management"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/bulk-reject":{"post":{"summary":"Bulk reject internships","tags":["Admin - Internship Management"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/analytics":{"get":{"summary":"Get internship analytics","tags":["Admin - Internship Management"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/pending":{"get":{"summary":"List pending internship verifications","tags":["Admin - Internship Verification"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"page","schema":{"type":"integer"},"description":"Page number"},{"in":"query","name":"limit","schema":{"type":"integer"},"description":"Items per page"},{"in":"query","name":"department","schema":{"type":"string"},"description":"Filter by department"},{"in":"query","name":"companyId","schema":{"type":"string"},"description":"Filter by company ID"}]}},"/api/admins/internships/{id}/approve":{"post":{"summary":"Approve internship posting","tags":["Admin - Internship Verification"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"},"description":"Internship ID"}]}},"/api/admins/internships/{id}/reject":{"post":{"summary":"Reject internship posting with reasons","tags":["Admin - Internship Verification"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"},"description":"Internship ID"}]}},"/api/admins/internships/{id}":{"get":{"summary":"Get internship details with company history","tags":["Admin - Internship Verification"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"},"description":"Internship ID"}]}},"/api/admins/analytics":{"get":{"summary":"Get system-wide analytics","tags":["Admin - Analytics"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"dateFrom","schema":{"type":"string","format":"date"},"description":"Start date for analytics"},{"in":"query","name":"dateTo","schema":{"type":"string","format":"date"},"description":"End date for analytics"}]}},"/api/admins/analytics/companies":{"get":{"summary":"Get company performance metrics","tags":["Admin - Analytics"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"dateFrom","schema":{"type":"string","format":"date"}},{"in":"query","name":"dateTo","schema":{"type":"string","format":"date"}},{"in":"query","name":"limit","schema":{"type":"integer"}},{"in":"query","name":"sortBy","schema":{"type":"string","enum":["averageRating","internshipsPosted","applicationsReceived","completionRate"]}}]}},"/api/admins/analytics/departments":{"get":{"summary":"Get department performance metrics","tags":["Admin - Analytics"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"dateFrom","schema":{"type":"string","format":"date"}},{"in":"query","name":"dateTo","schema":{"type":"string","format":"date"}},{"in":"query","name":"department","schema":{"type":"string"},"description":"Specific department to analyze"}]}},"/api/admins/analytics/mentors":{"get":{"summary":"Get mentor performance metrics","tags":["Admin - Analytics"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"dateFrom","schema":{"type":"string","format":"date"}},{"in":"query","name":"dateTo","schema":{"type":"string","format":"date"}},{"in":"query","name":"department","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"integer"}},{"in":"query","name":"sortBy","schema":{"type":"string","enum":["approvalRate","approvalsProcessed","averageResponseTime","studentsSupervised"]}}]}},"/api/admins/analytics/students":{"get":{"summary":"Get student performance metrics","tags":["Admin - Analytics"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"department","schema":{"type":"string"}},{"in":"query","name":"minReadinessScore","schema":{"type":"number"}},{"in":"query","name":"minCredits","schema":{"type":"number"}},{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"limit","schema":{"type":"integer"}}]}},"/api/admins/reappeals":{"get":{"summary":"Get all reappeal requests with filtering","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/reappeals/{companyId}/approve":{"post":{"summary":"Approve a reappeal request","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/reappeals/{companyId}/reject":{"post":{"summary":"Reject a reappeal request","tags":["Admin"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/:id/details":{"get":{"summary":"Get detailed internship information","tags":["Admin - Internship Management"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/:id/approve-posting":{"post":{"summary":"Approve an internship posting","tags":["Admin - Internship Management"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/:id/reject-posting":{"post":{"summary":"Reject an internship posting","tags":["Admin - Internship Management"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/:id/edit":{"patch":{"summary":"Edit internship details (legacy route)","tags":["Admin - Internship Management"],"security":[{"bearerAuth":[]}]}},"/api/admins/internships/:id":{"patch":{"summary":"Update internship details","tags":["Admin - Internship Management"],"security":[{"bearerAuth":[]}]}},"/api/admins/maintenance/close-expired-internships":{"post":{"summary":"Close expired internships","description":"Manually trigger closing of internships past their deadline (Admin only)","tags":["Admin - Maintenance"],"security":[{"bearerAuth":[]}]}},"/api/admins/maintenance/generate-analytics-snapshot":{"post":{"summary":"Generate analytics snapshot","description":"Manually trigger analytics snapshot generation (Admin only)","tags":["Admin - Maintenance"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"string","enum":["daily","weekly","monthly"],"default":"daily"}}}}}}}},"/api/applications/{id}/status":{"patch":{"summary":"Update application status","tags":["Applications"],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string"},"feedback":{"type":"string"},"rejectionReason":{"type":"string"}}}}}},"responses":{"200":{"description":"Status updated"}}}},"/api/auth/students/register":{"post":{"summary":"Register a new student","description":"Create a new student account with Firebase authentication","tags":["Authentication"]}},"/api/auth/companies/register":{"post":{"summary":"Register a new company","description":"Create a new company account with Firebase authentication","tags":["Authentication"]}},"/api/auth/mentors/register":{"post":{"summary":"Register a new mentor","description":"Create a new mentor account with Firebase authentication","tags":["Authentication"]}},"/api/auth/admins/register":{"post":{"summary":"Register a new admin","description":"Create a new admin account with Firebase authentication (requires super_admin in production)","tags":["Authentication"]}},"/api/auth/login":{"post":{"summary":"User login","description":"Authenticate user with Firebase ID token and get user profile","tags":["Authentication"]}},"/api/auth/send-password-reset":{"post":{"summary":"Send password reset email","description":"Send a password reset link to the user's email","tags":["Authentication"]}},"/api/auth/send-verification-email":{"post":{"summary":"Send email verification","description":"Send an email verification link to the authenticated user","tags":["Authentication"],"security":[{"bearerAuth":[]}]}},"/api/auth/verify-email":{"post":{"summary":"Send email verification (legacy)","description":"Send an email verification link to the authenticated user (use /send-verification-email instead)","tags":["Authentication"],"security":[{"bearerAuth":[]}],"deprecated":true},"get":{"summary":"Verify email","description":"Verify user email using the verification code from email link","tags":["Authentication"]}},"/api/auth/me":{"get":{"summary":"Get current user profile","description":"Retrieve the authenticated user's profile information","tags":["Authentication"],"security":[{"bearerAuth":[]}]},"patch":{"summary":"Update user profile","description":"Update the authenticated user's profile information","tags":["Authentication"],"security":[{"bearerAuth":[]}]}},"/api/auth/password":{"post":{"summary":"Change password","description":"Change user password (requires re-authentication)","tags":["Authentication"],"security":[{"bearerAuth":[]}]}},"/api/auth/profile/image":{"post":{"summary":"Upload profile image","description":"Upload a profile image for the authenticated user","tags":["Authentication"],"security":[{"bearerAuth":[]}]}},"/api/auth/profile/resume":{"post":{"summary":"Upload resume","description":"Upload a resume document (students only)","tags":["Authentication"],"security":[{"bearerAuth":[]}]}},"/api/auth/account":{"delete":{"summary":"Delete account","description":"Soft delete the authenticated user's account","tags":["Authentication"],"security":[{"bearerAuth":[]}]}},"/api/companies/applications":{"get":{"summary":"Get company applications","tags":["Companies"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"internshipId","schema":{"type":"string"},"description":"Filter by internship ID"},{"in":"query","name":"status","schema":{"type":"string"},"description":"Filter by application status"}]}},"/api/companies/dashboard":{"get":{"summary":"Get company dashboard","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/profile":{"get":{"summary":"Get company profile","tags":["Companies"],"security":[{"bearerAuth":[]}]},"patch":{"summary":"Update company profile","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/internships":{"post":{"summary":"Create new internship","tags":["Companies"],"security":[{"bearerAuth":[]}]},"get":{"summary":"Get all company internships","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/internships/{internshipId}":{"get":{"summary":"Get internship by ID","tags":["Companies"],"security":[{"bearerAuth":[]}]},"patch":{"summary":"Update internship","tags":["Companies"],"security":[{"bearerAuth":[]}]},"delete":{"summary":"Delete internship","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/internships/{internshipId}/complete":{"post":{"summary":"Mark internship as complete","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/internships/{internshipId}/applicants":{"get":{"summary":"Get applicants for internship with filters","tags":["Companies"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"internshipId","required":true,"schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"companyFeedbackStatus","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"limit","schema":{"type":"integer"}}]}},"/api/companies/internships/{internshipId}/metrics":{"get":{"summary":"Get internship-specific metrics","tags":["Companies"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"internshipId","required":true,"schema":{"type":"string"}}]}},"/api/companies/applications/review":{"post":{"summary":"Review applications","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/applications/shortlist":{"post":{"summary":"Shortlist candidates","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/applications/reject":{"post":{"summary":"Reject candidates (bulk)","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/applications/approve":{"post":{"summary":"Approve application","tags":["Companies"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["applicationId"],"properties":{"applicationId":{"type":"string"},"feedback":{"type":"string"},"nextSteps":{"type":"string"}}}}}}}},"/api/companies/applications/reject-single":{"post":{"summary":"Reject application","tags":["Companies"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["applicationId"],"properties":{"applicationId":{"type":"string"},"reason":{"type":"string"},"feedback":{"type":"string"}}}}}}}},"/api/companies/applications/{applicationId}":{"get":{"summary":"Get application details","tags":["Companies"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"applicationId","required":true,"schema":{"type":"string"}}]}},"/api/companies/interns":{"get":{"summary":"Get active interns","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/interns/progress":{"get":{"summary":"Get intern progress","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/interns/{studentId}/logbooks":{"get":{"summary":"Get intern logbooks","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/interns/{applicationId}/complete":{"post":{"summary":"Mark internship as complete","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/logbooks/{logbookId}/feedback":{"post":{"summary":"Provide logbook feedback","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/events":{"post":{"summary":"Create event","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/challenges":{"post":{"summary":"Create challenge","tags":["Companies"],"security":[{"bearerAuth":[]}]}},"/api/companies/analytics":{"get":{"summary":"Get company analytics with date range","tags":["Companies"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"dateFrom","schema":{"type":"string","format":"date"},"description":"Start date for analytics period"},{"in":"query","name":"dateTo","schema":{"type":"string","format":"date"},"description":"End date for analytics period"}]}},"/api/companies/analytics/export":{"get":{"summary":"Export analytics report","tags":["Companies"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"format","schema":{"type":"string","enum":["csv","pdf"],"default":"csv"},"description":"Export format"},{"in":"query","name":"dateFrom","schema":{"type":"string","format":"date"}},{"in":"query","name":"dateTo","schema":{"type":"string","format":"date"}}]}},"/api/companies/re-appeal":{"post":{"summary":"Re-appeal rejection","tags":["Companies"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Re-appeal submitted successfully"},"400":{"description":"Only rejected companies can re-appeal"}}}},"/api/companies/reappeal":{"post":{"summary":"Submit reappeal request for blocked company","tags":["Companies"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","minLength":10,"maxLength":2000,"description":"Reappeal message explaining why the company should be unblocked"},"attachment":{"type":"string","format":"binary","description":"Optional supporting document (PDF, JPG, PNG, max 10MB)"}}}}}},"responses":{"200":{"description":"Reappeal submitted successfully"},"400":{"description":"Validation error or invalid status"},"403":{"description":"Cooldown period active"},"429":{"description":"Too many reappeal attempts"}}}},"/api/companies/reappeal/status":{"get":{"summary":"Get reappeal status for blocked company","tags":["Companies"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Reappeal status retrieved successfully"}}}},"/api/companies/completions/:completionId/mark-complete":{"put":{"summary":"Mark internship completion as complete","tags":["Companies"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"completionId","required":true,"schema":{"type":"string"},"description":"The completion ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["evaluationScore","evaluationComments"],"properties":{"evaluationScore":{"type":"number","minimum":0,"maximum":10,"description":"Company evaluation score (0-10)"},"evaluationComments":{"type":"string","minLength":10,"maxLength":1000,"description":"Company evaluation comments"}}}}}},"responses":{"200":{"description":"Internship completion marked as complete"},"400":{"description":"Validation error or milestones not met"},"404":{"description":"Completion not found"}}}},"/api/companies/completions/completed":{"get":{"summary":"Get list of completed internships","tags":["Companies"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"Page number"},{"in":"query","name":"limit","schema":{"type":"integer","default":10},"description":"Items per page"}],"responses":{"200":{"description":"List of completed internships"}}}},"/api/health":{"get":{"summary":"Health check endpoint","description":"Returns API health status and uptime","tags":["Testing"],"responses":{"200":{"description":"API is healthy","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"message":{"type":"string","example":"Prashiskshan API is healthy"},"data":{"type":"object","properties":{"uptime":{"type":"number","example":1234.56}}}}}}}}}}},"/api/internships/browse":{"get":{"summary":"Browse internships","tags":["Internships"],"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"limit","schema":{"type":"integer"}},{"in":"query","name":"department","schema":{"type":"string"}},{"in":"query","name":"location","schema":{"type":"string"}},{"in":"query","name":"workMode","schema":{"type":"string"}},{"in":"query","name":"skills","schema":{"type":"string"}},{"in":"query","name":"minStipend","schema":{"type":"number"}},{"in":"query","name":"maxStipend","schema":{"type":"number"}},{"in":"query","name":"search","schema":{"type":"string"}}],"responses":{"200":{"description":"List of internships"}}}},"/api/interviews/start":{"post":{"summary":"Start interview practice","tags":["Interviews"],"security":[{"bearerAuth":[]}]}},"/api/interviews/{sessionId}/answer":{"post":{"summary":"Submit interview answer","tags":["Interviews"],"security":[{"bearerAuth":[]}]}},"/api/interviews/{sessionId}":{"get":{"summary":"Get interview session details","tags":["Interviews"],"security":[{"bearerAuth":[]}]}},"/api/logbooks":{"post":{"summary":"Submit a new logbook entry","tags":["Logbooks"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["internshipId","weekNumber","activities","startDate","endDate","hoursWorked"],"properties":{"internshipId":{"type":"string"},"weekNumber":{"type":"number"},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"hoursWorked":{"type":"number"},"activities":{"type":"string"},"tasksCompleted":{"type":"array","items":{"type":"string"}},"skillsUsed":{"type":"array","items":{"type":"string"}},"challenges":{"type":"string"},"learnings":{"type":"string"},"attachments":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"201":{"description":"Logbook submitted successfully"},"400":{"description":"Invalid input"},"409":{"description":"Logbook already exists for this week"}}}},"/api/mentors/dashboard":{"get":{"summary":"Get mentor dashboard","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/applications/pending":{"get":{"summary":"Get pending applications","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/applications/{applicationId}":{"get":{"summary":"Get application details","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/applications/{applicationId}/approve":{"post":{"summary":"Approve application","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/applications/{applicationId}/reject":{"post":{"summary":"Reject application","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/logbooks/pending":{"get":{"summary":"Get pending logbooks","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/logbooks/{logbookId}":{"get":{"summary":"Get logbook details","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/logbooks/{logbookId}/approve":{"post":{"summary":"Approve logbook","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/logbooks/{logbookId}/revision":{"post":{"summary":"Request logbook revision","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/skill-gaps":{"get":{"summary":"Get skill gap analysis","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/department/performance":{"get":{"summary":"Get department performance","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/interventions":{"post":{"summary":"Create intervention","tags":["Mentors"],"security":[{"bearerAuth":[]}]},"get":{"summary":"Get all interventions","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/students/{studentId}/progress":{"get":{"summary":"Get student progress","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/students":{"get":{"summary":"Get assigned students","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentor/internships/pending":{"get":{"summary":"List pending internships for mentor approval","tags":["Mentors","Internships"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"page","schema":{"type":"integer","default":1}},{"in":"query","name":"limit","schema":{"type":"integer","default":20}},{"in":"query","name":"sortBy","schema":{"type":"string","default":"postedAt"}},{"in":"query","name":"sortOrder","schema":{"type":"string","enum":["asc","desc"],"default":"desc"}}]}},"/api/mentor/internships":{"get":{"summary":"Get all internships with filtering","tags":["Mentors","Internships"],"security":[{"bearerAuth":[]}]}},"/api/mentor/internships/{internshipId}":{"get":{"summary":"Get internship details for review","tags":["Mentors","Internships"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"internshipId","required":true,"schema":{"type":"string"}}]}},"/api/mentor/internships/{internshipId}/approve":{"post":{"summary":"Approve internship for department","tags":["Mentors","Internships"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"internshipId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"comments":{"type":"string","description":"Optional approval comments"}}}}}}}},"/api/mentor/internships/{internshipId}/reject":{"post":{"summary":"Reject internship with reasons","tags":["Mentors","Internships"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"internshipId","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reasons"],"properties":{"reasons":{"type":"string","description":"Rejection reasons"}}}}}}}},"/api/mentor/students":{"get":{"summary":"List assigned students with filters","tags":["Mentors","Students"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"page","schema":{"type":"integer","default":1}},{"in":"query","name":"limit","schema":{"type":"integer","default":20}},{"in":"query","name":"sortBy","schema":{"type":"string","default":"profile.name"}},{"in":"query","name":"sortOrder","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"in":"query","name":"internshipStatus","schema":{"type":"string","enum":["active","applied","none"]}},{"in":"query","name":"performanceLevel","schema":{"type":"string","enum":["high","medium","low"]}},{"in":"query","name":"creditCompletion","schema":{"type":"string","enum":["completed","in_progress","not_started"]}},{"in":"query","name":"search","schema":{"type":"string"}}]}},"/api/mentor/students/{studentId}":{"get":{"summary":"Get student details with internship history","tags":["Mentors","Students"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"studentId","required":true,"schema":{"type":"string"}}]}},"/api/mentor/students/{studentId}/applications":{"get":{"summary":"Get student applications","tags":["Mentors","Students"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"studentId","required":true,"schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"type":"integer","default":1}},{"in":"query","name":"limit","schema":{"type":"integer","default":20}}]}},"/api/mentor/analytics":{"get":{"summary":"Get mentor-specific analytics","tags":["Mentors","Analytics"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"dateFrom","schema":{"type":"string","format":"date"}},{"in":"query","name":"dateTo","schema":{"type":"string","format":"date"}}]}},"/api/mentor/analytics/department":{"get":{"summary":"Get department analytics","tags":["Mentors","Analytics"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"dateFrom","schema":{"type":"string","format":"date"}},{"in":"query","name":"dateTo","schema":{"type":"string","format":"date"}}]}},"/api/mentors/credits/pending":{"get":{"summary":"Get pending credit requests (legacy)","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/credits/{requestId}/decide":{"post":{"summary":"Approve (escalate) or reject credit request (legacy)","tags":["Mentors"],"security":[{"bearerAuth":[]}]}},"/api/mentors/{mentorId}/credit-requests/pending":{"get":{"summary":"Get pending credit requests for mentor review","tags":["Mentors","Credit Requests"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"mentorId","required":true,"schema":{"type":"string"},"description":"Mentor ID"},{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"Page number"},{"in":"query","name":"limit","schema":{"type":"integer","default":20},"description":"Items per page"},{"in":"query","name":"sortBy","schema":{"type":"string","default":"requestedAt"},"description":"Sort field"}]}},"/api/mentors/{mentorId}/credit-requests/{requestId}":{"get":{"summary":"Get credit request details for review","tags":["Mentors","Credit Requests"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"mentorId","required":true,"schema":{"type":"string"},"description":"Mentor ID"},{"in":"path","name":"requestId","required":true,"schema":{"type":"string"},"description":"Credit Request ID"}]}},"/api/mentors/{mentorId}/credit-requests/{requestId}/review":{"post":{"summary":"Submit mentor review (approve/reject)","tags":["Mentors","Credit Requests"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"mentorId","required":true,"schema":{"type":"string"},"description":"Mentor ID"},{"in":"path","name":"requestId","required":true,"schema":{"type":"string"},"description":"Credit Request ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["decision"],"properties":{"decision":{"type":"string","enum":["approved","rejected"]},"feedback":{"type":"string","description":"Required when rejecting"},"qualityCriteria":{"type":"object","properties":{"logbookComplete":{"type":"boolean"},"reportQuality":{"type":"boolean"},"learningOutcomes":{"type":"boolean"},"companyEvaluation":{"type":"boolean"}}}}}}}}}},"/api/mentors/{mentorId}/credit-requests/history":{"get":{"summary":"Get mentor's review history","tags":["Mentors","Credit Requests"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"mentorId","required":true,"schema":{"type":"string"},"description":"Mentor ID"},{"in":"query","name":"status","schema":{"type":"string"},"description":"Filter by status"},{"in":"query","name":"dateRange","schema":{"type":"string"},"description":"Date range filter (startDate,endDate)"},{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"Page number"},{"in":"query","name":"limit","schema":{"type":"integer","default":20},"description":"Items per page"}]}},"/api/mentors/{mentorId}/credit-requests/analytics":{"get":{"summary":"Get mentor review analytics","tags":["Mentors","Credit Requests"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"mentorId","required":true,"schema":{"type":"string"},"description":"Mentor ID"},{"in":"query","name":"dateRange","schema":{"type":"string"},"description":"Date range filter (startDate,endDate)"}]}},"/api/notifications":{"get":{"summary":"Get user notifications","tags":["Notifications"],"security":[{"bearerAuth":[]}]}},"/api/notifications/{id}/read":{"patch":{"summary":"Mark notification as read","tags":["Notifications"],"security":[{"bearerAuth":[]}]}},"/api/notifications/read-all":{"patch":{"summary":"Mark all notifications as read","tags":["Notifications"],"security":[{"bearerAuth":[]}]}},"/api/students/dashboard":{"get":{"summary":"Get student dashboard with mentor info","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/profile":{"get":{"summary":"Get profile with credits and history","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/internships":{"get":{"summary":"Browse available internships with AI match scores","tags":["Students"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"page","schema":{"type":"integer"},"description":"Page number"},{"in":"query","name":"limit","schema":{"type":"integer"},"description":"Items per page"},{"in":"query","name":"location","schema":{"type":"string"},"description":"Filter by location"},{"in":"query","name":"workMode","schema":{"type":"string","enum":["remote","onsite","hybrid"]},"description":"Filter by work mode"},{"in":"query","name":"skills","schema":{"type":"string"},"description":"Comma-separated list of skills"},{"in":"query","name":"minStipend","schema":{"type":"number"},"description":"Minimum stipend"},{"in":"query","name":"maxStipend","schema":{"type":"number"},"description":"Maximum stipend"},{"in":"query","name":"search","schema":{"type":"string"},"description":"Search query"},{"in":"query","name":"includeMatchScore","schema":{"type":"boolean"},"description":"Include AI match scores"}]}},"/api/students/internships/recommended":{"get":{"summary":"Get recommended internships","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/internships/completed":{"get":{"summary":"Get completed internships with credit request availability","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/internships/{internshipId}":{"get":{"summary":"Get internship details with match analysis","tags":["Students"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"internshipId","required":true,"schema":{"type":"string"},"description":"Internship ID"}]}},"/api/students/internships/{internshipId}/apply":{"post":{"summary":"Apply to internship","tags":["Students"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"internshipId","required":true,"schema":{"type":"string"},"description":"Internship ID"}]}},"/api/students/applications":{"get":{"summary":"List my applications with status","tags":["Students"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"status","schema":{"type":"string"},"description":"Filter by status"},{"in":"query","name":"page","schema":{"type":"integer"},"description":"Page number"},{"in":"query","name":"limit","schema":{"type":"integer"},"description":"Items per page"}]}},"/api/students/applications/{applicationId}":{"get":{"summary":"Get application details","tags":["Students"],"security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"applicationId","required":true,"schema":{"type":"string"},"description":"Application ID"}]},"delete":{"summary":"Withdraw application","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/modules/recommended":{"get":{"summary":"Get recommended modules","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/modules/start":{"post":{"summary":"Start a learning module","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/modules/complete":{"post":{"summary":"Complete a learning module","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/interviews/start":{"post":{"summary":"Start interview practice","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/interviews/answer":{"post":{"summary":"Submit interview answer","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/interviews/end":{"post":{"summary":"End interview session","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/interviews/history":{"get":{"summary":"Get interview history","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/logbooks":{"post":{"summary":"Submit logbook","tags":["Students"],"security":[{"bearerAuth":[]}]},"get":{"summary":"Get my logbooks","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/credits":{"get":{"summary":"Get credits summary","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/reports/nep":{"post":{"summary":"Generate NEP report","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/chatbot":{"post":{"summary":"Chatbot query","tags":["Students"],"security":[{"bearerAuth":[]}]}},"/api/students/:studentId/credit-requests":{"post":{"summary":"Create a new credit request","tags":["Students","Credit Requests"],"security":[{"bearerAuth":[]}]},"get":{"summary":"Get all credit requests for a student","tags":["Students","Credit Requests"],"security":[{"bearerAuth":[]}]}},"/api/students/:studentId/credit-requests/:requestId":{"get":{"summary":"Get credit request details","tags":["Students","Credit Requests"],"security":[{"bearerAuth":[]}]}},"/api/students/:studentId/credit-requests/:requestId/resubmit":{"put":{"summary":"Resubmit a rejected credit request","tags":["Students","Credit Requests"],"security":[{"bearerAuth":[]}]}},"/api/students/:studentId/credit-requests/:requestId/status":{"get":{"summary":"Get real-time status of a credit request","tags":["Students","Credit Requests"],"security":[{"bearerAuth":[]}]}},"/api/students/:studentId/credit-requests/:requestId/reminder":{"post":{"summary":"Send a reminder to the current reviewer","tags":["Students","Credit Requests"],"security":[{"bearerAuth":[]}]}},"/api/students/:studentId/credits/history":{"get":{"summary":"Get credit history for a student","tags":["Students","Credit Requests"],"security":[{"bearerAuth":[]}]}},"/api/students/:studentId/credits/certificate/:requestId":{"get":{"summary":"Download credit transfer certificate","tags":["Students","Credit Requests"],"security":[{"bearerAuth":[]}]}},"/api/tests/email":{"post":{"summary":"Test email service","description":"Send a test email to verify email service configuration (Admin only)","tags":["Testing"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["to","subject","template"],"properties":{"to":{"type":"string","format":"email","example":"test@example.com"},"subject":{"type":"string","example":"Test Email"},"template":{"type":"string","enum":["welcome","application_received","application_approved","application_rejected","logbook_approved","logbook_revision","completion_certificate"],"example":"welcome"},"data":{"type":"object","example":{"name":"John Doe","link":"https://example.com"}}}}}}},"responses":{"200":{"description":"Email sent successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Admin only"},"500":{"description":"Email service error"}}}},"/api/tests/s3":{"post":{"summary":"Test S3 storage service","description":"Upload a test file to S3 to verify storage configuration (Admin only)","tags":["Testing"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"},"folder":{"type":"string","example":"test"}}}}}},"responses":{"200":{"description":"File uploaded successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"key":{"type":"string"}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Admin only"},"500":{"description":"Storage service error"}}}},"/api/tests/gemini":{"post":{"summary":"Test Gemini AI service","description":"Send a test prompt to Gemini AI to verify AI service configuration (Admin only)","tags":["Testing"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","example":"Write a brief summary about artificial intelligence"},"model":{"type":"string","enum":["flash","pro"],"default":"flash","example":"flash"}}}}}},"responses":{"200":{"description":"AI response received successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"response":{"type":"string"},"model":{"type":"string"}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Admin only"},"500":{"description":"AI service error"}}}},"/api/tests/status":{"get":{"summary":"Get test services status","description":"Check the status of all test services (Email, S3, Queue, Gemini) (Admin only)","tags":["Testing"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Services status retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"email":{"type":"object","properties":{"configured":{"type":"boolean"}}},"s3":{"type":"object","properties":{"configured":{"type":"boolean"}}},"queue":{"type":"object","properties":{"connected":{"type":"boolean"}}},"gemini":{"type":"object","properties":{"configured":{"type":"boolean"}}}}}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Admin only"}}}},"/api/upload":{"post":{"summary":"Upload a file","tags":["Upload"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"File uploaded successfully"}}},"delete":{"summary":"Delete a file","tags":["Upload"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}}}}}},"responses":{"200":{"description":"File deleted successfully"}}}}}}