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:
co-authored by
Claude Opus 4.6
parent
78f37257a7
commit
ba5365d4af
@@ -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)."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user