Major update

This commit is contained in:
Azeez Muibi
2025-03-27 08:21:20 +01:00
parent 1a36416094
commit ba4d878daf
24 changed files with 776 additions and 254 deletions
+29
View File
@@ -0,0 +1,29 @@
from marshmallow import Schema, fields, validate
# Schema for the loan item in the response
class LoanItemSchema(Schema):
debtId = fields.Str(required=True, description="Unique identifier of a debt of a user")
loanDate = fields.Str(required=True, description="Date and time of provided loan")
dueDate = fields.Str(required=True, description="Due date of provided loan")
currentLoanAmount = fields.Float(required=True, description="Outstanding debt amount of the user")
initialLoanAmount = fields.Float(required=True, description="Initial loan amount")
defaultPenaltyFee = fields.Float(required=True, description="Penalty fee amount")
continuousFee = fields.Float(required=True, description="Interest fee charged continuously. First occurs when payment is delayed")
productId = fields.Str(required=True, description="Identifier of a provided product to a user")
# LoanStatus Request Schema
class LoanStatusSchema(Schema):
transactionId = fields.Str(required=True, description="Unique identifier of transaction. This transaction Id must be consistent across all platforms")
customerId = fields.Str(required=True, description="Unique identifier of a customer")
msisdn = fields.Str(required=False, description="User's mobile number in an international format")
channel = fields.Str(required=True, description="Request channel: USSD, MobileApp, or Web",
validate=validate.OneOf(["USSD", "MobileApp", "Web", "100", "101", "102", "103"])) # Added numeric channel codes
# LoanStatus Response Schema
class LoanStatusResponseSchema(Schema):
customerId = fields.Str(required=True, description="Unique identifier of a user")
transactionId = fields.Str(required=True, description="Unique identifier of transaction. This transaction Id must be consistent across all platforms")
loans = fields.List(fields.Nested(LoanItemSchema), required=True, description="Array of loan entities. If customer doesn't have a loan, this array will be empty")
totalDebtAmount = fields.Float(required=False, description="Sum amount of all existing debts of a user")
resultCode = fields.Str(required=True, description="Result code of executed transaction, e.g. (00 Success etc.) see result codes table")
resultDescription = fields.Str(required=True, description="Description of provided result code")