cuenca 2.1.3.dev2__py3-none-any.whl → 2.1.4.dev1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
cuenca/__init__.py CHANGED
@@ -20,6 +20,7 @@ __all__ = [
20
20
  'Identity',
21
21
  'IdentityEvent',
22
22
  'KYCValidation',
23
+ 'KYCVerification',
23
24
  'LimitedWallet',
24
25
  'LoginToken',
25
26
  'Otp',
@@ -42,6 +43,8 @@ __all__ = [
42
43
  'configure',
43
44
  'get_balance',
44
45
  'JwtToken',
46
+ 'TermsOfService',
47
+ 'UserTOSAgreement',
45
48
  ]
46
49
 
47
50
  from . import http
@@ -67,6 +70,7 @@ from .resources import (
67
70
  IdentityEvent,
68
71
  JwtToken,
69
72
  KYCValidation,
73
+ KYCVerification,
70
74
  LimitedWallet,
71
75
  LoginToken,
72
76
  Otp,
@@ -76,12 +80,14 @@ from .resources import (
76
80
  ServiceProvider,
77
81
  Session,
78
82
  Statement,
83
+ TermsOfService,
79
84
  Transfer,
80
85
  User,
81
86
  UserCredential,
82
87
  UserEvent,
83
88
  UserListsValidation,
84
89
  UserLogin,
90
+ UserTOSAgreement,
85
91
  Verification,
86
92
  WalletTransaction,
87
93
  Webhook,
@@ -19,6 +19,7 @@ __all__ = [
19
19
  'Identity',
20
20
  'IdentityEvent',
21
21
  'KYCValidation',
22
+ 'KYCVerification',
22
23
  'LimitedWallet',
23
24
  'LoginToken',
24
25
  'Otp',
@@ -38,6 +39,8 @@ __all__ = [
38
39
  'Webhook',
39
40
  'WhatsappTransfer',
40
41
  'JwtToken',
42
+ 'TermsOfService',
43
+ 'UserTOSAgreement',
41
44
  ]
42
45
 
43
46
  from .accounts import Account
@@ -61,6 +64,7 @@ from .identities import Identity
61
64
  from .identity_events import IdentityEvent
62
65
  from .jwt_tokens import JwtToken
63
66
  from .kyc_validations import KYCValidation
67
+ from .kyc_verifications import KYCVerification
64
68
  from .limited_wallets import LimitedWallet
65
69
  from .login_tokens import LoginToken
66
70
  from .otps import Otp
@@ -71,12 +75,14 @@ from .savings import Saving
71
75
  from .service_providers import ServiceProvider
72
76
  from .sessions import Session
73
77
  from .statements import Statement
78
+ from .terms_of_service import TermsOfService
74
79
  from .transfers import Transfer
75
80
  from .user_credentials import UserCredential
76
81
  from .user_events import UserEvent
77
82
  from .user_lists_validation import UserListsValidation
78
83
  from .user_logins import UserLogin
79
84
  from .users import User
85
+ from .users_tos_agreements import UserTOSAgreement
80
86
  from .verifications import Verification
81
87
  from .wallet_transactions import WalletTransaction
82
88
  from .webhooks import Webhook
@@ -104,6 +110,7 @@ resource_classes = [
104
110
  Identity,
105
111
  IdentityEvent,
106
112
  KYCValidation,
113
+ KYCVerification,
107
114
  LimitedWallet,
108
115
  LoginToken,
109
116
  Questionnaires,
@@ -123,6 +130,8 @@ resource_classes = [
123
130
  Webhook,
124
131
  Platform,
125
132
  JwtToken,
133
+ TermsOfService,
134
+ UserTOSAgreement,
126
135
  ]
127
136
  for resource_cls in resource_classes:
128
137
  RESOURCES[resource_cls._resource] = resource_cls # type: ignore
@@ -1,6 +1,6 @@
1
1
  from typing import ClassVar, Optional
2
2
 
3
- from cuenca_validations.types import KYCValidationRequest, KYCValidationSource
3
+ from cuenca_validations.types import KYCFile, KYCValidationRequest
4
4
  from pydantic import ConfigDict
5
5
 
6
6
  from ..http import Session, session as global_session
@@ -31,13 +31,13 @@ class KYCValidation(Creatable, Retrievable, Queryable):
31
31
  def create(
32
32
  cls,
33
33
  user_id: str,
34
- source_type: KYCValidationSource,
35
34
  force: bool = False,
35
+ documents: list[KYCFile] = [],
36
36
  session: Session = global_session,
37
37
  ) -> 'KYCValidation':
38
38
  req = KYCValidationRequest(
39
39
  user_id=user_id,
40
40
  force=force,
41
- source_type=source_type,
41
+ documents=documents,
42
42
  )
43
43
  return cls._create(**req.model_dump(), session=session)
@@ -0,0 +1,53 @@
1
+ import datetime as dt
2
+ from typing import ClassVar, Optional
3
+
4
+ from cuenca_validations.types import (
5
+ Address,
6
+ Curp,
7
+ KYCVerificationUpdateRequest,
8
+ Rfc,
9
+ )
10
+ from pydantic import ConfigDict
11
+
12
+ from ..http import Session, session as global_session
13
+ from .base import Creatable, Retrievable, Updateable
14
+
15
+
16
+ class KYCVerification(Creatable, Retrievable, Updateable):
17
+ _resource: ClassVar = 'kyc_verifications'
18
+
19
+ platform_id: str
20
+ created_at: dt.datetime
21
+ deactivated_at: Optional[dt.datetime] = None
22
+ verification_id: Optional[str] = None
23
+ curp: Optional[Curp] = None
24
+ rfc: Optional[Rfc] = None
25
+ address: Optional[Address] = None
26
+
27
+ model_config = ConfigDict(
28
+ json_schema_extra={
29
+ 'example': {
30
+ 'id': 'KVNEUInh69SuKXXmK95sROwQ',
31
+ 'updated_at': '2020-05-24T14:15:22Z',
32
+ 'platform_id': 'PT8UEv02zBTcymd4Kd3MO6pg',
33
+ 'created_at': '2020-05-24T14:15:22Z',
34
+ 'verification_id': 'string',
35
+ 'curp': 'GOCG650418HVZNML08',
36
+ 'rfc': 'GOCG650418123',
37
+ 'address': Address.schema().get('example'),
38
+ }
39
+ }
40
+ )
41
+
42
+ @classmethod
43
+ def create(cls, session: Session = global_session) -> 'KYCVerification':
44
+ return cls._create(session=session)
45
+
46
+ @classmethod
47
+ def update(
48
+ cls,
49
+ kyc_id: str,
50
+ curp: Optional[Curp] = None,
51
+ ) -> 'KYCVerification':
52
+ req = KYCVerificationUpdateRequest(curp=curp)
53
+ return cls._update(id=kyc_id, **req.model_dump())
@@ -0,0 +1,18 @@
1
+ import datetime as dt
2
+ from typing import ClassVar
3
+
4
+ from cuenca_validations.types import TermsOfService as TermsOfServiceEnum
5
+ from cuenca_validations.types.general import SerializableHttpUrl
6
+
7
+ from .base import Queryable, Retrievable
8
+
9
+
10
+ class TermsOfService(Retrievable, Queryable):
11
+ _resource: ClassVar = 'terms_of_service'
12
+
13
+ id: str
14
+ is_active: bool
15
+ created_at: dt.datetime
16
+ type: TermsOfServiceEnum
17
+ version: str
18
+ uri: SerializableHttpUrl
@@ -0,0 +1,21 @@
1
+ import datetime as dt
2
+ from typing import ClassVar
3
+
4
+ from cuenca_validations.types import TermsOfService
5
+ from cuenca_validations.types.general import SerializableHttpUrl
6
+
7
+ from .base import Creatable, Queryable, Retrievable
8
+
9
+
10
+ class UserTOSAgreement(Creatable, Retrievable, Queryable):
11
+ _resource: ClassVar = 'users_tos_agreements'
12
+
13
+ id: str
14
+ created_at: dt.datetime
15
+ user_id: str
16
+ type: TermsOfService
17
+ version: str
18
+ ip: str
19
+ location: str
20
+ digital_signature: str
21
+ signed_document_url: SerializableHttpUrl
cuenca/version.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__ = '2.1.3.dev2'
1
+ __version__ = '2.1.4.dev1'
2
2
  CLIENT_VERSION = __version__
3
3
  API_VERSION = '2020-03-19'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca
3
- Version: 2.1.3.dev2
3
+ Version: 2.1.4.dev1
4
4
  Summary: Cuenca API Client
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-python
6
6
  Author: Cuenca
@@ -16,7 +16,7 @@ Requires-Python: >=3.9
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Requires-Dist: requests>=2.32.0
19
- Requires-Dist: cuenca-validations>=2.1.5.dev6
19
+ Requires-Dist: cuenca-validations>=2.1.0
20
20
  Requires-Dist: pydantic-extra-types>=2.10.0
21
21
  Dynamic: author
22
22
  Dynamic: author-email
@@ -1,11 +1,11 @@
1
- cuenca/__init__.py,sha256=RM0mtsXTTe6egPaHFPE7QElKfi7pm9RQBAWMee3N1Pw,1746
1
+ cuenca/__init__.py,sha256=3vdbxgKHTcasyNd79-pWouw79PpMKJC6VBjQlWI1Yvo,1878
2
2
  cuenca/exc.py,sha256=r_lL03-JS0AsXw71wuNbiwNYLHNDagM56tRxpYyK6Lw,601
3
3
  cuenca/jwt.py,sha256=plB2ttHPZnL0xq3gqubw_Jjtj1QYG2E5bk99N3cn5zg,1502
4
4
  cuenca/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- cuenca/version.py,sha256=PgSenRgAbmDM3aNp8bqpZpWMSCiHpfKwwmmBQWu-dz4,83
5
+ cuenca/version.py,sha256=MGdOhOykQ2wbjFQ9xW3TGcN5XbfqkaJxc8_OcruqF0k,83
6
6
  cuenca/http/__init__.py,sha256=V5TG6Ro9d3VY7umzcbtanmvHlGkv-k71H0tqrdMyH-s,49
7
7
  cuenca/http/client.py,sha256=psXJiSgd3SUSJ5jwvhdBWsVMNadenG353BNVXdh7HMY,4168
8
- cuenca/resources/__init__.py,sha256=6EF_HDxcJUBMmdbx00DsYDOMDhi5JGIOExkhPK9DbIY,2991
8
+ cuenca/resources/__init__.py,sha256=9I3LDt_i-nA22WK_2RWa46tT-jc-iGIZlvzOF8skJxg,3266
9
9
  cuenca/resources/accounts.py,sha256=5yfNxAHpxWFosoR4WrPrDGpBCRkaQk98V-w0wCPPXqU,345
10
10
  cuenca/resources/api_keys.py,sha256=p65ZUiAu51JhEL_fZDc7_DTR0PMcSa-YQeK9gRFY82s,2618
11
11
  cuenca/resources/arpc.py,sha256=a9gGIgpBV8RK2ePSPBxI5c4ET4MtKH6Po_HRiv73B5k,1689
@@ -27,7 +27,8 @@ cuenca/resources/files.py,sha256=WZYRo76fIGXNXk2HzA252dSdIdA4bl3EjB6q0bb6BFg,183
27
27
  cuenca/resources/identities.py,sha256=IdL495eTjx_2gDRxM9oG_QmDNOwaY7Nv9gzqeZu_Wdk,1092
28
28
  cuenca/resources/identity_events.py,sha256=K1G6IEGlw6n482nZhBo_CJNBdpKFCO6duMQr5y9k4x8,374
29
29
  cuenca/resources/jwt_tokens.py,sha256=NSFLMcWKPZLcVR6g8X-RIQ9e4i7VDoQvrkp3GLiapEc,952
30
- cuenca/resources/kyc_validations.py,sha256=_qcA_hWfLZZ3qQCQKs7HeIzNaIZWKE7njSv0s5XSfbg,1341
30
+ cuenca/resources/kyc_validations.py,sha256=1G_dr6e1mpLUlqT9RmBgiC06eh0vQjMzosM5w3ZCQoE,1322
31
+ cuenca/resources/kyc_verifications.py,sha256=ysvVS9zdvFZ1Wyh2G_cr_IMwYeLW5BRLVyAt46hTk4g,1563
31
32
  cuenca/resources/limited_wallets.py,sha256=Z3pKMRmMFTAaCw-KdzGSWfYFHCpy-ZrBwOmalVfSdRU,1049
32
33
  cuenca/resources/login_tokens.py,sha256=vxRWqQznxdEUK0R80k0qC0BkTSZwZgUsC2neX8TTd8Q,799
33
34
  cuenca/resources/otps.py,sha256=dZEwns98N8uUtRBFCu6Qs6ySHARU9v3zTF6T5rpF43M,711
@@ -38,17 +39,19 @@ cuenca/resources/savings.py,sha256=3DBP1ygxhcScDpLvAQS_fF5chljyDTz4xwnltI0LCAg,1
38
39
  cuenca/resources/service_providers.py,sha256=x-FNcyiUkdUsNCGudyLGYDbRkD2jPj8-T8U3IumxTVQ,310
39
40
  cuenca/resources/sessions.py,sha256=lWphgjG9SZl81ik7c9tuAI6OE4JUOF0ZfRBvmf4vwyQ,1764
40
41
  cuenca/resources/statements.py,sha256=PqMvhoE9cvBneXjaS7w4JnTzYdDakkCkbdNYrd7b8LI,282
42
+ cuenca/resources/terms_of_service.py,sha256=-QjwfHSe88zRJR3pVIcrDjkTg615iunXlX5UuTqaeG0,461
41
43
  cuenca/resources/transfers.py,sha256=v742SAGUIZfvYHfCNtk0hSm2uyhMGh00RbHIIJiqLzQ,3201
42
44
  cuenca/resources/user_credentials.py,sha256=glpxUa5-aYhgJ1ZG1g_c1PAWaQ9eEWP01lauBaccSQQ,1356
43
45
  cuenca/resources/user_events.py,sha256=L57v7clStwxyJX2vwe-357uRTrzeQglDpCCgXRg7v9Y,728
44
46
  cuenca/resources/user_lists_validation.py,sha256=UrInfZRUVd4nODBIBOTH8ALEZ3pvdYS2_xfFR7UeNrc,1595
45
47
  cuenca/resources/user_logins.py,sha256=KDauv2c5BJUR-C5ZeIjAPsv-8VH11BhoT-wCU9KgrwY,1542
46
48
  cuenca/resources/users.py,sha256=3qb0-_3KBQCooqFUrknQ28ywU2v7s4JMudrd65z5Q-0,6321
49
+ cuenca/resources/users_tos_agreements.py,sha256=JVon3XDjPWl4lr-QKxrWh95AFQcEve8J2LnVKIUH6GQ,533
47
50
  cuenca/resources/verifications.py,sha256=YyvSh5IpiJ02lHK8k-guTwoHSFoaMYSFk1aC2tPi7n0,1680
48
51
  cuenca/resources/wallet_transactions.py,sha256=8ePZI3-GaEd658GPYizAfHK9GVwlkt1r95-mEb7T3Jg,1030
49
52
  cuenca/resources/webhooks.py,sha256=bGjuvkSP3GXo4Q6v8iZ40Md8xc4AQrEmAD3r40VJqxM,392
50
53
  cuenca/resources/whatsapp_transfers.py,sha256=YSL606FBOMGKjhyKK5TiF0di96zdDKoiVtjiz_Zl_ZI,902
51
- cuenca-2.1.3.dev2.dist-info/licenses/LICENSE,sha256=aWv5PmUiAcNENEAdghcVQSeU56pXJHWexJYgklK9XLg,1063
54
+ cuenca-2.1.4.dev1.dist-info/licenses/LICENSE,sha256=aWv5PmUiAcNENEAdghcVQSeU56pXJHWexJYgklK9XLg,1063
52
55
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
56
  tests/conftest.py,sha256=xrQtFNkqWG4KG35HorTD5N3-QUL98CAXqmLxu93haKI,1769
54
57
  tests/test_cuenca.py,sha256=aeha_utz9YiHQg6eJK2PB7g66pVUYFi9U6pYMGXDKvk,1628
@@ -77,7 +80,8 @@ tests/resources/test_files.py,sha256=2VSlvYnGHrw--mYNvA6hlpEw-olbW_Hlq2d4vdn8v7M
77
80
  tests/resources/test_identities.py,sha256=0osumiLrzKkGG4XLlL4nIdSp_nGutHaPf55w_IVREps,454
78
81
  tests/resources/test_identity_events.py,sha256=BZlM2RXKtCORdTDQCemY3NAR3KWb3mPNql4sd6oU4-U,344
79
82
  tests/resources/test_jwt_tokens.py,sha256=DnZS_kEGhtnb0KWFh9W0tJIiCvo_u1A3iXcu2h3z5WA,184
80
- tests/resources/test_kyc_validations.py,sha256=Cn_aiGUNSWFrptTQtgS8HhbK-50QEq_Qor2UMW8XuEU,540
83
+ tests/resources/test_kyc_validations.py,sha256=TEyS6encW-InRpcAR4nDCfmkqqnn8yMC9AaS3iWm8Xw,420
84
+ tests/resources/test_kyc_verifications.py,sha256=Y-ZU61o18I_3NFqMN2w4WGZTzwsIhULAtESqIXiizUY,634
81
85
  tests/resources/test_limited_wallets.py,sha256=c0zDDOip3lJk8chbcGr_nWCdkO9yuL_HbD1IikR5jH4,527
82
86
  tests/resources/test_login_tokens.py,sha256=kn0gXFOanIXjgKjbeOzfNyKsGAUkc2iKnuVmzIRaMD8,572
83
87
  tests/resources/test_otps.py,sha256=IpCczDNRL_WaWwc1rYbSRmtWMR7GMa-Pfbq2TZcZQDw,616
@@ -98,7 +102,7 @@ tests/resources/test_verifications.py,sha256=yyL-bdryQU3MvqnmAgnnzGG9t7UTxWwPiVu
98
102
  tests/resources/test_wallet_transactions.py,sha256=_L2hjPHT4FwwhxksUoaoVHwFFYOGWfF4ScCbk0kb7Hw,3945
99
103
  tests/resources/test_webhooks.py,sha256=nYCqAnlNJcMJKRHhgoHOWTQnFLWQHHvFyY8GVCxGTD8,328
100
104
  tests/resources/test_whatsapp_transfers.py,sha256=4Dmrsbytx7LRrLQo9M8TAL7cGKJufPStkp51UdRCnYU,1030
101
- cuenca-2.1.3.dev2.dist-info/METADATA,sha256=7FisG7lcWYForGK1l8aPWI5qUZrgA94qMhoApFzv3oc,4993
102
- cuenca-2.1.3.dev2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
103
- cuenca-2.1.3.dev2.dist-info/top_level.txt,sha256=5h3K7XJTmJniDloPq4sIJHni_xLw-Uoc6ZJ5mcw_lZY,13
104
- cuenca-2.1.3.dev2.dist-info/RECORD,,
105
+ cuenca-2.1.4.dev1.dist-info/METADATA,sha256=ryBu3tCKswZOGqxVvcLtdpcQFON7tPECwBeCTZSeVls,4988
106
+ cuenca-2.1.4.dev1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
107
+ cuenca-2.1.4.dev1.dist-info/top_level.txt,sha256=5h3K7XJTmJniDloPq4sIJHni_xLw-Uoc6ZJ5mcw_lZY,13
108
+ cuenca-2.1.4.dev1.dist-info/RECORD,,
@@ -1,15 +1,11 @@
1
1
  import pytest
2
- from cuenca_validations.types import KYCValidationSource
3
2
 
4
3
  from cuenca import KYCValidation
5
4
 
6
5
 
7
6
  @pytest.mark.vcr
8
7
  def test_validation_create():
9
- kyc_validation: KYCValidation = KYCValidation.create(
10
- user_id="USFOOBAR",
11
- source_type=KYCValidationSource.server,
12
- )
8
+ kyc_validation: KYCValidation = KYCValidation.create(user_id="USFOOBAR")
13
9
  assert kyc_validation.id
14
10
  assert kyc_validation.verification_id
15
11
 
@@ -0,0 +1,25 @@
1
+ import pytest
2
+
3
+ from cuenca import KYCVerification
4
+
5
+
6
+ @pytest.mark.vcr
7
+ def test_kyc_verification_create():
8
+ kyc_verification: KYCVerification = KYCVerification.create()
9
+ assert kyc_verification.id
10
+
11
+
12
+ @pytest.mark.vcr
13
+ def test_kyc_verification_retrieve():
14
+ kyc_verification = KYCVerification.retrieve('KYC01')
15
+ assert kyc_verification.id
16
+
17
+
18
+ @pytest.mark.vcr
19
+ def test_kyc_verification_update():
20
+ kyc_id = 'KYC01'
21
+ changes = dict(curp='HEMA921130HNERNN05')
22
+ kyc_verification = KYCVerification.update(kyc_id, **changes)
23
+ assert all(
24
+ item in kyc_verification.to_dict().items() for item in changes.items()
25
+ )