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.
- ordercloud/__init__.py +37 -0
- ordercloud/auth.py +136 -0
- ordercloud/client.py +211 -0
- ordercloud/config.py +42 -0
- ordercloud/errors.py +47 -0
- ordercloud/http.py +218 -0
- ordercloud/middleware.py +66 -0
- ordercloud/models/__init__.py +271 -0
- ordercloud/models/address.py +47 -0
- ordercloud/models/api_client.py +116 -0
- ordercloud/models/approval.py +73 -0
- ordercloud/models/assignments.py +402 -0
- ordercloud/models/auth_models.py +114 -0
- ordercloud/models/bundle.py +31 -0
- ordercloud/models/buyer.py +271 -0
- ordercloud/models/catalog.py +33 -0
- ordercloud/models/category.py +35 -0
- ordercloud/models/cost_center.py +27 -0
- ordercloud/models/credit_card.py +35 -0
- ordercloud/models/delivery.py +277 -0
- ordercloud/models/discount.py +63 -0
- ordercloud/models/integration.py +76 -0
- ordercloud/models/inventory_record.py +53 -0
- ordercloud/models/line_item.py +95 -0
- ordercloud/models/line_item_types.py +89 -0
- ordercloud/models/message_sender.py +80 -0
- ordercloud/models/misc.py +280 -0
- ordercloud/models/open_id_connect.py +47 -0
- ordercloud/models/order.py +477 -0
- ordercloud/models/order_return.py +92 -0
- ordercloud/models/payment.py +77 -0
- ordercloud/models/price_schedule.py +76 -0
- ordercloud/models/product.py +227 -0
- ordercloud/models/product_collection.py +186 -0
- ordercloud/models/promotion.py +297 -0
- ordercloud/models/security.py +89 -0
- ordercloud/models/shared.py +131 -0
- ordercloud/models/shipment.py +150 -0
- ordercloud/models/spec.py +67 -0
- ordercloud/models/spending_account.py +33 -0
- ordercloud/models/subscription.py +125 -0
- ordercloud/models/supplier.py +43 -0
- ordercloud/models/sync.py +172 -0
- ordercloud/models/user.py +207 -0
- ordercloud/models/user_group.py +27 -0
- ordercloud/models/webhook.py +58 -0
- ordercloud/py.typed +0 -0
- ordercloud/resources/__init__.py +65 -0
- ordercloud/resources/addresses.py +228 -0
- ordercloud/resources/admin_addresses.py +128 -0
- ordercloud/resources/admin_user_groups.py +185 -0
- ordercloud/resources/admin_users.py +150 -0
- ordercloud/resources/api_clients.py +308 -0
- ordercloud/resources/approval_rules.py +144 -0
- ordercloud/resources/base.py +145 -0
- ordercloud/resources/bundle_line_items.py +59 -0
- ordercloud/resources/bundle_subscription_items.py +54 -0
- ordercloud/resources/bundles.py +278 -0
- ordercloud/resources/buyer_groups.py +128 -0
- ordercloud/resources/buyers.py +164 -0
- ordercloud/resources/cart.py +613 -0
- ordercloud/resources/catalogs.py +311 -0
- ordercloud/resources/categories.py +392 -0
- ordercloud/resources/cost_centers.py +222 -0
- ordercloud/resources/credit_cards.py +227 -0
- ordercloud/resources/delivery_configurations.py +132 -0
- ordercloud/resources/discounts.py +201 -0
- ordercloud/resources/entity_syncs.py +534 -0
- ordercloud/resources/error_configs.py +71 -0
- ordercloud/resources/forgotten_credentials.py +74 -0
- ordercloud/resources/group_orders.py +28 -0
- ordercloud/resources/impersonation_configs.py +132 -0
- ordercloud/resources/incrementors.py +128 -0
- ordercloud/resources/integration_events.py +203 -0
- ordercloud/resources/inventory_integrations.py +65 -0
- ordercloud/resources/inventory_records.py +484 -0
- ordercloud/resources/line_items.py +262 -0
- ordercloud/resources/locales.py +203 -0
- ordercloud/resources/me.py +1882 -0
- ordercloud/resources/message_senders.py +261 -0
- ordercloud/resources/open_id_connects.py +128 -0
- ordercloud/resources/order_returns.py +306 -0
- ordercloud/resources/order_syncs.py +65 -0
- ordercloud/resources/orders.py +689 -0
- ordercloud/resources/payments.py +176 -0
- ordercloud/resources/price_schedules.py +164 -0
- ordercloud/resources/product_collections.py +116 -0
- ordercloud/resources/product_facets.py +128 -0
- ordercloud/resources/product_syncs.py +76 -0
- ordercloud/resources/products.py +454 -0
- ordercloud/resources/promotion_integrations.py +65 -0
- ordercloud/resources/promotions.py +203 -0
- ordercloud/resources/security_profiles.py +222 -0
- ordercloud/resources/seller_approval_rules.py +128 -0
- ordercloud/resources/shipments.py +256 -0
- ordercloud/resources/specs.py +313 -0
- ordercloud/resources/spending_accounts.py +227 -0
- ordercloud/resources/subscription_integrations.py +65 -0
- ordercloud/resources/subscription_items.py +146 -0
- ordercloud/resources/subscriptions.py +128 -0
- ordercloud/resources/supplier_addresses.py +144 -0
- ordercloud/resources/supplier_user_groups.py +210 -0
- ordercloud/resources/supplier_users.py +170 -0
- ordercloud/resources/suppliers.py +190 -0
- ordercloud/resources/tracking_events.py +130 -0
- ordercloud/resources/user_groups.py +210 -0
- ordercloud/resources/users.py +254 -0
- ordercloud/resources/webhooks.py +128 -0
- ordercloud/resources/xp_indices.py +77 -0
- ordercloud/sync_client.py +170 -0
- ordercloud_python-2026.4.1.dist-info/METADATA +552 -0
- ordercloud_python-2026.4.1.dist-info/RECORD +114 -0
- ordercloud_python-2026.4.1.dist-info/WHEEL +4 -0
- ordercloud_python-2026.4.1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# GENERATED by tools/codegen — DO NOT EDIT
|
|
2
|
+
# Source: ordercloud-openapi-v3.json
|
|
3
|
+
"""OrderCloud MessageSenders API resource."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
from typing import Any, Optional, Union
|
|
7
|
+
|
|
8
|
+
from ..models.assignments import MessageCCListenerAssignment, MessageSenderAssignment
|
|
9
|
+
from ..models.message_sender import MessageSender
|
|
10
|
+
from ..models.shared import ListPage
|
|
11
|
+
from .base import BaseResource
|
|
12
|
+
|
|
13
|
+
__all__ = ["MessageSendersResource"]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class MessageSendersResource(BaseResource):
|
|
17
|
+
"""Operations on OrderCloud MessageSenders."""
|
|
18
|
+
|
|
19
|
+
async def list(
|
|
20
|
+
self,
|
|
21
|
+
*,
|
|
22
|
+
search: Optional[str] = None,
|
|
23
|
+
search_on: Optional[str] = None,
|
|
24
|
+
sort_by: Optional[str] = None,
|
|
25
|
+
page: Optional[int] = None,
|
|
26
|
+
page_size: Optional[int] = None,
|
|
27
|
+
filters: Optional[dict[str, Any]] = None,
|
|
28
|
+
) -> ListPage[MessageSender]:
|
|
29
|
+
"""List message senders
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
search: Word or phrase to search for.
|
|
33
|
+
search_on: Comma-delimited list of fields to search on.
|
|
34
|
+
sort_by: Comma-delimited list of fields to sort by.
|
|
35
|
+
page: Page of results to return. When paginating through many items (> page 30), we recommend the "Last ID" method, as outlined in the Advanced Querying documentation.
|
|
36
|
+
page_size: Number of results to return per page.
|
|
37
|
+
filters: An object or dictionary representing key/value pairs to apply as filters. Valid keys are top-level properties of the returned model or 'xp.???'
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
A paginated list of MessageSender objects.
|
|
41
|
+
"""
|
|
42
|
+
params = self._build_list_params(
|
|
43
|
+
search=search,
|
|
44
|
+
search_on=search_on,
|
|
45
|
+
sort_by=sort_by,
|
|
46
|
+
page=page,
|
|
47
|
+
page_size=page_size,
|
|
48
|
+
filters=filters,
|
|
49
|
+
)
|
|
50
|
+
resp = await self._http.get("/messagesenders", **params)
|
|
51
|
+
return self._parse_list(resp.json(), MessageSender)
|
|
52
|
+
|
|
53
|
+
async def create(
|
|
54
|
+
self,
|
|
55
|
+
message_sender: Union[MessageSender, dict[str, Any]],
|
|
56
|
+
) -> MessageSender:
|
|
57
|
+
"""Create a message sender
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
message_sender: A ``MessageSender`` model or dict. Required fields: Name, MessageTypes, DeliveryConfigID.
|
|
61
|
+
|
|
62
|
+
Returns:
|
|
63
|
+
The MessageSender object.
|
|
64
|
+
"""
|
|
65
|
+
resp = await self._http.post("/messagesenders", json=self._serialize(message_sender))
|
|
66
|
+
return MessageSender(**resp.json())
|
|
67
|
+
|
|
68
|
+
async def get(
|
|
69
|
+
self,
|
|
70
|
+
message_sender_id: str,
|
|
71
|
+
) -> MessageSender:
|
|
72
|
+
"""Retrieve a message sender
|
|
73
|
+
|
|
74
|
+
Args:
|
|
75
|
+
message_sender_id: ID of the message sender.
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
The MessageSender object.
|
|
79
|
+
"""
|
|
80
|
+
resp = await self._http.get(f"/messagesenders/{message_sender_id}")
|
|
81
|
+
return MessageSender(**resp.json())
|
|
82
|
+
|
|
83
|
+
async def save(
|
|
84
|
+
self,
|
|
85
|
+
message_sender_id: str,
|
|
86
|
+
message_sender: Union[MessageSender, dict[str, Any]],
|
|
87
|
+
) -> MessageSender:
|
|
88
|
+
"""Create or update a message sender
|
|
89
|
+
|
|
90
|
+
Args:
|
|
91
|
+
message_sender_id: ID of the message sender.
|
|
92
|
+
message_sender: A ``MessageSender`` model or dict. Required fields: Name, MessageTypes, DeliveryConfigID.
|
|
93
|
+
|
|
94
|
+
Returns:
|
|
95
|
+
The MessageSender object.
|
|
96
|
+
"""
|
|
97
|
+
resp = await self._http.put(
|
|
98
|
+
f"/messagesenders/{message_sender_id}",
|
|
99
|
+
json=self._serialize(message_sender),
|
|
100
|
+
)
|
|
101
|
+
return MessageSender(**resp.json())
|
|
102
|
+
|
|
103
|
+
async def delete(
|
|
104
|
+
self,
|
|
105
|
+
message_sender_id: str,
|
|
106
|
+
) -> None:
|
|
107
|
+
"""Delete a message sender
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
message_sender_id: ID of the message sender.
|
|
111
|
+
"""
|
|
112
|
+
await self._http.delete(f"/messagesenders/{message_sender_id}")
|
|
113
|
+
|
|
114
|
+
async def patch(
|
|
115
|
+
self,
|
|
116
|
+
message_sender_id: str,
|
|
117
|
+
partial: dict[str, Any],
|
|
118
|
+
) -> MessageSender:
|
|
119
|
+
"""Partially update a message sender
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
message_sender_id: ID of the message sender.
|
|
123
|
+
partial: A dict of fields to update.
|
|
124
|
+
|
|
125
|
+
Returns:
|
|
126
|
+
The MessageSender object.
|
|
127
|
+
"""
|
|
128
|
+
resp = await self._http.patch(f"/messagesenders/{message_sender_id}", json=partial)
|
|
129
|
+
return MessageSender(**resp.json())
|
|
130
|
+
|
|
131
|
+
async def delete_assignment(
|
|
132
|
+
self,
|
|
133
|
+
message_sender_id: str,
|
|
134
|
+
*,
|
|
135
|
+
buyer_id: Optional[str] = None,
|
|
136
|
+
user_id: Optional[str] = None,
|
|
137
|
+
user_group_id: Optional[str] = None,
|
|
138
|
+
supplier_id: Optional[str] = None,
|
|
139
|
+
) -> None:
|
|
140
|
+
"""Delete a message sender assignment
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
message_sender_id: ID of the message sender.
|
|
144
|
+
buyer_id: ID of the buyer.
|
|
145
|
+
user_id: ID of the user.
|
|
146
|
+
user_group_id: ID of the user group.
|
|
147
|
+
supplier_id: ID of the supplier.
|
|
148
|
+
"""
|
|
149
|
+
_params: dict[str, Any] = {}
|
|
150
|
+
if buyer_id is not None:
|
|
151
|
+
_params["buyerID"] = buyer_id
|
|
152
|
+
if user_id is not None:
|
|
153
|
+
_params["userID"] = user_id
|
|
154
|
+
if user_group_id is not None:
|
|
155
|
+
_params["userGroupID"] = user_group_id
|
|
156
|
+
if supplier_id is not None:
|
|
157
|
+
_params["supplierID"] = supplier_id
|
|
158
|
+
await self._http.delete(f"/messagesenders/{message_sender_id}/assignments", **_params)
|
|
159
|
+
|
|
160
|
+
async def list_assignments(
|
|
161
|
+
self,
|
|
162
|
+
*,
|
|
163
|
+
buyer_id: Optional[str] = None,
|
|
164
|
+
message_sender_id: Optional[str] = None,
|
|
165
|
+
user_group_id: Optional[str] = None,
|
|
166
|
+
level: Optional[str] = None,
|
|
167
|
+
page: Optional[int] = None,
|
|
168
|
+
page_size: Optional[int] = None,
|
|
169
|
+
supplier_id: Optional[str] = None,
|
|
170
|
+
) -> ListPage[MessageSenderAssignment]:
|
|
171
|
+
"""List message sender assignments
|
|
172
|
+
|
|
173
|
+
Args:
|
|
174
|
+
buyer_id: ID of the buyer.
|
|
175
|
+
message_sender_id: ID of the message sender.
|
|
176
|
+
user_group_id: ID of the user group.
|
|
177
|
+
level: Level of the message sender assignment. Possible values: Group, Company, BuyerGroup.
|
|
178
|
+
page: Page of results to return. When paginating through many items (> page 30), we recommend the "Last ID" method, as outlined in the Advanced Querying documentation.
|
|
179
|
+
page_size: Number of results to return per page.
|
|
180
|
+
supplier_id: ID of the supplier.
|
|
181
|
+
|
|
182
|
+
Returns:
|
|
183
|
+
A paginated list of MessageSenderAssignment objects.
|
|
184
|
+
"""
|
|
185
|
+
params = self._build_list_params(
|
|
186
|
+
page=page,
|
|
187
|
+
page_size=page_size,
|
|
188
|
+
)
|
|
189
|
+
if buyer_id is not None:
|
|
190
|
+
params["buyerID"] = buyer_id
|
|
191
|
+
if message_sender_id is not None:
|
|
192
|
+
params["messageSenderID"] = message_sender_id
|
|
193
|
+
if user_group_id is not None:
|
|
194
|
+
params["userGroupID"] = user_group_id
|
|
195
|
+
if level is not None:
|
|
196
|
+
params["level"] = level
|
|
197
|
+
if supplier_id is not None:
|
|
198
|
+
params["supplierID"] = supplier_id
|
|
199
|
+
resp = await self._http.get("/messagesenders/assignments", **params)
|
|
200
|
+
return self._parse_list(resp.json(), MessageSenderAssignment)
|
|
201
|
+
|
|
202
|
+
async def save_assignment(
|
|
203
|
+
self,
|
|
204
|
+
message_sender_assignment: Union[MessageSenderAssignment, dict[str, Any]],
|
|
205
|
+
) -> None:
|
|
206
|
+
"""Create or update a message sender assignment
|
|
207
|
+
|
|
208
|
+
Args:
|
|
209
|
+
message_sender_assignment: A ``MessageSenderAssignment`` model or dict. Required fields: MessageSenderID.
|
|
210
|
+
"""
|
|
211
|
+
await self._http.post(
|
|
212
|
+
"/messagesenders/assignments", json=self._serialize(message_sender_assignment)
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
async def list_cc_listener_assignments(
|
|
216
|
+
self,
|
|
217
|
+
*,
|
|
218
|
+
search: Optional[str] = None,
|
|
219
|
+
search_on: Optional[str] = None,
|
|
220
|
+
sort_by: Optional[str] = None,
|
|
221
|
+
page: Optional[int] = None,
|
|
222
|
+
page_size: Optional[int] = None,
|
|
223
|
+
filters: Optional[dict[str, Any]] = None,
|
|
224
|
+
) -> ListPage[MessageCCListenerAssignment]:
|
|
225
|
+
"""List message sender cc listener assignments
|
|
226
|
+
|
|
227
|
+
Args:
|
|
228
|
+
search: Word or phrase to search for.
|
|
229
|
+
search_on: Comma-delimited list of fields to search on.
|
|
230
|
+
sort_by: Comma-delimited list of fields to sort by.
|
|
231
|
+
page: Page of results to return. When paginating through many items (> page 30), we recommend the "Last ID" method, as outlined in the Advanced Querying documentation.
|
|
232
|
+
page_size: Number of results to return per page.
|
|
233
|
+
filters: An object or dictionary representing key/value pairs to apply as filters. Valid keys are top-level properties of the returned model or 'xp.???'
|
|
234
|
+
|
|
235
|
+
Returns:
|
|
236
|
+
A paginated list of MessageCCListenerAssignment objects.
|
|
237
|
+
"""
|
|
238
|
+
params = self._build_list_params(
|
|
239
|
+
search=search,
|
|
240
|
+
search_on=search_on,
|
|
241
|
+
sort_by=sort_by,
|
|
242
|
+
page=page,
|
|
243
|
+
page_size=page_size,
|
|
244
|
+
filters=filters,
|
|
245
|
+
)
|
|
246
|
+
resp = await self._http.get("/messagesenders/CCListenerAssignments", **params)
|
|
247
|
+
return self._parse_list(resp.json(), MessageCCListenerAssignment)
|
|
248
|
+
|
|
249
|
+
async def save_cc_listener_assignment(
|
|
250
|
+
self,
|
|
251
|
+
message_cc_listener_assignment: Union[MessageCCListenerAssignment, dict[str, Any]],
|
|
252
|
+
) -> None:
|
|
253
|
+
"""Create or update a message sender cc listener assignment
|
|
254
|
+
|
|
255
|
+
Args:
|
|
256
|
+
message_cc_listener_assignment: A ``MessageCCListenerAssignment`` model or dict. Required fields: MessageSenderAssignment, MessageType.
|
|
257
|
+
"""
|
|
258
|
+
await self._http.post(
|
|
259
|
+
"/messagesenders/CCListenerAssignments",
|
|
260
|
+
json=self._serialize(message_cc_listener_assignment),
|
|
261
|
+
)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# GENERATED by tools/codegen — DO NOT EDIT
|
|
2
|
+
# Source: ordercloud-openapi-v3.json
|
|
3
|
+
"""OrderCloud OpenIdConnects API resource."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
from typing import Any, Optional, Union
|
|
7
|
+
|
|
8
|
+
from ..models.open_id_connect import OpenIdConnect
|
|
9
|
+
from ..models.shared import ListPage
|
|
10
|
+
from .base import BaseResource
|
|
11
|
+
|
|
12
|
+
__all__ = ["OpenIdConnectsResource"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class OpenIdConnectsResource(BaseResource):
|
|
16
|
+
"""Operations on OrderCloud OpenIdConnects."""
|
|
17
|
+
|
|
18
|
+
async def list(
|
|
19
|
+
self,
|
|
20
|
+
*,
|
|
21
|
+
search: Optional[str] = None,
|
|
22
|
+
search_on: Optional[str] = None,
|
|
23
|
+
sort_by: Optional[str] = None,
|
|
24
|
+
page: Optional[int] = None,
|
|
25
|
+
page_size: Optional[int] = None,
|
|
26
|
+
filters: Optional[dict[str, Any]] = None,
|
|
27
|
+
) -> ListPage[OpenIdConnect]:
|
|
28
|
+
"""List OpenID Connects
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
search: Word or phrase to search for.
|
|
32
|
+
search_on: Comma-delimited list of fields to search on.
|
|
33
|
+
sort_by: Comma-delimited list of fields to sort by.
|
|
34
|
+
page: Page of results to return. When paginating through many items (> page 30), we recommend the "Last ID" method, as outlined in the Advanced Querying documentation.
|
|
35
|
+
page_size: Number of results to return per page.
|
|
36
|
+
filters: An object or dictionary representing key/value pairs to apply as filters. Valid keys are top-level properties of the returned model or 'xp.???'
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
A paginated list of OpenIdConnect objects.
|
|
40
|
+
"""
|
|
41
|
+
params = self._build_list_params(
|
|
42
|
+
search=search,
|
|
43
|
+
search_on=search_on,
|
|
44
|
+
sort_by=sort_by,
|
|
45
|
+
page=page,
|
|
46
|
+
page_size=page_size,
|
|
47
|
+
filters=filters,
|
|
48
|
+
)
|
|
49
|
+
resp = await self._http.get("/openidconnects", **params)
|
|
50
|
+
return self._parse_list(resp.json(), OpenIdConnect)
|
|
51
|
+
|
|
52
|
+
async def create(
|
|
53
|
+
self,
|
|
54
|
+
open_id_connect: Union[OpenIdConnect, dict[str, Any]],
|
|
55
|
+
) -> OpenIdConnect:
|
|
56
|
+
"""Create an OpenID Connect
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
open_id_connect: A ``OpenIdConnect`` model or dict. Required fields: OrderCloudApiClientID, ConnectClientID, ConnectClientSecret, AppStartUrl, AuthorizationEndpoint, TokenEndpoint.
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
The OpenIdConnect object.
|
|
63
|
+
"""
|
|
64
|
+
resp = await self._http.post("/openidconnects", json=self._serialize(open_id_connect))
|
|
65
|
+
return OpenIdConnect(**resp.json())
|
|
66
|
+
|
|
67
|
+
async def get(
|
|
68
|
+
self,
|
|
69
|
+
openidconnect_id: str,
|
|
70
|
+
) -> OpenIdConnect:
|
|
71
|
+
"""Retrieve an OpenID Connect
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
openidconnect_id: ID of the openidconnect.
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
The OpenIdConnect object.
|
|
78
|
+
"""
|
|
79
|
+
resp = await self._http.get(f"/openidconnects/{openidconnect_id}")
|
|
80
|
+
return OpenIdConnect(**resp.json())
|
|
81
|
+
|
|
82
|
+
async def save(
|
|
83
|
+
self,
|
|
84
|
+
openidconnect_id: str,
|
|
85
|
+
open_id_connect: Union[OpenIdConnect, dict[str, Any]],
|
|
86
|
+
) -> OpenIdConnect:
|
|
87
|
+
"""Create or update an OpenID Connect
|
|
88
|
+
|
|
89
|
+
Args:
|
|
90
|
+
openidconnect_id: ID of the openidconnect.
|
|
91
|
+
open_id_connect: A ``OpenIdConnect`` model or dict. Required fields: OrderCloudApiClientID, ConnectClientID, ConnectClientSecret, AppStartUrl, AuthorizationEndpoint, TokenEndpoint.
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
The OpenIdConnect object.
|
|
95
|
+
"""
|
|
96
|
+
resp = await self._http.put(
|
|
97
|
+
f"/openidconnects/{openidconnect_id}",
|
|
98
|
+
json=self._serialize(open_id_connect),
|
|
99
|
+
)
|
|
100
|
+
return OpenIdConnect(**resp.json())
|
|
101
|
+
|
|
102
|
+
async def delete(
|
|
103
|
+
self,
|
|
104
|
+
openidconnect_id: str,
|
|
105
|
+
) -> None:
|
|
106
|
+
"""Delete an OpenID Connect
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
openidconnect_id: ID of the openidconnect.
|
|
110
|
+
"""
|
|
111
|
+
await self._http.delete(f"/openidconnects/{openidconnect_id}")
|
|
112
|
+
|
|
113
|
+
async def patch(
|
|
114
|
+
self,
|
|
115
|
+
openidconnect_id: str,
|
|
116
|
+
partial: dict[str, Any],
|
|
117
|
+
) -> OpenIdConnect:
|
|
118
|
+
"""Partially update an OpenID Connect
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
openidconnect_id: ID of the openidconnect.
|
|
122
|
+
partial: A dict of fields to update.
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
The OpenIdConnect object.
|
|
126
|
+
"""
|
|
127
|
+
resp = await self._http.patch(f"/openidconnects/{openidconnect_id}", json=partial)
|
|
128
|
+
return OpenIdConnect(**resp.json())
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
# GENERATED by tools/codegen — DO NOT EDIT
|
|
2
|
+
# Source: ordercloud-openapi-v3.json
|
|
3
|
+
"""OrderCloud OrderReturns API resource."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
from typing import Any, Optional, Union
|
|
7
|
+
|
|
8
|
+
from ..models.order import ApprovalInfo
|
|
9
|
+
from ..models.order_return import OrderReturn, OrderReturnApproval
|
|
10
|
+
from ..models.user import User
|
|
11
|
+
from ..models.shared import ListPage
|
|
12
|
+
from .base import BaseResource
|
|
13
|
+
|
|
14
|
+
__all__ = ["OrderReturnsResource"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class OrderReturnsResource(BaseResource):
|
|
18
|
+
"""Operations on OrderCloud OrderReturns."""
|
|
19
|
+
|
|
20
|
+
async def list(
|
|
21
|
+
self,
|
|
22
|
+
*,
|
|
23
|
+
approvable: Optional[bool] = None,
|
|
24
|
+
search: Optional[str] = None,
|
|
25
|
+
search_on: Optional[str] = None,
|
|
26
|
+
sort_by: Optional[str] = None,
|
|
27
|
+
page: Optional[int] = None,
|
|
28
|
+
page_size: Optional[int] = None,
|
|
29
|
+
filters: Optional[dict[str, Any]] = None,
|
|
30
|
+
) -> ListPage[OrderReturn]:
|
|
31
|
+
"""List order returns
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
approvable: Only returns orders awaiting the user's approval if true.
|
|
35
|
+
search: Word or phrase to search for.
|
|
36
|
+
search_on: Comma-delimited list of fields to search on.
|
|
37
|
+
sort_by: Comma-delimited list of fields to sort by.
|
|
38
|
+
page: Page of results to return. When paginating through many items (> page 30), we recommend the "Last ID" method, as outlined in the Advanced Querying documentation.
|
|
39
|
+
page_size: Number of results to return per page.
|
|
40
|
+
filters: An object or dictionary representing key/value pairs to apply as filters. Valid keys are top-level properties of the returned model or 'xp.???'
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
A paginated list of OrderReturn objects.
|
|
44
|
+
"""
|
|
45
|
+
params = self._build_list_params(
|
|
46
|
+
search=search,
|
|
47
|
+
search_on=search_on,
|
|
48
|
+
sort_by=sort_by,
|
|
49
|
+
page=page,
|
|
50
|
+
page_size=page_size,
|
|
51
|
+
filters=filters,
|
|
52
|
+
)
|
|
53
|
+
if approvable is not None:
|
|
54
|
+
params["approvable"] = approvable
|
|
55
|
+
resp = await self._http.get("/orderreturns", **params)
|
|
56
|
+
return self._parse_list(resp.json(), OrderReturn)
|
|
57
|
+
|
|
58
|
+
async def create(
|
|
59
|
+
self,
|
|
60
|
+
order_return: Union[OrderReturn, dict[str, Any]],
|
|
61
|
+
) -> OrderReturn:
|
|
62
|
+
"""Create an order return
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
order_return: A ``OrderReturn`` model or dict. Required fields: OrderID.
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
The OrderReturn object.
|
|
69
|
+
"""
|
|
70
|
+
resp = await self._http.post("/orderreturns", json=self._serialize(order_return))
|
|
71
|
+
return OrderReturn(**resp.json())
|
|
72
|
+
|
|
73
|
+
async def get(
|
|
74
|
+
self,
|
|
75
|
+
return_id: str,
|
|
76
|
+
) -> OrderReturn:
|
|
77
|
+
"""Retrieve an order return
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
return_id: ID of the return.
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
The OrderReturn object.
|
|
84
|
+
"""
|
|
85
|
+
resp = await self._http.get(f"/orderreturns/{return_id}")
|
|
86
|
+
return OrderReturn(**resp.json())
|
|
87
|
+
|
|
88
|
+
async def save(
|
|
89
|
+
self,
|
|
90
|
+
return_id: str,
|
|
91
|
+
order_return: Union[OrderReturn, dict[str, Any]],
|
|
92
|
+
) -> OrderReturn:
|
|
93
|
+
"""Create or update an order return
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
return_id: ID of the return.
|
|
97
|
+
order_return: A ``OrderReturn`` model or dict. Required fields: OrderID.
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
The OrderReturn object.
|
|
101
|
+
"""
|
|
102
|
+
resp = await self._http.put(
|
|
103
|
+
f"/orderreturns/{return_id}",
|
|
104
|
+
json=self._serialize(order_return),
|
|
105
|
+
)
|
|
106
|
+
return OrderReturn(**resp.json())
|
|
107
|
+
|
|
108
|
+
async def delete(
|
|
109
|
+
self,
|
|
110
|
+
return_id: str,
|
|
111
|
+
) -> None:
|
|
112
|
+
"""Delete an order return
|
|
113
|
+
|
|
114
|
+
Args:
|
|
115
|
+
return_id: ID of the return.
|
|
116
|
+
"""
|
|
117
|
+
await self._http.delete(f"/orderreturns/{return_id}")
|
|
118
|
+
|
|
119
|
+
async def patch(
|
|
120
|
+
self,
|
|
121
|
+
return_id: str,
|
|
122
|
+
partial: dict[str, Any],
|
|
123
|
+
) -> OrderReturn:
|
|
124
|
+
"""Partially update an order return
|
|
125
|
+
|
|
126
|
+
Args:
|
|
127
|
+
return_id: ID of the return.
|
|
128
|
+
partial: A dict of fields to update.
|
|
129
|
+
|
|
130
|
+
Returns:
|
|
131
|
+
The OrderReturn object.
|
|
132
|
+
"""
|
|
133
|
+
resp = await self._http.patch(f"/orderreturns/{return_id}", json=partial)
|
|
134
|
+
return OrderReturn(**resp.json())
|
|
135
|
+
|
|
136
|
+
async def list_approvals(
|
|
137
|
+
self,
|
|
138
|
+
return_id: str,
|
|
139
|
+
*,
|
|
140
|
+
search: Optional[str] = None,
|
|
141
|
+
search_on: Optional[str] = None,
|
|
142
|
+
sort_by: Optional[str] = None,
|
|
143
|
+
page: Optional[int] = None,
|
|
144
|
+
page_size: Optional[int] = None,
|
|
145
|
+
filters: Optional[dict[str, Any]] = None,
|
|
146
|
+
) -> ListPage[OrderReturnApproval]:
|
|
147
|
+
"""List order return approvals
|
|
148
|
+
|
|
149
|
+
Args:
|
|
150
|
+
return_id: ID of the return.
|
|
151
|
+
search: Word or phrase to search for.
|
|
152
|
+
search_on: Comma-delimited list of fields to search on.
|
|
153
|
+
sort_by: Comma-delimited list of fields to sort by.
|
|
154
|
+
page: Page of results to return. When paginating through many items (> page 30), we recommend the "Last ID" method, as outlined in the Advanced Querying documentation.
|
|
155
|
+
page_size: Number of results to return per page.
|
|
156
|
+
filters: An object or dictionary representing key/value pairs to apply as filters. Valid keys are top-level properties of the returned model or 'xp.???'
|
|
157
|
+
|
|
158
|
+
Returns:
|
|
159
|
+
A paginated list of OrderReturnApproval objects.
|
|
160
|
+
"""
|
|
161
|
+
params = self._build_list_params(
|
|
162
|
+
search=search,
|
|
163
|
+
search_on=search_on,
|
|
164
|
+
sort_by=sort_by,
|
|
165
|
+
page=page,
|
|
166
|
+
page_size=page_size,
|
|
167
|
+
filters=filters,
|
|
168
|
+
)
|
|
169
|
+
resp = await self._http.get(f"/orderreturns/{return_id}/approvals", **params)
|
|
170
|
+
return self._parse_list(resp.json(), OrderReturnApproval)
|
|
171
|
+
|
|
172
|
+
async def approve(
|
|
173
|
+
self,
|
|
174
|
+
return_id: str,
|
|
175
|
+
approval_info: Union[ApprovalInfo, dict[str, Any]],
|
|
176
|
+
) -> OrderReturn:
|
|
177
|
+
"""Approve an order return
|
|
178
|
+
|
|
179
|
+
Args:
|
|
180
|
+
return_id: ID of the return.
|
|
181
|
+
approval_info: A ``ApprovalInfo`` model or dict.
|
|
182
|
+
|
|
183
|
+
Returns:
|
|
184
|
+
The OrderReturn object.
|
|
185
|
+
"""
|
|
186
|
+
resp = await self._http.post(
|
|
187
|
+
f"/orderreturns/{return_id}/approve", json=self._serialize(approval_info)
|
|
188
|
+
)
|
|
189
|
+
return OrderReturn(**resp.json())
|
|
190
|
+
|
|
191
|
+
async def cancel(
|
|
192
|
+
self,
|
|
193
|
+
return_id: str,
|
|
194
|
+
) -> OrderReturn:
|
|
195
|
+
"""Cancel an order return
|
|
196
|
+
|
|
197
|
+
Args:
|
|
198
|
+
return_id: ID of the return.
|
|
199
|
+
|
|
200
|
+
Returns:
|
|
201
|
+
The OrderReturn object.
|
|
202
|
+
"""
|
|
203
|
+
resp = await self._http.post(f"/orderreturns/{return_id}/cancel")
|
|
204
|
+
return OrderReturn(**resp.json())
|
|
205
|
+
|
|
206
|
+
async def complete(
|
|
207
|
+
self,
|
|
208
|
+
return_id: str,
|
|
209
|
+
) -> OrderReturn:
|
|
210
|
+
"""Complete an order return
|
|
211
|
+
|
|
212
|
+
Args:
|
|
213
|
+
return_id: ID of the return.
|
|
214
|
+
|
|
215
|
+
Returns:
|
|
216
|
+
The OrderReturn object.
|
|
217
|
+
"""
|
|
218
|
+
resp = await self._http.post(f"/orderreturns/{return_id}/complete")
|
|
219
|
+
return OrderReturn(**resp.json())
|
|
220
|
+
|
|
221
|
+
async def decline(
|
|
222
|
+
self,
|
|
223
|
+
return_id: str,
|
|
224
|
+
approval_info: Union[ApprovalInfo, dict[str, Any]],
|
|
225
|
+
) -> OrderReturn:
|
|
226
|
+
"""Decline an order return
|
|
227
|
+
|
|
228
|
+
Args:
|
|
229
|
+
return_id: ID of the return.
|
|
230
|
+
approval_info: A ``ApprovalInfo`` model or dict.
|
|
231
|
+
|
|
232
|
+
Returns:
|
|
233
|
+
The OrderReturn object.
|
|
234
|
+
"""
|
|
235
|
+
resp = await self._http.post(
|
|
236
|
+
f"/orderreturns/{return_id}/decline", json=self._serialize(approval_info)
|
|
237
|
+
)
|
|
238
|
+
return OrderReturn(**resp.json())
|
|
239
|
+
|
|
240
|
+
async def list_eligible_approvers(
|
|
241
|
+
self,
|
|
242
|
+
return_id: str,
|
|
243
|
+
*,
|
|
244
|
+
search: Optional[str] = None,
|
|
245
|
+
search_on: Optional[str] = None,
|
|
246
|
+
sort_by: Optional[str] = None,
|
|
247
|
+
page: Optional[int] = None,
|
|
248
|
+
page_size: Optional[int] = None,
|
|
249
|
+
filters: Optional[dict[str, Any]] = None,
|
|
250
|
+
) -> ListPage[User]:
|
|
251
|
+
"""List order return eligible approvers
|
|
252
|
+
|
|
253
|
+
Args:
|
|
254
|
+
return_id: ID of the return.
|
|
255
|
+
search: Word or phrase to search for.
|
|
256
|
+
search_on: Comma-delimited list of fields to search on.
|
|
257
|
+
sort_by: Comma-delimited list of fields to sort by.
|
|
258
|
+
page: Page of results to return. When paginating through many items (> page 30), we recommend the "Last ID" method, as outlined in the Advanced Querying documentation.
|
|
259
|
+
page_size: Number of results to return per page.
|
|
260
|
+
filters: An object or dictionary representing key/value pairs to apply as filters. Valid keys are top-level properties of the returned model or 'xp.???'
|
|
261
|
+
|
|
262
|
+
Returns:
|
|
263
|
+
A paginated list of User objects.
|
|
264
|
+
"""
|
|
265
|
+
params = self._build_list_params(
|
|
266
|
+
search=search,
|
|
267
|
+
search_on=search_on,
|
|
268
|
+
sort_by=sort_by,
|
|
269
|
+
page=page,
|
|
270
|
+
page_size=page_size,
|
|
271
|
+
filters=filters,
|
|
272
|
+
)
|
|
273
|
+
resp = await self._http.get(f"/orderreturns/{return_id}/eligibleapprovers", **params)
|
|
274
|
+
return self._parse_list(resp.json(), User)
|
|
275
|
+
|
|
276
|
+
async def delete_item(
|
|
277
|
+
self,
|
|
278
|
+
return_id: str,
|
|
279
|
+
line_item_id: str,
|
|
280
|
+
) -> OrderReturn:
|
|
281
|
+
"""Delete an order return item
|
|
282
|
+
|
|
283
|
+
Args:
|
|
284
|
+
return_id: ID of the return.
|
|
285
|
+
line_item_id: ID of the line item.
|
|
286
|
+
|
|
287
|
+
Returns:
|
|
288
|
+
The OrderReturn object.
|
|
289
|
+
"""
|
|
290
|
+
resp = await self._http.delete(f"/orderreturns/{return_id}/items/{line_item_id}")
|
|
291
|
+
return OrderReturn(**resp.json())
|
|
292
|
+
|
|
293
|
+
async def submit(
|
|
294
|
+
self,
|
|
295
|
+
return_id: str,
|
|
296
|
+
) -> OrderReturn:
|
|
297
|
+
"""Submit an order return
|
|
298
|
+
|
|
299
|
+
Args:
|
|
300
|
+
return_id: ID of the return.
|
|
301
|
+
|
|
302
|
+
Returns:
|
|
303
|
+
The OrderReturn object.
|
|
304
|
+
"""
|
|
305
|
+
resp = await self._http.post(f"/orderreturns/{return_id}/submit")
|
|
306
|
+
return OrderReturn(**resp.json())
|