bluprints, schemas,helpers and routes

This commit is contained in:
VivianDee
2025-03-20 17:46:34 +01:00
commit aafa9992e3
55 changed files with 1847 additions and 0 deletions
View File
+6
View File
@@ -0,0 +1,6 @@
from marshmallow import Schema, fields
from .sms import SMSSchema
# Bulk SMS Schema
class BulkSMSSchema(Schema):
requests = fields.List(fields.Nested(SMSSchema), required=True)
+16
View File
@@ -0,0 +1,16 @@
from marshmallow import Schema, fields
# Collect Loan Schema
class CollectLoanSchema(Schema):
transactionId = fields.Str(required=True)
fbnTransactionId = fields.Str(required=True)
debtId = fields.Str(required=True)
customerId = fields.Str(required=True)
accountId = fields.Str(required=True)
productId = fields.Str(required=True)
collectAmount = fields.Float(required=True)
penalCharge = fields.Float(required=False) # Optional
collectionMethod = fields.Int(required=True)
lienAmount = fields.Float(required=True)
countryId = fields.Str(required=True)
comment = fields.Str(required=False) # Optional
+11
View File
@@ -0,0 +1,11 @@
from marshmallow import Schema, fields
# Customer Consent Schema
class CustomerConsentSchema(Schema):
type = fields.Str(data_key="$type", required=True)
transactionId = fields.Str(required=True)
customerId = fields.Str(required=True)
accountId = fields.Str(required=True)
requestTime = fields.DateTime(required=True, format="%Y-%m-%d %H:%M:%S.%f")
consentType = fields.Str(required=True)
channel = fields.Str(required=True)
+17
View File
@@ -0,0 +1,17 @@
from marshmallow import Schema, fields
# Disbursement Schema
class DisbursementSchema(Schema):
requestId = fields.Str(required=True, data_key="requestId")
debtId = fields.Str(required=True, data_key="debtId")
transactionId = fields.Str(required=True, data_key="transactionId")
customerId = fields.Str(required=True, data_key="customerId")
accountId = fields.Str(required=True, data_key="accountId")
productId = fields.Str(required=True, data_key="productId")
provideAmount = fields.Float(required=True, data_key="provideAmount")
collectAmountInterest = fields.Float(required=False, data_key="collectAmountInterest") # Optional
collectAmountMgtFee = fields.Float(required=True, data_key="collectAmountMgtFee")
collectAmountInsurance = fields.Float(required=True, data_key="collectAmountInsurance")
collectAmountVAT = fields.Float(required=True, data_key="collectAmountVAT")
countryId = fields.Str(required=True, data_key="countryId")
comment = fields.Str(required=False, data_key="comment") # Optional
+11
View File
@@ -0,0 +1,11 @@
from marshmallow import Schema, fields
class EligibilityCheckSchema(Schema):
type = fields.Str(data_key="$type", required=True, description="Request type")
transactionId = fields.Str(data_key="transactionId", required=True, description="Transaction ID")
countryCode = fields.Str(data_key="countryCode", required=True, description="Country code (ISO)")
customerId = fields.Str(data_key="customerId", required=True, description="Customer ID")
accountId = fields.Str(data_key="accountId", required=True, description="Account ID")
msisdn = fields.Str(required=True, description="Mobile number")
lienAmount = fields.Float(required=True, description="Amount for lien")
channel = fields.Str(required=True, description="Transaction channel (USSD, Mobile, Web)")
+8
View File
@@ -0,0 +1,8 @@
from marshmallow import Schema, fields
# Lien Check Schema
class LienCheckSchema(Schema):
transactionId = fields.Str(required=True, metadata={"description": "Unique Identifier in Simbrella system"})
customerId = fields.Str(required=True, metadata={"description": "Unique identifier of customer"})
accountId = fields.Str(required=True, metadata={"description": "Unique identifier of account"})
countryId = fields.Str(required=True, metadata={"description": 'Set to static value "01"'})
+5
View File
@@ -0,0 +1,5 @@
from marshmallow import Schema, fields
# Loan Information Schema
class LoanInformationSchema(Schema):
loan_id = fields.Str(required=True)
+12
View File
@@ -0,0 +1,12 @@
from marshmallow import Schema, fields
# New Transaction Check Schema
class NewTransactionCheckSchema(Schema):
transactionId = fields.Str(required=True)
debtId = fields.Str(required=True)
transactionType = fields.Str(required=True, metadata={
"allowed_values": ["Disbursement", "Collection", "PenalCharge"]
})
fbnTransactionId = fields.Str(required=True)
origTransactionId = fields.Str(required=True)
customerId = fields.Str(required=True)
+14
View File
@@ -0,0 +1,14 @@
from marshmallow import Schema, fields
# Notification Callback Schema
class NotificationCallbackSchema(Schema):
fbnTransactionId = fields.Str(required=True)
transactionId = fields.Str(required=True)
customerId = fields.Str(required=True)
accountId = fields.Str(required=True)
debtId = fields.Str(required=True)
transactionType = fields.Str(required=True)
amountProvided = fields.Float(required=True)
amountCollected = fields.Float(required=True)
responseCode = fields.Str(required=True)
responseDescription = fields.Str(required=True)
+14
View File
@@ -0,0 +1,14 @@
from marshmallow import Schema, fields
# Penal Charge Schema
class PenalChargeSchema(Schema):
transactionId = fields.Str(required=True, metadata={"description": "Unique identifier of transaction in Simbrella system"})
fbnTransactionId = fields.Str(required=True, metadata={"description": "Unique id of the transaction received from FBN in Eligibility or Provision requests"})
debtId = fields.Str(required=True, metadata={"description": "Unique identifier of providing loan in Simbrella system"})
customerId = fields.Str(required=True, metadata={"description": "Unique identifier of a user"})
accountId = fields.Str(required=True, metadata={"description": "Specific identifier of a users account"})
penalCharge = fields.Decimal(required=True, metadata={"description": "Penalty amount that needs to be collected from users account"})
lienAmount = fields.Decimal(required=True, metadata={"description": "Aggregated (summed up) lien amount"})
countryId = fields.Str(required=True, metadata={"description": 'Set to static value "01"'})
comment = fields.Str(required=False, metadata={"description": "Any additional comment for provided loan operation"})
+16
View File
@@ -0,0 +1,16 @@
from marshmallow import Schema, fields
# Provide Loan Schema
class ProvideLoanSchema(Schema):
type = fields.Str(required=True, data_key="$type")
request_id = fields.Str(required=True, data_key="requestId")
transaction_id = fields.Str(required=True, data_key="transactionId")
customer_id = fields.Str(required=True, data_key="customerId")
account_id = fields.Str(required=True, data_key="accountId")
msisdn = fields.Str(required=False, data_key="msisdn")
product_id = fields.Str(required=True, data_key="productId")
lien_amount = fields.Float(required=True, data_key="lienAmount")
requested_amount = fields.Float(required=True, data_key="requestedAmount")
collection_type = fields.Int(required=True, data_key="collectionType")
loan_type = fields.Int(required=True, data_key="loanType")
channel = fields.Str(required=True, data_key="channel")
+23
View File
@@ -0,0 +1,23 @@
from marshmallow import Schema, fields
class RACItemSchema(Schema):
salaryAccount = fields.Bool(required=True)
bvn = fields.Str(required=True)
crc = fields.Bool(required=True)
crms = fields.Bool(required=True)
accountStatus = fields.Str(required=True)
lien = fields.Bool(required=True)
noBouncedCheck = fields.Bool(required=True)
existingLoan = fields.Bool(required=True)
whitelist = fields.Bool(required=True)
noPastDueSalaryLoan = fields.Bool(required=True)
noPastDueOtherLoans = fields.Bool(required=True)
# RAC Check Schema
class RACCheckSchema(Schema):
transactionId = fields.Str(required=True)
fbnTransactionId = fields.Str(required=True)
customerId = fields.Str(required=True)
accountId = fields.Str(required=True)
RAC_Array = fields.List(fields.Nested(RACItemSchema), required=True)
+11
View File
@@ -0,0 +1,11 @@
from marshmallow import Schema, fields
# Repayment Schema
class RepaymentSchema(Schema):
type = fields.Str(data_key="$type", required=True)
msisdn = fields.Str(required=False) #optional
debtId = fields.Str(required=True)
productId = fields.Str(required=True)
transactionId = fields.Str(required=True)
customerId = fields.Str(required=True)
channel = fields.Str(required=True)
+13
View File
@@ -0,0 +1,13 @@
from marshmallow import Schema, fields
# Revoke Enable Consent Schema
class RevokeEnableConsentSchema(Schema):
transactionId = fields.Str(required=True, metadata={"description": "Unique identifier of transaction in Simbrella system"})
fbnTransactionId = fields.Str(required=True, metadata={"description": "Unique id of the transaction received from FBN in CustomerConsentRequest"})
customerId = fields.Str(required=True, metadata={"description": "Unique identifier of a user"})
accountId = fields.Str(required=True, metadata={"description": "Specific identifier of a users account"})
processTime = fields.DateTime(required=True, metadata={"description": "Date and time when consent request was processed"})
consentType = fields.Str(required=True, metadata={"description": '“Enable” or “Revoke”'})
countryId = fields.Str(required=True, metadata={"description": 'Set to static value "01"'})
comment = fields.Str(required=False, metadata={"description": "Any additional comment for consent operation"})
+13
View File
@@ -0,0 +1,13 @@
from marshmallow import Schema, fields
# Select Offer Schema
class SelectOfferSchema(Schema):
requestId = fields.Str(required=True, description="Unique request identifier")
transactionId = fields.Str(required=True, description="Transaction ID")
customerId = fields.Str(required=True, description="Customer ID")
accountId = fields.Str(required=True, description="Account ID")
msisdn = fields.Str(required=True, description="Mobile number")
requestedAmount = fields.Float(required=True, description="Amount requested")
productId = fields.Str(required=True, description="Product ID")
channel = fields.Str(required=True, description="Transaction channel (e.g., USSD)")
+7
View File
@@ -0,0 +1,7 @@
from marshmallow import Schema, fields
# SMS Schema
class SMSSchema(Schema):
text = fields.Str(required=True)
dest = fields.Str(required=True)
unicode = fields.Bool(required=True)
+8
View File
@@ -0,0 +1,8 @@
from marshmallow import Schema, fields
# Token Validation Schema
class TokenValidationSchema(Schema):
RequestId = fields.Str(required=True)
UserId = fields.Str(required=True)
CountryId = fields.Str(required=True)
TokenCode = fields.Str(required=True)
+12
View File
@@ -0,0 +1,12 @@
from marshmallow import Schema, fields
# Transaction Verify Schema
class TransactionVerifySchema(Schema):
counter = fields.Str(required=True)
TransactionId = fields.Str(required=True)
requestID = fields.Str(required=True)
customerId = fields.Str(required=True)
accountId = fields.Str(required=True)
countryId = fields.Str(required=True) # Static value “01”
transactionType = fields.Str(required=True)