Reverse proxy running on http://localhost:5000
GET /health — Gateway healthPOST /api/auth/register → IAMPOST /api/auth/verify-email → IAMPOST /api/auth/login → IAMPOST /api/auth/refresh-token → IAMPOST /api/auth/forgot-password → IAMPOST /api/auth/reset-password → IAMPOST /api/auth/logout → IAM BearerPUT /api/auth/change-password → IAM BearerGET /api/auth/me → IAM BearerPOST /api/two-factor/enable → IAM BearerPOST /api/two-factor/verify → IAM BearerDEL /api/two-factor → IAM BearerGET /api/users → IAM AdminGET /api/users/{id} → IAM BearerPUT /api/users/{id}/activate → IAM AdminPUT /api/users/{id}/deactivate → IAM AdminPUT /api/users/{id}/lock → IAM AdminPUT /api/users/{id}/unlock → IAM AdminPOST /api/users/{userId}/roles → IAM AdminDEL /api/users/{userId}/roles/{role} → IAM AdminPOST /api/users/{id}/teacher-classes/{classId} → IAM BearerDEL /api/users/{id}/teacher-classes/{classId} → IAM BearerPOST /api/users/{id}/parent-children/{studentId} → IAM BearerDEL /api/users/{id}/parent-children/{studentId} → IAM BearerPUT /api/users/{id}/student-record/{studentRecordId} → IAM BearerDEL /api/users/{id}/student-record → IAM BearerGET /api/students → Student BearerPOST /api/students → Student AdminGET /api/students/{id} → Student BearerPUT /api/students/{id} → Student BearerDEL /api/students/{id} → Student AdminPOST /api/students/{id}/transfer → Student BearerPOST /api/students/{id}/withdraw → Student BearerPOST /api/students/{id}/reactivate → Student BearerPOST /api/students/{id}/assign-class → Student BearerPOST /api/students/{studentId}/guardians → Student BearerPUT /api/students/{studentId}/guardians/{guardianId} → Student BearerDEL /api/students/{studentId}/guardians/{guardianId} → Student BearerGET /api/students/{studentId}/attendance → Student BearerPOST /api/students/{studentId}/attendance → Student BearerPOST /api/students/{studentId}/attendance/excuse → Student BearerGET /api/schools → Tenant PlatformAdminPOST /api/schools → Tenant PlatformAdminGET /api/schools/{id} → Tenant BearerPOST /api/schools/{id}/onboard → Tenant PlatformAdminPOST /api/schools/{id}/suspend → Tenant PlatformAdminPOST /api/schools/{id}/activate → Tenant PlatformAdminGET /api/schools/{schoolId}/config → Tenant BearerPATCH /api/schools/{schoolId}/config → Tenant BearerPUT /api/schools/{schoolId}/config/features/{feature} → Tenant PlatformAdminGET /api/schools/{schoolId}/config/features/{feature} → Tenant Bearer