Skip to Content
Routes (HTTP URLs)admin.route.ts

admin.route.ts

Prefix: /api/v1/admin

The staff control panel API. Creating videos, editing questions, importing PYQ, managing users, and current affairs admin workflows all live here or in routers mounted from here.

Guards

Typically:

authMiddleware → adminMiddleware → hasPermission(...)

Super admin (isAdmin: true) bypasses role lists and gets all permissions (see permissions.ts).

What’s inside (high level)

DomainPermissionExamples
Admin managementMANAGE_ADMINS (super admin)Promote/demote staff roles
UsersVIEW_USERS / DELETE_USERSList, search, delete
StatsVIEW_STATSSignup chart, top exams / states
Announcements / exam info*_CONTENTContent CRUD
YouTube videosMANAGE_VIDEOSVideos, search, channel filters
Video timestampsMANAGE_QUESTIONSPer-video timestamps (±15s dedup)
MCQsMANAGE_QUESTIONSOne question per timestamp, bulk import
PlaylistsMANAGE_PLAYLISTSPer-channel folders
Mock testsMANAGE_MOCK_TESTSMock test definitions

Nested routers (mounted by this file)

MountFileAudience
/api/v1/admin/practice-pyqpractice-pyq-admin.routes.tsPYQ catalog admin
/api/v1/admin/practice-ytsame file (practiceYtAdminRouter)YouTube practice catalog admin
/api/v1/admin/marketingmarketing-admin.routes.tsSponsors / coupon deals
/api/v1/admin/current-affairscurrent-affairs-admin.routes.tsCA issues, items, MCQs, flashcards, entities

Two more admin surfaces are mounted directly from index.ts, outside adminRouter:

MountFileAudience
/api/v1/admin/notificationsnotification.route.ts (adminNotificationsRouter)Push metrics / recent logs
/api/v1/admin/rate-limitsadmin-rate-limits.routes.tsDynamic rate-limit policies (see rate limiting)

Warning

This file is very long (~1000+ lines). Treat it as many mini-routes in one file.

When adding admin features:

  1. Add permission in config/permissions.ts
  2. Guard route
  3. Implement logic in services/, not inline in route

Not everything is literally inside admin.route.ts — some routers are separate files but mounted under /api/v1/admin from index.ts or admin composition. Check imports at the top of admin.route.ts.

Last updated on