ordercloud-python 2026.4.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.
Files changed (114) hide show
  1. ordercloud/__init__.py +37 -0
  2. ordercloud/auth.py +136 -0
  3. ordercloud/client.py +211 -0
  4. ordercloud/config.py +42 -0
  5. ordercloud/errors.py +47 -0
  6. ordercloud/http.py +218 -0
  7. ordercloud/middleware.py +66 -0
  8. ordercloud/models/__init__.py +271 -0
  9. ordercloud/models/address.py +47 -0
  10. ordercloud/models/api_client.py +116 -0
  11. ordercloud/models/approval.py +73 -0
  12. ordercloud/models/assignments.py +402 -0
  13. ordercloud/models/auth_models.py +114 -0
  14. ordercloud/models/bundle.py +31 -0
  15. ordercloud/models/buyer.py +271 -0
  16. ordercloud/models/catalog.py +33 -0
  17. ordercloud/models/category.py +35 -0
  18. ordercloud/models/cost_center.py +27 -0
  19. ordercloud/models/credit_card.py +35 -0
  20. ordercloud/models/delivery.py +277 -0
  21. ordercloud/models/discount.py +63 -0
  22. ordercloud/models/integration.py +76 -0
  23. ordercloud/models/inventory_record.py +53 -0
  24. ordercloud/models/line_item.py +95 -0
  25. ordercloud/models/line_item_types.py +89 -0
  26. ordercloud/models/message_sender.py +80 -0
  27. ordercloud/models/misc.py +280 -0
  28. ordercloud/models/open_id_connect.py +47 -0
  29. ordercloud/models/order.py +477 -0
  30. ordercloud/models/order_return.py +92 -0
  31. ordercloud/models/payment.py +77 -0
  32. ordercloud/models/price_schedule.py +76 -0
  33. ordercloud/models/product.py +227 -0
  34. ordercloud/models/product_collection.py +186 -0
  35. ordercloud/models/promotion.py +297 -0
  36. ordercloud/models/security.py +89 -0
  37. ordercloud/models/shared.py +131 -0
  38. ordercloud/models/shipment.py +150 -0
  39. ordercloud/models/spec.py +67 -0
  40. ordercloud/models/spending_account.py +33 -0
  41. ordercloud/models/subscription.py +125 -0
  42. ordercloud/models/supplier.py +43 -0
  43. ordercloud/models/sync.py +172 -0
  44. ordercloud/models/user.py +207 -0
  45. ordercloud/models/user_group.py +27 -0
  46. ordercloud/models/webhook.py +58 -0
  47. ordercloud/py.typed +0 -0
  48. ordercloud/resources/__init__.py +65 -0
  49. ordercloud/resources/addresses.py +228 -0
  50. ordercloud/resources/admin_addresses.py +128 -0
  51. ordercloud/resources/admin_user_groups.py +185 -0
  52. ordercloud/resources/admin_users.py +150 -0
  53. ordercloud/resources/api_clients.py +308 -0
  54. ordercloud/resources/approval_rules.py +144 -0
  55. ordercloud/resources/base.py +145 -0
  56. ordercloud/resources/bundle_line_items.py +59 -0
  57. ordercloud/resources/bundle_subscription_items.py +54 -0
  58. ordercloud/resources/bundles.py +278 -0
  59. ordercloud/resources/buyer_groups.py +128 -0
  60. ordercloud/resources/buyers.py +164 -0
  61. ordercloud/resources/cart.py +613 -0
  62. ordercloud/resources/catalogs.py +311 -0
  63. ordercloud/resources/categories.py +392 -0
  64. ordercloud/resources/cost_centers.py +222 -0
  65. ordercloud/resources/credit_cards.py +227 -0
  66. ordercloud/resources/delivery_configurations.py +132 -0
  67. ordercloud/resources/discounts.py +201 -0
  68. ordercloud/resources/entity_syncs.py +534 -0
  69. ordercloud/resources/error_configs.py +71 -0
  70. ordercloud/resources/forgotten_credentials.py +74 -0
  71. ordercloud/resources/group_orders.py +28 -0
  72. ordercloud/resources/impersonation_configs.py +132 -0
  73. ordercloud/resources/incrementors.py +128 -0
  74. ordercloud/resources/integration_events.py +203 -0
  75. ordercloud/resources/inventory_integrations.py +65 -0
  76. ordercloud/resources/inventory_records.py +484 -0
  77. ordercloud/resources/line_items.py +262 -0
  78. ordercloud/resources/locales.py +203 -0
  79. ordercloud/resources/me.py +1882 -0
  80. ordercloud/resources/message_senders.py +261 -0
  81. ordercloud/resources/open_id_connects.py +128 -0
  82. ordercloud/resources/order_returns.py +306 -0
  83. ordercloud/resources/order_syncs.py +65 -0
  84. ordercloud/resources/orders.py +689 -0
  85. ordercloud/resources/payments.py +176 -0
  86. ordercloud/resources/price_schedules.py +164 -0
  87. ordercloud/resources/product_collections.py +116 -0
  88. ordercloud/resources/product_facets.py +128 -0
  89. ordercloud/resources/product_syncs.py +76 -0
  90. ordercloud/resources/products.py +454 -0
  91. ordercloud/resources/promotion_integrations.py +65 -0
  92. ordercloud/resources/promotions.py +203 -0
  93. ordercloud/resources/security_profiles.py +222 -0
  94. ordercloud/resources/seller_approval_rules.py +128 -0
  95. ordercloud/resources/shipments.py +256 -0
  96. ordercloud/resources/specs.py +313 -0
  97. ordercloud/resources/spending_accounts.py +227 -0
  98. ordercloud/resources/subscription_integrations.py +65 -0
  99. ordercloud/resources/subscription_items.py +146 -0
  100. ordercloud/resources/subscriptions.py +128 -0
  101. ordercloud/resources/supplier_addresses.py +144 -0
  102. ordercloud/resources/supplier_user_groups.py +210 -0
  103. ordercloud/resources/supplier_users.py +170 -0
  104. ordercloud/resources/suppliers.py +190 -0
  105. ordercloud/resources/tracking_events.py +130 -0
  106. ordercloud/resources/user_groups.py +210 -0
  107. ordercloud/resources/users.py +254 -0
  108. ordercloud/resources/webhooks.py +128 -0
  109. ordercloud/resources/xp_indices.py +77 -0
  110. ordercloud/sync_client.py +170 -0
  111. ordercloud_python-2026.4.1.dist-info/METADATA +552 -0
  112. ordercloud_python-2026.4.1.dist-info/RECORD +114 -0
  113. ordercloud_python-2026.4.1.dist-info/WHEEL +4 -0
  114. ordercloud_python-2026.4.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,76 @@
1
+ # GENERATED by tools/codegen — DO NOT EDIT
2
+ # Source: ordercloud-openapi-v3.json
3
+ """OrderCloud PriceMarkupType, PriceBreak, PriceSchedule models."""
4
+
5
+ from __future__ import annotations
6
+ from typing import Generic, Optional
7
+ from pydantic import Field
8
+
9
+ from .shared import OrderCloudEnum, OrderCloudModel, XP
10
+
11
+ __all__ = ["PriceMarkupType", "PriceBreak", "PriceSchedule"]
12
+
13
+
14
+ class PriceMarkupType(OrderCloudEnum):
15
+ """"""
16
+
17
+ NoMarkup = "NoMarkup"
18
+ AmountPerQuantity = "AmountPerQuantity"
19
+ AmountTotal = "AmountTotal"
20
+ Percentage = "Percentage"
21
+
22
+
23
+ class PriceBreak(OrderCloudModel):
24
+ """An OrderCloud PriceBreak.
25
+
26
+ Attributes:
27
+ quantity: Most commonly 1, except when offering tiered/bulk pricing.
28
+ price: Price per unit.
29
+ sale_price: Sale Price per unit. If the current date/time is within the PriceSchedule SaleStart and SaleEnd, this SalePrice will be used.
30
+ subscription_price: Subscription Price per unit. If set, this price is used when a subscription order is created.
31
+ bundle_price: Bundle Price per unit. If set, this price is used when an item being added to an order is part of a bundle.
32
+ """
33
+
34
+ quantity: Optional[int] = Field(None, alias="Quantity")
35
+ price: Optional[float] = Field(None, alias="Price")
36
+ sale_price: Optional[float] = Field(None, alias="SalePrice")
37
+ subscription_price: Optional[float] = Field(None, alias="SubscriptionPrice")
38
+ bundle_price: Optional[float] = Field(None, alias="BundlePrice")
39
+
40
+
41
+ class PriceSchedule(OrderCloudModel, Generic[XP]):
42
+ """An OrderCloud PriceSchedule.
43
+
44
+ Attributes:
45
+ price_breaks:
46
+ owner_id: ID of the organization that owns the PriceSchedule. Only the marketplace owner can override the OwnerID on create.
47
+ id:
48
+ name:
49
+ apply_tax: For reference only for calculating tax, does not influence any OrderCloud behavior.
50
+ apply_shipping: For reference only for calculating shipping cost, does not influence any OrderCloud behavior.
51
+ min_quantity: The minimum line item Quantity when UseCumulativeQuantity is false.
52
+ max_quantity: The maximum line item Quantity when UseCumulativeQuantity is false.
53
+ use_cumulative_quantity: If true, line item quantities will be aggregated by productID when determining which price break applies, and when Min/Max quantities are met. Else, each line item is treated separately.
54
+ restricted_quantity: If true, this product can only be ordered in quantities that exactly match one of the price breaks on this schedule.
55
+ currency: We recommend using ISO-4217 currency codes for compatibility with tax and payment processors.
56
+ sale_start: Starting date/time for PriceBreak.SalePrice to be used as the price for the LineItem. Requires that the PriceBreak.SalePrice value is set.
57
+ sale_end: Ending date/time for PriceBreak.SalePrice to be used as the price for the LineItem. Requires that the PriceBreak.SalePrice value is set.
58
+ is_on_sale: True when at least one PriceBreak has a SalePrice defined, and the current time is between the SaleStart and SaleEnd date. (read-only)
59
+ xp:
60
+ """
61
+
62
+ price_breaks: Optional[list[PriceBreak]] = Field(None, alias="PriceBreaks")
63
+ owner_id: Optional[str] = Field(None, alias="OwnerID")
64
+ id: Optional[str] = Field(None, alias="ID")
65
+ name: Optional[str] = Field(None, alias="Name")
66
+ apply_tax: Optional[bool] = Field(None, alias="ApplyTax")
67
+ apply_shipping: Optional[bool] = Field(None, alias="ApplyShipping")
68
+ min_quantity: int = Field(1, alias="MinQuantity")
69
+ max_quantity: Optional[int] = Field(None, alias="MaxQuantity")
70
+ use_cumulative_quantity: Optional[bool] = Field(None, alias="UseCumulativeQuantity")
71
+ restricted_quantity: Optional[bool] = Field(None, alias="RestrictedQuantity")
72
+ currency: Optional[str] = Field(None, alias="Currency")
73
+ sale_start: Optional[str] = Field(None, alias="SaleStart")
74
+ sale_end: Optional[str] = Field(None, alias="SaleEnd")
75
+ is_on_sale: Optional[bool] = Field(None, alias="IsOnSale")
76
+ xp: Optional[XP] = Field(None, alias="xp")
@@ -0,0 +1,227 @@
1
+ # GENERATED by tools/codegen — DO NOT EDIT
2
+ # Source: ordercloud-openapi-v3.json
3
+ """OrderCloud Inventory and related models."""
4
+
5
+ from __future__ import annotations
6
+ from typing import Generic, Optional
7
+ from pydantic import Field
8
+
9
+ from .shared import OrderCloudModel, XP
10
+ from .price_schedule import PriceMarkupType
11
+
12
+ __all__ = [
13
+ "Inventory",
14
+ "VariantInventory",
15
+ "VariantSpec",
16
+ "VariantOverrides",
17
+ "Variant",
18
+ "AdHocProduct",
19
+ "ProductSupplier",
20
+ "Product",
21
+ ]
22
+ _PriceMarkupType = PriceMarkupType
23
+
24
+
25
+ class Inventory(OrderCloudModel):
26
+ """An OrderCloud Inventory.
27
+
28
+ Attributes:
29
+ enabled: If true, inventory will be tracked and enforced.
30
+ notification_point:
31
+ variant_level_tracking: If true, QuantityAvailable will be determined at the variant level.
32
+ order_can_exceed: If true, a user can create line items and place orders for the product even if there is insufficient QuantityAvailable.
33
+ quantity_available: Automatically decrements on order submit. If you utilize inventory records either at the product or variant level, this property becomes readonly, and is derived from the sum of all QuantityAvailable of each InventoryRecord. If VariantLevelTracking is enabled, this is the sum of all variant quantities.
34
+ last_updated: (read-only)
35
+ """
36
+
37
+ enabled: Optional[bool] = Field(None, alias="Enabled")
38
+ notification_point: Optional[int] = Field(None, alias="NotificationPoint")
39
+ variant_level_tracking: Optional[bool] = Field(None, alias="VariantLevelTracking")
40
+ order_can_exceed: Optional[bool] = Field(None, alias="OrderCanExceed")
41
+ quantity_available: Optional[int] = Field(None, alias="QuantityAvailable")
42
+ last_updated: Optional[str] = Field(None, alias="LastUpdated")
43
+
44
+
45
+ class VariantInventory(OrderCloudModel):
46
+ """An OrderCloud VariantInventory.
47
+
48
+ Attributes:
49
+ quantity_available:
50
+ notification_point:
51
+ last_updated: (read-only)
52
+ """
53
+
54
+ quantity_available: Optional[int] = Field(None, alias="QuantityAvailable")
55
+ notification_point: Optional[int] = Field(None, alias="NotificationPoint")
56
+ last_updated: Optional[str] = Field(None, alias="LastUpdated")
57
+
58
+
59
+ class VariantSpec(OrderCloudModel):
60
+ """An OrderCloud VariantSpec.
61
+
62
+ Attributes:
63
+ spec_id:
64
+ name: (read-only)
65
+ option_id:
66
+ value:
67
+ price_markup_type:
68
+ price_markup:
69
+ """
70
+
71
+ spec_id: Optional[str] = Field(None, alias="SpecID")
72
+ name: Optional[str] = Field(None, alias="Name")
73
+ option_id: Optional[str] = Field(None, alias="OptionID")
74
+ value: Optional[str] = Field(None, alias="Value")
75
+ price_markup_type: Optional[_PriceMarkupType] = Field(None, alias="PriceMarkupType")
76
+ price_markup: Optional[float] = Field(None, alias="PriceMarkup")
77
+
78
+
79
+ class VariantOverrides(OrderCloudModel):
80
+ """An OrderCloud VariantOverrides.
81
+
82
+ Attributes:
83
+ active: Overrides the Active value inherited from the product when generating variants.
84
+ """
85
+
86
+ active: bool = Field(True, alias="Active")
87
+
88
+
89
+ class Variant(OrderCloudModel, Generic[XP]):
90
+ """An OrderCloud Variant.
91
+
92
+ Attributes:
93
+ id:
94
+ name:
95
+ description:
96
+ active: If false, variant is not visible or purchasable from a buyer's perspective.
97
+ ship_weight:
98
+ ship_height:
99
+ ship_width:
100
+ ship_length:
101
+ inventory:
102
+ specs: (read-only)
103
+ xp:
104
+ """
105
+
106
+ id: Optional[str] = Field(None, alias="ID")
107
+ name: Optional[str] = Field(None, alias="Name")
108
+ description: Optional[str] = Field(None, alias="Description")
109
+ active: Optional[bool] = Field(None, alias="Active")
110
+ ship_weight: Optional[float] = Field(None, alias="ShipWeight")
111
+ ship_height: Optional[float] = Field(None, alias="ShipHeight")
112
+ ship_width: Optional[float] = Field(None, alias="ShipWidth")
113
+ ship_length: Optional[float] = Field(None, alias="ShipLength")
114
+ inventory: Optional[VariantInventory] = Field(None, alias="Inventory")
115
+ specs: Optional[list[VariantSpec]] = Field(None, alias="Specs")
116
+ xp: Optional[XP] = Field(None, alias="xp")
117
+
118
+
119
+ class AdHocProduct(OrderCloudModel, Generic[XP]):
120
+ """An OrderCloud AdHocProduct.
121
+
122
+ Attributes:
123
+ id:
124
+ name:
125
+ description:
126
+ quantity_multiplier: Informational only, does not influence any OrderCloud behavior. Used to indicate an amount per Quantity.
127
+ ship_weight:
128
+ ship_height:
129
+ ship_width:
130
+ ship_length:
131
+ default_supplier_id: Used for forwarding orders to suppliers.
132
+ returnable:
133
+ xp:
134
+ """
135
+
136
+ id: Optional[str] = Field(None, alias="ID")
137
+ name: Optional[str] = Field(None, alias="Name")
138
+ description: Optional[str] = Field(None, alias="Description")
139
+ quantity_multiplier: int = Field(1, alias="QuantityMultiplier")
140
+ ship_weight: Optional[float] = Field(None, alias="ShipWeight")
141
+ ship_height: Optional[float] = Field(None, alias="ShipHeight")
142
+ ship_width: Optional[float] = Field(None, alias="ShipWidth")
143
+ ship_length: Optional[float] = Field(None, alias="ShipLength")
144
+ default_supplier_id: Optional[str] = Field(None, alias="DefaultSupplierID")
145
+ returnable: Optional[bool] = Field(None, alias="Returnable")
146
+ xp: Optional[XP] = Field(None, alias="xp")
147
+
148
+
149
+ class ProductSupplier(OrderCloudModel, Generic[XP]):
150
+ """An OrderCloud ProductSupplier.
151
+
152
+ Attributes:
153
+ default_price_schedule_id:
154
+ id:
155
+ name:
156
+ active: If false, all user authentication is blocked.
157
+ date_created: (read-only)
158
+ all_buyers_can_order: If false, buyers will only be able to set ToCompanyID on an order to the marketplace owner, or suppliers they have an explicit relationship to.
159
+ xp:
160
+ """
161
+
162
+ default_price_schedule_id: Optional[str] = Field(None, alias="DefaultPriceScheduleID")
163
+ id: Optional[str] = Field(None, alias="ID")
164
+ name: Optional[str] = Field(None, alias="Name")
165
+ active: Optional[bool] = Field(None, alias="Active")
166
+ date_created: Optional[str] = Field(None, alias="DateCreated")
167
+ all_buyers_can_order: Optional[bool] = Field(None, alias="AllBuyersCanOrder")
168
+ xp: Optional[XP] = Field(None, alias="xp")
169
+
170
+
171
+ class Product(OrderCloudModel, Generic[XP]):
172
+ """An OrderCloud Product.
173
+
174
+ Attributes:
175
+ owner_id: ID of the organization that owns the product. Only the marketplace owner can override the OwnerID on create.
176
+ default_price_schedule_id: When provided, no explicit price schedule assignment is required. When a price schedule assignment exists, it will override any default provided.
177
+ auto_forward: If true, when this product is ordered by a buyer, it will automatically be added to a new order from the marketplace owner to the default supplier and submitted. Requires a valid DefaultSupplierID.
178
+ id:
179
+ parent_id: ID of the parent product. If not null, IsParent should be false
180
+ is_parent: If true, ParentID must be null, as a parent product cannot have a parent itself.
181
+ is_bundle: If true, IsParent must be false, as a parent product cannot be a bundle. (read-only)
182
+ name:
183
+ description:
184
+ quantity_multiplier: For reference only, does not influence any OrderCloud behavior. Used to indicate an amount per Quantity.
185
+ ship_weight:
186
+ ship_height:
187
+ ship_width:
188
+ ship_length:
189
+ active: If false, product is not visible or purchasable from a buyer's perspective.
190
+ spec_count: Count of specs assigned to the product. (read-only)
191
+ variant_count: Count of variants generated from the product/spec combinations. (read-only)
192
+ ship_from_address_id: Marketplace owner or supplier AddressID where the product will be shipped from. Can be used to calculate shipping costs.
193
+ inventory:
194
+ default_supplier_id: Used for forwarding orders to suppliers.
195
+ all_suppliers_can_sell: If true, all suppliers are eligible to opt into selling this product.
196
+ returnable:
197
+ date_created: (read-only)
198
+ xp:
199
+ """
200
+
201
+ owner_id: Optional[str] = Field(None, alias="OwnerID")
202
+ default_price_schedule_id: Optional[str] = Field(None, alias="DefaultPriceScheduleID")
203
+ auto_forward: Optional[bool] = Field(None, alias="AutoForward")
204
+ id: Optional[str] = Field(None, alias="ID")
205
+ parent_id: Optional[str] = Field(None, alias="ParentID")
206
+ is_parent: Optional[bool] = Field(None, alias="IsParent")
207
+ is_bundle: Optional[bool] = Field(None, alias="IsBundle")
208
+ name: Optional[str] = Field(None, alias="Name")
209
+ description: Optional[str] = Field(None, alias="Description")
210
+ quantity_multiplier: int = Field(1, alias="QuantityMultiplier")
211
+ ship_weight: Optional[float] = Field(None, alias="ShipWeight")
212
+ ship_height: Optional[float] = Field(None, alias="ShipHeight")
213
+ ship_width: Optional[float] = Field(None, alias="ShipWidth")
214
+ ship_length: Optional[float] = Field(None, alias="ShipLength")
215
+ active: Optional[bool] = Field(None, alias="Active")
216
+ spec_count: int = Field(0, alias="SpecCount")
217
+ variant_count: int = Field(0, alias="VariantCount")
218
+ ship_from_address_id: Optional[str] = Field(None, alias="ShipFromAddressID")
219
+ inventory: Optional[_Inventory] = Field(None, alias="Inventory")
220
+ default_supplier_id: Optional[str] = Field(None, alias="DefaultSupplierID")
221
+ all_suppliers_can_sell: Optional[bool] = Field(None, alias="AllSuppliersCanSell")
222
+ returnable: Optional[bool] = Field(None, alias="Returnable")
223
+ date_created: Optional[str] = Field(None, alias="DateCreated")
224
+ xp: Optional[XP] = Field(None, alias="xp")
225
+
226
+
227
+ _Inventory = Inventory
@@ -0,0 +1,186 @@
1
+ # GENERATED by tools/codegen — DO NOT EDIT
2
+ # Source: ordercloud-openapi-v3.json
3
+ """OrderCloud ProductCollectionEntry and related models."""
4
+
5
+ from __future__ import annotations
6
+ from typing import Generic, Optional
7
+ from pydantic import Field
8
+
9
+ from .shared import OrderCloudModel, XP
10
+ from .buyer import BuyerPriceSchedule
11
+ from .misc import AccessLevel
12
+ from .product import Inventory
13
+
14
+ __all__ = [
15
+ "ProductCollectionEntry",
16
+ "ProductCollectionProduct",
17
+ "ProductCollectionBuyerProduct",
18
+ "ProductCollectionInvitation",
19
+ "ProductCollection",
20
+ ]
21
+ _Inventory = Inventory
22
+ _AccessLevel = AccessLevel
23
+
24
+
25
+ class ProductCollectionEntry(OrderCloudModel):
26
+ """An OrderCloud ProductCollectionEntry.
27
+
28
+ Attributes:
29
+ product_id:
30
+ list_order:
31
+ """
32
+
33
+ product_id: Optional[str] = Field(None, alias="ProductID")
34
+ list_order: Optional[int] = Field(None, alias="ListOrder")
35
+
36
+
37
+ class ProductCollectionProduct(OrderCloudModel, Generic[XP]):
38
+ """An OrderCloud ProductCollectionProduct.
39
+
40
+ Attributes:
41
+ list_order:
42
+ date_added:
43
+ owner_id: ID of the organization that owns the product. Only the marketplace owner can override the OwnerID on create.
44
+ default_price_schedule_id: When provided, no explicit price schedule assignment is required. When a price schedule assignment exists, it will override any default provided.
45
+ auto_forward: If true, when this product is ordered by a buyer, it will automatically be added to a new order from the marketplace owner to the default supplier and submitted. Requires a valid DefaultSupplierID.
46
+ id:
47
+ parent_id: ID of the parent product. If not null, IsParent should be false
48
+ is_parent: If true, ParentID must be null, as a parent product cannot have a parent itself.
49
+ is_bundle: If true, IsParent must be false, as a parent product cannot be a bundle. (read-only)
50
+ name:
51
+ description:
52
+ quantity_multiplier: For reference only, does not influence any OrderCloud behavior. Used to indicate an amount per Quantity.
53
+ ship_weight:
54
+ ship_height:
55
+ ship_width:
56
+ ship_length:
57
+ active: If false, product is not visible or purchasable from a buyer's perspective.
58
+ spec_count: Count of specs assigned to the product. (read-only)
59
+ variant_count: Count of variants generated from the product/spec combinations. (read-only)
60
+ ship_from_address_id: Marketplace owner or supplier AddressID where the product will be shipped from. Can be used to calculate shipping costs.
61
+ inventory:
62
+ default_supplier_id: Used for forwarding orders to suppliers.
63
+ all_suppliers_can_sell: If true, all suppliers are eligible to opt into selling this product.
64
+ returnable:
65
+ date_created: (read-only)
66
+ xp:
67
+ """
68
+
69
+ list_order: Optional[int] = Field(None, alias="ListOrder")
70
+ date_added: Optional[str] = Field(None, alias="DateAdded")
71
+ owner_id: Optional[str] = Field(None, alias="OwnerID")
72
+ default_price_schedule_id: Optional[str] = Field(None, alias="DefaultPriceScheduleID")
73
+ auto_forward: Optional[bool] = Field(None, alias="AutoForward")
74
+ id: Optional[str] = Field(None, alias="ID")
75
+ parent_id: Optional[str] = Field(None, alias="ParentID")
76
+ is_parent: Optional[bool] = Field(None, alias="IsParent")
77
+ is_bundle: Optional[bool] = Field(None, alias="IsBundle")
78
+ name: Optional[str] = Field(None, alias="Name")
79
+ description: Optional[str] = Field(None, alias="Description")
80
+ quantity_multiplier: int = Field(1, alias="QuantityMultiplier")
81
+ ship_weight: Optional[float] = Field(None, alias="ShipWeight")
82
+ ship_height: Optional[float] = Field(None, alias="ShipHeight")
83
+ ship_width: Optional[float] = Field(None, alias="ShipWidth")
84
+ ship_length: Optional[float] = Field(None, alias="ShipLength")
85
+ active: Optional[bool] = Field(None, alias="Active")
86
+ spec_count: int = Field(0, alias="SpecCount")
87
+ variant_count: int = Field(0, alias="VariantCount")
88
+ ship_from_address_id: Optional[str] = Field(None, alias="ShipFromAddressID")
89
+ inventory: Optional[_Inventory] = Field(None, alias="Inventory")
90
+ default_supplier_id: Optional[str] = Field(None, alias="DefaultSupplierID")
91
+ all_suppliers_can_sell: Optional[bool] = Field(None, alias="AllSuppliersCanSell")
92
+ returnable: Optional[bool] = Field(None, alias="Returnable")
93
+ date_created: Optional[str] = Field(None, alias="DateCreated")
94
+ xp: Optional[XP] = Field(None, alias="xp")
95
+
96
+
97
+ class ProductCollectionBuyerProduct(OrderCloudModel, Generic[XP]):
98
+ """An OrderCloud ProductCollectionBuyerProduct.
99
+
100
+ Attributes:
101
+ list_order:
102
+ date_added:
103
+ price_schedule: (read-only)
104
+ id:
105
+ parent_id: ID of the parent product. If not null, IsParent should be false
106
+ is_parent: If true, ParentID must be null, as a parent product cannot have a parent itself.
107
+ is_bundle: If true, IsParent must be false, as a parent product cannot be a bundle. (read-only)
108
+ name:
109
+ description:
110
+ quantity_multiplier: For reference only, does not influence any OrderCloud behavior. Used to indicate an amount per Quantity.
111
+ ship_weight:
112
+ ship_height:
113
+ ship_width:
114
+ ship_length:
115
+ active: If false, product is not visible or purchasable from a buyer's perspective.
116
+ spec_count: Count of specs assigned to the product. (read-only)
117
+ variant_count: Count of variants generated from the product/spec combinations. (read-only)
118
+ ship_from_address_id: Marketplace owner or supplier AddressID where the product will be shipped from. Can be used to calculate shipping costs.
119
+ inventory:
120
+ default_supplier_id: Used for forwarding orders to suppliers.
121
+ all_suppliers_can_sell: If true, all suppliers are eligible to opt into selling this product.
122
+ returnable:
123
+ date_created: (read-only)
124
+ xp:
125
+ """
126
+
127
+ list_order: Optional[int] = Field(None, alias="ListOrder")
128
+ date_added: Optional[str] = Field(None, alias="DateAdded")
129
+ price_schedule: Optional[BuyerPriceSchedule] = Field(None, alias="PriceSchedule")
130
+ id: Optional[str] = Field(None, alias="ID")
131
+ parent_id: Optional[str] = Field(None, alias="ParentID")
132
+ is_parent: Optional[bool] = Field(None, alias="IsParent")
133
+ is_bundle: Optional[bool] = Field(None, alias="IsBundle")
134
+ name: Optional[str] = Field(None, alias="Name")
135
+ description: Optional[str] = Field(None, alias="Description")
136
+ quantity_multiplier: int = Field(1, alias="QuantityMultiplier")
137
+ ship_weight: Optional[float] = Field(None, alias="ShipWeight")
138
+ ship_height: Optional[float] = Field(None, alias="ShipHeight")
139
+ ship_width: Optional[float] = Field(None, alias="ShipWidth")
140
+ ship_length: Optional[float] = Field(None, alias="ShipLength")
141
+ active: Optional[bool] = Field(None, alias="Active")
142
+ spec_count: int = Field(0, alias="SpecCount")
143
+ variant_count: int = Field(0, alias="VariantCount")
144
+ ship_from_address_id: Optional[str] = Field(None, alias="ShipFromAddressID")
145
+ inventory: Optional[_Inventory] = Field(None, alias="Inventory")
146
+ default_supplier_id: Optional[str] = Field(None, alias="DefaultSupplierID")
147
+ all_suppliers_can_sell: Optional[bool] = Field(None, alias="AllSuppliersCanSell")
148
+ returnable: Optional[bool] = Field(None, alias="Returnable")
149
+ date_created: Optional[str] = Field(None, alias="DateCreated")
150
+ xp: Optional[XP] = Field(None, alias="xp")
151
+
152
+
153
+ class ProductCollectionInvitation(OrderCloudModel, Generic[XP]):
154
+ """An OrderCloud ProductCollectionInvitation.
155
+
156
+ Attributes:
157
+ id: (read-only)
158
+ name:
159
+ admin:
160
+ accepted: Updated when accepted. (read-only)
161
+ expiration_date: ExpirationDate defaults to 30 days from create, maximum 1 year.
162
+ xp:
163
+ """
164
+
165
+ id: Optional[str] = Field(None, alias="ID")
166
+ name: Optional[str] = Field(None, alias="Name")
167
+ admin: bool = Field(False, alias="Admin")
168
+ accepted: bool = Field(False, alias="Accepted")
169
+ expiration_date: Optional[str] = Field(None, alias="ExpirationDate")
170
+ xp: Optional[XP] = Field(None, alias="xp")
171
+
172
+
173
+ class ProductCollection(OrderCloudModel, Generic[XP]):
174
+ """An OrderCloud ProductCollection.
175
+
176
+ Attributes:
177
+ id:
178
+ name:
179
+ xp:
180
+ access_level:
181
+ """
182
+
183
+ id: Optional[str] = Field(None, alias="ID")
184
+ name: Optional[str] = Field(None, alias="Name")
185
+ xp: Optional[XP] = Field(None, alias="xp")
186
+ access_level: Optional[_AccessLevel] = Field(None, alias="AccessLevel")