Files
2025-03-26 15:15:16 +01:00

42 lines
3.4 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):
offerId = fields.Str(required=True, description="Unique identifier of the offer")
productId = fields.Str(required=True, description="Product identifier")
amount = fields.Float(required=True, description="Amount of loan customer is eligible for")
upfrontPayment = fields.Float(required=True, description="Amount to be deducted upfront")
interestRate = fields.Float(required=True, description="Percentage (%) of interest rate")
Interest = fields.Float(required=True, description="Amount of interest")
ManagementRate = fields.Float(required=True, description="Percentage (%) of management fee")
ManagementFee = fields.Float(required=True, description="Amount of management fee")
InsuranceRate = fields.Float(required=True, description="Percentage (%) of insurance")
InsuranceFee = fields.Float(required=True, description="Amount of insurance")
VATRate = fields.Float(required=True, description="Percentage (%) of VAT")
VATamount = fields.Float(required=True, description="Amount of VAT")
recommendedRepaymentDates = fields.List(fields.Str(), required=True, description="Array of recommended payment dates for all installments in yyyy-mm-dd format")
installmentAmount = fields.Float(required=True, description="Amount to be paid each month (upfrontPayment not included)")
totalRepaymentAmount = fields.Float(required=True, description="Total amount to be paid by customer. All installment amounts + upfront payment")
# SelectOffer Request Schema
class SelectOfferSchema(Schema):
requestId = fields.Str(required=True, description="Unique identifier of request")
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")
accountId = fields.Str(required=True, description="Specific identifier of a user's account")
msisdn = fields.Str(required=True, description="User's mobile number in an international format")
requestedAmount = fields.Float(required=True, description="Amount of loan requested by user")
productId = fields.Str(required=True, description="Product ID")
channel = fields.Str(required=True, description="Channel of incoming request",
validate=validate.OneOf(["USSD", "FistMobile LitApp", "Web"]))
# SelectOffer Response Schema
class SelectOfferResponseSchema(Schema):
requestId = fields.Str(required=True, description="Unique identifier of request")
transactionId = fields.Str(required=True, description="Unique identifier of transaction. This transaction Id must be consistent across all platform")
customerId = fields.Str(required=True, description="Unique identifier of a customer")
accountId = fields.Str(required=True, description="Specific identifier of a user's account")
outstandingDebtAmount = fields.Float(required=False, description="Outstanding debt amount if any")
loan = fields.List(fields.Nested(LoanItemSchema), required=True, description="Array of loan offers")
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")