29 lines
2.3 KiB
Python
29 lines
2.3 KiB
Python
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") |