Files
Azeez Muibi ba4d878daf Major update
2025-03-27 08:21:20 +01:00

29 lines
2.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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")