improved

Jalebi - Release Notes - Release/25.03

**Published On **: 12 May 2025
**Stage Deployment On: **12 May 2025 **Production Go-Live On: **The release date will be communicated by account manager.

The following APIs are impacted by this release. Changes may include new parameters, updated logic, or behavior enhancements. Please refer to the corresponding API documentation links provided alongside each entry for complete details.

API GroupAPI NameExisting EndpointNew EndpointCurrent PayloadNew PayloadCurrent ResponseNew Response
LoanPre Closure Loanv1/loans/{loanId}/transactions?command=foreclosurev1/loans/\{loanId}?command=preclosure{
"transactionDate":"29 March 2025",
"locale":"en",
"dateFormat":"dd MMMM yyyy",
"note":"PreClosing Loan"
}
{
"transactionDate":"29 March 2025",
"locale":"en",
"dateFormat":"dd MMMM yyyy",
"preclosureReasonCodeId": 3100,
}
{
"loanId": 3106,
"changes": {
"transactionDate": [
2025,
3,
30
],
"transactions": [
85900
],
"eventAmount": -1000,
"note": "fsdfdsf"
}
}
{
"loanId": 3106,
"changes": {
"transactionDate": [
2025,
3,
30
],
"transactions": [
85900
],
"eventAmount": -1000,
"preclosureReason" : { -- NEW
"id": 4001,
"name": "Bankruptcy",
"codeName": "LOAN_PRECLOSURE_REASON"
}
}
}
LoanLoan PreClosure Templatev1/loans/{loanId}/transactions/template?command=foreclosure&dateFormat=dd+MMMM+yyyy&locale=en&transactionDate=30+March+2025v1/loans/{loanId}/transactions/template?command=preclosure&dateFormat=dd+MMMM+yyyy&locale=en&transactionDate=30+March+2025NANANA...

"loanPreClosureReasonOptions": [
{
"id": 3001,
"name": "Bankruptcy",
"position": 0,
"active": true,
"mandatory": false,
"systemDefined": true,
"parentId": 0,
"codeName": "LOAN_PRECLOSURE_REASON",
"isMasked": false
},
{
"id": 3002,
"name": "Job loss",
"position": 1,
"active": true,
"mandatory": false,
"systemDefined": true,
"parentId": 0,
"codeName": "LOAN_PRECLOSURE_REASON",
"isMasked": false
},

.
.]
...
LoanLoan Write-off/v1/loans/{loanId}/transactions?command=writeoffv1/loans/\{loanId}?command=writeoff{
"transactionDate":"30 March 2025",
"note":"Testing",
"locale":"en",
"dateFormat":"dd MMMM yyyy"
}
{
"transactionDate":"29 March 2025",
"locale":"en",
"dateFormat":"dd MMMM yyyy",
"writeoffReasonCodeId": 4100,
}
{
"id": "85896",
"officeId": 1,
"clientId": 16601,
"loanId": 3104,
"resourceId": 85896,
"changes": {
"transactionDate": "30 March 2025",
"locale": "en",
"dateFormat": "dd MMMM yyyy",
"status": {
"id": 601,
"code": "loanStatusType.closed.written.off",
"value": "Closed (written off)",
"pendingApproval": false,
"waitingForDisbursal": false,
"active": false,
"closedObligationsMet": false,
"closedWrittenOff": true,
"closedRescheduled": false,
"closed": true,
"overpaid": false
},
"closedOnDate": "30 March 2025",
"writtenOffOnDate": "30 March 2025",
}
}
{
"id": "85896",
"officeId": 1,
"clientId": 16601,
"loanId": 3104,
"resourceId": 85896,
"changes": {
"transactionDate": "30 March 2025",
"locale": "en",
"dateFormat": "dd MMMM yyyy",
"status": {
"id": 601,
"code": "loanStatusType.closed.written.off",
"value": "Closed (written off)",
"pendingApproval": false,
"waitingForDisbursal": false,
"active": false,
"closedObligationsMet": false,
"closedWrittenOff": true,
"closedRescheduled": false,
"closed": true,
"overpaid": false
},
"closedOnDate": "30 March 2025",
"writtenOffOnDate": "30 March 2025",
"writeoffReason" : { -- NEW
"id": 4001,
"name": "Legal Settlement or Court Order",
"codeName": "LOAN_WRITEOFF_REASON"
}
}
}
LoanLoan PreClosure Templatev1/loans/{loanId}/transactions/template?command=writeoffv1/loans/\{loanId}/transactions/template?command=writeoffNANANA...

"loanWriteoffReasonOptions": [
{
"id": 4001,
"name": "Legal Settlement or Court Order",
"position": 0,
"active": true,
"mandatory": false,
"systemDefined": true,
"parentId": 0,
"codeName": "LOAN_WRITEOFF_REASON",
"isMasked": false
},
{
"id": 4002,
"name": "Government Loan Waiver Programs",
"position": 1,
"active": true,
"mandatory": false,
"systemDefined": true,
"parentId": 0,
"codeName": "LOAN_WRITEOFF_REASON",
"isMasked": false
},

.
.]
...

Notes API's

Notes API to support different entities and different entity_note_types

EntityNote TypeAction
CLIENT1.clientUPDATE,
DELETE
APPROVE,
REJECT,
REVIEW,
VERIFY
SUSPICIOUS_CLIENT_AUDIT1.ofac.checkOFAC_CHECK
SAVINGS_ACCOUNT1.review

2.block- NEW

3.blockAmount- NEW

4.close- NEW
SUSPEND,
REVIEW,
BLOCK,
UNBLOCK,
BLOCK_DEBIT,
UNBLOCK_DEBIT,
BLOCK_CREDIT,
UNBLOCK_CREDIT,
CLOSE,
HOLD_AMOUNT,
RELEASE_AMOUNT
WITHDRAW
SAVINGS_TRANSACTION1.reviewREVIEW
LOAN1.loan

2.approval - NEW

3.rejection - NEW

4.preclosure - NEW

5.writeoff - NEW
UPDATE
APPROVE
REJECT
REVIEW
WAIVE
WRITE_OFF
PRECLOSE
LOAN_TRANSACTIONreviewREVIEW
GROUPreviewREVIEW
DEBIT_CARDreview- NEW

suspend- NEW

block- NEW

unblock- NEW
REVIEW
SUSPEND
BLOCK
UNBLOCK
CREDIT_CARDreview- NEW

suspend- NEW

block- NEW

unblock- NEW
REVIEW
SUSPEND
BLOCK
UNBLOCK
CARD_AUTHORIZATIONreviewREVIEW
SHARE_ACCOUNTreviewREVIEW
DISPUTEdispute

approve - NEW

reject - NEW

adjust - NEW
REVIEW
APPROVE
REJECT
ADJUST
COMPLIANCE_REVIEWcompliancereview

approve - NEW

reject - NEW
REVIEW
APPROVE
REJECT

New APIs

POST API

API NAMEMethodURL EndpointDescription
Create notePOST/{resourceType}/{resourceId}/notes?actionAlong with the notes Payload, BO should send the m_suspicious_client_audit's id in the payload, which means that the OFAC note is added to specific audit.

Request

PayloadDescription
Current{
"note":"False positive DOB non-match."
}
No Changes

Response

Status CodeCurrent ResponseNew Response
200{
"id": "3179",
"officeId": 1,
"clientId": 16601,
"resourceId": 3179
}
{
"id": "3179",
"officeId": 1,
"resourceId": 3179,
"entityType": "client",
"entityId": 16601,
"actionType": "ofac.check"

}

GET API

API NameMethodEndpoint
Get NotesGETOne Single API to fetch all Entity Notes
/{resourceType}/{resourceId}/notes

Response

Status CodeCurrent ResponseNew Response
200[{
"id": 3179,
"clientId": 16601,
"noteType": {
"id": 1200,
"code": "ofac.check",
"value": "OFAC check note"
},
"note": "False positive DOB non-match.",
"createdById": 9500,
"createdByUsername": "balajibouser",
"createdOn": "2025-02-27 17:18:58",
"updatedById": 9500,
"updatedByUsername": "balajibouser",
"updatedOn": "2025-02-27 17:18:58",
"cardAuthorizationId": 0,
"cardId": 0
}, {
"id": 2983,
"clientId": 16601,
"noteType": {
"id": 100,
"code": "ofac.check",
"value": "OFAC check note"
},
"note": "Blocked this client",
"createdById": 1,
"createdByUsername": "admin",
"createdOn": "2025-02-13 10:18:15",
"updatedById": 1,
"updatedByUsername": "admin",
"updatedOn": "2025-02-13 10:18:15",
"cardAuthorizationId": 0,
"cardId": 0
}]
[{
"id": 3179,
"entityType": {
"id": 1200,
"code": "client",
"value": "clients"
},
"entityId": 16601,
"actionType": {
"id": 1200,
"code": "ofac.check",
"value": "OFAC check note"
},
"note": "False positive DOB non-match."
}, {
"id": 2983,
"entityType": "client",
"entityId": 16601,
"actionType": {
"id": 100,
"code": "client",
"value": "OFAC check note"
},
"note": "Blocked this client"
}]

Add Reason codes for : 1. Block Account, 2. Block Amount & 3. Close Account

APIs Undergoing Change

Get API - Account Block/ Account Close / Amount Block Template

URL Endpoint





Description

There is no changes required in the API. Pass the query parameters name.
The below are the Code Name:
ACCOUNT_BLOCK_REASON
AMOUNT_BLOCK_REASON
ACCOUNT_CLOSE_REASON

Request
No Changes

Status CodeNew Section in Response Proposed Response Message/Description/Error MessageDescription
Current...

"savingsAccountBlockReasonOptions": [
{
"id": 3001,
"name": "KYC Non-Compliance",
"position": 0,
"active": true,
"mandatory": false,
"systemDefined": true,
"parentId": 0,
"codeName": "ACCOUNT_BLOCK_REASON",
"isMasked": false
},
{
"id": 3002,
"name": "Suspicious Transactions",
"position": 1,
"active": true,
"mandatory": false,
"systemDefined": true,
"parentId": 0,
"codeName": "ACCOUNT_BLOCK_REASON",
"isMasked": false
},

.
.]
...
New section savingsAccountBlockReasonOptions.

Will be fetched from M_CODE and MCODE Values Table.

POST API - Blocking Account

URL Endpoint

Request

Current PayloadNew PayloadDescription
Current{
"reason":"dgfgdfg"
}
{
"blockReasonCodeId": 5100,
}
reason code - will be fetched in template and used here.

Response

Status CodeCurrent ResponseNew ResponseDescription
200{
"id": "4865",
"officeId": 1,
"clientId": 5139,
"savingsId": 4865,
"resourceId": 4865,
"changes": {
"subStatus": {
"id": 400,
"code": "SavingsAccountSubStatusEnum.block",
"value": "Block",
"none": false,
"inactive": false,
"dormant": false,
"escheat": false,
"block": true,
"blockCredit": false,
"blockDebit": false
}
}
}
{
"id": "4865",
"officeId": 1,
"clientId": 5139,
"savingsId": 4865,
"resourceId": 4865,
"changes": {
"subStatus": {
"id": 400,
"code": "SavingsAccountSubStatusEnum.block",
"value": "Block",
"none": false,
"inactive": false,
"dormant": false,
"escheat": false,
"block": true,
"blockCredit": false,
"blockDebit": false
},
"blockReason" : { -- NEW
"id": 3002,
"name": "Suspicious Transactions",
"codeName": "ACCOUNT_BLOCK_REASON"
}
}

}
New Section blockReason will be added

POST API - Blocking/Hold Amount

Request

Current PayloadNew PayloadDescription
Current{
"reference":"Hold $45",
"transactionAmount":45
}
{
"transactionAmount":45
"holdAmountReasonCodeId": 6100
}
reason code - will be fetched in template and used here.

Response

Status CodeCurrent ResponseNew ResponseDescription
200{
"id": "265",
"resourceId": 265
}
{
"id": "265",
"resourceId": 265,
"changes": {
"savingsAmountOnHold": 45, -- NEW
"blockAmountReason" : { -- NEW
"id": 3002,
"name": "Suspicious Transactions",
"codeName": "AMOUNT_BLOCK_REASON"
}
}

}
New Section blockReason will be added

POST API - Closing Account

URL Endpointv1/savingsaccounts/4865?command=close

Request

Current PayloadNew PayloadDescription
Current{
"closedOnDate":"01 April 2025",
"dateFormat":"dd MMMM yyyy",
"locale":"en",
"withdrawBalance":false,
"postInterestValidationOnClosure":true,
"ignoreNegativeBalance":false,
"paymentTypeId":1
}

or

{
"closedOnDate":"01 April 2025",
"dateFormat":"dd MMMM yyyy",
"locale":"en",
"withdrawBalance":true,
"postInterestValidationOnClosure":true,
"ignoreNegativeBalance":false,
"paymentTypeId":1
}
{
"closedOnDate":"01 April 2025",
"dateFormat":"dd MMMM yyyy",
"locale":"en",
"withdrawBalance":false,
"postInterestValidationOnClosure":true,
"ignoreNegativeBalance":false,
"paymentTypeId":1
"closeReasonCodeId": 5100
}
reason code - will be fetched in template and used here.

Response

Status CodeCurrent ResponseNew ResponseDescription
200{
"id": "1195",
"officeId": 1,
"clientId": 1798,
"savingsId": 1195,
"resourceId": 1195,
"changes": {
"locale": "en",
"dateFormat": "dd MMMM yyyy",
"closedOnDate": "01 April 2025",
"status": "CLOSED"
}
}
{
"id": "1195",
"officeId": 1,
"clientId": 1798,
"savingsId": 1195,
"resourceId": 1195,
"changes": {
"locale": "en",
"dateFormat": "dd MMMM yyyy",
"closedOnDate": "01 April 2025",
"status": "CLOSED",
"closeReason" : { -- NEW
"id": 6002,
"name": "Suspicious Transactions",
"codeName": "ACCOUNT_CLOSE_REASON"
}
}
}
New Section closeReason will be added
403{
"developerMessage": "Request was understood but caused a domain rule violation.",
"httpStatusCode": "403",
"defaultUserMessage": "Errors contain reason for domain rule violation.",
"userMessageGlobalisationCode": "validation.msg.domain.rule.violation",
"errors": [
{
"developerMessage": "Please do a post interest on the closing date",
"defaultUserMessage": "Please do a post interest on the closing date",
"userMessageGlobalisationCode": "error.msg.postInterest.notDone",
"parameterName": "id",
"value": null,
"args": []
}
]
}

POST API - Schedule Closing Account

URL Endpointv1/savingsaccounts/4865?command=scheduleclose

Request

Current PayloadNew Payload
Current{
"closedOnDate":"03 April 2025",
"dateFormat":"dd MMMM yyyy",
"locale":"en",
"withdrawBalance":true,
"postInterestValidationOnClosure":true,
"paymentTypeId":1,
"reason":"Closing due to Suspicious Transactions"
}
{
"closedOnDate":"03 April 2025",
"dateFormat":"dd MMMM yyyy",
"locale":"en",
"withdrawBalance":true,
"postInterestValidationOnClosure":true,
"paymentTypeId":1,
"closeReasonCodeId": 5100
}

Response

Current ResponseNew Response
200{
"id": "1195",
"officeId": 1,
"clientId": 1798,
"savingsId": 1195,
"resourceId": 1195,
"changes": {
"locale": "en",
"dateFormat": "dd MMMM yyyy",
"closedOnDate": "01 April 2025",
"status": "CLOSED"
}
}
{
"id": "17364",
"officeId": 1,
"clientId": 18712,
"savingsId": 17364,
"resourceId": 17364,
"changes": {
"subStatus": {
"id": 400,
"code": "SavingsAccountSubStatusEnum.block",
"value": "Block",
"none": false,
"inactive": false,
"dormant": false,
"escheat": false,
"block": true,
"blockCredit": false,
"blockDebit": false
},
"closeReason": {
"id": 7779,
"name": "KYC Non-Compliance",
"codeName": "ACCOUNT_CLOSE_REASON"
}
}
}

NEW API - Cancel Switch Classification

URL Endpoint/v1/clients/{clientId}?command=cancelSwitchclassification
Request Payload{
"switchClassificationRequestId": 651
}
Response{
"id": "193",
"clientId": 193,
"resourceId": 193,
"data": {
"cancelledClassificationId": 4867,
"oldClassificationId": 4868
}
}