cuenca 2.2.0.dev3__tar.gz → 2.2.2__tar.gz

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.
Files changed (123) hide show
  1. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/PKG-INFO +2 -2
  2. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/__init__.py +4 -0
  3. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/__init__.py +6 -0
  4. cuenca-2.2.2/cuenca/resources/agent_verifications.py +37 -0
  5. cuenca-2.2.2/cuenca/resources/agents.py +52 -0
  6. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/password_resets.py +7 -1
  7. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/transfers.py +16 -2
  8. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/version.py +1 -1
  9. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca.egg-info/PKG-INFO +2 -2
  10. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca.egg-info/SOURCES.txt +3 -0
  11. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca.egg-info/requires.txt +1 -1
  12. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/setup.py +1 -1
  13. cuenca-2.2.2/tests/resources/test_agents.py +22 -0
  14. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_transfers.py +30 -0
  15. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/LICENSE +0 -0
  16. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/README.md +0 -0
  17. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/exc.py +0 -0
  18. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/http/__init__.py +0 -0
  19. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/http/client.py +0 -0
  20. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/jwt.py +0 -0
  21. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/py.typed +0 -0
  22. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/accounts.py +0 -0
  23. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/api_keys.py +0 -0
  24. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/arpc.py +0 -0
  25. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/balance_entries.py +0 -0
  26. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/base.py +0 -0
  27. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/bill_payments.py +0 -0
  28. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/card_activations.py +0 -0
  29. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/card_transactions.py +0 -0
  30. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/card_validations.py +0 -0
  31. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/cards.py +0 -0
  32. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/cash_references.py +0 -0
  33. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/clabes.py +0 -0
  34. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/commissions.py +0 -0
  35. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/curp_validations.py +0 -0
  36. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/deposits.py +0 -0
  37. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/endpoints.py +0 -0
  38. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/exist_phones.py +0 -0
  39. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/file_batches.py +0 -0
  40. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/files.py +0 -0
  41. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/identities.py +0 -0
  42. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/identity_events.py +0 -0
  43. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/jwt_tokens.py +0 -0
  44. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/kyc_validations.py +0 -0
  45. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/limited_wallets.py +0 -0
  46. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/login_tokens.py +0 -0
  47. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/otps.py +0 -0
  48. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/phone_verification_associations.py +0 -0
  49. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/platforms.py +0 -0
  50. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/postal_codes.py +0 -0
  51. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/questionnaires.py +0 -0
  52. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/resources.py +0 -0
  53. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/savings.py +0 -0
  54. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/service_providers.py +0 -0
  55. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/sessions.py +0 -0
  56. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/statements.py +0 -0
  57. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/terms_of_service.py +0 -0
  58. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/user_credentials.py +0 -0
  59. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/user_events.py +0 -0
  60. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/user_lists_validation.py +0 -0
  61. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/user_logins.py +0 -0
  62. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/users.py +0 -0
  63. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/users_tos_agreements.py +0 -0
  64. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/verifications.py +0 -0
  65. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/wallet_transactions.py +0 -0
  66. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/webhooks.py +0 -0
  67. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca/resources/whatsapp_transfers.py +0 -0
  68. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca.egg-info/dependency_links.txt +0 -0
  69. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/cuenca.egg-info/top_level.txt +0 -0
  70. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/setup.cfg +0 -0
  71. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/__init__.py +0 -0
  72. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/conftest.py +0 -0
  73. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/http/__init__.py +0 -0
  74. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/http/conftest.py +0 -0
  75. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/http/test_client.py +0 -0
  76. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/__init__.py +0 -0
  77. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_accounts.py +0 -0
  78. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_api_keys.py +0 -0
  79. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_arpc.py +0 -0
  80. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_balance_entries.py +0 -0
  81. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_bill_payments.py +0 -0
  82. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_card_activations.py +0 -0
  83. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_card_transactions.py +0 -0
  84. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_card_validations.py +0 -0
  85. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_cards.py +0 -0
  86. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_cash_references.py +0 -0
  87. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_clabes.py +0 -0
  88. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_commissions.py +0 -0
  89. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_curp_validations.py +0 -0
  90. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_deposits.py +0 -0
  91. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_endpoints.py +0 -0
  92. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_exist_phone.py +0 -0
  93. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_file_batches.py +0 -0
  94. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_files.py +0 -0
  95. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_identities.py +0 -0
  96. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_identity_events.py +0 -0
  97. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_jwt_tokens.py +0 -0
  98. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_kyc_validations.py +0 -0
  99. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_limited_wallets.py +0 -0
  100. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_login_tokens.py +0 -0
  101. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_otps.py +0 -0
  102. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_password_resets.py +0 -0
  103. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_phone_verification_association.py +0 -0
  104. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_platforms.py +0 -0
  105. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_postal_codes.py +0 -0
  106. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_questionnaires.py +0 -0
  107. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_resources.py +0 -0
  108. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_savings.py +0 -0
  109. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_service_providers.py +0 -0
  110. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_sessions.py +0 -0
  111. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_statements.py +0 -0
  112. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_user_credentials.py +0 -0
  113. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_user_events.py +0 -0
  114. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_user_lists_validation.py +0 -0
  115. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_user_logins.py +0 -0
  116. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_users.py +0 -0
  117. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_users_tos_agreements.py +0 -0
  118. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_verifications.py +0 -0
  119. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_wallet_transactions.py +0 -0
  120. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_webhooks.py +0 -0
  121. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/resources/test_whatsapp_transfers.py +0 -0
  122. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/test_cuenca.py +0 -0
  123. {cuenca-2.2.0.dev3 → cuenca-2.2.2}/tests/test_jwt.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca
3
- Version: 2.2.0.dev3
3
+ Version: 2.2.2
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.27
19
+ Requires-Dist: cuenca-validations>=2.1.34
20
20
  Requires-Dist: pydantic-extra-types>=2.10.0
21
21
  Dynamic: author
22
22
  Dynamic: author-email
@@ -1,5 +1,7 @@
1
1
  __all__ = [
2
2
  '__version__',
3
+ 'Agent',
4
+ 'AgentVerification',
3
5
  'ApiKey',
4
6
  'Account',
5
7
  'Arpc',
@@ -53,6 +55,8 @@ __all__ = [
53
55
  from . import http
54
56
  from .resources import (
55
57
  Account,
58
+ Agent,
59
+ AgentVerification,
56
60
  ApiKey,
57
61
  Arpc,
58
62
  BalanceEntry,
@@ -1,4 +1,6 @@
1
1
  __all__ = [
2
+ 'Agent',
3
+ 'AgentVerification',
2
4
  'ApiKey',
3
5
  'Account',
4
6
  'Arpc',
@@ -47,6 +49,8 @@ __all__ = [
47
49
  ]
48
50
 
49
51
  from .accounts import Account
52
+ from .agent_verifications import AgentVerification
53
+ from .agents import Agent
50
54
  from .api_keys import ApiKey
51
55
  from .arpc import Arpc
52
56
  from .balance_entries import BalanceEntry
@@ -96,6 +100,8 @@ from .whatsapp_transfers import WhatsappTransfer
96
100
 
97
101
  # avoid circular imports
98
102
  resource_classes = [
103
+ Agent,
104
+ AgentVerification,
99
105
  ApiKey,
100
106
  Account,
101
107
  Arpc,
@@ -0,0 +1,37 @@
1
+ import datetime as dt
2
+ from typing import ClassVar
3
+
4
+ from cuenca_validations.types.identities import PhoneNumber
5
+ from pydantic import ConfigDict
6
+
7
+ from ..http import Session, session as global_session
8
+ from .base import Creatable
9
+
10
+
11
+ class AgentVerification(Creatable):
12
+ _resource: ClassVar = 'agent_verifications'
13
+
14
+ created_at: dt.datetime
15
+ user_id: str
16
+ platform_id: str
17
+ phone_number: PhoneNumber
18
+ pairing_code: str
19
+ deactivated_at: dt.datetime
20
+
21
+ model_config = ConfigDict(
22
+ json_schema_extra={
23
+ 'example': {
24
+ 'id': 'AVjTtPH1mhT65GEgOeomJ4DQ',
25
+ 'created_at': '2026-06-25T22:50:08.495768',
26
+ 'user_id': 'USMP3EPgI4T4CPFyVmXUPi8A',
27
+ 'platform_id': 'PTZbBlk__kQt-wfwzP5nwA9A',
28
+ 'phone_number': '+525512345678',
29
+ 'pairing_code': 'OJC37W',
30
+ 'deactivated_at': '2026-06-25T22:55:08.495779',
31
+ }
32
+ }
33
+ )
34
+
35
+ @classmethod
36
+ def create(cls, session: Session = global_session) -> 'AgentVerification':
37
+ return cls._create(session=session)
@@ -0,0 +1,52 @@
1
+ import datetime as dt
2
+ from typing import ClassVar, Optional
3
+
4
+ from cuenca_validations.types import AgentQuery, AgentRequest, PhoneNumber
5
+ from cuenca_validations.typing import DictStrAny
6
+ from pydantic import ConfigDict, Field
7
+
8
+ from ..http import Session, session as global_session
9
+ from .base import Creatable, Queryable
10
+
11
+
12
+ class Agent(Creatable, Queryable):
13
+ _resource: ClassVar = 'agents'
14
+ _query_params: ClassVar = AgentQuery
15
+
16
+ created_at: dt.datetime
17
+ user_id: str
18
+ platform_id: str
19
+ agent_verification_id: str
20
+ session_id: str
21
+ device_info: DictStrAny = Field(default_factory=dict)
22
+ deactivated_at: Optional[dt.datetime] = None
23
+
24
+ model_config = ConfigDict(
25
+ json_schema_extra={
26
+ 'example': {
27
+ 'id': 'AG1G6Bm0oGQOCRjTDaeFSsyA',
28
+ 'created_at': '2026-06-27T01:56:42.613781',
29
+ 'user_id': 'USMP3EPgI4T4CPFyVmXUPi8A',
30
+ 'platform_id': 'PTZbBlk__kQt-wfwzP5nwA9A',
31
+ 'agent_verification_id': 'AV7A1FLC7MSnqKcb7oAkiQxA',
32
+ 'session_id': 'SSH0M5yteyRHas-PmfT9pu9w',
33
+ 'device_info': {'client': 'cursor', 'os': 'macOS'},
34
+ }
35
+ }
36
+ )
37
+
38
+ @classmethod
39
+ def create(
40
+ cls,
41
+ pairing_code: str,
42
+ phone_number: PhoneNumber,
43
+ device_info: Optional[DictStrAny] = None,
44
+ *,
45
+ session: Session = global_session,
46
+ ) -> 'Agent':
47
+ req = AgentRequest(
48
+ pairing_code=pairing_code,
49
+ phone_number=phone_number,
50
+ device_info=device_info or {},
51
+ )
52
+ return cls._create(session=session, **req.model_dump())
@@ -27,8 +27,14 @@ class PasswordReset(Creatable):
27
27
  'id': 'PRNEUInh69SuKXXmK95sROwQ',
28
28
  'platform_id': 'PT-1234567890',
29
29
  'flow_id': '123e4567-e89b-12d3-a456-426614174000',
30
- 'status': 'created',
30
+ 'status': 'succeeded',
31
+ 'provider_url': (
32
+ 'https://dashboard.metamap.com/identity/'
33
+ 'identity-id/verification/verification-id'
34
+ ),
31
35
  'created_at': '2026-05-06T14:15:22Z',
36
+ 'updated_at': '2026-05-06T14:18:22Z',
37
+ 'deactivated_at': '2026-05-06T14:20:22Z',
32
38
  }
33
39
  }
34
40
  )
@@ -2,20 +2,23 @@ import datetime as dt
2
2
  from typing import ClassVar, Optional, cast
3
3
 
4
4
  from cuenca_validations.types import (
5
+ TransactionStatus,
5
6
  TransferNetwork,
6
7
  TransferQuery,
7
8
  TransferRequest,
9
+ UpdateTransferRequest,
8
10
  )
9
11
  from cuenca_validations.typing import DictStrAny
10
12
  from requests import HTTPError
11
13
 
12
14
  from ..exc import CuencaException
15
+ from ..http import Session, session as global_session
13
16
  from .accounts import Account
14
- from .base import Creatable, Transaction
17
+ from .base import Creatable, Transaction, Updateable
15
18
  from .resources import retrieve_uri
16
19
 
17
20
 
18
- class Transfer(Transaction, Creatable):
21
+ class Transfer(Transaction, Creatable, Updateable):
19
22
  _resource: ClassVar = 'transfers'
20
23
  _query_params: ClassVar = TransferQuery
21
24
 
@@ -71,6 +74,17 @@ class Transfer(Transaction, Creatable):
71
74
  )
72
75
  return cls._create(**req.model_dump())
73
76
 
77
+ @classmethod
78
+ def update(
79
+ cls,
80
+ transfer_id: str,
81
+ status: TransactionStatus,
82
+ *,
83
+ session: Session = global_session,
84
+ ) -> 'Transfer':
85
+ req = UpdateTransferRequest(status=status)
86
+ return cls._update(transfer_id, session=session, **req.model_dump())
87
+
74
88
  @classmethod
75
89
  def create_many(cls, requests: list[TransferRequest]) -> DictStrAny:
76
90
  transfers: DictStrAny = dict(submitted=[], errors=[])
@@ -1,3 +1,3 @@
1
- __version__ = '2.2.0.dev3'
1
+ __version__ = '2.2.2'
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.2.0.dev3
3
+ Version: 2.2.2
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.27
19
+ Requires-Dist: cuenca-validations>=2.1.34
20
20
  Requires-Dist: pydantic-extra-types>=2.10.0
21
21
  Dynamic: author
22
22
  Dynamic: author-email
@@ -16,6 +16,8 @@ cuenca/http/__init__.py
16
16
  cuenca/http/client.py
17
17
  cuenca/resources/__init__.py
18
18
  cuenca/resources/accounts.py
19
+ cuenca/resources/agent_verifications.py
20
+ cuenca/resources/agents.py
19
21
  cuenca/resources/api_keys.py
20
22
  cuenca/resources/arpc.py
21
23
  cuenca/resources/balance_entries.py
@@ -72,6 +74,7 @@ tests/http/conftest.py
72
74
  tests/http/test_client.py
73
75
  tests/resources/__init__.py
74
76
  tests/resources/test_accounts.py
77
+ tests/resources/test_agents.py
75
78
  tests/resources/test_api_keys.py
76
79
  tests/resources/test_arpc.py
77
80
  tests/resources/test_balance_entries.py
@@ -1,3 +1,3 @@
1
1
  requests>=2.32.0
2
- cuenca-validations>=2.1.27
2
+ cuenca-validations>=2.1.34
3
3
  pydantic-extra-types>=2.10.0
@@ -24,7 +24,7 @@ setup(
24
24
  python_requires='>=3.9',
25
25
  install_requires=[
26
26
  'requests>=2.32.0',
27
- 'cuenca-validations>=2.1.27',
27
+ 'cuenca-validations>=2.1.34',
28
28
  'pydantic-extra-types>=2.10.0',
29
29
  ],
30
30
  classifiers=[
@@ -0,0 +1,22 @@
1
+ import pytest
2
+
3
+ from cuenca.http.client import Session
4
+ from cuenca.resources import Agent, AgentVerification
5
+
6
+
7
+ @pytest.mark.vcr
8
+ def test_agent_create():
9
+ verification = AgentVerification.create() # Created by user in APP
10
+ agent_session = Session()
11
+ agent_session.configure(sandbox=True)
12
+ agent = Agent.create(
13
+ pairing_code=verification.pairing_code,
14
+ phone_number=verification.phone_number,
15
+ device_info={'client': 'cursor', 'os': 'macOS'},
16
+ session=agent_session,
17
+ )
18
+ assert agent.id
19
+ assert agent.agent_verification_id == verification.id
20
+ assert agent.session_id
21
+ assert agent.user_id
22
+ assert agent.platform_id
@@ -130,3 +130,33 @@ def test_invalid_params():
130
130
  with pytest.raises(ValidationError) as e:
131
131
  Transfer.one(invalid_param='invalid_param')
132
132
  assert 'Extra inputs are not permitted' in str(e)
133
+
134
+
135
+ @pytest.mark.vcr
136
+ def test_transfers_update_succeeded():
137
+ transfer = Transfer.update('TR01', status=TransactionStatus.succeeded)
138
+ assert transfer.id == 'TR01'
139
+ assert transfer.status == TransactionStatus.succeeded
140
+
141
+
142
+ @pytest.mark.vcr
143
+ def test_transfers_update_failed():
144
+ transfer = Transfer.update('TR02', status=TransactionStatus.failed)
145
+ assert transfer.id == 'TR02'
146
+ assert transfer.status == TransactionStatus.failed
147
+
148
+
149
+ @pytest.mark.parametrize(
150
+ 'invalid_status',
151
+ [
152
+ TransactionStatus.created,
153
+ TransactionStatus.submitted,
154
+ TransactionStatus.in_review,
155
+ 'cancelled',
156
+ 'approve',
157
+ 'reject',
158
+ ],
159
+ )
160
+ def test_transfers_update_rejects_invalid_status(invalid_status):
161
+ with pytest.raises(ValidationError):
162
+ Transfer.update('TR03', status=invalid_status)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes