moovio_sdk 0.15.2__py3-none-any.whl → 0.16.1__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.

Potentially problematic release.


This version of moovio_sdk might be problematic. Click here for more details.

moovio_sdk/_version.py CHANGED
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "moovio_sdk"
6
- __version__: str = "0.15.2"
6
+ __version__: str = "0.16.1"
7
7
  __openapi_doc_version__: str = "latest"
8
- __gen_version__: str = "2.709.0"
9
- __user_agent__: str = "speakeasy-sdk/python 0.15.2 2.709.0 latest moovio_sdk"
8
+ __gen_version__: str = "2.716.9"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.16.1 2.716.9 latest moovio_sdk"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -444,6 +444,8 @@ if TYPE_CHECKING:
444
444
  EvidenceUploadResponseTypedDict,
445
445
  )
446
446
  from .facilitatorfee import FacilitatorFee, FacilitatorFeeTypedDict
447
+ from .fednowinstitution import FedNowInstitution, FedNowInstitutionTypedDict
448
+ from .fednowservices import FedNowServices, FedNowServicesTypedDict
447
449
  from .feecategory import FeeCategory
448
450
  from .feemodel import FeeModel
449
451
  from .feeplan import FeePlan, FeePlanTypedDict
@@ -1492,6 +1494,10 @@ __all__ = [
1492
1494
  "EvidenceUploadResponseTypedDict",
1493
1495
  "FacilitatorFee",
1494
1496
  "FacilitatorFeeTypedDict",
1497
+ "FedNowInstitution",
1498
+ "FedNowInstitutionTypedDict",
1499
+ "FedNowServices",
1500
+ "FedNowServicesTypedDict",
1495
1501
  "FeeCategory",
1496
1502
  "FeeModel",
1497
1503
  "FeePlan",
@@ -2431,6 +2437,10 @@ _dynamic_imports: dict[str, str] = {
2431
2437
  "EvidenceUploadResponseTypedDict": ".evidenceuploadresponse",
2432
2438
  "FacilitatorFee": ".facilitatorfee",
2433
2439
  "FacilitatorFeeTypedDict": ".facilitatorfee",
2440
+ "FedNowInstitution": ".fednowinstitution",
2441
+ "FedNowInstitutionTypedDict": ".fednowinstitution",
2442
+ "FedNowServices": ".fednowservices",
2443
+ "FedNowServicesTypedDict": ".fednowservices",
2434
2444
  "FeeCategory": ".feecategory",
2435
2445
  "FeeModel": ".feemodel",
2436
2446
  "FeePlan": ".feeplan",
@@ -0,0 +1,23 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .fednowservices import FedNowServices, FedNowServicesTypedDict
5
+ from moovio_sdk.types import BaseModel
6
+ import pydantic
7
+ from typing_extensions import Annotated, TypedDict
8
+
9
+
10
+ class FedNowInstitutionTypedDict(TypedDict):
11
+ name: str
12
+ r"""Name of the financial institution."""
13
+ routing_number: str
14
+ services: FedNowServicesTypedDict
15
+
16
+
17
+ class FedNowInstitution(BaseModel):
18
+ name: str
19
+ r"""Name of the financial institution."""
20
+
21
+ routing_number: Annotated[str, pydantic.Field(alias="routingNumber")]
22
+
23
+ services: FedNowServices
@@ -0,0 +1,26 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from moovio_sdk.types import BaseModel
5
+ import pydantic
6
+ from typing_extensions import Annotated, TypedDict
7
+
8
+
9
+ class FedNowServicesTypedDict(TypedDict):
10
+ receive_payments: bool
11
+ r"""Indicates if the institution can receive instant payments."""
12
+ send_payments: bool
13
+ r"""Indicates if the institution can send instant payments."""
14
+ request_for_payment: bool
15
+ r"""Indicates if the institution can process request for payment messages."""
16
+
17
+
18
+ class FedNowServices(BaseModel):
19
+ receive_payments: Annotated[bool, pydantic.Field(alias="receivePayments")]
20
+ r"""Indicates if the institution can receive instant payments."""
21
+
22
+ send_payments: Annotated[bool, pydantic.Field(alias="sendPayments")]
23
+ r"""Indicates if the institution can send instant payments."""
24
+
25
+ request_for_payment: Annotated[bool, pydantic.Field(alias="requestForPayment")]
26
+ r"""Indicates if the institution can process request for payment messages."""
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from .achinstitution import ACHInstitution, ACHInstitutionTypedDict
5
+ from .fednowinstitution import FedNowInstitution, FedNowInstitutionTypedDict
5
6
  from .rtpinstitution import RTPInstitution, RTPInstitutionTypedDict
6
7
  from .wireinstitution import WireInstitution, WireInstitutionTypedDict
7
8
  from moovio_sdk.types import BaseModel, Nullable, UNSET_SENTINEL
@@ -14,6 +15,7 @@ class InstitutionsSearchResponseTypedDict(TypedDict):
14
15
  ach: Nullable[List[ACHInstitutionTypedDict]]
15
16
  rtp: Nullable[List[RTPInstitutionTypedDict]]
16
17
  wire: Nullable[List[WireInstitutionTypedDict]]
18
+ fednow: Nullable[List[FedNowInstitutionTypedDict]]
17
19
 
18
20
 
19
21
  class InstitutionsSearchResponse(BaseModel):
@@ -23,10 +25,12 @@ class InstitutionsSearchResponse(BaseModel):
23
25
 
24
26
  wire: Nullable[List[WireInstitution]]
25
27
 
28
+ fednow: Nullable[List[FedNowInstitution]]
29
+
26
30
  @model_serializer(mode="wrap")
27
31
  def serialize_model(self, handler):
28
32
  optional_fields = []
29
- nullable_fields = ["ach", "rtp", "wire"]
33
+ nullable_fields = ["ach", "rtp", "wire", "fednow"]
30
34
  null_default_fields = []
31
35
 
32
36
  serialized = handler(self)
@@ -8,10 +8,10 @@ class MonthlyVolumeRange(str, Enum):
8
8
  r"""The low value in each range is included. The high value in each range is excluded."""
9
9
 
10
10
  UNDER_10K = "under-10k"
11
- TEN_K_50_K = "10K-50K"
12
- FIFTY_K_100_K = "50K-100K"
13
- ONE_HUNDRED_K_250_K = "100K-250K"
14
- TWO_HUNDRED_AND_FIFTY_K_500_K = "250K-500K"
15
- FIVE_HUNDRED_K_1_M = "500K-1M"
16
- ONE_M_5_M = "1M-5M"
11
+ TENK_50K = "10k-50k"
12
+ FIFTYK_100K = "50k-100k"
13
+ ONE_HUNDREDK_250K = "100k-250k"
14
+ TWO_HUNDRED_AND_FIFTYK_500K = "250k-500k"
15
+ FIVE_HUNDREDK_1M = "500k-1m"
16
+ ONEM_5M = "1m-5m"
17
17
  OVER_5M = "over-5m"
moovio_sdk/sdk.py CHANGED
@@ -174,7 +174,7 @@ class Moov(BaseSDK):
174
174
  """
175
175
  client_supplied = True
176
176
  if client is None:
177
- client = httpx.Client()
177
+ client = httpx.Client(follow_redirects=True)
178
178
  client_supplied = False
179
179
 
180
180
  assert issubclass(
@@ -183,7 +183,7 @@ class Moov(BaseSDK):
183
183
 
184
184
  async_client_supplied = True
185
185
  if async_client is None:
186
- async_client = httpx.AsyncClient()
186
+ async_client = httpx.AsyncClient(follow_redirects=True)
187
187
  async_client_supplied = False
188
188
 
189
189
  if debug_logger is None:
@@ -3,6 +3,7 @@
3
3
  from enum import Enum
4
4
  from typing import Any, Optional
5
5
 
6
+
6
7
  def get_discriminator(model: Any, fieldname: str, key: str) -> str:
7
8
  """
8
9
  Recursively search for the discriminator attribute in a model.
@@ -25,31 +26,54 @@ def get_discriminator(model: Any, fieldname: str, key: str) -> str:
25
26
 
26
27
  if isinstance(field, dict):
27
28
  if key in field:
28
- return f'{field[key]}'
29
+ return f"{field[key]}"
29
30
 
30
31
  if hasattr(field, fieldname):
31
32
  attr = getattr(field, fieldname)
32
33
  if isinstance(attr, Enum):
33
- return f'{attr.value}'
34
- return f'{attr}'
34
+ return f"{attr.value}"
35
+ return f"{attr}"
35
36
 
36
37
  if hasattr(field, upper_fieldname):
37
38
  attr = getattr(field, upper_fieldname)
38
39
  if isinstance(attr, Enum):
39
- return f'{attr.value}'
40
- return f'{attr}'
40
+ return f"{attr.value}"
41
+ return f"{attr}"
41
42
 
42
43
  return None
43
44
 
45
+ def search_nested_discriminator(obj: Any) -> Optional[str]:
46
+ """Recursively search for discriminator in nested structures."""
47
+ # First try direct field lookup
48
+ discriminator = get_field_discriminator(obj)
49
+ if discriminator is not None:
50
+ return discriminator
51
+
52
+ # If it's a dict, search in nested values
53
+ if isinstance(obj, dict):
54
+ for value in obj.values():
55
+ if isinstance(value, list):
56
+ # Search in list items
57
+ for item in value:
58
+ nested_discriminator = search_nested_discriminator(item)
59
+ if nested_discriminator is not None:
60
+ return nested_discriminator
61
+ elif isinstance(value, dict):
62
+ # Search in nested dict
63
+ nested_discriminator = search_nested_discriminator(value)
64
+ if nested_discriminator is not None:
65
+ return nested_discriminator
66
+
67
+ return None
44
68
 
45
69
  if isinstance(model, list):
46
70
  for field in model:
47
- discriminator = get_field_discriminator(field)
71
+ discriminator = search_nested_discriminator(field)
48
72
  if discriminator is not None:
49
73
  return discriminator
50
74
 
51
- discriminator = get_field_discriminator(model)
75
+ discriminator = search_nested_discriminator(model)
52
76
  if discriminator is not None:
53
77
  return discriminator
54
78
 
55
- raise ValueError(f'Could not find discriminator field {fieldname} in {model}')
79
+ raise ValueError(f"Could not find discriminator field {fieldname} in {model}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moovio_sdk
3
- Version: 0.15.2
3
+ Version: 0.16.1
4
4
  Summary: Python Client SDK Generated by Speakeasy.
5
5
  Author: Speakeasy
6
6
  Requires-Python: >=3.9.2
@@ -197,6 +197,7 @@ with Moov(
197
197
  </br>
198
198
 
199
199
  The same SDK client can also be used to make asynchronous requests by importing asyncio.
200
+
200
201
  ```python
201
202
  # Asynchronous Example
202
203
  import asyncio
@@ -3,7 +3,7 @@ moovio_sdk/_hooks/__init__.py,sha256=9_7W5jAYw8rcO8Kfc-Ty-lB82BHfksAJJpVFb_UeU1c
3
3
  moovio_sdk/_hooks/registration.py,sha256=1QZB41w6If7I9dXiOSQx6dhSc6BPWrnI5Q5bMOr4iVA,624
4
4
  moovio_sdk/_hooks/sdkhooks.py,sha256=2XuMgiV2N7UE7lN00Is-c3spxVWigYitXS6xSmS_Qow,2560
5
5
  moovio_sdk/_hooks/types.py,sha256=Yi9LD8_sd4zG7_idzCZY4MTxTXMhDlmCdpQvU4dXFI4,3049
6
- moovio_sdk/_version.py,sha256=k8l9y8DwxtbZwG6mzm0DfWyvwuU-SShtSGy9esG31J8,466
6
+ moovio_sdk/_version.py,sha256=-TWODgeFHup4RFIR6DfA7ZDMboRXhQmQHiROo66PiiM,466
7
7
  moovio_sdk/account_terminal_applications.py,sha256=ldTg5uAukIAwfziQFgmuq6vlAsUPS5DqMkgdCx9bwn8,38522
8
8
  moovio_sdk/accounts.py,sha256=XHDyYql7Tc27K28zv0UI0eYU0LkRu8kmSPXBYI8Iyx0,100626
9
9
  moovio_sdk/adjustments.py,sha256=U2AtbA2k71S1IpwjJ96LT4SdGUDqR3JEgOSvMm9a2yU,17613
@@ -27,7 +27,7 @@ moovio_sdk/industries.py,sha256=ZUdnD3w84e1oOOQlye60I9QTFn_0JLGF0uMDrASl8A4,9372
27
27
  moovio_sdk/institutions.py,sha256=Kp90bbtOsfb1slR_8RgmYHkgH8G6Pp9FZds2rc7J6Ck,20523
28
28
  moovio_sdk/issuing_transactions.py,sha256=pckxIPSAJDMt-PcKduqdVhd7fsbUwCKzlkGb_UBwRW0,48949
29
29
  moovio_sdk/models/__init__.py,sha256=wIW9sbvSKlrGyoPY4mXvHqw-_Inpl6zqpN6U6j-w6SU,83
30
- moovio_sdk/models/components/__init__.py,sha256=2sdxrDZqV8m_cjuP8IVPX3tkht_sUt12PYl1gGBp7so,126233
30
+ moovio_sdk/models/components/__init__.py,sha256=Vs8tMf1ddHFAbIU0vDXmqMVpfK429l4EABJ96IUTFck,126692
31
31
  moovio_sdk/models/components/account.py,sha256=gIzVHHbfwM-YZns1m9b2z6es5mX-LtCOd7C0N-oPBBA,4189
32
32
  moovio_sdk/models/components/accountcapability.py,sha256=LJ908Zr4lw2qtMwUMLWoscTUjj5wV7YlZ4Z0Vv_abjg,527
33
33
  moovio_sdk/models/components/accountcountries.py,sha256=sI1VAu3PqS2HTOarkT7f6FbkgUT55NL57PvAZKcbRHw,456
@@ -213,6 +213,8 @@ moovio_sdk/models/components/evidencetextresponse.py,sha256=8m2u3iC_gCUSuU4h53JL
213
213
  moovio_sdk/models/components/evidencetype.py,sha256=KQMJuoRyjESBU59-TghucuZC0P14KlvLdce2gtDjixM,469
214
214
  moovio_sdk/models/components/evidenceuploadresponse.py,sha256=tCxjtueEl1URQjNTE2QYp9zsRFG_c5hjdvLil_3QaEk,1615
215
215
  moovio_sdk/models/components/facilitatorfee.py,sha256=uDMPXHogxp5lpRjeLK4QlgoXSRo35cYfqxo0NVzO2A0,2156
216
+ moovio_sdk/models/components/fednowinstitution.py,sha256=fVtuI1v6loVnMTg6WQMn2wmYZ-NcRih9OeOJI2I6GW8,654
217
+ moovio_sdk/models/components/fednowservices.py,sha256=81-81tmT4Z674XSUehwFRM63o5wojzekI7wp7JoXSl4,1050
216
218
  moovio_sdk/models/components/feecategory.py,sha256=9OBQNnE7O8c_i_8eyvbbkl_MfdgwmHeYZ9_36uooCrU,428
217
219
  moovio_sdk/models/components/feemodel.py,sha256=M98YekU7JfnwG613Zi6SJE9hcUBIHiqMObgi30rUoxM,312
218
220
  moovio_sdk/models/components/feeplan.py,sha256=0WIFfE3jd8CupBAi-66bjUN10f1vEv6e_9_uv6bKl5c,2381
@@ -250,7 +252,7 @@ moovio_sdk/models/components/individualprofile.py,sha256=9XYieNlD3tDvoAgR1yU5Vvt
250
252
  moovio_sdk/models/components/industrycodes.py,sha256=dxRs-_R5VFy1SdRvihjk2AOcmVaylbViJvECmzJ4yRc,479
251
253
  moovio_sdk/models/components/industrytaxonomy.py,sha256=NUOOo4LqN-yTUtGz6PVmFjhnSYrBFGFZfTJmbEjw6Es,1258
252
254
  moovio_sdk/models/components/instantpaymentfees.py,sha256=tiqFhR975kr4qA0UKRElJBq4cHiEbHNFcZtXaRJAloU,2673
253
- moovio_sdk/models/components/institutionssearchresponse.py,sha256=4BY3npqAjDiPnUBOtxUktgRYUKTsRLKwTlI4TXCgbV0,1770
255
+ moovio_sdk/models/components/institutionssearchresponse.py,sha256=KrJtmffkECElApVfEIkzapecC5wYCXDaD4Tv1TSolHc,1959
254
256
  moovio_sdk/models/components/issuedcard.py,sha256=J6LJANU1CqtziTW_kw38R483nJTpICmNBAKq2emfc6c,3845
255
257
  moovio_sdk/models/components/issuedcardauthorization.py,sha256=CBs07Xy6Zj6SycF0dUFCA7yiqiH_pW9GzRJX5vkKQN4,2252
256
258
  moovio_sdk/models/components/issuedcardauthorizationevent.py,sha256=e_2iichL1mRfAPhLDYJZRSsynYlyTdNcBKBJ3FseXpY,1711
@@ -290,7 +292,7 @@ moovio_sdk/models/components/moneytransferpullfromcarderror.py,sha256=6ortfbwQ7s
290
292
  moovio_sdk/models/components/moneytransferpushtocard.py,sha256=zI1jIHnKvgHS-4Tx8JQCafo2pVzFqOwhoZ44wbnETvk,620
291
293
  moovio_sdk/models/components/moneytransferpushtocarderror.py,sha256=CM1zsR40Q6N9fSY8btNT-qwtJs-Rb_ICAqfwqOqc_2w,668
292
294
  moovio_sdk/models/components/monthlyplatformfee.py,sha256=WRGXX_vic_E9GXslX67Suk5_vZNV1Rh-4qVEUjHJ_oY,997
293
- moovio_sdk/models/components/monthlyvolumerange.py,sha256=MJiNFWWdtRCU5vfo0EX-sG_HGRJ2GbMYmIuIv3IFRMg,519
295
+ moovio_sdk/models/components/monthlyvolumerange.py,sha256=9kWVv_ThZFunbaf49CeG0cSkuokcXgH4-3VeaSe5VSY,507
294
296
  moovio_sdk/models/components/moovfee.py,sha256=uTeQEPAVBKGymCQgrJF2tbpQq9KnsMpiL6CJP3FYAdg,1518
295
297
  moovio_sdk/models/components/moovfeedetails.py,sha256=GovSQFW4mExyx_jW5VY8nIK0ezSebPnguLoH2xgzO0o,1853
296
298
  moovio_sdk/models/components/moovwalletpaymentmethod.py,sha256=_FmIK5xllEX3B6YjYdpvQj61n5Src8ZRmsWcmUAxfcs,978
@@ -705,7 +707,7 @@ moovio_sdk/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
705
707
  moovio_sdk/receipts.py,sha256=ZyEDLX-fnxLDf3QmKA6nfKtHEUxOaOwDLDYr6PAuNYo,19035
706
708
  moovio_sdk/representatives.py,sha256=3XG8tnLGs5pB8gDzMNgGCxiqcHp29vFSc12G7S-K3A8,60219
707
709
  moovio_sdk/scheduling.py,sha256=NcTSaPBa43YTmxS02qYy-o8ItA61gMLEk1HAV9MV2nc,60890
708
- moovio_sdk/sdk.py,sha256=IFvSKx2COVGbl_PX6_ZZhg_b6SDJP3bKOHS9KEL1Wlc,12650
710
+ moovio_sdk/sdk.py,sha256=DbvOI96OJ2_5QpcSF-qfL2C1fHbd4z8BCjl_mBXoxko,12692
709
711
  moovio_sdk/sdkconfiguration.py,sha256=vvZHznUDI2m3Z8ddTKDFUXkQu4mNBGX8Q9Zx7XpR3WY,1665
710
712
  moovio_sdk/statements.py,sha256=KWU3fFswizXN79gRJX-TWsk1F2V0Yp1DaeiWfozU6KU,21145
711
713
  moovio_sdk/support.py,sha256=fIs60WlHq2au9n4BBPLq1J3Vp8cdulisn-_5Z3r9vg0,50519
@@ -716,7 +718,7 @@ moovio_sdk/types/__init__.py,sha256=RArOwSgeeTIva6h-4ttjXwMUeCkz10nAFBL9D-QljI4,
716
718
  moovio_sdk/types/basemodel.py,sha256=L79WXvTECbSqaJzs8D3ud_KdIWkU7Cx2wbohDAktE9E,1127
717
719
  moovio_sdk/underwriting.py,sha256=gokG7XLfatp4Xq3NnlvoCS0EvNhJWedkBO1JJnnfmU4,37424
718
720
  moovio_sdk/utils/__init__.py,sha256=CAG0O76aEToGKXpT6Ft87Vd-iiQTh4XdBrQ37BVbsiM,5861
719
- moovio_sdk/utils/annotations.py,sha256=aR7mZG34FzgRdew7WZPYEu9QGBerpuKxCF4sek5Z_5Y,1699
721
+ moovio_sdk/utils/annotations.py,sha256=FvfvVTUj8TUclm4HbGgY5yi2Ap7EzGmu2UPFU4FwC1w,2755
720
722
  moovio_sdk/utils/datetimes.py,sha256=oppAA5e3V35pQov1-FNLKxAaNF1_XWi-bQtyjjql3H8,855
721
723
  moovio_sdk/utils/enums.py,sha256=REU6ydF8gsVL3xaeGX4sMNyiL3q5P9h29-f6Sa6luAE,2633
722
724
  moovio_sdk/utils/eventstreaming.py,sha256=SgFqMcUOYKlrTQ4gAp_dNcKLvDXukeiEMNU3DP8mXk8,6692
@@ -734,6 +736,6 @@ moovio_sdk/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
734
736
  moovio_sdk/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
735
737
  moovio_sdk/wallet_transactions.py,sha256=RmLqla-r3w-R2yiE6NFsOSWdmKFxDqCKAw5TZV0ooOs,23895
736
738
  moovio_sdk/wallets.py,sha256=mkjHXF-JJ6fdgWNTn-qQA938ejre_ILQuFh8F0Vi1LY,43246
737
- moovio_sdk-0.15.2.dist-info/METADATA,sha256=TJAkCQBh28LtFkZZrgOF35hVUxWmhoeXx7Wzici1oOE,114994
738
- moovio_sdk-0.15.2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
739
- moovio_sdk-0.15.2.dist-info/RECORD,,
739
+ moovio_sdk-0.16.1.dist-info/METADATA,sha256=pxB0E5kaDPo9h-3R01DrEdWGPJQTwVZ1-lK28_yRf5A,114995
740
+ moovio_sdk-0.16.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
741
+ moovio_sdk-0.16.1.dist-info/RECORD,,