Add all CBS custom modules: KYC, Sanctions, RBI Feed, OpenProject, Mobile Lookup, Charges, Avro schemas

Includes all prior work not yet committed on this branch:
- KYC module (LincPay eKYC: PAN, Aadhaar OTP, GSTIN verification)
- Sanctions screening (UN Security Council consolidated list)
- RBI Feed integration with scheduled jobs
- OpenProject API integration
- Mobile lookup service
- Charge module enhancements (current account support)
- Client family member nominee fields
- Avro schema updates
- Liquibase migrations 0216-0224
- Postman collections for OpenProject, RBI Feeds, Sanctions
- SQL seed scripts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Aditya
2026-03-18 17:54:10 +05:30
co-authored by Claude Opus 4.6
parent 78f37257a7
commit ba5365d4af
102 changed files with 9757 additions and 18 deletions
+375
View File
@@ -0,0 +1,375 @@
{
"info": {
"_postman_id": "sanctions-screening-001",
"name": "Sanctions Screening API",
"description": "API collection for UN Security Council consolidated sanctions list screening.\n\nEndpoints:\n- Screen client names against sanctions list\n- Load sanctions XML data\n- Check sanctions database status\n\nBase URL: {{baseUrl}}/fineract-provider/api/v1",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"auth": {
"type": "basic",
"basic": [
{
"key": "username",
"value": "{{username}}",
"type": "string"
},
{
"key": "password",
"value": "{{password}}",
"type": "string"
}
]
},
"variable": [
{
"key": "baseUrl",
"value": "https://localhost:8443"
},
{
"key": "username",
"value": "mifos"
},
{
"key": "password",
"value": "password"
},
{
"key": "tenantId",
"value": "default"
}
],
"item": [
{
"name": "Sanctions Screening",
"description": "Screen client names against the UN Security Council consolidated sanctions list",
"item": [
{
"name": "Screen Name (GET)",
"request": {
"method": "GET",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/screen?name=Mohammad Ali",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "screen"],
"query": [
{
"key": "name",
"value": "Mohammad Ali",
"description": "Name to screen against sanctions list"
}
]
},
"description": "Screen a client name against the UN Security Council consolidated sanctions list using GET method.\n\n**Response when match found (FLAGGED):**\n```json\n{\n \"screenedName\": \"Mohammad Ali\",\n \"matchFound\": true,\n \"status\": \"FLAGGED\",\n \"message\": \"Potential match found in UN Security Council consolidated sanctions list. Manual review required before proceeding.\",\n \"matchCount\": 2,\n \"matches\": [...]\n}\n```\n\n**Response when no match (CLEAR):**\n```json\n{\n \"screenedName\": \"John Smith\",\n \"matchFound\": false,\n \"status\": \"CLEAR\",\n \"message\": \"No match found in UN Security Council consolidated sanctions list.\",\n \"matchCount\": 0,\n \"matches\": []\n}\n```"
}
},
{
"name": "Screen Name (POST)",
"request": {
"method": "POST",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"AL-QAIDA\"\n}"
},
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/screen",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "screen"]
},
"description": "Screen a client name against sanctions list using POST method with JSON body."
}
},
{
"name": "Screen Name - Individual (FLAGGED example)",
"request": {
"method": "POST",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"ERIC BADEGE\"\n}"
},
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/screen",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "screen"]
},
"description": "Example: Screen a known sanctioned individual name. Should return FLAGGED status."
}
},
{
"name": "Screen Name - Clear (no match)",
"request": {
"method": "POST",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Aditya Kumar\"\n}"
},
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/screen",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "screen"]
},
"description": "Example: Screen a name that does not exist in sanctions list. Should return CLEAR status."
}
},
{
"name": "Screen Name - Entity (FLAGGED example)",
"request": {
"method": "POST",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"TALIBAN\"\n}"
},
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/screen",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "screen"]
},
"description": "Example: Screen a known sanctioned entity name. Should return FLAGGED status."
}
}
]
},
{
"name": "Sanctions Management",
"description": "Load and manage sanctions data",
"item": [
{
"name": "Get Sanctions Status",
"request": {
"method": "GET",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/status",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "status"]
},
"description": "Get the count of active sanctions entries in the database.\n\n**Response:**\n```json\n{\n \"totalActiveEntries\": 1002,\n \"status\": \"ACTIVE\"\n}\n```"
}
},
{
"name": "Load Sanctions XML",
"request": {
"method": "POST",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/xml",
"type": "text"
}
],
"body": {
"mode": "file",
"file": {
"src": ""
}
},
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/load",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "load"]
},
"description": "Upload and load the UN consolidated sanctions XML file into the database.\n\nSelect the `consolidatedLegacyByPRN.xml` file in the Body > Binary section.\n\n**Response:**\n```json\n{\n \"message\": \"Sanctions data loaded successfully\",\n \"entriesLoaded\": 1002,\n \"totalActive\": 1002\n}\n```"
}
}
]
},
{
"name": "Screening Activity Logs",
"description": "View sanctions screening activity logs — every search is recorded",
"item": [
{
"name": "Get All Screening Logs",
"request": {
"method": "GET",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/logs",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "logs"]
},
"description": "Get all sanctions screening activity logs (most recent first).\n\n**Response:**\n```json\n[\n {\n \"id\": 1,\n \"screenedName\": \"ERIC BADEGE\",\n \"screeningResult\": \"FLAGGED\",\n \"matchCount\": 1,\n \"matchedNames\": \"ERIC BADEGE\",\n \"screeningSource\": \"CLIENT_CREATION\",\n \"screenedOn\": \"2026-03-16T10:30:00Z\",\n \"screenedBy\": 1\n }\n]\n```"
}
},
{
"name": "Get FLAGGED Logs Only",
"request": {
"method": "GET",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/logs?result=FLAGGED",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "logs"],
"query": [
{
"key": "result",
"value": "FLAGGED",
"description": "Filter by result: FLAGGED or CLEAR"
}
]
},
"description": "Get only FLAGGED screening logs — shows all searches that matched a sanctioned entry."
}
},
{
"name": "Get CLEAR Logs Only",
"request": {
"method": "GET",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/logs?result=CLEAR",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "logs"],
"query": [
{
"key": "result",
"value": "CLEAR",
"description": "Filter by result: FLAGGED or CLEAR"
}
]
},
"description": "Get only CLEAR screening logs — shows all searches that did not match any sanctioned entry."
}
},
{
"name": "Search Logs by Name",
"request": {
"method": "GET",
"header": [
{
"key": "Fineract-Platform-TenantId",
"value": "{{tenantId}}",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"url": {
"raw": "{{baseUrl}}/fineract-provider/api/v1/sanctions/logs?name=ERIC",
"host": ["{{baseUrl}}"],
"path": ["fineract-provider", "api", "v1", "sanctions", "logs"],
"query": [
{
"key": "name",
"value": "ERIC",
"description": "Search logs by screened name (partial match)"
}
]
},
"description": "Search screening logs by the name that was screened (partial, case-insensitive match)."
}
}
]
}
]
}