EMI Module API & Integration Guide
EMI API contracts for admin and mobile surfaces.
- Module:
EMI
- Admin auth:
JwtAuthGuard + RoleGuard + @Permissions(...)
- Mobile/customer auth:
@Public()
- Admin base path:
/api/admin/emi
- Mobile base path:
/api/mobile/emi
- Success envelope:
ResponseDto<T>
| Method | Path | Permission |
|---|
GET | /api/admin/emi/config | EmiConfig_READ |
PUT | /api/admin/emi/config | EmiConfig_UPDATE |
POST | /api/admin/emi/banks | EmiBanks_CREATE |
GET | /api/admin/emi/banks | EmiBanks_READ |
GET | /api/admin/emi/banks/:id | EmiBanks_READ |
PATCH | /api/admin/emi/banks/:id | EmiBanks_UPDATE |
DELETE | /api/admin/emi/banks/:id | EmiBanks_DELETE |
GET | /api/admin/emi/inquiries | EmiInquiries_READ |
GET | /api/admin/emi/inquiries/:id | EmiInquiries_READ |
PATCH | /api/admin/emi/inquiries/:id/status | EmiInquiries_UPDATE |
| Method | Path |
|---|
GET | /api/mobile/emi/config |
GET | /api/mobile/emi/banks |
POST | /api/mobile/emi/inquiries |
PUT /api/admin/emi/config
- Request body:
{
"isEnabled": true,
"periods": [3, 6, 12, 24]
}
POST /api/admin/emi/banks
- Request body:
{
"name": "NMB Bank",
"logoUrl": "https://example.com/logos/nmb-bank.png",
"displayOrder": 1
}
POST /api/mobile/emi/inquiries
- Request body:
{
"productId": 42,
"customerName": "John Doe",
"customerEmail": "john@example.com",
"customerMobile": "+9779800000000",
"bankIds": [1, 3],
"hasCreditCard": true,
"downPaymentAmount": 500000,
"message": "I prefer a 12-month option."
}
| Code | HTTP | Description |
|---|
EMI_DISABLED | 422 | Inquiry submitted while EMI is disabled |
EMI_BANK_NOT_FOUND | 404 | One or more selected banks are missing or inactive |
EMI_INQUIRY_NOT_FOUND | 404 | Admin requested an inquiry that does not exist |
EMI_PRODUCT_NOT_FOUND | 404 | Inquiry references a missing product |
EMI_CONFIG_NOT_FOUND | 404 | Reserved code for config-missing cases |
- Mobile EMI config and bank endpoints are cache-backed.
- Inquiry writes snapshot the product title and
sp value at submission time.
- Admin can deactivate banks without deleting historical inquiry links.