如何通过 Python 中的 Amazon Seller Central SP API 发送 path_body 来更新数量?
例如,我有这样的代码:
request_params = {
"MarketplaceIds": marketplace_id, # required parameter
"CreatedAfter": (
datetime.datetime.now() - datetime.timedelta(days=60)
).isoformat(), # orders created since 30 days ago, the date needs to be in the ISO format
}
#UPDATE QTA
def update_inventory():
url = "https://sellingpartnerapi-eu.amazon.com/listings/2021-08-01/items/XXXXXXXX/1AAA-3333-VVVV"
headers = {
"x-amz-access-token": access_token,
"Content-Type": "application/json",
"x-amz-date": datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ"),
"Host": "sellingpartnerapi-eu.amazon.com",
"x-amz-marketplace-id": marketplace_id, # My marketplace ID
}
patch_body = {
"marketplaceIds": "APJ6JRA9NG5V4",
"patches": [
{
"op": "replace",
"path": "/attributes/fulfillment_availability",
"value": [
{
"quantity": 1,
"fulfillment_channel_code": "DEFAULT",
}
]
}
]
}
response = requests.patch(url, headers=headers, data=json.dumps(patch_body))
return response.json()
在PATCH操作中,我做错了什么?
我收到 InvalidInput 错误,并且不确定如何创建更新数据的调用,而常规 GET 请求没有任何问题。
PATCH 请求,根据 Amazon SP-API 官方文档,您的请求中存在一些问题:
PRODUCT
。亚马逊目录中的每个产品都继承自此基本产品类型,其中包含有关数量和价格(以及其他属性)的信息。您可以调用 getDefinitionsProductType
下载相应的架构(请参阅此处)。总结一下,您的请求必须像这样执行:
def update_inventory():
url = "https://sellingpartnerapi-eu.amazon.com/listings/2021-08-01/items/XXXXXXXX/1AAA-3333-VVVV?marketplaceIds=APJ6JRA9NG5V4"
headers = {
"x-amz-access-token": access_token,
"Content-Type": "application/json",
"x-amz-date": datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ"),
"Host": "sellingpartnerapi-eu.amazon.com",
"x-amz-marketplace-id": marketplace_id, # My marketplace ID
}
patch_body = {
"productType": "PRODUCT",
"patches": [
{
"op": "replace",
"path": "/attributes/fulfillment_availability",
"value": [
{
"quantity": 1,
"fulfillment_channel_code": "DEFAULT",
}
]
}
]
}
response = requests.patch(url, headers=headers, data=json.dumps(patch_body))
return response.json()