python-amazon-sp-api 1.9.18__py3-none-any.whl → 2.0.7__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.
- {python_amazon_sp_api-1.9.18.data → python_amazon_sp_api-2.0.7.data}/scripts/make_endpoint +2 -2
- {python_amazon_sp_api-1.9.18.dist-info → python_amazon_sp_api-2.0.7.dist-info}/METADATA +46 -23
- python_amazon_sp_api-2.0.7.dist-info/RECORD +251 -0
- {python_amazon_sp_api-1.9.18.dist-info → python_amazon_sp_api-2.0.7.dist-info}/WHEEL +1 -1
- {python_amazon_sp_api-1.9.18.dist-info → python_amazon_sp_api-2.0.7.dist-info}/top_level.txt +0 -1
- sp_api/__version__.py +1 -1
- sp_api/api/__init__.py +18 -1
- sp_api/api/application_integrations/application_integrations.py +118 -0
- sp_api/api/application_management/application_management.py +2 -1
- sp_api/api/catalog/catalog.py +3 -4
- sp_api/api/catalog_items/catalog_items.py +3 -6
- sp_api/api/customer_feedback/customer_feedback.py +110 -0
- sp_api/api/data_kiosk/data_kiosk.py +5 -6
- sp_api/api/easy_ship/easy_ship.py +190 -0
- sp_api/api/external_fulfillment/external_fulfillment.py +706 -0
- sp_api/api/feeds/feeds.py +11 -8
- sp_api/api/finances/finances.py +30 -4
- sp_api/api/fulfillment_inbound/fulfillment_inbound.py +35 -2
- sp_api/api/inventories/inventories.py +2 -7
- sp_api/api/listings_items/listings_items.py +3 -24
- sp_api/api/messaging/messaging.py +42 -0
- sp_api/api/orders/orders.py +7 -0
- sp_api/api/product_fees/product_fees.py +31 -74
- sp_api/api/products/products.py +80 -2
- sp_api/api/products/products_definitions.py +11 -85
- sp_api/api/reports/reports.py +65 -97
- sp_api/api/sales/sales.py +2 -2
- sp_api/asyncio/api/__init__.py +164 -0
- sp_api/asyncio/api/amazon_warehousing_and_distribu/__init__.py +9 -0
- sp_api/asyncio/api/amazon_warehousing_and_distribu/amazon_warehousing_and_distribu.py +130 -0
- sp_api/asyncio/api/aplus_content/__init__.py +5 -0
- sp_api/asyncio/api/aplus_content/aplus_content.py +330 -0
- sp_api/asyncio/api/application_integrations/__init__.py +5 -0
- sp_api/asyncio/api/application_integrations/application_integrations.py +119 -0
- sp_api/asyncio/api/application_management/__init__.py +5 -0
- sp_api/asyncio/api/application_management/application_management.py +36 -0
- sp_api/asyncio/api/authorization/__init__.py +5 -0
- sp_api/asyncio/api/authorization/authorization.py +54 -0
- sp_api/asyncio/api/catalog/__init__.py +5 -0
- sp_api/asyncio/api/catalog/catalog.py +111 -0
- sp_api/asyncio/api/catalog_items/__init__.py +6 -0
- sp_api/asyncio/api/catalog_items/catalog_items.py +93 -0
- sp_api/asyncio/api/clients/__init__.py +1 -0
- sp_api/asyncio/api/customer_feedback/__init__.py +5 -0
- sp_api/asyncio/api/customer_feedback/customer_feedback.py +111 -0
- sp_api/asyncio/api/data_kiosk/__init__.py +5 -0
- sp_api/asyncio/api/data_kiosk/data_kiosk.py +236 -0
- sp_api/asyncio/api/easy_ship/__init__.py +5 -0
- sp_api/asyncio/api/easy_ship/easy_ship.py +191 -0
- sp_api/asyncio/api/external_fulfillment/__init__.py +5 -0
- sp_api/asyncio/api/external_fulfillment/external_fulfillment.py +706 -0
- sp_api/asyncio/api/fba_inbound_eligibility/__init__.py +5 -0
- sp_api/asyncio/api/fba_inbound_eligibility/fba_inbound_eligibility.py +96 -0
- sp_api/asyncio/api/fba_small_and_light/__init__.py +5 -0
- sp_api/asyncio/api/fba_small_and_light/fba_small_and_light.py +213 -0
- sp_api/asyncio/api/feeds/feeds.py +260 -0
- sp_api/asyncio/api/finances/finances.py +100 -0
- sp_api/asyncio/api/fulfillment_inbound/fulfillment_inbound.py +1798 -0
- sp_api/asyncio/api/fulfillment_outbound/fulfillment_outbound.py +736 -0
- sp_api/asyncio/api/inventories/inventories.py +74 -0
- sp_api/asyncio/api/listings_items/__init__.py +0 -0
- sp_api/asyncio/api/listings_items/listings_items.py +170 -0
- sp_api/asyncio/api/listings_restrictions/__init__.py +0 -0
- sp_api/asyncio/api/listings_restrictions/listings_restrictions.py +36 -0
- sp_api/asyncio/api/merchant_fulfillment/__init__.py +0 -0
- sp_api/asyncio/api/merchant_fulfillment/merchant_fulfillment.py +384 -0
- sp_api/asyncio/api/messaging/__init__.py +0 -0
- sp_api/asyncio/api/messaging/messaging.py +511 -0
- sp_api/asyncio/api/models/__init__.py +4 -0
- sp_api/asyncio/api/notifications/__init__.py +0 -0
- sp_api/asyncio/api/notifications/notifications.py +295 -0
- sp_api/asyncio/api/orders/__init__.py +0 -0
- sp_api/asyncio/api/orders/orders.py +362 -0
- sp_api/asyncio/api/overrides/__init__.py +1 -0
- sp_api/asyncio/api/product_fees/__init__.py +0 -0
- sp_api/asyncio/api/product_fees/product_fees.py +194 -0
- sp_api/asyncio/api/product_type_definitions/__init__.py +0 -0
- sp_api/asyncio/api/product_type_definitions/product_type_definitions.py +75 -0
- sp_api/asyncio/api/products/__init__.py +0 -0
- sp_api/asyncio/api/products/products.py +405 -0
- sp_api/asyncio/api/products/products_definitions.py +11 -0
- sp_api/asyncio/api/replenishment/__init__.py +0 -0
- sp_api/asyncio/api/replenishment/replenishment.py +121 -0
- sp_api/asyncio/api/reports/__init__.py +0 -0
- sp_api/asyncio/api/reports/reports.py +439 -0
- sp_api/asyncio/api/sales/__init__.py +0 -0
- sp_api/asyncio/api/sales/sales.py +93 -0
- sp_api/asyncio/api/sellers/__init__.py +0 -0
- sp_api/asyncio/api/sellers/sellers.py +70 -0
- sp_api/asyncio/api/services/__init__.py +0 -0
- sp_api/asyncio/api/services/services.py +218 -0
- sp_api/asyncio/api/shipping/__init__.py +0 -0
- sp_api/asyncio/api/shipping/shipping.py +459 -0
- sp_api/asyncio/api/shipping/shippingV2.py +651 -0
- sp_api/asyncio/api/solicitations/__init__.py +0 -0
- sp_api/asyncio/api/solicitations/solicitations.py +78 -0
- sp_api/asyncio/api/supply_sources/__init__.py +0 -0
- sp_api/asyncio/api/supply_sources/supply_sources.py +138 -0
- sp_api/asyncio/api/tokens/__init__.py +0 -0
- sp_api/asyncio/api/tokens/tokens.py +65 -0
- sp_api/asyncio/api/upload/__init__.py +0 -0
- sp_api/asyncio/api/upload/upload.py +18 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_inventory/__init__.py +0 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_inventory/vendor_direct_fulfillment_inventory.py +64 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_orders/__init__.py +0 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_orders/vendor_direct_fulfillment_orders.py +196 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_payments/__init__.py +0 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_payments/vendor_direct_fulfillment_payments.py +254 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_shipping/__init__.py +0 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_shipping/vendor_direct_fulfillment_shipping.py +627 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_transactions/__init__.py +0 -0
- sp_api/asyncio/api/vendor_direct_fulfillment_transactions/vendor_direct_fulfillment_transactions.py +43 -0
- sp_api/asyncio/api/vendor_invoices/__init__.py +0 -0
- sp_api/asyncio/api/vendor_invoices/vendor_invoices.py +295 -0
- sp_api/asyncio/api/vendor_orders/__init__.py +0 -0
- sp_api/asyncio/api/vendor_orders/vendor_orders.py +210 -0
- sp_api/asyncio/api/vendor_shipments/__init__.py +0 -0
- sp_api/asyncio/api/vendor_shipments/vendor_shipments.py +118 -0
- sp_api/asyncio/api/vendor_transaction_status/__init__.py +0 -0
- sp_api/asyncio/api/vendor_transaction_status/vendor_transaction_status.py +41 -0
- sp_api/asyncio/auth/__init__.py +12 -0
- sp_api/asyncio/auth/access_token_client.py +145 -0
- sp_api/asyncio/auth/exceptions.py +5 -0
- sp_api/asyncio/base/__init__.py +53 -0
- sp_api/asyncio/base/_transport_httpx.py +50 -0
- sp_api/asyncio/base/base_client.py +8 -0
- sp_api/asyncio/base/client.py +169 -0
- sp_api/asyncio/util/__init__.py +29 -0
- sp_api/asyncio/util/key_maker.py +5 -0
- sp_api/asyncio/util/load_all_pages.py +55 -0
- sp_api/asyncio/util/load_date_bound.py +53 -0
- sp_api/asyncio/util/retry.py +88 -0
- sp_api/auth/_core.py +39 -0
- sp_api/auth/access_token_client.py +18 -29
- sp_api/base/ApiResponse.py +3 -2
- sp_api/base/_core.py +110 -0
- sp_api/base/_transport_httpx.py +39 -0
- sp_api/base/client.py +40 -63
- sp_api/base/helpers.py +1 -1
- sp_api/base/reportTypes.py +3 -2
- sp_api/util/__init__.py +36 -0
- sp_api/util/load_all_pages.py +2 -1
- sp_api/util/params.py +57 -0
- sp_api/util/product_fees.py +40 -0
- sp_api/util/products_definitions.py +169 -0
- sp_api/util/report_document.py +154 -0
- python_amazon_sp_api-1.9.18.dist-info/RECORD +0 -144
- tests/api/finances/test_finances.py +0 -19
- tests/api/notifications/test_notifications.py +0 -26
- tests/api/orders/test_orders.py +0 -122
- tests/api/product_fees/product_fees.py +0 -49
- tests/api/reports/test_reports.py +0 -127
- tests/client/test_auth.py +0 -59
- tests/client/test_base.py +0 -163
- tests/client/test_credential_provider.py +0 -45
- tests/client/test_helpers.py +0 -142
- {python_amazon_sp_api-1.9.18.dist-info → python_amazon_sp_api-2.0.7.dist-info/licenses}/LICENSE +0 -0
- {tests → sp_api/api/application_integrations}/__init__.py +0 -0
- {tests/api → sp_api/api/customer_feedback}/__init__.py +0 -0
- {tests/api/finances → sp_api/api/easy_ship}/__init__.py +0 -0
- {tests/api/notifications → sp_api/api/external_fulfillment}/__init__.py +0 -0
- {tests/api/orders → sp_api/asyncio}/__init__.py +0 -0
- {tests/api/product_fees → sp_api/asyncio/api/feeds}/__init__.py +0 -0
- {tests/api/reports → sp_api/asyncio/api/finances}/__init__.py +0 -0
- {tests/api/sellers → sp_api/asyncio/api/fulfillment_inbound}/__init__.py +0 -0
- {tests/client → sp_api/asyncio/api/fulfillment_outbound}/__init__.py +0 -0
- /tests/api/sellers/test_sellers.py → /sp_api/asyncio/api/inventories/__init__.py +0 -0
|
@@ -0,0 +1,706 @@
|
|
|
1
|
+
import uuid
|
|
2
|
+
|
|
3
|
+
from sp_api.base import Client, sp_endpoint, ApiResponse, fill_query_params
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ExternalFulfillment(Client):
|
|
7
|
+
"""
|
|
8
|
+
ExternalFulfillment SP-API Client
|
|
9
|
+
:link:
|
|
10
|
+
|
|
11
|
+
The Selling Partner API to work with Amazon External Fulfillment shipments management/processing services.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
@sp_endpoint("/externalFulfillment/2024-09-11/shipments", method="GET")
|
|
15
|
+
def get_shipments(self, **kwargs) -> ApiResponse:
|
|
16
|
+
"""
|
|
17
|
+
get_shipments(self, **kwargs) -> ApiResponse
|
|
18
|
+
|
|
19
|
+
Get a list of shipments dropped for the seller in the specified status. Shipments can be further filtered based on the fulfillment node and/or shipments' last updated date and time.
|
|
20
|
+
|
|
21
|
+
**Usage Plans:**
|
|
22
|
+
|
|
23
|
+
======================================
|
|
24
|
+
Rate (requests per second)
|
|
25
|
+
======================================
|
|
26
|
+
5
|
|
27
|
+
======================================
|
|
28
|
+
|
|
29
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
key locationId:string | The SmartConnect location identifier for which shipments are to be retrieved
|
|
33
|
+
key channelName:string | The channel name associated with the location. Valid values are FBA, MFN
|
|
34
|
+
key status*:string | * REQUIRED Retrieves only those shipments which are in the specified status. The most common use-case would be to fetch all new shipments which would be in the ACCEPTED status. Valid values are ACCEPTED, CONFIRMED, PACKAGE_CREATED, PICKUP_SLOT_RETRIEVED, INVOICE_GENERATED, SHIPLABEL_GENERATED, SHIPPED, DELIVERED and CANCELLED.
|
|
35
|
+
key lastUpdatedAfter:string | Shipments whose latest update is after the specified date/time are included in the response. This field should be in the ISO8601 date/time format.
|
|
36
|
+
key lastUpdatedBefore:string | Shipments whose latest update is before the specified date/time are included in the response. This field should be in the ISO8601 date/time format.
|
|
37
|
+
key maxResults:integer | Specify the number of shipments to be included in the response.
|
|
38
|
+
key paginationToken:string | The nexToken value returned from a previous call to get shipments. Use this to retrieve the next page of shipments.
|
|
39
|
+
Returns:
|
|
40
|
+
ApiResponse:
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
return self._request(kwargs.pop("path"), params=kwargs)
|
|
44
|
+
|
|
45
|
+
@sp_endpoint("/externalFulfillment/2024-09-11/shipments/{}", method="GET")
|
|
46
|
+
def get_shipment(self, shipmentId, **kwargs) -> ApiResponse:
|
|
47
|
+
"""
|
|
48
|
+
get_shipment(self, shipmentId, **kwargs) -> ApiResponse
|
|
49
|
+
|
|
50
|
+
Get a single shipment with the specified id.
|
|
51
|
+
|
|
52
|
+
**Usage Plan:**
|
|
53
|
+
|
|
54
|
+
======================================
|
|
55
|
+
Rate (requests per second)
|
|
56
|
+
======================================
|
|
57
|
+
5
|
|
58
|
+
======================================
|
|
59
|
+
|
|
60
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
shipmentId:string | * REQUIRED The id of the shipment to be retrieved.
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
ApiResponse:
|
|
67
|
+
"""
|
|
68
|
+
return self._request(
|
|
69
|
+
fill_query_params(kwargs.pop("path"), shipmentId),
|
|
70
|
+
params=kwargs,
|
|
71
|
+
add_marketplace=False,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
@sp_endpoint("/externalFulfillment/shipments/2021-01-06/shipments/{}", method="POST")
|
|
75
|
+
def process_shipment(self, shipmentId, operation, **kwargs) -> ApiResponse:
|
|
76
|
+
"""
|
|
77
|
+
process_shipment(self, shipmentId, **kwargs) -> ApiResponse
|
|
78
|
+
|
|
79
|
+
Confirms/Rejects that a seller will be fulfilling or cancelling the specified shipment.
|
|
80
|
+
|
|
81
|
+
**Usage Plan:**
|
|
82
|
+
|
|
83
|
+
======================================
|
|
84
|
+
Rate (requests per second)
|
|
85
|
+
======================================
|
|
86
|
+
5
|
|
87
|
+
======================================
|
|
88
|
+
|
|
89
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
shipmentId:string | * REQUIRED The id of the shipment which is to be confirmed for fulfillment.
|
|
93
|
+
operation:string | * REQUIRED The status in which shipment should be moved. Valid values are CONFIRM and REJECT.
|
|
94
|
+
|
|
95
|
+
body: {
|
|
96
|
+
"referenceId": "string",
|
|
97
|
+
"lineItems": [
|
|
98
|
+
{
|
|
99
|
+
"lineItem": {
|
|
100
|
+
"id": "string",
|
|
101
|
+
"quantity": 1
|
|
102
|
+
},
|
|
103
|
+
"reason": "OUT_OF_STOCK"
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
ApiResponse:
|
|
110
|
+
"""
|
|
111
|
+
return self._request(
|
|
112
|
+
fill_query_params(kwargs.pop("path"), shipmentId),
|
|
113
|
+
params={"operation": operation},
|
|
114
|
+
data=kwargs,
|
|
115
|
+
add_marketplace=False,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@sp_endpoint("/externalFulfillment/shipments/2021-01-06/shipments/{}/packages", method="POST")
|
|
120
|
+
def create_packages(self, shipmentId, **kwargs) -> ApiResponse:
|
|
121
|
+
"""
|
|
122
|
+
create_packages(self, shipmentId, **kwargs) -> ApiResponse
|
|
123
|
+
|
|
124
|
+
Provides details about the packages that will be used to fulfill the specified shipment.
|
|
125
|
+
|
|
126
|
+
**Usage Plan:**
|
|
127
|
+
|
|
128
|
+
======================================
|
|
129
|
+
Rate (requests per second)
|
|
130
|
+
======================================
|
|
131
|
+
5
|
|
132
|
+
======================================
|
|
133
|
+
|
|
134
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
shipmentId:string | * REQUIRED The id of the shipment for which package information is being provided.
|
|
138
|
+
|
|
139
|
+
body: {
|
|
140
|
+
"packages": [
|
|
141
|
+
{
|
|
142
|
+
"id": "string",
|
|
143
|
+
"dimensions": {
|
|
144
|
+
"length": {
|
|
145
|
+
"value": "string",
|
|
146
|
+
"dimensionUnit": "CM"
|
|
147
|
+
},
|
|
148
|
+
"width": {
|
|
149
|
+
"value": "string",
|
|
150
|
+
"dimensionUnit": "CM"
|
|
151
|
+
},
|
|
152
|
+
"height": {
|
|
153
|
+
"value": "string",
|
|
154
|
+
"dimensionUnit": "CM"
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
"weight": {
|
|
158
|
+
"value": "string",
|
|
159
|
+
"weightUnit": "kilograms"
|
|
160
|
+
},
|
|
161
|
+
"hazmatLabels": [],
|
|
162
|
+
"packageLineItems": [
|
|
163
|
+
{
|
|
164
|
+
"packageLineItemId": "string",
|
|
165
|
+
"quantity": 1,
|
|
166
|
+
"serialNumbers": [],
|
|
167
|
+
"pieces": 1,
|
|
168
|
+
"countryOfOrigin": "ES"
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"status": "CREATED"
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
Returns:
|
|
176
|
+
ApiResponse:
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
return self._request(
|
|
180
|
+
fill_query_params(kwargs.pop("path"), shipmentId),
|
|
181
|
+
data=kwargs,
|
|
182
|
+
add_marketplace=False
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
@sp_endpoint("/externalFulfillment/shipments/2021-01-06/shipments/{}/packages/{}", method="PUT")
|
|
186
|
+
def update_package(self, shipmentId, packageId, **kwargs) -> ApiResponse:
|
|
187
|
+
"""
|
|
188
|
+
update_package(self, shipmentId, packageId, **kwargs) -> ApiResponse
|
|
189
|
+
|
|
190
|
+
Updates the details about the packages that will be used to fulfill the specified shipment.
|
|
191
|
+
|
|
192
|
+
**Usage Plan:**
|
|
193
|
+
|
|
194
|
+
======================================
|
|
195
|
+
Rate (requests per second)
|
|
196
|
+
======================================
|
|
197
|
+
5
|
|
198
|
+
======================================
|
|
199
|
+
|
|
200
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
201
|
+
|
|
202
|
+
Args:
|
|
203
|
+
shipmentId:string | * REQUIRED The id of the shipment for which package information is being updated.
|
|
204
|
+
packageId:string | * REQUIRED The id of the shipment for which package information is being updated.
|
|
205
|
+
|
|
206
|
+
body: {
|
|
207
|
+
"packages": [
|
|
208
|
+
{
|
|
209
|
+
"id": "string",
|
|
210
|
+
"dimensions": {
|
|
211
|
+
"length": {
|
|
212
|
+
"value": "string",
|
|
213
|
+
"dimensionUnit": "CM"
|
|
214
|
+
},
|
|
215
|
+
"width": {
|
|
216
|
+
"value": "string",
|
|
217
|
+
"dimensionUnit": "CM"
|
|
218
|
+
},
|
|
219
|
+
"height": {
|
|
220
|
+
"value": "string",
|
|
221
|
+
"dimensionUnit": "CM"
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
"weight": {
|
|
225
|
+
"value": "string",
|
|
226
|
+
"weightUnit": "kilograms"
|
|
227
|
+
},
|
|
228
|
+
"hazmatLabels": [],
|
|
229
|
+
"packageLineItems": [
|
|
230
|
+
{
|
|
231
|
+
"packageLineItemId": "string",
|
|
232
|
+
"quantity": 1,
|
|
233
|
+
"serialNumbers": [],
|
|
234
|
+
"pieces": 1,
|
|
235
|
+
"countryOfOrigin": "ES"
|
|
236
|
+
}
|
|
237
|
+
],
|
|
238
|
+
"status": "SHIPPED"
|
|
239
|
+
}
|
|
240
|
+
]
|
|
241
|
+
}
|
|
242
|
+
Returns:
|
|
243
|
+
ApiResponse:
|
|
244
|
+
"""
|
|
245
|
+
|
|
246
|
+
return self._request(
|
|
247
|
+
fill_query_params(kwargs.pop("path"), shipmentId, packageId),
|
|
248
|
+
data=kwargs,
|
|
249
|
+
add_marketplace=False
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
@sp_endpoint("/externalFulfillment/shipments/2021-01-06/shipments/{}/packages/{}", method="PATCH")
|
|
253
|
+
def update_package_status(self, shipmentId, packageId, **kwargs) -> ApiResponse:
|
|
254
|
+
"""
|
|
255
|
+
update_package_status(self, shipmentId, **kwargs) -> ApiResponse
|
|
256
|
+
|
|
257
|
+
Updates the status of the packages.
|
|
258
|
+
|
|
259
|
+
**Usage Plan:**
|
|
260
|
+
|
|
261
|
+
======================================
|
|
262
|
+
Rate (requests per second)
|
|
263
|
+
======================================
|
|
264
|
+
5
|
|
265
|
+
======================================
|
|
266
|
+
|
|
267
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
268
|
+
|
|
269
|
+
Args:
|
|
270
|
+
shipmentId:string | * REQUIRED The id of the shipment for which package information is being updated.
|
|
271
|
+
packageId:string | * REQUIRED The id of the shipment for which package information is being updated.
|
|
272
|
+
key status:string | * REQUIRED This field is deprecated. All the package status details should be defined in the body parameter.
|
|
273
|
+
|
|
274
|
+
body: {
|
|
275
|
+
"status": "SHIPPED",
|
|
276
|
+
"subStatus": "OUT_FOR_DELIVERY",
|
|
277
|
+
"reason": "OutForDelivery"
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
Returns:
|
|
281
|
+
ApiResponse:
|
|
282
|
+
"""
|
|
283
|
+
params = {}
|
|
284
|
+
if "status" in kwargs:
|
|
285
|
+
params["status"] = kwargs.get("status")
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
return self._request(
|
|
289
|
+
fill_query_params(kwargs.pop("path"), shipmentId, packageId),
|
|
290
|
+
params=params,
|
|
291
|
+
data=kwargs,
|
|
292
|
+
add_marketplace=False
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
@sp_endpoint("/externalFulfillment/shipments/2021-01-06/shipments/{}/invoice", method="POST")
|
|
296
|
+
def generate_invoice(self, shipmentId, **kwargs) -> ApiResponse:
|
|
297
|
+
"""
|
|
298
|
+
generate_invoice(self, shipmentId, **kwargs) -> ApiResponse
|
|
299
|
+
|
|
300
|
+
Generates and retrieves the invoice for the specified shipment.
|
|
301
|
+
|
|
302
|
+
**Usage Plan:**
|
|
303
|
+
|
|
304
|
+
======================================
|
|
305
|
+
Rate (requests per second)
|
|
306
|
+
======================================
|
|
307
|
+
5
|
|
308
|
+
======================================
|
|
309
|
+
|
|
310
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
311
|
+
|
|
312
|
+
Args:
|
|
313
|
+
shipmentId:string | * REQUIRED The id of the shipment whose invoice is to be generated and retrieved.
|
|
314
|
+
|
|
315
|
+
Returns:
|
|
316
|
+
ApiResponse:
|
|
317
|
+
"""
|
|
318
|
+
|
|
319
|
+
return self._request(
|
|
320
|
+
fill_query_params(kwargs.pop("path"), shipmentId),
|
|
321
|
+
data=kwargs,
|
|
322
|
+
add_marketplace=False
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
@sp_endpoint("/externalFulfillment/shipments/2021-01-06/shipments/{}/invoice", method="GET")
|
|
326
|
+
def retrieve_invoice(self, shipmentId, **kwargs) -> ApiResponse:
|
|
327
|
+
"""
|
|
328
|
+
retrieve_invoice(self, shipmentId, **kwargs) -> ApiResponse
|
|
329
|
+
|
|
330
|
+
Retrieves invoice for the specified shipment.
|
|
331
|
+
|
|
332
|
+
**Usage Plan:**
|
|
333
|
+
|
|
334
|
+
======================================
|
|
335
|
+
Rate (requests per second)
|
|
336
|
+
======================================
|
|
337
|
+
5
|
|
338
|
+
======================================
|
|
339
|
+
|
|
340
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
341
|
+
|
|
342
|
+
Args:
|
|
343
|
+
shipmentId:string | * REQUIRED The id of the shipment whose invoice is to be retrieved.
|
|
344
|
+
|
|
345
|
+
Returns:
|
|
346
|
+
ApiResponse:
|
|
347
|
+
|
|
348
|
+
"""
|
|
349
|
+
|
|
350
|
+
return self._request(
|
|
351
|
+
fill_query_params(kwargs.pop("path"), shipmentId),
|
|
352
|
+
params=kwargs,
|
|
353
|
+
add_marketplace=False
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
@sp_endpoint("/externalFulfillment/shipments/2021-01-06/shippingOptions", method="GET")
|
|
357
|
+
def retrieve_shipping_options(self, shipmentId, packageId, **kwargs) -> ApiResponse:
|
|
358
|
+
"""
|
|
359
|
+
retrieve_shipping_options(self, shipmentId, packageId, **kwargs) -> ApiResponse
|
|
360
|
+
|
|
361
|
+
An API for a client to retrieve an optional list of shippingOptions that marketplace/channel provides
|
|
362
|
+
for the pickup of the packages of an shipment. This API will return a list of shippingOptions if the
|
|
363
|
+
marketplace/channel provides transportation and allows the seller to choose a shippingOption. If the
|
|
364
|
+
marketplace/channel does not allow for a shippingOption to be selected, but has a pre-determined shippingOption,
|
|
365
|
+
then this API will return an empty response.
|
|
366
|
+
|
|
367
|
+
**Usage Plan:**
|
|
368
|
+
|
|
369
|
+
======================================
|
|
370
|
+
Rate (requests per second)
|
|
371
|
+
======================================
|
|
372
|
+
1
|
|
373
|
+
======================================
|
|
374
|
+
|
|
375
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
376
|
+
|
|
377
|
+
Args:
|
|
378
|
+
shipmentId:string | * REQUIRED The id of the shipment for which available shipping option needs to be fetched.
|
|
379
|
+
packageId:string | * REQUIRED The id of the package for which available shipping option needs to be fetched.
|
|
380
|
+
|
|
381
|
+
Returns:
|
|
382
|
+
ApiResponse:
|
|
383
|
+
"""
|
|
384
|
+
params = {"shipmentId": shipmentId, "packageId": packageId}
|
|
385
|
+
return self._request(kwargs.pop("path"), params=params, add_marketplace=False)
|
|
386
|
+
|
|
387
|
+
@sp_endpoint("/externalFulfillment/shipments/2021-01-06/shipments/{}/shipLabels", method="PUT")
|
|
388
|
+
def generate_ship_labels(self, shipmentId, operation, **kwargs) -> ApiResponse:
|
|
389
|
+
"""
|
|
390
|
+
generate_ship_labels(self, shipmentId, operation, **kwargs) -> ApiResponse
|
|
391
|
+
|
|
392
|
+
Generates and retrieves all ship-labels for one or more packages in the specified shipment.
|
|
393
|
+
|
|
394
|
+
**Usage Plan:**
|
|
395
|
+
|
|
396
|
+
======================================
|
|
397
|
+
Rate (requests per second)
|
|
398
|
+
======================================
|
|
399
|
+
1
|
|
400
|
+
======================================
|
|
401
|
+
|
|
402
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
403
|
+
|
|
404
|
+
Args:
|
|
405
|
+
shipmentId:string | * REQUIRED The id of the shipment whose ship-label is to be generated and retrieved.
|
|
406
|
+
key shippingOptionId:string | The id of the shippingOption for which a ship-label is to be generated and retrieved. Applicable only for MFN channels.
|
|
407
|
+
operation:string | * REQUIRED The operation which says it is generation or regeneration of label. Valid values are GENERATE, REGENERATE
|
|
408
|
+
|
|
409
|
+
body: {
|
|
410
|
+
"packageIds": [
|
|
411
|
+
"string"
|
|
412
|
+
],
|
|
413
|
+
"courierSupportedAttributes": {
|
|
414
|
+
"carrierName": "string",
|
|
415
|
+
"trackingId": "string"
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
Returns:
|
|
419
|
+
ApiResponse:
|
|
420
|
+
"""
|
|
421
|
+
|
|
422
|
+
params = {"operation": operation}
|
|
423
|
+
if "shippingOptionId" in kwargs:
|
|
424
|
+
params["shippingOptionId"] = kwargs.pop("shippingOptionId")
|
|
425
|
+
|
|
426
|
+
return self._request(
|
|
427
|
+
fill_query_params(kwargs.pop("path"), shipmentId),
|
|
428
|
+
params=params,
|
|
429
|
+
data=kwargs,
|
|
430
|
+
add_marketplace=False
|
|
431
|
+
)
|
|
432
|
+
|
|
433
|
+
@sp_endpoint("/externalFulfillment/shipments/2021-01-06/shipments/{}/packages/{}/shipLabel", method="GET")
|
|
434
|
+
def retrieve_ship_label(self, shipmentId, packageId, **kwargs) -> ApiResponse:
|
|
435
|
+
"""
|
|
436
|
+
retrieve_ship_label(self, shipmentId, packageId, **kwargs) -> ApiResponse
|
|
437
|
+
|
|
438
|
+
retrieves a ship-label for the specified package in the specified shipment.
|
|
439
|
+
|
|
440
|
+
**Usage Plan:**
|
|
441
|
+
|
|
442
|
+
======================================
|
|
443
|
+
Rate (requests per second)
|
|
444
|
+
======================================
|
|
445
|
+
1
|
|
446
|
+
======================================
|
|
447
|
+
|
|
448
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
449
|
+
|
|
450
|
+
Args:
|
|
451
|
+
shipmentId:string | * REQUIRED The id of the shipment whose ship-label is to be generated and retrieved.
|
|
452
|
+
packageId:string | * REQUIRED The id of the package for which a ship-label is to be generated and retrieved.
|
|
453
|
+
|
|
454
|
+
Returns:
|
|
455
|
+
ApiResponse:
|
|
456
|
+
"""
|
|
457
|
+
|
|
458
|
+
return self._request(
|
|
459
|
+
fill_query_params(kwargs.pop("path"), shipmentId, packageId),
|
|
460
|
+
params=kwargs,
|
|
461
|
+
add_marketplace=False
|
|
462
|
+
)
|
|
463
|
+
|
|
464
|
+
@sp_endpoint("/externalFulfillment/returns/2021-08-19/returns", method="GET")
|
|
465
|
+
def list_returns(self, **kwargs) -> ApiResponse:
|
|
466
|
+
"""
|
|
467
|
+
list_returns(self, **kwargs) -> ApiResponse
|
|
468
|
+
|
|
469
|
+
Get a list of return items dropped for the seller in the specified node, and in the specified status. Returns can be further filtered based on their creation date/time
|
|
470
|
+
|
|
471
|
+
**Usage Plans:**
|
|
472
|
+
|
|
473
|
+
======================================
|
|
474
|
+
Rate (requests per second)
|
|
475
|
+
======================================
|
|
476
|
+
5
|
|
477
|
+
======================================
|
|
478
|
+
|
|
479
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
480
|
+
|
|
481
|
+
Args:
|
|
482
|
+
key returnLocationId:string | The SmartConnect location identifier for which return items are to be retrieved
|
|
483
|
+
key rmaId:string | The RMA id of the return items to be listed
|
|
484
|
+
key status:string | Retrieves only those return items which are in the specified status. The most common use-case would be to fetch all new return items which would be in the CREATED status
|
|
485
|
+
key reverseTrackingId:string | The reverseTrackingId of the return items to be listed
|
|
486
|
+
key createdSince:string | Return items whose creation is after the specified date/time are included in the response. This field should be in the ISO8601 date/time format.
|
|
487
|
+
key createdUntil:string | Return items whose creation is before the specified date/time are included in the response. This field should be in the ISO8601 date/time format.
|
|
488
|
+
key lastUpdatedSince:string | Return items whose last update is after the specified date/time are included in the response. This field should be in the ISO8601 date/time format. Only to be used along with returnLocationId and status params.
|
|
489
|
+
key lastUpdatedUntil:string | Return items whose last update is before the specified date/time are included in the response. This field should be in the ISO8601 date/time format. Only to be used along with returnLocationId and status params.
|
|
490
|
+
key lastUpdatedAfter:string | DEPRECATED. Use createdFrom param instead for same results. Return items whose creation is after the specified date/time are included in the response. This field should be in the ISO8601 date/time format.
|
|
491
|
+
key lastUpdatedBefore:string | DEPRECATED. Use createdTo param instead for same results. Return items whose creation is before the specified date/time are included in the response. This field should be in the ISO8601 date/time format.
|
|
492
|
+
key maxResults:integer | Specify the number of return items to be included in the response. It will default to 10 in case not provided. Maximum limit is 100.
|
|
493
|
+
key nextToken:string | A cursor representing information about the next page of returns. Use the value returned in previous calls to page through the complete list of returns.
|
|
494
|
+
|
|
495
|
+
Returns:
|
|
496
|
+
ApiResponse:
|
|
497
|
+
"""
|
|
498
|
+
|
|
499
|
+
return self._request(kwargs.pop("path"), params=kwargs, add_marketplace=False)
|
|
500
|
+
|
|
501
|
+
@sp_endpoint("/externalFulfillment/returns/2021-08-19/returns/{}", method="GET")
|
|
502
|
+
def get_return(self, returnId, **kwargs) -> ApiResponse:
|
|
503
|
+
"""
|
|
504
|
+
get_return(self, returnId, **kwargs) -> ApiResponse
|
|
505
|
+
|
|
506
|
+
Get a single return item with the specified id.
|
|
507
|
+
|
|
508
|
+
**Usage Plan:**
|
|
509
|
+
|
|
510
|
+
======================================
|
|
511
|
+
Rate (requests per second)
|
|
512
|
+
======================================
|
|
513
|
+
5
|
|
514
|
+
======================================
|
|
515
|
+
|
|
516
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
517
|
+
|
|
518
|
+
Args:
|
|
519
|
+
returnId:string | * REQUIRED The id of the return item to be retrieved.
|
|
520
|
+
|
|
521
|
+
Returns:
|
|
522
|
+
ApiResponse:
|
|
523
|
+
"""
|
|
524
|
+
return self._request(
|
|
525
|
+
fill_query_params(kwargs.pop("path"), returnId),
|
|
526
|
+
params=kwargs,
|
|
527
|
+
add_marketplace=False,
|
|
528
|
+
)
|
|
529
|
+
|
|
530
|
+
@sp_endpoint("/externalFulfillment/returns/2021-08-19/returns/{}", method="PATCH")
|
|
531
|
+
def process_return_item(self, returnId, **kwargs) -> ApiResponse:
|
|
532
|
+
"""
|
|
533
|
+
process_return_item(self, returnId, **kwargs) -> ApiResponse
|
|
534
|
+
|
|
535
|
+
Process a return by grading. Determine the item condition and update the quantities for each item condition.
|
|
536
|
+
|
|
537
|
+
**Usage Plan:**
|
|
538
|
+
|
|
539
|
+
======================================
|
|
540
|
+
Rate (requests per second)
|
|
541
|
+
======================================
|
|
542
|
+
5
|
|
543
|
+
======================================
|
|
544
|
+
|
|
545
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
546
|
+
|
|
547
|
+
Args:
|
|
548
|
+
returnId:string | * REQUIRED The id of the return item to be retrieved.
|
|
549
|
+
|
|
550
|
+
body: {
|
|
551
|
+
"op": "increment",
|
|
552
|
+
"path": "/processedReturns",
|
|
553
|
+
"value": {
|
|
554
|
+
"Sellable": 0,
|
|
555
|
+
"Defective": 0,
|
|
556
|
+
"CustomerDamaged": 0,
|
|
557
|
+
"CarrierDamaged": 0,
|
|
558
|
+
"Fraud": 0,
|
|
559
|
+
"WrongItem": 0
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
Returns:
|
|
564
|
+
ApiResponse:
|
|
565
|
+
"""
|
|
566
|
+
|
|
567
|
+
headers = self.headers.copy()
|
|
568
|
+
if "x-amzn-idempotency-token" in kwargs:
|
|
569
|
+
headers["x-amzn-idempotency-token"] = kwargs.pop("x-amzn-idempotency-token")
|
|
570
|
+
else:
|
|
571
|
+
headers["x-amzn-idempotency-token"] = str(uuid.uuid4())
|
|
572
|
+
|
|
573
|
+
return self._request(
|
|
574
|
+
fill_query_params(kwargs.pop("path"), returnId),
|
|
575
|
+
data=kwargs,
|
|
576
|
+
headers=headers,
|
|
577
|
+
add_marketplace=False,
|
|
578
|
+
)
|
|
579
|
+
|
|
580
|
+
@sp_endpoint("/externalFulfillment/inventory/2021-01-06/locations/{}/skus/{}", method="GET")
|
|
581
|
+
def get_inventory(self, locationId, skuId, **kwargs) -> ApiResponse:
|
|
582
|
+
"""
|
|
583
|
+
get_inventory(self, locationId, skuId, **kwargs) -> ApiResponse
|
|
584
|
+
|
|
585
|
+
Get the current inventory for a given SKU at a given location.
|
|
586
|
+
|
|
587
|
+
**Usage Plan:**
|
|
588
|
+
|
|
589
|
+
======================================
|
|
590
|
+
Rate (requests per second)
|
|
591
|
+
======================================
|
|
592
|
+
5
|
|
593
|
+
======================================
|
|
594
|
+
|
|
595
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
596
|
+
|
|
597
|
+
Args:
|
|
598
|
+
locationId:string | * REQUIRED The node identifier for the seller's location in smart connect for which inventory is being updated
|
|
599
|
+
skuId:string | * REQUIRED The seller's identifier for the SKU for which inventory is being updated
|
|
600
|
+
|
|
601
|
+
Returns:
|
|
602
|
+
ApiResponse:
|
|
603
|
+
"""
|
|
604
|
+
return self._request(
|
|
605
|
+
fill_query_params(kwargs.pop("path"), locationId, skuId),
|
|
606
|
+
params=kwargs,
|
|
607
|
+
add_marketplace=False,
|
|
608
|
+
)
|
|
609
|
+
|
|
610
|
+
@sp_endpoint("/externalFulfillment/inventory/2021-01-06/locations/{}/skus/{}", method="PUT")
|
|
611
|
+
def update_inventory(self, locationId, skuId, quantity, **kwargs) -> ApiResponse:
|
|
612
|
+
"""
|
|
613
|
+
update_inventory(self, locationId, skuId, quantity, **kwargs) -> ApiResponse
|
|
614
|
+
|
|
615
|
+
Get the current inventory for a given SKU at a given location.
|
|
616
|
+
|
|
617
|
+
**Usage Plan:**
|
|
618
|
+
|
|
619
|
+
======================================
|
|
620
|
+
Rate (requests per second)
|
|
621
|
+
======================================
|
|
622
|
+
5
|
|
623
|
+
======================================
|
|
624
|
+
|
|
625
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
626
|
+
|
|
627
|
+
Args:
|
|
628
|
+
locationId:string | * REQUIRED The node identifier for the seller's location in smart connect for which inventory is being updated
|
|
629
|
+
skuId:string | * REQUIRED The seller's identifier for the SKU for which inventory is being updated
|
|
630
|
+
quantity:integer | * REQUIRED The absolute number of items of the specified SKU available at the specified node. This value should always be a non-zero or zero positive integer
|
|
631
|
+
key if_match:string | A unique number provided with each call to update the inventory. This number must be latest version of entity that exist in system. It will be equal to comparison against existing version of entity.
|
|
632
|
+
key if_unmodified_since:string | Timestamp or increasing number which does greater than comparison before applying the change. This is different than version of entity and used to overwrite the latest data. It should follow data/time format of rfc2616
|
|
633
|
+
|
|
634
|
+
Returns:
|
|
635
|
+
ApiResponse:
|
|
636
|
+
"""
|
|
637
|
+
kwargs["quantity"] = quantity
|
|
638
|
+
|
|
639
|
+
headers = self.headers.copy()
|
|
640
|
+
if "if_match" in kwargs:
|
|
641
|
+
headers["If-Match"] = kwargs.pop("if_match")
|
|
642
|
+
if "if_unmodified_since" in kwargs:
|
|
643
|
+
headers["If-Unmodified-Since"] = kwargs.pop("if_unmodified_since")
|
|
644
|
+
|
|
645
|
+
return self._request(
|
|
646
|
+
fill_query_params(kwargs.pop("path"), locationId, skuId),
|
|
647
|
+
params=kwargs,
|
|
648
|
+
add_marketplace=False,
|
|
649
|
+
)
|
|
650
|
+
|
|
651
|
+
@sp_endpoint("/externalFulfillment/inventory/2024-09-11/inventories", method="POST")
|
|
652
|
+
def batch_inventory(self, **kwargs) -> ApiResponse:
|
|
653
|
+
"""
|
|
654
|
+
batch_inventory(self, **kwargs) -> ApiResponse
|
|
655
|
+
|
|
656
|
+
Returns the set of responses that correspond to the batched list of up to 10 requests defined in the request
|
|
657
|
+
body. The response for each successful (HTTP status code 200) request in the set includes the inventory count
|
|
658
|
+
for provided sku and locationId pair
|
|
659
|
+
|
|
660
|
+
**Usage Plan:**
|
|
661
|
+
|
|
662
|
+
======================================
|
|
663
|
+
Rate (requests per second)
|
|
664
|
+
======================================
|
|
665
|
+
5
|
|
666
|
+
======================================
|
|
667
|
+
|
|
668
|
+
For more information, see "Usage Plans and Rate Limits" in the Selling Partner API documentation.
|
|
669
|
+
|
|
670
|
+
Args:
|
|
671
|
+
body: {
|
|
672
|
+
"requests": [
|
|
673
|
+
{
|
|
674
|
+
"method": "POST",
|
|
675
|
+
"uri": "/inventory/update?locationId=EXSB&skuId=efptestsku1",
|
|
676
|
+
"body": {
|
|
677
|
+
"quantity": 15,
|
|
678
|
+
"clientSequenceNumber": 12345678,
|
|
679
|
+
"marketplaceAttributes": {
|
|
680
|
+
"marketplaceId": "AXJDDKDFDKDF",
|
|
681
|
+
"channelName": "FBA"
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"method": "POST",
|
|
687
|
+
"uri": "/inventory/fetch?locationId=EXSB&skuId=efptestsku2",
|
|
688
|
+
"body": {
|
|
689
|
+
"marketplaceAttributes": {
|
|
690
|
+
"marketplaceId": "AXJDDKDFDKDF",
|
|
691
|
+
"channelName": "FBA"
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
]
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
Returns:
|
|
699
|
+
ApiResponse:
|
|
700
|
+
"""
|
|
701
|
+
|
|
702
|
+
return self._request(
|
|
703
|
+
kwargs.pop("path"),
|
|
704
|
+
data=kwargs,
|
|
705
|
+
add_marketplace=False,
|
|
706
|
+
)
|