07 - Controllers Reference
Complete reference of all 33 controllers grouped by stage, admin area, and WarRoom. Use as a quick lookup when you need to find the entry point for a specific endpoint.
Stage Controllers (17 files under Stage0-15)
| Stage | Controller | Key Endpoints |
|---|---|---|
| 0 | ArrivalController.cs | GET /journey/init - create session, fraud pre-checks |
| 1 | RegistrationController.cs | POST /registration/signup, POST /registration/otp/generate, GET /registration/resume/{leadId} |
| 2 | OtpVerificationController.cs | POST /registration/otp/verify |
| 3 | EmailController.cs | GET /email, POST /email/otp/generate|verify|resend |
| 4 | PanController.cs | GET /pan/details, POST /pan/validate, POST /pan/verify |
| 5 | AadhaarController.cs | GET /aadhaar/details, POST /aadhaar/digilocker/initiate|callback, POST /aadhaar/upload |
| 6 | BankController.cs | GET /bank/details, POST /bank/account, POST /bank/reverse-penny/initiate|complete, GET /bank/micr/{ifsc}, GET /bank/list/{ifsc} |
| 7 | LivenessController.cs | GET /selfie/details, POST /selfie/liveness/initiate|callback |
| 8 | SignatureController.cs | GET /signature/details, POST /signature/upload |
| 9 | PersonalDetailsController.cs | GET/POST /personal-details |
| 9 | NomineeController.cs | CRUD /nominees/{id}, POST /nominees/verify-pan |
| 10 | IncomeProofController.cs | POST /income-proof/upload, POST /documents/submit-proofs |
| 11 | FinalValidationController.cs | POST /journey/final-validation |
| 12 | DocumentGenerationController.cs | POST /documents/generate-aof, GET /documents/pdf/{type}, POST /documents/regenerate |
| 13 | EsignController.cs | GET /esign/details, POST /esign/initiate|callback, POST /esign/generate-client-code, POST /esign/wet-sign |
| 14 | AccountCreationController.cs | POST /account/create, GET /account/status |
| 15 | ActivationController.cs | POST /account/activate |
| 15 | PaymentController.cs | GET /payment/defaults, POST /payment/initiate|status|callback |
Common Controllers (6 files under Common/)
| Controller | Endpoints | Purpose |
|---|---|---|
JourneyController.cs | POST /journey/stage, GET /journey/status, POST /app/version-check, GET /lookups/{category}, GET /master/states|cities/{state} | Cross-stage journey utilities |
HandoffController.cs | POST /handoff/generate, GET/POST /handoff/{token} | Desktop → mobile handoff links |
LeadDeletionController.cs | POST /lead/delete | GDPR lead data deletion |
DevController.cs | POST /dev/purge-all, POST /dev/purge-lead/{leadId} | Development-only DB purge |
OneMoneyController.cs | GET /onemoney/bank-details|web-url | Account Aggregator for income proof |
SebiController.cs | GET /sebi/submission/{leadId}, POST /sebi/generate|submit|response/{leadId} | SEBI submission workflow |
Admin Controllers (7 files under Admin/)
| Controller | Required Role | Endpoints |
|---|---|---|
AnalyticsController.cs | [RequiresRole("ADMIN","ANALYST")] | funnel, stage-times, provider-health, daily-snapshot, drop-offs |
ApplicationSearchController.cs | ADMIN | Search applications, view timeline |
LookupController.cs | ADMIN | CRUD for lookups (states, cities, occupation, etc.) |
MockController.cs | ADMIN | POST /admin/mock/{provider}/{apiName} - set mock response templates |
ProviderConfigController.cs | ADMIN | CRUD for provider_configurations table |
StageConfigController.cs | ADMIN | GET/PUT stage-level settings |
VerifierController.cs | VERIFIER | Queue, approve, reject, send-back manual reviews |
WarRoom Controllers (2 files)
| Controller | Endpoints |
|---|---|
WarRoomAuthController.cs | POST /warroom/auth/login |
WarRoomController.cs | Dashboard, journey list / detail / timeline, providers list + health, feature flags, stage configs, analytics (funnel, drops), mock-all toggle |
Filter Attributes
[RequiresStage(N)] or [RequiresStage(N, max)] | Enforces Lead.CurrentStage ≥ N (and ≤ max if set). Returns 409 Conflict otherwise. |
[RequiresRole("ADMIN", "ANALYST")] | Checks JWT claims for matching role. Returns 403 Forbidden otherwise. |
Route Constants
All route strings are constants in MO.Ekyc.Shared/Constants/ApiRoutes.cs. Controllers reference them like [HttpPost(ApiRoutes.RegistrationSignup)] instead of magic strings.
backend/src/MO.Ekyc.Shared/Constants/ApiRoutes.csC#excerpt
public static class ApiRoutes
{
public const string Base = "api/v1";
// Stage 0
public const string JourneyInit = $"{Base}/journey/init";
// Stage 1
public const string RegistrationSignup = $"{Base}/registration/signup";
public const string RegistrationOtpGenerate = $"{Base}/registration/otp/generate";
public const string RegistrationResumeState = $"{Base}/registration/resume/{{leadId}}";
// Stage 2
public const string RegistrationOtpVerify = $"{Base}/registration/otp/verify";
// ... ~100 route constants total
}
Frontend API call reference
- Frontend ApiService page - shows which Flutter method calls which backend controller