[add]: Documentation Update

This commit is contained in:
VivianDee
2025-09-12 13:06:41 +01:00
parent f0679b8c1e
commit 2f3b589420
22 changed files with 459 additions and 571 deletions
+2 -1
View File
@@ -1,2 +1,3 @@
from .simbrella import SimbrellaIntegration from .simbrella import SimbrellaIntegration
from .kafka import KafkaIntegration from .kafka import KafkaIntegration
from .events_service import EventServiceIntegration
+49
View File
@@ -0,0 +1,49 @@
import httpx
from app.utils.logger import logger
from app.config import settings
class EventServiceIntegration:
BASE_URL = settings.SIMBRELLA_BASE_URL
ENDPOINT_DIRECT_LOAN = settings.ENDPOINT_DIRECT_LOAN
ENDPOINT_DIRECT_REPAYMENT = settings.ENDPOINT_DIRECT_REPAYMENT
@staticmethod
def direct_loan(transaction_id: str):
"""
Calls the Direct Loan endpoint
"""
url = f"{EventServiceIntegration.BASE_URL}{EventServiceIntegration.ENDPOINT_DIRECT_LOAN}"
payload = {"transactionId": str(transaction_id)}
headers = {
"Content-Type": "application/json"
}
try:
response = httpx.post(url, json=payload, headers=headers, timeout=10.0)
logger.info(f"Loan Response: {response.text}")
return response
except Exception as e:
logger.error(f"Direct Loan API call failed: {str(e)}", exc_info=True)
raise
@staticmethod
def direct_repayment(transaction_id: str):
"""
Calls the Direct Repayment endpoint
"""
url = f"{EventServiceIntegration.BASE_URL}{EventServiceIntegration.ENDPOINT_DIRECT_REPAYMENT}"
payload = {"transactionId": str(transaction_id)}
headers = {
"Content-Type": "application/json",
}
try:
response = httpx.post(url, json=payload, headers=headers, timeout=10.0)
logger.info(f"Repayment Response: {response.text}")
return response
except Exception as e:
logger.error(f"Direct Repayment API call failed: {str(e)}", exc_info=True)
raise
+15 -3
View File
@@ -13,6 +13,7 @@ from app.api.enums import LoanStatus
from app.extensions import db from app.extensions import db
from datetime import datetime, timezone from datetime import datetime, timezone
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
from app.api.integrations import EventServiceIntegration
from app.models import LoanRepaymentSchedule from app.models import LoanRepaymentSchedule
from app.api.services.offer_analysis import OfferAnalysis from app.api.services.offer_analysis import OfferAnalysis
from app.api.helpers.response_helper import ResponseHelper from app.api.helpers.response_helper import ResponseHelper
@@ -172,11 +173,15 @@ class ProvideLoanService(BaseService):
"accountId": account_id, "accountId": account_id,
"msisdn": customer.msisdn "msisdn": customer.msisdn
} }
event_thread = Thread(target=ProvideLoanService.trigger_loan_disbursement, args=(transaction_id,))
event_thread.start()
# KafkaIntegration.send_loan_request(loan_data = response_data, request_id = request_id) # KafkaIntegration.send_loan_request(loan_data = response_data, request_id = request_id)
# Call Kafka in a background thread # Call Kafka in a background thread
thread = Thread(target=ProvideLoanService.async_send_to_kafka, args=(response_data, request_id, "PROCESS_PAYMENT")) kafka_thread = Thread(target=ProvideLoanService.async_send_to_kafka, args=(response_data, request_id, "PROCESS_PAYMENT"))
thread.start() kafka_thread.start()
db.session.commit() db.session.commit()
return ResponseHelper.success(data=response_data) return ResponseHelper.success(data=response_data)
@@ -195,4 +200,11 @@ class ProvideLoanService(BaseService):
except Exception as e: except Exception as e:
logger.error(f"An error occurred: {str(e)}", exc_info=True) logger.error(f"An error occurred: {str(e)}", exc_info=True)
db.session.rollback() db.session.rollback()
return ResponseHelper.internal_server_error() return ResponseHelper.internal_server_error()
@classmethod
def trigger_loan_disbursement(cls, transaction_id: str):
response = EventServiceIntegration.direct_loan(transaction_id=transaction_id)
return response
+13 -2
View File
@@ -11,6 +11,7 @@ from app.api.services.base_service import BaseService
from app.api.enums import TransactionType from app.api.enums import TransactionType
from threading import Thread from threading import Thread
from app.extensions import db from app.extensions import db
from app.api.integrations import EventServiceIntegration
class RepaymentService(BaseService): class RepaymentService(BaseService):
TRANSACTION_TYPE = TransactionType.REPAYMENT TRANSACTION_TYPE = TransactionType.REPAYMENT
@@ -79,9 +80,12 @@ class RepaymentService(BaseService):
"debtId": loan_id "debtId": loan_id
} }
event_thread = Thread(target=RepaymentService.trigger_loan_repayment, args=(transaction_id,))
event_thread.start()
# Call Kafka in a background thread # Call Kafka in a background thread
thread = Thread(target=RepaymentService.async_send_to_kafka, args=(response_data, request_id, "LOAN_REPAYMENT")) kafka_thread = Thread(target=RepaymentService.async_send_to_kafka, args=(response_data, request_id, "LOAN_REPAYMENT"))
thread.start() kafka_thread.start()
db.session.commit() db.session.commit()
return ResponseHelper.success(data=response_data) return ResponseHelper.success(data=response_data)
@@ -101,3 +105,10 @@ class RepaymentService(BaseService):
logger.error(f"An error occurred: {str(e)}", exc_info=True) logger.error(f"An error occurred: {str(e)}", exc_info=True)
db.session.rollback() db.session.rollback()
return ResponseHelper.internal_server_error() return ResponseHelper.internal_server_error()
@classmethod
def trigger_loan_repayment(cls, transaction_id: str):
response = EventServiceIntegration.direct_repayment(transaction_id=transaction_id)
return response
+4
View File
@@ -46,6 +46,10 @@ class Config:
VALID_API_KEY = os.getenv("SIMBRELLA_API_KEY", "test-api-key-12345") VALID_API_KEY = os.getenv("SIMBRELLA_API_KEY", "test-api-key-12345")
SIMBRELLA_BASE_URL = os.getenv("SIMBRELLA_BASE_URL", "http://127.0.0.1:6337") SIMBRELLA_BASE_URL = os.getenv("SIMBRELLA_BASE_URL", "http://127.0.0.1:6337")
SIMBRELLA_ENDPOINT_RAC_CHECKS = os.getenv("SIMBRELLA_ENDPOINT_RAC_CHECKS","api/rac-check") SIMBRELLA_ENDPOINT_RAC_CHECKS = os.getenv("SIMBRELLA_ENDPOINT_RAC_CHECKS","api/rac-check")
EVENTS_SERVICE_BASE_URL = os.getenv("EVENTS_SERVICE_BASE_URL","http://127.0.0.1:6337")
ENDPOINT_DIRECT_LOAN = os.getenv("ENDPOINT_DIRECT_LOAN","/autocall/direct/loan")
ENDPOINT_DIRECT_REPAYMENT = os.getenv("ENDPOINT_DIRECT_REPAYMENT","/autocall/direct/repayment")
RAC_RESULT_accountStatus = os.environ.get("RAC_RESULT_accountStatus", "true") RAC_RESULT_accountStatus = os.environ.get("RAC_RESULT_accountStatus", "true")
RAC_RESULT_bvnValidated = os.environ.get("RAC_RESULT_bvnValidated", "true") RAC_RESULT_bvnValidated = os.environ.get("RAC_RESULT_bvnValidated", "true")
-12
View File
@@ -134,18 +134,6 @@
"RepaymentResponse": { "RepaymentResponse": {
"$ref": "swagger/schemas/RepaymentResponse.json" "$ref": "swagger/schemas/RepaymentResponse.json"
}, },
"CustomerConsentRequest": {
"$ref": "swagger/schemas/CustomerConsentRequest.json"
},
"CustomerConsentResponse": {
"$ref": "swagger/schemas/CustomerConsentResponse.json"
},
"NotificationCallbackRequest": {
"$ref": "swagger/schemas/NotificationCallbackRequest.json"
},
"NotificationCallbackResponse": {
"$ref": "swagger/schemas/NotificationCallbackResponse.json"
},
"ApiResponse": { "ApiResponse": {
"$ref": "swagger/schemas/ApiResponse.json" "$ref": "swagger/schemas/ApiResponse.json"
}, },
-56
View File
@@ -1,56 +0,0 @@
{
"post": {
"tags": [
"CustomerConsent"
],
"summary": "Customer Consent Request",
"description": "Customer Consent Request",
"operationId": "CustomerConsent",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "../schemas/CustomerConsentRequest.json"
}
},
"application/xml": {
"schema": {
"$ref": "../schemas/CustomerConsentRequest.json"
}
},
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "../schemas/CustomerConsentRequest.json"
}
}
}
},
"responses": {
"200": {
"description": "Successful",
"content": {
"application/json": {
"schema": {
"$ref": "../schemas/CustomerConsentResponse.json"
}
},
"application/xml": {
"schema": {
"$ref": "../schemas/CustomerConsentResponse.json"
}
}
}
},
"400": {
"description": "Invalid request"
},
"422": {
"description": "Validation exception"
},
"500": {
"description": "Internal server error"
}
}
}
}
@@ -1,57 +0,0 @@
{
"post": {
"tags": [
"NotificationCallback"
],
"summary": "Loan Information Request ",
"description": "Loan Information Request",
"operationId": "NotificationCallback",
"requestBody": {
"description": "Post JSON to conduct eligibility tests",
"content": {
"application/json": {
"schema": {
"$ref": "../schemas/NotificationCallbackRequest.json"
}
},
"application/xml": {
"schema": {
"$ref": "../schemas/NotificationCallbackRequest.json"
}
},
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "../schemas/NotificationCallbackRequest.json"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"$ref": "../schemas/NotificationCallbackResponse.json"
}
},
"application/xml": {
"schema": {
"$ref": "../schemas/NotificationCallbackResponse.json"
}
}
}
},
"400": {
"description": "Invalid request"
},
"422": {
"description": "Validation exception"
},
"500": {
"description": "Internal server error"
}
}
}
}
@@ -1,37 +0,0 @@
{
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "CustomerConsentRequest"
},
"transactionId": {
"type": "string",
"example": "20171209232177"
},
"customerId": {
"type": "string",
"example": "CN621868"
},
"accountId": {
"type": "string",
"example": "ACN8263457"
},
"requestTime": {
"type": "string",
"format": "date-time",
"example": "2019-10-18 14:26:21.063"
},
"consentType": {
"type": "string",
"example": "Revoke"
},
"channel": {
"type": "string",
"example": "USSD"
}
},
"xml": {
"name": "CustomerConsentRequest"
}
}
@@ -1,16 +0,0 @@
{
"type": "object",
"properties": {
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Request is received"
}
},
"xml": {
"name": "CustomerConsentResponse"
}
}
@@ -3,7 +3,7 @@
"properties": { "properties": {
"transactionId": { "transactionId": {
"type": "string", "type": "string",
"example": "Tr201712RK9232P115" "example": "TRX201712RK9232P115"
}, },
"countryCode": { "countryCode": {
"type": "string", "type": "string",
@@ -11,19 +11,19 @@
}, },
"customerId": { "customerId": {
"type": "string", "type": "string",
"example": "CN621868" "example": "5268548"
},
"msisdn": {
"type": "string",
"example": "8093451342"
},
"channel": {
"type": "string",
"example": "100"
}, },
"accountId": { "accountId": {
"type": "string", "type": "string",
"example": "ACN8263457" "example": "4348094226"
},
"msisdn": {
"type": "string",
"example": "2348093451342"
},
"channel": {
"type": "string",
"example": "USSD"
} }
}, },
"xml": { "xml": {
@@ -3,19 +3,19 @@
"properties": { "properties": {
"customerId": { "customerId": {
"type": "string", "type": "string",
"example": "CN621868" "example": "5268548"
}, },
"transactionId": { "transactionId": {
"type": "string", "type": "string",
"example": "TX12345" "example": "TRX201712RK9232P115"
}, },
"countryCode": { "countryCode": {
"type": "string", "type": "string",
"example": "NG" "example": "NGR"
}, },
"msisdn": { "msisdn": {
"type": "string", "type": "string",
"example": "3451342" "example": "2348093451342"
}, },
"eligibleOffers": { "eligibleOffers": {
"type": "array", "type": "array",
@@ -24,42 +24,42 @@
"properties": { "properties": {
"offerId": { "offerId": {
"type": "string", "type": "string",
"example": "Offer1" "example": "SAL90000204"
}, },
"productId": { "productId": {
"type": "string", "type": "string",
"example": "Product1" "example": "3MPC"
}, },
"minAamount": { "minAamount": {
"type": "number", "type": "number",
"format": "decimal", "format": "decimal",
"example": 100.00 "example": 20000.00
}, },
"maxAamount": { "maxAamount": {
"type": "number", "type": "number",
"format": "decimal", "format": "decimal",
"example": 1000.00 "example": 31257.00
}, },
"tenor": { "tenor": {
"type": "integer", "type": "integer",
"example": 12 "example": 90
} }
} }
}, },
"example": [ "example": [
{ {
"offerId": "Offer1", "max_amount": "31257.00",
"productId": "Product1", "min_amount": 20000.0,
"minAamount": 100.00, "offerId": "SAL90000204",
"maxAamount": 1000.00, "product_id": "3MPC",
"tenor": 12 "tenor": 90
}, },
{ {
"offerId": "Offer2", "max_amount": "20838.00",
"productId": "Product2", "min_amount": 5000.0,
"minAamount": 200.00, "offerId": "SAL30000205",
"maxAamount": 2000.00, "product_id": "AMPC",
"tenor": 24 "tenor": 30
} }
] ]
}, },
+4 -4
View File
@@ -3,15 +3,15 @@
"properties": { "properties": {
"transactionId": { "transactionId": {
"type": "string", "type": "string",
"example": "Tr201712RK9232P115" "example": "TRCVIC73089465966"
}, },
"customerId": { "customerId": {
"type": "string", "type": "string",
"example": "CN621868" "example": "ZX48440946"
}, },
"msisdn": { "msisdn": {
"type": "string", "type": "string",
"example": "3451342" "example": "2348093451342"
}, },
"channel": { "channel": {
"type": "string", "type": "string",
@@ -19,7 +19,7 @@
}, },
"accountId": { "accountId": {
"type": "string", "type": "string",
"example": "ACN8263457" "example": "361005323"
} }
}, },
"xml": { "xml": {
+107 -80
View File
@@ -1,83 +1,110 @@
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"customerId": { "customerId": {
"type": "string", "type": "string",
"example": "CN621868" "example": "ZX48440946"
},
"transactionId": {
"type": "string",
"example": "Tr201712RK9232P115"
},
"loans": {
"type": "array",
"items": {
"type": "object",
"properties": {
"debtId": {
"type": "string",
"example": "123456789"
},
"loanDate": {
"type": "string",
"format": "date-time",
"example": "2019-10-18 14:26:21.063"
},
"dueDate": {
"type": "string",
"format": "date-time",
"example": "2019-11-20 14:26:21.063"
},
"currentLoanAmount": {
"type": "integer",
"example": 8500
},
"initialLoanAmount": {
"type": "integer",
"example": 10000
},
"defaultPenaltyFee": {
"type": "integer",
"example": 0
},
"continuousFee": {
"type": "integer",
"example": 0
},
"productId": {
"type": "string",
"example": "101"
},
"installment": {
"type": "array",
"items": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"format": "float",
"example": 10000.0
},
"repaymentDate": {
"type": "string",
"example": "2025-04-24 10:31:"
}
}
}
}
}
}
},
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Successful"
}
}, },
"xml": { "transactionId": {
"name": "LoanStatusResponse" "type": "string",
"example": "TRCVIC49381378037"
},
"accountId": {
"type": "string",
"example": "361005323"
},
"loans": {
"type": "array",
"items": {
"type": "object",
"properties": {
"debtId": {
"type": "integer",
"example": 80
},
"loanDate": {
"type": "string",
"format": "date-time",
"example": "2025-09-12T11:58:58"
},
"dueDate": {
"type": "string",
"format": "date-time",
"example": "2025-12-11T11:58:58"
},
"currentLoanAmount": {
"type": "number",
"format": "float",
"example": 30000.0
},
"initialLoanAmount": {
"type": "number",
"format": "float",
"example": 30000.0
},
"defaultPenaltyFee": {
"type": "number",
"format": "float",
"example": 0.0
},
"continuousFee": {
"type": "number",
"format": "float",
"example": 0.0
},
"productId": {
"type": "string",
"example": "3MPC"
},
"installmentAmount": {
"type": "number",
"format": "float",
"example": 10900.0
},
"repaymentAmount": {
"type": "number",
"format": "float",
"example": 32700.0
},
"loanRef": {
"type": "string",
"example": "TRCVIC73089465966USSD3MPC"
},
"status": {
"type": "string",
"example": "active"
},
"tenor": {
"type": "integer",
"example": 90
},
"transactionId": {
"type": "string",
"example": "TRCVIC73089465966"
},
"upfrontFee": {
"type": "number",
"format": "float",
"example": 622.5
}
}
}
},
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Successful"
},
"totalDebtAmount": {
"type": "number",
"format": "float",
"example": 30000.0
} }
} },
"xml": {
"name": "LoanStatusResponse"
}
}
@@ -1,50 +0,0 @@
{
"type": "object",
"properties": {
"fbnTransactionId": {
"type": "string",
"example": "123456789"
},
"transactionId": {
"type": "string",
"example": "123456789"
},
"customerId": {
"type": "string",
"example": "CN621868"
},
"accountId": {
"type": "string",
"example": "ACN8263457"
},
"debtId": {
"type": "string",
"example": "987654321"
},
"transactionType": {
"type": "string",
"example": "Disbursement"
},
"amountProvided": {
"type": "number",
"format": "float",
"example": 1000.00
},
"amountCollected": {
"type": "number",
"format": "float",
"example": 0.00
},
"responseCode": {
"type": "string",
"example": "00"
},
"responseDescription": {
"type": "string",
"example": "Successful"
}
},
"xml": {
"name": "NotificationCallbackRequest"
}
}
@@ -1,16 +0,0 @@
{
"type": "object",
"properties": {
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Successful"
}
},
"xml": {
"name": "NotificationCallbackResponse"
}
}
+9 -9
View File
@@ -3,40 +3,40 @@
"properties": { "properties": {
"requestId": { "requestId": {
"type": "string", "type": "string",
"example": "202111170001371256908" "example": "RQID11170001371256908"
}, },
"transactionId": { "transactionId": {
"type": "string", "type": "string",
"example": "Tr201712RK9232P115" "example": "TRCVIC73089465966"
}, },
"customerId": { "customerId": {
"type": "string", "type": "string",
"example": "CN621868" "example": "ZX48440946"
}, },
"accountId": { "accountId": {
"type": "string", "type": "string",
"example": "ACN8263457" "example": "361005323"
}, },
"msisdn": { "msisdn": {
"type": "string", "type": "string",
"example": "3451342" "example": "2348093451342"
}, },
"requestedAmount": { "requestedAmount": {
"type": "number", "type": "number",
"format": "decimal", "format": "decimal",
"example": 900 "example": 20000
}, },
"collectionType": { "collectionType": {
"type": "integer", "type": "integer",
"example": 1 "example": 0
}, },
"offerId": { "offerId": {
"type": "integer", "type": "integer",
"example": 1127 "example": "SAL900004543304"
}, },
"channel": { "channel": {
"type": "string", "type": "string",
"example": "100" "example": "USSD"
} }
}, },
"xml": { "xml": {
+37 -37
View File
@@ -1,40 +1,40 @@
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"requestId": { "requestId": {
"type": "string", "type": "string",
"example": "202111170001371256908" "example": "81757678335583"
},
"transactionId": {
"type": "string",
"example": "Tr201712RK9232P115"
},
"loanRef": {
"type": "string",
"example": "1620029887USSDAMPC"
},
"customerId": {
"type": "string",
"example": "CN621868"
},
"accountId": {
"type": "string",
"example": "ACN8263457"
},
"msisdn": {
"type": "string",
"example": "3451342"
},
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Successful"
}
}, },
"xml": { "transactionId": {
"name": "ProvideLoanResponse" "type": "string",
"example": "TRCVIC73089465966"
},
"loanRef": {
"type": "string",
"example": "TRCVIC73089465966USSD3MPC"
},
"customerId": {
"type": "string",
"example": "ZX48440946"
},
"accountId": {
"type": "string",
"example": "361005323"
},
"msisdn": {
"type": "string",
"example": "98016510058"
},
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Successful"
} }
} },
"xml": {
"name": "ProvideLoanResponse"
}
}
+7 -7
View File
@@ -3,27 +3,27 @@
"properties": { "properties": {
"msisdn": { "msisdn": {
"type": "string", "type": "string",
"example": "3451342" "example": "2348093451342"
}, },
"debtId": { "debtId": {
"type": "string", "type": "number",
"example": "10" "example": 80
}, },
"transactionId": { "transactionId": {
"type": "string", "type": "string",
"example": "20171209232115" "example": "TRCVIC73089465966"
}, },
"customerId": { "customerId": {
"type": "string", "type": "string",
"example": "CID0000025585" "example": "ZX48440946"
}, },
"loanRef": { "loanRef": {
"type": "string", "type": "string",
"example": "Trx5847365252USSD3MPC" "example": "TRCVIC73089465966USSD3MPC"
}, },
"accountId": { "accountId": {
"type": "string", "type": "string",
"example": "ACN8263457" "example": "361005323"
} }
}, },
"xml": { "xml": {
+45 -25
View File
@@ -1,28 +1,48 @@
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"customerId": { "Id": {
"type": "string", "type": "integer",
"example": "CN621868" "example": 195
},
"productId": {
"type": "string",
"example": "101"
},
"debtId": {
"type": "string",
"example": "273194670"
},
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Successful"
}
}, },
"xml": { "customerId": {
"name": "RepaymentResponse" "type": "string",
"example": "ZX48440946"
},
"debtId": {
"type": "string",
"example": "80"
},
"initiated_by": {
"type": "string",
"example": "USER_INITIATED"
},
"loanRef": {
"type": "string",
"example": "TRCVIC73089465966USSD3MPC"
},
"productId": {
"type": "string",
"example": "3MPC"
},
"repayment_id": {
"type": "integer",
"example": 195
},
"transactionId": {
"type": "string",
"example": "TRCVIC73089465966"
},
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Successful"
} }
} },
"xml": {
"name": "RepaymentResponse"
}
}
+15 -15
View File
@@ -3,40 +3,40 @@
"properties": { "properties": {
"requestId": { "requestId": {
"type": "string", "type": "string",
"example": "202111170001371256908" "example": "RQID11170001371256908"
}, },
"transactionId": { "transactionId": {
"type": "string", "type": "string",
"example": "1231231321232" "example": "TRX1231231321232"
}, },
"customerId": { "customerId": {
"type": "string", "type": "string",
"example": "CN621868" "example": "CN6215268548868"
},
"msisdn": {
"type": "string",
"example": "123456789"
},
"requestedAmount": {
"type": "number",
"format": "double",
"example": 10000.55
}, },
"accountId": { "accountId": {
"type": "string", "type": "string",
"example": "ACN8263457" "example": "4348094226"
}, },
"msisdn": {
"type": "string",
"example": "2348093451342"
},
"requestedAmount": {
"type": "number",
"example": 20000
},
"productId": { "productId": {
"type": "string", "type": "string",
"example": "3MPC" "example": "3MPC"
}, },
"offerId": { "offerId": {
"type": "string", "type": "string",
"example": "101" "example": "SAL900004543304"
}, },
"channel": { "channel": {
"type": "string", "type": "string",
"example": "" "example": "USSD"
} }
}, },
"xml": { "xml": {
+121 -113
View File
@@ -1,121 +1,129 @@
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"requestId": { "requestId": {
"type": "string",
"example": "81757678225025"
},
"transactionId": {
"type": "string",
"example": "TRCVIC73089465966"
},
"customerId": {
"type": "string",
"example": "ZX48440946"
},
"accountId": {
"type": "string",
"example": "361005323"
},
"loan": {
"type": "array",
"items": {
"type": "object",
"properties": {
"offerId": {
"type": "string", "type": "string",
"example": "202111170001371256908" "example": "SAL90000204"
}, },
"transactionId": { "productId": {
"type": "string", "type": "string",
"example": "1231231321232" "example": "3MPC"
}, },
"customerId": { "amount": {
"type": "string", "type": "number",
"example": "1256907" "format": "float",
}, "example": 30000.0
"accountId": { },
"type": "string", "upfrontPayment": {
"example": "5948306019" "type": "number",
}, "format": "float",
"loan": { "example": 622.5
},
"interestRate": {
"type": "number",
"format": "float",
"example": 3.0
},
"interestFee": {
"type": "number",
"format": "float",
"example": 2700.0
},
"managementRate": {
"type": "number",
"format": "float",
"example": 1.0
},
"managementFee": {
"type": "number",
"format": "float",
"example": 300.0
},
"insuranceRate": {
"type": "number",
"format": "float",
"example": 1.0
},
"insuranceFee": {
"type": "number",
"format": "float",
"example": 300.0
},
"VATRate": {
"type": "number",
"format": "float",
"example": 7.5
},
"VATAmount": {
"type": "number",
"format": "float",
"example": 22.5
},
"recommendedRepaymentDates": {
"type": "array", "type": "array",
"items": { "items": {
"type": "object", "type": "string"
"properties": { },
"offerId": { "example": [
"type": "string", "2025-10-12",
"example": "14451" "2025-11-12",
}, "2025-12-12"
"productId": { ]
"type": "string", },
"example": "3MPC" "installmentAmount": {
}, "type": "number",
"amount": { "format": "float",
"type": "number", "example": 10900.0
"format": "float", },
"example": 10000.0 "repaymentAmount": {
}, "type": "number",
"dueDate": { "format": "float",
"type": "string", "example": 32700.0
"example": "2025-04-24 10:31:" },
}, "totalRepaymentAmount": {
"upfrontPayment": { "type": "number",
"type": "number", "format": "float",
"format": "float", "example": 33322.5
"example": 1000.0 }
},
"interestRate": {
"type": "number",
"format": "float",
"example": 3.0
},
"interestFee": {
"type": "number",
"format": "float",
"example": 3000.00
},
"ManagementRate": {
"type": "number",
"format": "float",
"example": 1.0
},
"ManagementFee": {
"type": "number",
"format": "float",
"example": 1.0
},
"InsuranceRate": {
"type": "number",
"format": "float",
"example": 1.0
},
"InsuranceFee": {
"type": "number",
"format": "float",
"example": 100.0
},
"VATRate": {
"type": "number",
"format": "float",
"example": 7.5
},
"VATamount": {
"type": "number",
"format": "float",
"example": 100.0
},
"installmentRepaymentDates": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"2022-11-30"
]
},
"installmentAmount": {
"type": "number",
"format": "float",
"example": 11000.0
},
"totalRepaymentAmount": {
"type": "number",
"format": "float",
"example": 11000.0
}
}
}
},
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Successful"
} }
}
}, },
"xml": { "outstandingDebtAmount": {
"name": "SelectOffersResponse" "type": "number",
"format": "float",
"example": 0
},
"resultCode": {
"type": "string",
"example": "00"
},
"resultDescription": {
"type": "string",
"example": "Successful"
} }
} },
"xml": {
"name": "SelectOffersResponse"
}
}