diff --git a/cuenca_validations/types/__init__.py b/cuenca_validations/types/__init__.py index 07f57892..f1974e65 100644 --- a/cuenca_validations/types/__init__.py +++ b/cuenca_validations/types/__init__.py @@ -8,6 +8,7 @@ 'BatchFileMetadata', 'Beneficiary', 'BillPaymentQuery', + 'BillPaymentRequest', 'CardErrorType', 'CardFundingType', 'CardholderVerificationMethod', @@ -58,6 +59,9 @@ 'SavingRequest', 'SavingUpdateRequest', 'ServiceProviderCategory', + 'ServiceProviderField', + 'ServiceProviderFieldType', + 'ServiceProviderQuery', 'SessionQuery', 'SessionRequest', 'SessionType', @@ -121,6 +125,7 @@ PosCapability, SavingCategory, ServiceProviderCategory, + ServiceProviderFieldType, SessionType, State, TrackDataMethod, @@ -133,7 +138,7 @@ WalletTransactionType, WebhookEvent, ) -from .files import BatchFileMetadata +from .files import BatchFileMetadata, ServiceProviderField from .general import ( JSONEncoder, SantizedDict, @@ -163,6 +168,7 @@ IdentityQuery, PageSize, QueryParams, + ServiceProviderQuery, SessionQuery, StatementQuery, TransactionQuery, @@ -173,6 +179,7 @@ ) from .requests import ( ApiKeyUpdateRequest, + BillPaymentRequest, CurpValidationRequest, EndpointRequest, EndpointUpdateRequest, diff --git a/cuenca_validations/types/enums.py b/cuenca_validations/types/enums.py index 8ed50f12..ccafccc5 100644 --- a/cuenca_validations/types/enums.py +++ b/cuenca_validations/types/enums.py @@ -612,3 +612,10 @@ class PlatformType(str, Enum): bridge = 'bridge' connect = 'connect' spei = 'spei' + + +class ServiceProviderFieldType(str, Enum): + barcode = 'barcode' + account_number = 'account_number' + credit_card_number = 'credit_card_number' + phone_number = 'phone_number' diff --git a/cuenca_validations/types/files.py b/cuenca_validations/types/files.py index fb2f3524..05d9a81c 100644 --- a/cuenca_validations/types/files.py +++ b/cuenca_validations/types/files.py @@ -1,8 +1,8 @@ -from typing import Optional +from typing import List, Optional from pydantic import BaseModel, HttpUrl -from .enums import KYCFileType +from .enums import KYCFileType, ServiceProviderFieldType class BatchFileMetadata(BaseModel): @@ -10,3 +10,11 @@ class BatchFileMetadata(BaseModel): is_back: bool type: KYCFileType url: HttpUrl + + +class ServiceProviderField(BaseModel): + is_active: bool + requires_accountholder_name: bool + mask: str + topup_amounts: List[int] + type: ServiceProviderFieldType diff --git a/cuenca_validations/types/queries.py b/cuenca_validations/types/queries.py index c01dc717..73b46df2 100644 --- a/cuenca_validations/types/queries.py +++ b/cuenca_validations/types/queries.py @@ -177,3 +177,7 @@ class SessionQuery(QueryParams): class FileQuery(QueryParams): type: Optional[KYCFileType] = None + + +class ServiceProviderQuery(QueryParams): + categories: Optional[str] = None diff --git a/cuenca_validations/types/requests.py b/cuenca_validations/types/requests.py index 0ad31cf6..8fd0dacf 100644 --- a/cuenca_validations/types/requests.py +++ b/cuenca_validations/types/requests.py @@ -35,6 +35,7 @@ PlatformType, PosCapability, SavingCategory, + ServiceProviderFieldType, SessionType, State, TrackDataMethod, @@ -647,3 +648,12 @@ class WebhookRequest(BaseModel): event: WebhookEventType object_type: WebhookObject data: DictStrAny + + +class BillPaymentRequest(BaseRequest): + amount: StrictPositiveInt + field_type: ServiceProviderFieldType + account_number: str + provider_id: str + accountholder_name: Optional[str] + user_id: Optional[str] diff --git a/cuenca_validations/version.py b/cuenca_validations/version.py index f323a57b..ae4865cf 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '0.11.0' +__version__ = '0.11.1' diff --git a/tests/test_types.py b/tests/test_types.py index 8c43bee2..ada55712 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -25,6 +25,7 @@ ) from cuenca_validations.types.requests import ( ApiKeyUpdateRequest, + BillPaymentRequest, ChargeRequest, CurpValidationRequest, EndpointRequest, @@ -514,3 +515,19 @@ def test_identity_update_request(): assert IdentityUpdateRequest( user_id=user_id, rfc_file=rfc_file, extension=extension ) + + +def test_bill_payment_request(): + amount = 100 + field_type = 'barcode' + account_number = '1234567890' + provider_id = 'PR01' + accountholder_name = 'Frida Khalo' + + assert BillPaymentRequest( + amount=amount, + field_type=field_type, + account_number=account_number, + provider_id=provider_id, + accountholder_name=accountholder_name, + )