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

Files changed (31) hide show
  1. moovio_sdk/_version.py +2 -2
  2. moovio_sdk/models/components/__init__.py +83 -0
  3. moovio_sdk/models/components/amountdecimalvalidationerror.py +18 -0
  4. moovio_sdk/models/components/assignproductimage.py +16 -0
  5. moovio_sdk/models/components/assignproductimagevalidationerror.py +15 -0
  6. moovio_sdk/models/components/createproductoption.py +45 -0
  7. moovio_sdk/models/components/createproductoptiongroup.py +52 -0
  8. moovio_sdk/models/components/feeproperties.py +7 -1
  9. moovio_sdk/models/components/partnerpricing.py +12 -6
  10. moovio_sdk/models/components/partnerpricingagreement.py +10 -4
  11. moovio_sdk/models/components/product.py +77 -0
  12. moovio_sdk/models/components/productimagemetadata.py +27 -0
  13. moovio_sdk/models/components/productoption.py +49 -0
  14. moovio_sdk/models/components/productoptiongroup.py +56 -0
  15. moovio_sdk/models/components/productoptiongroupvalidationerror.py +31 -0
  16. moovio_sdk/models/components/productoptionvalidationerror.py +30 -0
  17. moovio_sdk/models/components/productrequest.py +57 -0
  18. moovio_sdk/models/components/volumerange.py +37 -0
  19. moovio_sdk/models/errors/__init__.py +8 -0
  20. moovio_sdk/models/errors/productrequestvalidationerror.py +58 -0
  21. moovio_sdk/models/operations/__init__.py +100 -0
  22. moovio_sdk/models/operations/createproduct.py +78 -0
  23. moovio_sdk/models/operations/disableproduct.py +67 -0
  24. moovio_sdk/models/operations/getproduct.py +71 -0
  25. moovio_sdk/models/operations/listproducts.py +81 -0
  26. moovio_sdk/models/operations/updateproduct.py +85 -0
  27. moovio_sdk/products.py +1232 -0
  28. moovio_sdk/sdk.py +3 -0
  29. {moovio_sdk-0.17.1.dist-info → moovio_sdk-0.17.3.dist-info}/METADATA +56 -45
  30. {moovio_sdk-0.17.1.dist-info → moovio_sdk-0.17.3.dist-info}/RECORD +31 -11
  31. {moovio_sdk-0.17.1.dist-info → moovio_sdk-0.17.3.dist-info}/WHEEL +0 -0
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.17.1"
6
+ __version__: str = "0.17.3"
7
7
  __openapi_doc_version__: str = "latest"
8
8
  __gen_version__: str = "2.723.11"
9
- __user_agent__: str = "speakeasy-sdk/python 0.17.1 2.723.11 latest moovio_sdk"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.17.3 2.723.11 latest moovio_sdk"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -69,6 +69,10 @@ if TYPE_CHECKING:
69
69
  from .adjustment import Adjustment, AdjustmentTypedDict
70
70
  from .amount import Amount, AmountTypedDict
71
71
  from .amountdecimal import AmountDecimal, AmountDecimalTypedDict
72
+ from .amountdecimalvalidationerror import (
73
+ AmountDecimalValidationError,
74
+ AmountDecimalValidationErrorTypedDict,
75
+ )
72
76
  from .amountupdate import AmountUpdate, AmountUpdateTypedDict
73
77
  from .amountvalidationerror import (
74
78
  AmountValidationError,
@@ -87,6 +91,11 @@ if TYPE_CHECKING:
87
91
  )
88
92
  from .applepayresponse import ApplePayResponse, ApplePayResponseTypedDict
89
93
  from .applicationscope import ApplicationScope
94
+ from .assignproductimage import AssignProductImage, AssignProductImageTypedDict
95
+ from .assignproductimagevalidationerror import (
96
+ AssignProductImageValidationError,
97
+ AssignProductImageValidationErrorTypedDict,
98
+ )
90
99
  from .asynccreatedrefund import AsyncCreatedRefund, AsyncCreatedRefundTypedDict
91
100
  from .asynctransfer import AsyncTransfer, AsyncTransferTypedDict
92
101
  from .authorizeduser import AuthorizedUser, AuthorizedUserTypedDict
@@ -330,6 +339,11 @@ if TYPE_CHECKING:
330
339
  CreateIndividualProfileTypedDict,
331
340
  )
332
341
  from .createpaymentlink import CreatePaymentLink, CreatePaymentLinkTypedDict
342
+ from .createproductoption import CreateProductOption, CreateProductOptionTypedDict
343
+ from .createproductoptiongroup import (
344
+ CreateProductOptionGroup,
345
+ CreateProductOptionGroupTypedDict,
346
+ )
333
347
  from .createprofile import CreateProfile, CreateProfileTypedDict
334
348
  from .createprofileerror import CreateProfileError, CreateProfileErrorTypedDict
335
349
  from .createrefund import CreateRefund, CreateRefundTypedDict
@@ -745,6 +759,22 @@ if TYPE_CHECKING:
745
759
  from .plaidpayload import PlaidPayload, PlaidPayloadTypedDict
746
760
  from .platformfees import PlatformFees, PlatformFeesTypedDict
747
761
  from .primaryregulator import PrimaryRegulator
762
+ from .product import Product, ProductTypedDict
763
+ from .productimagemetadata import (
764
+ ProductImageMetadata,
765
+ ProductImageMetadataTypedDict,
766
+ )
767
+ from .productoption import ProductOption, ProductOptionTypedDict
768
+ from .productoptiongroup import ProductOptionGroup, ProductOptionGroupTypedDict
769
+ from .productoptiongroupvalidationerror import (
770
+ ProductOptionGroupValidationError,
771
+ ProductOptionGroupValidationErrorTypedDict,
772
+ )
773
+ from .productoptionvalidationerror import (
774
+ ProductOptionValidationError,
775
+ ProductOptionValidationErrorTypedDict,
776
+ )
777
+ from .productrequest import ProductRequest, ProductRequestTypedDict
748
778
  from .profile import Profile, ProfileTypedDict
749
779
  from .pullfromcardpaymentmethod import (
750
780
  PullFromCardPaymentMethod,
@@ -962,6 +992,7 @@ if TYPE_CHECKING:
962
992
  VolumeByCustomerTypeError,
963
993
  VolumeByCustomerTypeErrorTypedDict,
964
994
  )
995
+ from .volumerange import VolumeRange, VolumeRangeTypedDict
965
996
  from .volumesharebycustomertype import (
966
997
  VolumeShareByCustomerType,
967
998
  VolumeShareByCustomerTypeTypedDict,
@@ -1196,6 +1227,8 @@ __all__ = [
1196
1227
  "Amount",
1197
1228
  "AmountDecimal",
1198
1229
  "AmountDecimalTypedDict",
1230
+ "AmountDecimalValidationError",
1231
+ "AmountDecimalValidationErrorTypedDict",
1199
1232
  "AmountTypedDict",
1200
1233
  "AmountUpdate",
1201
1234
  "AmountUpdateTypedDict",
@@ -1213,6 +1246,10 @@ __all__ = [
1213
1246
  "ApplePayResponse",
1214
1247
  "ApplePayResponseTypedDict",
1215
1248
  "ApplicationScope",
1249
+ "AssignProductImage",
1250
+ "AssignProductImageTypedDict",
1251
+ "AssignProductImageValidationError",
1252
+ "AssignProductImageValidationErrorTypedDict",
1216
1253
  "AsyncCreatedRefund",
1217
1254
  "AsyncCreatedRefundTypedDict",
1218
1255
  "AsyncTransfer",
@@ -1408,6 +1445,10 @@ __all__ = [
1408
1445
  "CreateIndividualProfileTypedDict",
1409
1446
  "CreatePaymentLink",
1410
1447
  "CreatePaymentLinkTypedDict",
1448
+ "CreateProductOption",
1449
+ "CreateProductOptionGroup",
1450
+ "CreateProductOptionGroupTypedDict",
1451
+ "CreateProductOptionTypedDict",
1411
1452
  "CreateProfile",
1412
1453
  "CreateProfileError",
1413
1454
  "CreateProfileErrorTypedDict",
@@ -1761,6 +1802,20 @@ __all__ = [
1761
1802
  "PlatformFees",
1762
1803
  "PlatformFeesTypedDict",
1763
1804
  "PrimaryRegulator",
1805
+ "Product",
1806
+ "ProductImageMetadata",
1807
+ "ProductImageMetadataTypedDict",
1808
+ "ProductOption",
1809
+ "ProductOptionGroup",
1810
+ "ProductOptionGroupTypedDict",
1811
+ "ProductOptionGroupValidationError",
1812
+ "ProductOptionGroupValidationErrorTypedDict",
1813
+ "ProductOptionTypedDict",
1814
+ "ProductOptionValidationError",
1815
+ "ProductOptionValidationErrorTypedDict",
1816
+ "ProductRequest",
1817
+ "ProductRequestTypedDict",
1818
+ "ProductTypedDict",
1764
1819
  "Profile",
1765
1820
  "ProfileTypedDict",
1766
1821
  "PullFromCardPaymentMethod",
@@ -1988,6 +2043,8 @@ __all__ = [
1988
2043
  "VolumeByCustomerTypeError",
1989
2044
  "VolumeByCustomerTypeErrorTypedDict",
1990
2045
  "VolumeByCustomerTypeTypedDict",
2046
+ "VolumeRange",
2047
+ "VolumeRangeTypedDict",
1991
2048
  "VolumeShareByCustomerType",
1992
2049
  "VolumeShareByCustomerTypeError",
1993
2050
  "VolumeShareByCustomerTypeErrorTypedDict",
@@ -2150,6 +2207,8 @@ _dynamic_imports: dict[str, str] = {
2150
2207
  "AmountTypedDict": ".amount",
2151
2208
  "AmountDecimal": ".amountdecimal",
2152
2209
  "AmountDecimalTypedDict": ".amountdecimal",
2210
+ "AmountDecimalValidationError": ".amountdecimalvalidationerror",
2211
+ "AmountDecimalValidationErrorTypedDict": ".amountdecimalvalidationerror",
2153
2212
  "AmountUpdate": ".amountupdate",
2154
2213
  "AmountUpdateTypedDict": ".amountupdate",
2155
2214
  "AmountValidationError": ".amountvalidationerror",
@@ -2166,6 +2225,10 @@ _dynamic_imports: dict[str, str] = {
2166
2225
  "ApplePayResponse": ".applepayresponse",
2167
2226
  "ApplePayResponseTypedDict": ".applepayresponse",
2168
2227
  "ApplicationScope": ".applicationscope",
2228
+ "AssignProductImage": ".assignproductimage",
2229
+ "AssignProductImageTypedDict": ".assignproductimage",
2230
+ "AssignProductImageValidationError": ".assignproductimagevalidationerror",
2231
+ "AssignProductImageValidationErrorTypedDict": ".assignproductimagevalidationerror",
2169
2232
  "AsyncCreatedRefund": ".asynccreatedrefund",
2170
2233
  "AsyncCreatedRefundTypedDict": ".asynccreatedrefund",
2171
2234
  "AsyncTransfer": ".asynctransfer",
@@ -2365,6 +2428,10 @@ _dynamic_imports: dict[str, str] = {
2365
2428
  "CreateIndividualProfileTypedDict": ".createindividualprofile",
2366
2429
  "CreatePaymentLink": ".createpaymentlink",
2367
2430
  "CreatePaymentLinkTypedDict": ".createpaymentlink",
2431
+ "CreateProductOption": ".createproductoption",
2432
+ "CreateProductOptionTypedDict": ".createproductoption",
2433
+ "CreateProductOptionGroup": ".createproductoptiongroup",
2434
+ "CreateProductOptionGroupTypedDict": ".createproductoptiongroup",
2368
2435
  "CreateProfile": ".createprofile",
2369
2436
  "CreateProfileTypedDict": ".createprofile",
2370
2437
  "CreateProfileError": ".createprofileerror",
@@ -2719,6 +2786,20 @@ _dynamic_imports: dict[str, str] = {
2719
2786
  "PlatformFees": ".platformfees",
2720
2787
  "PlatformFeesTypedDict": ".platformfees",
2721
2788
  "PrimaryRegulator": ".primaryregulator",
2789
+ "Product": ".product",
2790
+ "ProductTypedDict": ".product",
2791
+ "ProductImageMetadata": ".productimagemetadata",
2792
+ "ProductImageMetadataTypedDict": ".productimagemetadata",
2793
+ "ProductOption": ".productoption",
2794
+ "ProductOptionTypedDict": ".productoption",
2795
+ "ProductOptionGroup": ".productoptiongroup",
2796
+ "ProductOptionGroupTypedDict": ".productoptiongroup",
2797
+ "ProductOptionGroupValidationError": ".productoptiongroupvalidationerror",
2798
+ "ProductOptionGroupValidationErrorTypedDict": ".productoptiongroupvalidationerror",
2799
+ "ProductOptionValidationError": ".productoptionvalidationerror",
2800
+ "ProductOptionValidationErrorTypedDict": ".productoptionvalidationerror",
2801
+ "ProductRequest": ".productrequest",
2802
+ "ProductRequestTypedDict": ".productrequest",
2722
2803
  "Profile": ".profile",
2723
2804
  "ProfileTypedDict": ".profile",
2724
2805
  "PullFromCardPaymentMethod": ".pullfromcardpaymentmethod",
@@ -2943,6 +3024,8 @@ _dynamic_imports: dict[str, str] = {
2943
3024
  "VolumeByCustomerTypeTypedDict": ".volumebycustomertype",
2944
3025
  "VolumeByCustomerTypeError": ".volumebycustomertypeerror",
2945
3026
  "VolumeByCustomerTypeErrorTypedDict": ".volumebycustomertypeerror",
3027
+ "VolumeRange": ".volumerange",
3028
+ "VolumeRangeTypedDict": ".volumerange",
2946
3029
  "VolumeShareByCustomerType": ".volumesharebycustomertype",
2947
3030
  "VolumeShareByCustomerTypeTypedDict": ".volumesharebycustomertype",
2948
3031
  "VolumeShareByCustomerTypeError": ".volumesharebycustomertypeerror",
@@ -0,0 +1,18 @@
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 import Optional
7
+ from typing_extensions import Annotated, NotRequired, TypedDict
8
+
9
+
10
+ class AmountDecimalValidationErrorTypedDict(TypedDict):
11
+ currency: NotRequired[str]
12
+ value_decimal: NotRequired[str]
13
+
14
+
15
+ class AmountDecimalValidationError(BaseModel):
16
+ currency: Optional[str] = None
17
+
18
+ value_decimal: Annotated[Optional[str], pydantic.Field(alias="valueDecimal")] = None
@@ -0,0 +1,16 @@
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 AssignProductImageTypedDict(TypedDict):
10
+ image_id: str
11
+ r"""Unique identifier for a product or product option image resource."""
12
+
13
+
14
+ class AssignProductImage(BaseModel):
15
+ image_id: Annotated[str, pydantic.Field(alias="imageID")]
16
+ r"""Unique identifier for a product or product option image resource."""
@@ -0,0 +1,15 @@
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 import Optional
7
+ from typing_extensions import Annotated, NotRequired, TypedDict
8
+
9
+
10
+ class AssignProductImageValidationErrorTypedDict(TypedDict):
11
+ image_id: NotRequired[str]
12
+
13
+
14
+ class AssignProductImageValidationError(BaseModel):
15
+ image_id: Annotated[Optional[str], pydantic.Field(alias="imageID")] = None
@@ -0,0 +1,45 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .assignproductimage import AssignProductImage, AssignProductImageTypedDict
5
+ from moovio_sdk.types import BaseModel
6
+ import pydantic
7
+ from typing import List, Optional
8
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
+
10
+
11
+ class CreateProductOptionTypedDict(TypedDict):
12
+ name: str
13
+ r"""The display name of a product option."""
14
+ description: NotRequired[str]
15
+ r"""A detailed description of the option.
16
+
17
+ - Must be valid UTF-8 text
18
+ - Supports Markdown for formatting
19
+ - HTML is not permitted and will be rejected
20
+ """
21
+ price_modifier: NotRequired[str]
22
+ r"""The adjustment applied to a product's base price by this option. Can be negative, positive, or zero."""
23
+ images: NotRequired[List[AssignProductImageTypedDict]]
24
+ r"""Assign previously uploaded images to a product or option."""
25
+
26
+
27
+ class CreateProductOption(BaseModel):
28
+ name: str
29
+ r"""The display name of a product option."""
30
+
31
+ description: Optional[str] = None
32
+ r"""A detailed description of the option.
33
+
34
+ - Must be valid UTF-8 text
35
+ - Supports Markdown for formatting
36
+ - HTML is not permitted and will be rejected
37
+ """
38
+
39
+ price_modifier: Annotated[Optional[str], pydantic.Field(alias="priceModifier")] = (
40
+ None
41
+ )
42
+ r"""The adjustment applied to a product's base price by this option. Can be negative, positive, or zero."""
43
+
44
+ images: Optional[List[AssignProductImage]] = None
45
+ r"""Assign previously uploaded images to a product or option."""
@@ -0,0 +1,52 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .createproductoption import CreateProductOption, CreateProductOptionTypedDict
5
+ from moovio_sdk.types import BaseModel
6
+ import pydantic
7
+ from typing import List, Optional
8
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
+
10
+
11
+ class CreateProductOptionGroupTypedDict(TypedDict):
12
+ name: str
13
+ min_select: int
14
+ r"""The minimum number of options that must be selected from this group.
15
+
16
+ A value of 0 indicates that no selection from this group is required.
17
+ """
18
+ max_select: int
19
+ r"""The maximum number of options that can be selected from this group."""
20
+ options: List[CreateProductOptionTypedDict]
21
+ r"""The options available within this group."""
22
+ description: NotRequired[str]
23
+ r"""A detailed description of the option group.
24
+
25
+ - Must be valid UTF-8 text
26
+ - Supports Markdown for formatting
27
+ - HTML is not permitted and will be rejected
28
+ """
29
+
30
+
31
+ class CreateProductOptionGroup(BaseModel):
32
+ name: str
33
+
34
+ min_select: Annotated[int, pydantic.Field(alias="minSelect")]
35
+ r"""The minimum number of options that must be selected from this group.
36
+
37
+ A value of 0 indicates that no selection from this group is required.
38
+ """
39
+
40
+ max_select: Annotated[int, pydantic.Field(alias="maxSelect")]
41
+ r"""The maximum number of options that can be selected from this group."""
42
+
43
+ options: List[CreateProductOption]
44
+ r"""The options available within this group."""
45
+
46
+ description: Optional[str] = None
47
+ r"""A detailed description of the option group.
48
+
49
+ - Must be valid UTF-8 text
50
+ - Supports Markdown for formatting
51
+ - HTML is not permitted and will be rejected
52
+ """
@@ -2,15 +2,18 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from .amountdecimal import AmountDecimal, AmountDecimalTypedDict
5
+ from .volumerange import VolumeRange, VolumeRangeTypedDict
5
6
  from moovio_sdk.types import BaseModel
6
7
  import pydantic
7
- from typing import Optional
8
+ from typing import List, Optional
8
9
  from typing_extensions import Annotated, NotRequired, TypedDict
9
10
 
10
11
 
11
12
  class FeePropertiesTypedDict(TypedDict):
12
13
  r"""Defines the specific parameters used for fee calculation."""
13
14
 
15
+ volume_ranges: List[VolumeRangeTypedDict]
16
+ r"""Defines the volume ranges for tiered pricing models."""
14
17
  fixed_amount: NotRequired[AmountDecimalTypedDict]
15
18
  r"""A fixed fee that is applied to the amount of each transaction in the `fixed` and `blended` fee models."""
16
19
  variable_rate: NotRequired[str]
@@ -27,6 +30,9 @@ class FeePropertiesTypedDict(TypedDict):
27
30
  class FeeProperties(BaseModel):
28
31
  r"""Defines the specific parameters used for fee calculation."""
29
32
 
33
+ volume_ranges: Annotated[List[VolumeRange], pydantic.Field(alias="volumeRanges")]
34
+ r"""Defines the volume ranges for tiered pricing models."""
35
+
30
36
  fixed_amount: Annotated[
31
37
  Optional[AmountDecimal], pydantic.Field(alias="fixedAmount")
32
38
  ] = None
@@ -15,9 +15,12 @@ from typing_extensions import Annotated, NotRequired, TypedDict
15
15
  class PartnerPricingTypedDict(TypedDict):
16
16
  plan_id: str
17
17
  name: str
18
- r"""The name of the fee plan."""
19
- revenue_share: int
20
- r"""The integer percentage value of the revenue split for partner."""
18
+ r"""The name of the partner pricing plan."""
19
+ revenue_share: str
20
+ r"""The decimal-formatted numerical string of the revenue split for partner.
21
+
22
+ For example, 2.25% is '2.25'.
23
+ """
21
24
  card_acquiring_model: CardAcquiringModel
22
25
  r"""Specifies the card processing pricing model"""
23
26
  billable_fees: List[BillableFeeTypedDict]
@@ -34,10 +37,13 @@ class PartnerPricing(BaseModel):
34
37
  plan_id: Annotated[str, pydantic.Field(alias="planID")]
35
38
 
36
39
  name: str
37
- r"""The name of the fee plan."""
40
+ r"""The name of the partner pricing plan."""
41
+
42
+ revenue_share: Annotated[str, pydantic.Field(alias="revenueShare")]
43
+ r"""The decimal-formatted numerical string of the revenue split for partner.
38
44
 
39
- revenue_share: Annotated[int, pydantic.Field(alias="revenueShare")]
40
- r"""The integer percentage value of the revenue split for partner."""
45
+ For example, 2.25% is '2.25'.
46
+ """
41
47
 
42
48
  card_acquiring_model: Annotated[
43
49
  CardAcquiringModel, pydantic.Field(alias="cardAcquiringModel")
@@ -27,8 +27,11 @@ class PartnerPricingAgreementTypedDict(TypedDict):
27
27
  r"""The minimum spending amount that must be met in the billing period. If actual usage is below the minimum amount, account is charged the difference."""
28
28
  monthly_platform_fee: MonthlyPlatformFeeTypedDict
29
29
  r"""Fixed recurring amount paid in the billing period regardless of usage."""
30
- revenue_share: int
31
- r"""The integer percentage value of the revenue split for partner."""
30
+ revenue_share: str
31
+ r"""The decimal-formatted numerical string of the revenue split for partner.
32
+
33
+ For example, 2.25% is '2.25'.
34
+ """
32
35
  account_id: NotRequired[str]
33
36
  description: NotRequired[str]
34
37
  r"""The description of the agreement."""
@@ -63,8 +66,11 @@ class PartnerPricingAgreement(BaseModel):
63
66
  ]
64
67
  r"""Fixed recurring amount paid in the billing period regardless of usage."""
65
68
 
66
- revenue_share: Annotated[int, pydantic.Field(alias="revenueShare")]
67
- r"""The integer percentage value of the revenue split for partner."""
69
+ revenue_share: Annotated[str, pydantic.Field(alias="revenueShare")]
70
+ r"""The decimal-formatted numerical string of the revenue split for partner.
71
+
72
+ For example, 2.25% is '2.25'.
73
+ """
68
74
 
69
75
  account_id: Annotated[Optional[str], pydantic.Field(alias="accountID")] = None
70
76
 
@@ -0,0 +1,77 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .amountdecimal import AmountDecimal, AmountDecimalTypedDict
5
+ from .productimagemetadata import ProductImageMetadata, ProductImageMetadataTypedDict
6
+ from .productoptiongroup import ProductOptionGroup, ProductOptionGroupTypedDict
7
+ from datetime import datetime
8
+ from moovio_sdk.types import BaseModel
9
+ import pydantic
10
+ from typing import List, Optional
11
+ from typing_extensions import Annotated, NotRequired, TypedDict
12
+
13
+
14
+ class ProductTypedDict(TypedDict):
15
+ r"""A product available for purchase, which may have optional configuration options."""
16
+
17
+ product_id: str
18
+ r"""Unique identifier for a product."""
19
+ title: str
20
+ base_price: AmountDecimalTypedDict
21
+ r"""A product's starting price, before applying modifiers."""
22
+ created_on: datetime
23
+ r"""The date and time when the product was added."""
24
+ updated_on: datetime
25
+ r"""The date and time when the product was last updated."""
26
+ description: NotRequired[str]
27
+ r"""A detailed description of the product.
28
+
29
+ - Must be valid UTF-8 text
30
+ - Supports Markdown for formatting
31
+ - HTML is not permitted and will be rejected
32
+ """
33
+ option_groups: NotRequired[List[ProductOptionGroupTypedDict]]
34
+ r"""Optional configuration options for a product, such as size or color."""
35
+ images: NotRequired[List[ProductImageMetadataTypedDict]]
36
+ r"""Optional images associated with the product."""
37
+ disabled_on: NotRequired[datetime]
38
+ r"""The date and time when the product was disabled."""
39
+
40
+
41
+ class Product(BaseModel):
42
+ r"""A product available for purchase, which may have optional configuration options."""
43
+
44
+ product_id: Annotated[str, pydantic.Field(alias="productID")]
45
+ r"""Unique identifier for a product."""
46
+
47
+ title: str
48
+
49
+ base_price: Annotated[AmountDecimal, pydantic.Field(alias="basePrice")]
50
+ r"""A product's starting price, before applying modifiers."""
51
+
52
+ created_on: Annotated[datetime, pydantic.Field(alias="createdOn")]
53
+ r"""The date and time when the product was added."""
54
+
55
+ updated_on: Annotated[datetime, pydantic.Field(alias="updatedOn")]
56
+ r"""The date and time when the product was last updated."""
57
+
58
+ description: Optional[str] = None
59
+ r"""A detailed description of the product.
60
+
61
+ - Must be valid UTF-8 text
62
+ - Supports Markdown for formatting
63
+ - HTML is not permitted and will be rejected
64
+ """
65
+
66
+ option_groups: Annotated[
67
+ Optional[List[ProductOptionGroup]], pydantic.Field(alias="optionGroups")
68
+ ] = None
69
+ r"""Optional configuration options for a product, such as size or color."""
70
+
71
+ images: Optional[List[ProductImageMetadata]] = None
72
+ r"""Optional images associated with the product."""
73
+
74
+ disabled_on: Annotated[Optional[datetime], pydantic.Field(alias="disabledOn")] = (
75
+ None
76
+ )
77
+ r"""The date and time when the product was disabled."""
@@ -0,0 +1,27 @@
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 import Optional
7
+ from typing_extensions import Annotated, NotRequired, TypedDict
8
+
9
+
10
+ class ProductImageMetadataTypedDict(TypedDict):
11
+ image_id: str
12
+ r"""Unique identifier for a product or product option image resource."""
13
+ link: str
14
+ r"""The image's public URL."""
15
+ alt_text: NotRequired[str]
16
+ r"""Alternative text for the image."""
17
+
18
+
19
+ class ProductImageMetadata(BaseModel):
20
+ image_id: Annotated[str, pydantic.Field(alias="imageID")]
21
+ r"""Unique identifier for a product or product option image resource."""
22
+
23
+ link: str
24
+ r"""The image's public URL."""
25
+
26
+ alt_text: Annotated[Optional[str], pydantic.Field(alias="altText")] = None
27
+ r"""Alternative text for the image."""
@@ -0,0 +1,49 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .productimagemetadata import ProductImageMetadata, ProductImageMetadataTypedDict
5
+ from moovio_sdk.types import BaseModel
6
+ import pydantic
7
+ from typing import List, Optional
8
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
+
10
+
11
+ class ProductOptionTypedDict(TypedDict):
12
+ r"""Represents a single product option within a group."""
13
+
14
+ name: str
15
+ r"""The display name of a product option."""
16
+ description: NotRequired[str]
17
+ r"""A detailed description of the option.
18
+
19
+ - Must be valid UTF-8 text
20
+ - Supports Markdown for formatting
21
+ - HTML is not permitted and will be rejected
22
+ """
23
+ price_modifier: NotRequired[str]
24
+ r"""The adjustment applied to a product's base price by this option. Can be negative, positive, or zero."""
25
+ images: NotRequired[List[ProductImageMetadataTypedDict]]
26
+ r"""The images associated with this option."""
27
+
28
+
29
+ class ProductOption(BaseModel):
30
+ r"""Represents a single product option within a group."""
31
+
32
+ name: str
33
+ r"""The display name of a product option."""
34
+
35
+ description: Optional[str] = None
36
+ r"""A detailed description of the option.
37
+
38
+ - Must be valid UTF-8 text
39
+ - Supports Markdown for formatting
40
+ - HTML is not permitted and will be rejected
41
+ """
42
+
43
+ price_modifier: Annotated[Optional[str], pydantic.Field(alias="priceModifier")] = (
44
+ None
45
+ )
46
+ r"""The adjustment applied to a product's base price by this option. Can be negative, positive, or zero."""
47
+
48
+ images: Optional[List[ProductImageMetadata]] = None
49
+ r"""The images associated with this option."""
@@ -0,0 +1,56 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .productoption import ProductOption, ProductOptionTypedDict
5
+ from moovio_sdk.types import BaseModel
6
+ import pydantic
7
+ from typing import List, Optional
8
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
+
10
+
11
+ class ProductOptionGroupTypedDict(TypedDict):
12
+ r"""Represents a group of product configuration options, such as size or color."""
13
+
14
+ name: str
15
+ min_select: int
16
+ r"""The minimum number of options that must be selected from this group.
17
+
18
+ A value of 0 indicates that no selection from this group is required.
19
+ """
20
+ max_select: int
21
+ r"""The maximum number of options that can be selected from this group."""
22
+ options: List[ProductOptionTypedDict]
23
+ r"""The options available within this group."""
24
+ description: NotRequired[str]
25
+ r"""A detailed description of the option group.
26
+
27
+ - Must be valid UTF-8 text
28
+ - Supports Markdown for formatting
29
+ - HTML is not permitted and will be rejected
30
+ """
31
+
32
+
33
+ class ProductOptionGroup(BaseModel):
34
+ r"""Represents a group of product configuration options, such as size or color."""
35
+
36
+ name: str
37
+
38
+ min_select: Annotated[int, pydantic.Field(alias="minSelect")]
39
+ r"""The minimum number of options that must be selected from this group.
40
+
41
+ A value of 0 indicates that no selection from this group is required.
42
+ """
43
+
44
+ max_select: Annotated[int, pydantic.Field(alias="maxSelect")]
45
+ r"""The maximum number of options that can be selected from this group."""
46
+
47
+ options: List[ProductOption]
48
+ r"""The options available within this group."""
49
+
50
+ description: Optional[str] = None
51
+ r"""A detailed description of the option group.
52
+
53
+ - Must be valid UTF-8 text
54
+ - Supports Markdown for formatting
55
+ - HTML is not permitted and will be rejected
56
+ """