diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 0e22d1d..8aadf99 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -6,6 +6,8 @@
+
+
@@ -107,7 +109,7 @@
-
+
diff --git a/jmeter.log b/jmeter.log
index 025291f..d67e8e0 100644
--- a/jmeter.log
+++ b/jmeter.log
@@ -1,40 +1,40 @@
-2025-03-22 17:42:33,437 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN
-2025-03-22 17:42:33,465 INFO o.a.j.JMeter: Loading user properties from: C:\apache-jmeter-5.6.3\apache-jmeter-5.6.3\bin\user.properties
-2025-03-22 17:42:33,465 INFO o.a.j.JMeter: Loading system properties from: C:\apache-jmeter-5.6.3\apache-jmeter-5.6.3\bin\system.properties
-2025-03-22 17:42:33,471 INFO o.a.j.JMeter: Copyright (c) 1998-2024 The Apache Software Foundation
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: Version 5.6.3
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: java.version=1.8.0_441
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: java.vm.name=Java HotSpot(TM) Client VM
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: os.name=Windows 11
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: os.arch=x86
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: os.version=10.0
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: file.encoding=Cp1252
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: java.awt.headless=null
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: Max memory =1073741824
-2025-03-22 17:42:33,479 INFO o.a.j.JMeter: Available Processors =12
-2025-03-22 17:42:33,482 INFO o.a.j.JMeter: Default Locale=English (EN)
-2025-03-22 17:42:33,482 INFO o.a.j.JMeter: JMeter Locale=English (EN)
-2025-03-22 17:42:33,482 INFO o.a.j.JMeter: JMeterHome=C:\apache-jmeter-5.6.3\apache-jmeter-5.6.3
-2025-03-22 17:42:33,482 INFO o.a.j.JMeter: user.dir =C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi
-2025-03-22 17:42:33,482 INFO o.a.j.JMeter: PWD =C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi
-2025-03-22 17:42:33,496 INFO o.a.j.JMeter: IP: 192.168.0.186 Name: SARL1188LP FullName: host.docker.internal
-2025-03-22 17:42:33,529 INFO o.a.j.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties
-2025-03-22 17:42:33,823 INFO o.a.j.JMeterGuiLauncher: Setting LAF to: com.github.weisj.darklaf.DarkLaf:com.github.weisj.darklaf.theme.DarculaTheme
-2025-03-22 17:42:37,214 INFO o.a.j.JMeterGuiLauncher: Loading file: jmeter\simbrella_api_test_plan.jmx
-2025-03-22 17:42:37,219 INFO o.a.j.s.FileServer: Default base='C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi'
-2025-03-22 17:42:37,223 INFO o.a.j.s.FileServer: Set new base='C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi\jmeter'
-2025-03-22 17:42:37,646 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
-2025-03-22 17:42:37,687 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
-2025-03-22 17:42:37,696 INFO o.a.j.s.SaveService: Using SaveService properties version 5.0
-2025-03-22 17:42:37,708 INFO o.a.j.s.SaveService: Loading file: jmeter\simbrella_api_test_plan.jmx
-2025-03-22 17:42:37,823 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
-2025-03-22 17:42:37,824 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
-2025-03-22 17:42:37,824 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
-2025-03-22 17:42:37,824 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
-2025-03-22 17:42:37,824 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
-2025-03-22 17:42:37,824 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
-2025-03-22 17:42:37,970 INFO o.a.j.s.FileServer: Set new base='C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi\jmeter'
-2025-03-22 17:42:38,517 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times
-2025-03-22 17:42:38,517 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to UTF-8
-2025-03-22 17:42:38,518 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true
-2025-03-22 17:42:38,518 INFO o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000
+2025-03-23 04:02:34,465 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN
+2025-03-23 04:02:34,481 INFO o.a.j.JMeter: Loading user properties from: C:\apache-jmeter-5.6.3\apache-jmeter-5.6.3\bin\user.properties
+2025-03-23 04:02:34,481 INFO o.a.j.JMeter: Loading system properties from: C:\apache-jmeter-5.6.3\apache-jmeter-5.6.3\bin\system.properties
+2025-03-23 04:02:34,481 INFO o.a.j.JMeter: Copyright (c) 1998-2024 The Apache Software Foundation
+2025-03-23 04:02:34,481 INFO o.a.j.JMeter: Version 5.6.3
+2025-03-23 04:02:34,481 INFO o.a.j.JMeter: java.version=1.8.0_441
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: java.vm.name=Java HotSpot(TM) Client VM
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: os.name=Windows 11
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: os.arch=x86
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: os.version=10.0
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: file.encoding=Cp1252
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: java.awt.headless=null
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: Max memory =1073741824
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: Available Processors =12
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: Default Locale=English (EN)
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: JMeter Locale=English (EN)
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: JMeterHome=C:\apache-jmeter-5.6.3\apache-jmeter-5.6.3
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: user.dir =C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: PWD =C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi
+2025-03-23 04:02:34,497 INFO o.a.j.JMeter: IP: 192.168.0.186 Name: SARL1188LP FullName: host.docker.internal
+2025-03-23 04:02:34,532 INFO o.a.j.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties
+2025-03-23 04:02:34,752 INFO o.a.j.JMeterGuiLauncher: Setting LAF to: com.github.weisj.darklaf.DarkLaf:com.github.weisj.darklaf.theme.DarculaTheme
+2025-03-23 04:02:36,900 INFO o.a.j.JMeterGuiLauncher: Loading file: jmeter\simbrella-to-bank\simbrella_to_firstbank.jmx
+2025-03-23 04:02:36,904 INFO o.a.j.s.FileServer: Default base='C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi'
+2025-03-23 04:02:36,909 INFO o.a.j.s.FileServer: Set new base='C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi\jmeter\simbrella-to-bank'
+2025-03-23 04:02:37,162 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
+2025-03-23 04:02:37,195 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
+2025-03-23 04:02:37,201 INFO o.a.j.s.SaveService: Using SaveService properties version 5.0
+2025-03-23 04:02:37,209 INFO o.a.j.s.SaveService: Loading file: jmeter\simbrella-to-bank\simbrella_to_firstbank.jmx
+2025-03-23 04:02:37,315 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2025-03-23 04:02:37,315 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2025-03-23 04:02:37,315 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2025-03-23 04:02:37,315 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2025-03-23 04:02:37,315 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
+2025-03-23 04:02:37,315 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
+2025-03-23 04:02:37,436 INFO o.a.j.s.FileServer: Set new base='C:\Users\amuibi\PycharmProjects\FirstBankSimbrellaApi\jmeter\simbrella-to-bank'
+2025-03-23 04:02:37,976 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times
+2025-03-23 04:02:37,977 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to UTF-8
+2025-03-23 04:02:37,977 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true
+2025-03-23 04:02:37,977 INFO o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000
diff --git a/jmeter/bank-to-simbrella/firstbank_to_simbrella.jmx b/jmeter/bank-to-simbrella/firstbank_to_simbrella.jmx
new file mode 100644
index 0000000..b845b5e
--- /dev/null
+++ b/jmeter/bank-to-simbrella/firstbank_to_simbrella.jmx
@@ -0,0 +1,327 @@
+
+
+
+
+ Test plan for FirstBank to Simbrella callback APIs
+ false
+ true
+ false
+
+
+
+ host
+ localhost
+ =
+
+
+ port
+ 8080
+ =
+
+
+ protocol
+ http
+ =
+
+
+ basePath
+ /v1/api/salary
+ =
+
+
+ username
+ admin
+ =
+
+
+ password
+ password
+ =
+
+
+
+
+
+
+
+ ${host}
+ ${port}
+ ${protocol}
+ UTF-8
+
+
+
+
+
+
+
+
+
+ Content-Type
+ application/json
+
+
+ Accept
+ application/json
+
+
+
+
+
+
+
+ ${protocol}://${host}:${port}${basePath}
+ ${username}
+ ${password}
+
+
+
+
+ false
+
+
+
+ 5
+ 5
+ true
+ continue
+
+ 1
+ false
+
+
+
+
+ ${basePath}/NotificationCallback
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "fbnTransactionId": "FBN20191031104405",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "debtId": "DEBT001",
+ "transactionType": "Disbursement",
+ "amountProvided": 5000.0,
+ "amountCollected": 0.0,
+ "responseCode": "00",
+ "responseDescription": "Transaction successful"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/DisbursementCallback
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "fbnTransactionId": "FBN20191031104405",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "debtId": "DEBT001",
+ "transactionType": "Disbursement",
+ "amountProvided": 5000.0,
+ "responseCode": "00",
+ "responseDescription": "Disbursement successful"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/CollectionCallback
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "fbnTransactionId": "FBN20191031104405",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "debtId": "DEBT001",
+ "transactionType": "Collection",
+ "amountCollected": 5500.0,
+ "responseCode": "00",
+ "responseDescription": "Collection successful"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/PenalChargeCallback
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "fbnTransactionId": "FBN20191031104405",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "debtId": "DEBT001",
+ "transactionType": "PenalCharge",
+ "penalCharge": 100.0,
+ "responseCode": "00",
+ "responseDescription": "Penal charge applied successfully"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/ConsentStatusCallback
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "fbnTransactionId": "FBN20191031104405",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "consentStatus": "REVOKED",
+ "responseCode": "00",
+ "responseDescription": "Consent status updated successfully"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/SMSStatusCallback
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "messageId": "MSG${__time()}",
+ "dest": "2348012345678",
+ "status": "DELIVERED",
+ "timestamp": "${__time(yyyy-MM-dd'T'HH:mm:ss)}"
+}
+ =
+
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
diff --git a/jmeter/simbrella-to-bank/simbrella_to_firstbank.jmx b/jmeter/simbrella-to-bank/simbrella_to_firstbank.jmx
new file mode 100644
index 0000000..04221c1
--- /dev/null
+++ b/jmeter/simbrella-to-bank/simbrella_to_firstbank.jmx
@@ -0,0 +1,639 @@
+
+
+
+
+ Test plan for Simbrella to FirstBank API calls
+ false
+ true
+ false
+
+
+
+ host
+ localhost
+ =
+
+
+ port
+ 8080
+ =
+
+
+ protocol
+ http
+ =
+
+
+ basePath
+ /v1/api/salary
+ =
+
+
+ username
+ admin
+ =
+
+
+ password
+ password
+ =
+
+
+ appId
+ your_app_id
+ =
+
+
+ apiKey
+ your_api_key
+ =
+
+
+
+
+
+
+
+ ${host}
+ ${port}
+ ${protocol}
+ UTF-8
+
+
+
+
+
+
+
+
+
+ Content-Type
+ application/json
+
+
+ Accept
+ application/json
+
+
+
+
+
+
+
+ ${protocol}://${host}:${port}${basePath}
+ ${username}
+ ${password}
+
+
+
+
+ false
+
+
+
+ 5
+ 5
+ true
+ continue
+
+ 1
+ false
+
+
+
+
+
+
+ appID
+ ${appId}
+
+
+ apiKey
+ ${apiKey}
+
+
+
+
+
+ ${basePath}/health
+ true
+ GET
+ true
+ false
+
+
+
+
+
+
+ ${basePath}/EligibilityCheck
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "$type": "EligibilityCheckRequest",
+ "transactionId": "TRX${__time()}",
+ "countryCode": "NG",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "lienAmount": 10000.0,
+ "channel": "MOBILE",
+ "msisdn": "2348012345678"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/SelectOffer
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "REQ${__time()}",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "msisdn": "2348012345678",
+ "requestedAmount": 5000.0,
+ "productid": "101",
+ "channel": "MOBILE"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/ProvideLoan
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "$type": "ProvideLoanRequest",
+ "requestId": "REQ${__time()}",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "productId": "101",
+ "lienAmount": 10000.0,
+ "requestedAmount": 5000.0,
+ "collectionType": 1,
+ "loanType": 1,
+ "channel": "MOBILE",
+ "msisdn": "2348012345678"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/LoanInformation
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "$type": "LoanInformationRequest",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "channel": "MOBILE",
+ "msisdn": "2348012345678"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/Repayment
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "$type": "RepaymentRequest",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "debtId": "DEBT001",
+ "productId": "101",
+ "channel": "MOBILE",
+ "msisdn": "2348012345678"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/CustomerConsent
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "$type": "CustomerConsentRequest",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "requestTime": "${__time(yyyy-MM-dd'T'HH:mm:ss)}",
+ "consentType": "LOAN",
+ "channel": "MOBILE"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/TransactionCheck
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "counter": "1",
+ "TransactionId": "TRX${__time()}",
+ "requestID": "REQ${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "countryId": "NG",
+ "transactionType": "Disbursement"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/RACCheck
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "fbnTransactionId": "FBN20191031104405",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "RAC_Array": ["SalaryAccount", "BVN", "AccountStatus"]
+}
+ =
+
+
+
+
+
+
+ ${basePath}/Disbursement
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "REQ${__time()}",
+ "debtId": "DEBT001",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "productId": "101",
+ "provideAmount": 5000.0,
+ "countryId": "NG",
+ "collectAmountInterest": 250.0,
+ "collectAmountMgtFee": 100.0,
+ "collectAmountInsurance": 50.0,
+ "collectAmountVAT": 20.0,
+ "comment": "Test disbursement"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/CollectLoan
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "fbnTransactionId": "FBN20191031104405",
+ "debtId": "DEBT001",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "productId": "101",
+ "collectAmount": 5500.0,
+ "collectionMethod": 1,
+ "lienAmount": 10000.0,
+ "countryId": "NG",
+ "penalCharge": 0.0,
+ "comment": "Test collection"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/PenalCharge
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "fbnTransactionId": "FBN20191031104405",
+ "debtId": "DEBT001",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "penalCharge": 100.0,
+ "lienAmount": 10000.0,
+ "countryId": "NG",
+ "comment": "Late payment penalty"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/RevokeEnableConsent
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "fbnTransactionId": "FBN20191031104405",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "processTime": "${__time(yyyy-MM-dd'T'HH:mm:ss)}",
+ "consentType": "REVOKE",
+ "countryId": "NG",
+ "comment": "Customer requested revocation"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/ValidateToken
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "RequestId": "REQ${__time()}",
+ "UserId": "USER001",
+ "CountryId": "NG",
+ "TokenCode": "123456"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/LienCheck
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "countryId": "NG"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/NewTransactionCheck
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "debtId": "DEBT001",
+ "transactionType": "Disbursement",
+ "fbnTransactionId": "FBN20191031104405",
+ "origTransactionId": "TRX12345",
+ "customerId": "CUST001"
+}
+ =
+
+
+
+
+
+
+ ${basePath}/SMS
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "text": "Your loan has been approved. Amount: 5000.0",
+ "dest": "2348012345678",
+ "unicode": false
+}
+ =
+
+
+
+
+
+
+ ${basePath}/BulkSMS
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ [
+ {
+ "text": "Your loan has been approved. Amount: 5000.0",
+ "dest": "2348012345678",
+ "unicode": false
+ },
+ {
+ "text": "Your loan application is being processed.",
+ "dest": "2348012345679",
+ "unicode": false
+ }
+]
+ =
+
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
diff --git a/jmeter/simbrella_api_test_plan.jmx b/jmeter/simbrella_api_test_plan.jmx
index da95ddf..aa9da74 100644
--- a/jmeter/simbrella_api_test_plan.jmx
+++ b/jmeter/simbrella_api_test_plan.jmx
@@ -1,32 +1,84 @@
-
+
-
+
+ Test plan for Simbrella FirstAdvance API
+ false
true
-
-
+ false
+
+
+
+ host
+ localhost
+ =
+
+
+ port
+ 8080
+ =
+
+
+ protocol
+ http
+ =
+
+
+ basePath
+ /v1/api/salary
+ =
+
+
+ username
+ admin
+ =
+
+
+ password
+ password
+ =
+
+
+ appId
+ your_app_id
+ =
+
+
+ apiKey
+ your_api_key
+ =
+
+
+
-
- 50
- 5
- true
+
continue
-
- 10
+
false
+ 1
+ 5
+ 5
+ false
+
+
+ true
-
- 127.0.0.1
- 8080
- http
-
+
+
-
+ ${host}
+ ${port}
+ ${protocol}
+ UTF-8
+
+ 6
+
+
@@ -36,50 +88,724 @@
application/json
- Authorization
- Basic YWRtaW46cGFzc3dvcmQ=
+ Accept
+ application/json
-
- /v1/api/salary/health
- true
- GET
- true
- false
-
+
+
+
+ ${protocol}://${host}:${port}${basePath}
+ ${username}
+ ${password}
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+ ${basePath}/health
+ GET
+ true
+ false
+ true
+ false
+
+
+
-
- /v1/api/salary/EligibilityCheck
- true
- POST
- true
+
+
+
true
false
- {
- "$type": "EligibilityCheckRequest",
- "transactionId": "Tr202503RK9232P115",
- "countryCode": "NGR",
- "customerId": "CN621868",
- "accountId": "ACN8263457",
- "msisdn": "2348012345678",
- "lienAmount": 4.0,
- "channel": "USSD"
+ {
+ "$type": "EligibilityCheckRequest",
+ "transactionId": "TRX${__time()}",
+ "countryCode": "NG",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "lienAmount": 10000.0,
+ "channel": "MOBILE",
+ "msisdn": "2348012345678"
}
=
+
+
+
+
+ ${basePath}/EligibilityCheck
+ POST
+ true
+ false
+ true
+ false
+
+
+
-
+
+
+
+ true
+
+
+
+ false
+ {
+ "requestId": "REQ${__time()}",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "msisdn": "2348012345678",
+ "requestedAmount": 5000.0,
+ "productid": "101",
+ "channel": "MOBILE"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/SelectOffer
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "$type": "ProvideLoanRequest",
+ "requestId": "REQ${__time()}",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "productId": "101",
+ "lienAmount": 10000.0,
+ "requestedAmount": 5000.0,
+ "collectionType": 1,
+ "loanType": 1,
+ "channel": "MOBILE",
+ "msisdn": "2348012345678"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/ProvideLoan
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "$type": "LoanInformationRequest",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "channel": "MOBILE",
+ "msisdn": "2348012345678"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/LoanInformation
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "$type": "RepaymentRequest",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "debtId": "DEBT001",
+ "productId": "101",
+ "channel": "MOBILE",
+ "msisdn": "2348012345678"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/Repayment
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "$type": "CustomerConsentRequest",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "requestTime": "${__time(yyyy-MM-dd'T'HH:mm:ss)}",
+ "consentType": "LOAN",
+ "channel": "MOBILE"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/CustomerConsent
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+ appID
+ ${appId}
+
+
+ apiKey
+ ${apiKey}
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "counter": "1",
+ "TransactionId": "TRX${__time()}",
+ "requestID": "REQ${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "countryId": "NG",
+ "transactionType": "Disbursement"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/TransactionCheck
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "fbnTransactionId": "FBN20191031104405",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "RAC_Array": ["SalaryAccount", "BVN", "AccountStatus"]
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/RACCheck
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "requestId": "REQ${__time()}",
+ "debtId": "DEBT001",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "productId": "101",
+ "provideAmount": 5000.0,
+ "countryId": "NG",
+ "collectAmountInterest": 250.0,
+ "collectAmountMgtFee": 100.0,
+ "collectAmountInsurance": 50.0,
+ "collectAmountVAT": 20.0,
+ "comment": "Test disbursement"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/Disbursement
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "fbnTransactionId": "FBN20191031104405",
+ "debtId": "DEBT001",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "productId": "101",
+ "collectAmount": 5500.0,
+ "collectionMethod": 1,
+ "lienAmount": 10000.0,
+ "countryId": "NG",
+ "penalCharge": 0.0,
+ "comment": "Test collection"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/CollectLoan
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "fbnTransactionId": "FBN20191031104405",
+ "debtId": "DEBT001",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "penalCharge": 100.0,
+ "lienAmount": 10000.0,
+ "countryId": "NG",
+ "comment": "Late payment penalty"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/PenalCharge
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "fbnTransactionId": "FBN20191031104405",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "processTime": "${__time(yyyy-MM-dd'T'HH:mm:ss)}",
+ "consentType": "REVOKE",
+ "countryId": "NG",
+ "comment": "Customer requested revocation"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/RevokeEnableConsent
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "RequestId": "REQ${__time()}",
+ "UserId": "USER001",
+ "CountryId": "NG",
+ "TokenCode": "123456"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/ValidateToken
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "countryId": "NG"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/LienCheck
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "transactionId": "TRX${__time()}",
+ "debtId": "DEBT001",
+ "transactionType": "Disbursement",
+ "fbnTransactionId": "FBN20191031104405",
+ "origTransactionId": "TRX12345",
+ "customerId": "CUST001"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/NewTransactionCheck
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "text": "Your loan has been approved. Amount: 5000.0",
+ "dest": "2348012345678",
+ "unicode": false
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/SMS
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ [
+ {
+ "text": "Your loan has been approved. Amount: 5000.0",
+ "dest": "2348012345678",
+ "unicode": false
+ },
+ {
+ "text": "Your loan application is being processed.",
+ "dest": "2348012345679",
+ "unicode": false
+ }
+]
+ =
+
+
+
+
+
+
+
+ ${basePath}/BulkSMS
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "fbnTransactionId": "FBN20191031104405",
+ "transactionId": "TRX${__time()}",
+ "customerId": "CUST001",
+ "accountId": "ACC001",
+ "debtId": "DEBT001",
+ "transactionType": "Disbursement",
+ "amountProvided": 5000.0,
+ "amountCollected": 0.0,
+ "responseCode": "00",
+ "responseDescription": "Transaction successful"
+}
+ =
+
+
+
+
+
+
+
+ ${basePath}/NotificationCallback
+ POST
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
false
saveConfig
@@ -116,7 +842,7 @@
-
+
false
saveConfig
@@ -156,4 +882,4 @@
-
+
\ No newline at end of file