Shop It Docs
Developer Resourcesemi

EMI Module API & Integration Guide

EMI API contracts for admin and mobile surfaces.

EMI Module - API & Integration Guide

1. How to Read / Quick Metadata

  • 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>

2. Route Summary

2.1 Admin

MethodPathPermission
GET/api/admin/emi/configEmiConfig_READ
PUT/api/admin/emi/configEmiConfig_UPDATE
POST/api/admin/emi/banksEmiBanks_CREATE
GET/api/admin/emi/banksEmiBanks_READ
GET/api/admin/emi/banks/:idEmiBanks_READ
PATCH/api/admin/emi/banks/:idEmiBanks_UPDATE
DELETE/api/admin/emi/banks/:idEmiBanks_DELETE
GET/api/admin/emi/inquiriesEmiInquiries_READ
GET/api/admin/emi/inquiries/:idEmiInquiries_READ
PATCH/api/admin/emi/inquiries/:id/statusEmiInquiries_UPDATE

2.2 Mobile

MethodPath
GET/api/mobile/emi/config
GET/api/mobile/emi/banks
POST/api/mobile/emi/inquiries

3. Request / Response Shapes

3.1 Update config

  • PUT /api/admin/emi/config
  • Request body:
{
  "isEnabled": true,
  "periods": [3, 6, 12, 24]
}

3.2 Create bank

  • POST /api/admin/emi/banks
  • Request body:
{
  "name": "NMB Bank",
  "logoUrl": "https://example.com/logos/nmb-bank.png",
  "displayOrder": 1
}

3.3 Submit inquiry

  • 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."
}
  • Success response data:
{
  "id": 7
}

4. Error Reference

CodeHTTPDescription
EMI_DISABLED422Inquiry submitted while EMI is disabled
EMI_BANK_NOT_FOUND404One or more selected banks are missing or inactive
EMI_INQUIRY_NOT_FOUND404Admin requested an inquiry that does not exist
EMI_PRODUCT_NOT_FOUND404Inquiry references a missing product
EMI_CONFIG_NOT_FOUND404Reserved code for config-missing cases

5. Integration Notes

  • 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.