Atualizar os preços e a disponibilidade do produto
Nota
A API de Inventário está disponível apenas para participantes piloto fechados. A API e a documentação estão sujeitas a alterações.
Se tudo o que precisa de fazer é atualizar os preços e a disponibilidade de um produto na loja Bing Merchant Center (BMC), deve utilizar o recurso Inventário em vez do recurso Produto . Com o recurso Produto, tem de fornecer todos os detalhes do produto, mas o recurso Inventário permite-lhe especificar apenas o preço e a disponibilidade.
Atualizar um único produto
Para atualizar um único produto, utilize o /bmc/{bmcMerchantId}/inventory/{storeCode}/products/{productUniqueId}
modelo num pedido HTTP POST. Defina {bmcMerchantId} para o ID da loja, {storeCode} como online e {productUniqueId} para o ID completamente qualificado do produto.
O corpo do pedido é um objeto Produto que inclui apenas os seguintes campos:
- preço
- disponibilidade
- salePrice
- salePriceEffectiveDate
Os price
campos e availability
são necessários; a chamada falha se não especificar ambos os campos. Os salePrice
e salePriceEffectiveDate
são opcionais. Se não os especificar, o preço de venda atual do produto e os valores de data efetiva são removidos da oferta.
Segue-se um pedido POST de exemplo.
POST https://content.api.bingads.microsoft.com/shopping/v9.1/bmc/1234/inventory/online/products/online:en:US:5678 HTTP/1.1
AuthenticationToken: EwAAA3hl...
DeveloperToken: 0417...
Content-Type: application/json
Host: content.api.bingads.microsoft.com
Content-Length: 73
{
"availability":"out of stock",
"price":{
"currency":"USD",
"value":1234.0
}
}
Se o pedido for bem-sucedido, devolve o código de estado 200 e o URI do produto atualizado no cabeçalho Localização.
HTTP/1.1 200 OK
Content-Type: application/json
Location: https://content.api.bingads.microsoft.com/shopping.svc/v9.1/bmc/1234/products/online:en:US:5678
WebRequestActivityId: e2c53946-e18c-4302-a40a-6d174429574a
Date: Fri, 09 Nov 2018 20:34:35 GMT
Content-Length: 46
{
"kind": "content#inventorySetResponse"
}
Se a resposta falhar, o pedido devolve o código de estado 400; o corpo contém um objeto de resposta de erro que identifica o problema.
HTTP/1.1 400 Bad Request
Content-Type: application/json
Location: https://content.api.bingads.microsoft.com/shopping.svc/v9.1/bmc/1234/products/online:en:US:5678
WebRequestActivityId: d3d31a3f-8993-428e-858c-730032e32a46
Date: Sat, 10 Nov 2018 14:35:14 GMT
Content-Length: 305
{
"error": {
"errors": [
{
"reason": "invalid",
"message": "Invalid value for: availability, stock is not a valid value",
"domain": "global"
}
],
"code": "400",
"message": "Invalid value for: availability, stock is not a valid value"
}
}
Por exemplo, código que mostra como utilizar o recurso inventário para atualizar um único produto, veja Atualizar os preços e a disponibilidade de um único produto.
Atualizar vários produtos
Para atualizar vários produtos, utilize o /bmc/{bmcMerchantId}/inventory/batch
modelo num pedido HTTP POST. Defina {bmcMerchantId} para o ID da loja.
O corpo do pedido é um objeto do Batch que pode conter um máximo de 400 produtos para atualizar. Cada entrada no lote fornece um ID de lote definido pelo utilizador, um código de arquivo definido como online, o ID completamente qualificado do produto e os campos de preço e disponibilidade do produto a atualizar. O objeto Produto só pode incluir os seguintes campos:
- preço
- disponibilidade
- salePrice
- salePriceEffectiveDate
Os price
campos e availability
são necessários; a chamada falha se não especificar ambos os campos. Os salePrice
e salePriceEffectiveDate
são opcionais. Se não os especificar, o preço de venda atual do produto e os valores de data efetiva são removidos da oferta.
Segue-se um pedido POST de exemplo.
POST https://content.api.bingads.microsoft.com/shopping/v9.1/bmc/1234/inventory/batch HTTP/1.1
AuthenticationToken: EwAAA3hl...
DeveloperToken: 0417...
Content-Type: application/json
Host: content.api.bingads.microsoft.com
Content-Length: 194
{
"entries":[
{
"batchId":1,
"storeCode":"online",
"productId":"online:en:US:5678",
"inventory":{
"availability":"in stock",
"price":{
"currency":"USD",
"value":4567.0
}
}
},
{
"batchId":2,
"storeCode":"online",
"productId":"online:en:US:9012",
"inventory":{
"availability":"bad in stock",
"price":{
"currency":"USD",
"value":678.0
}
}
}
]
}
Uma vez que o pedido tenta atualizar todos os produtos no lote, devolve o código de estado 200. Para determinar se uma atualização falhou, tem de iterar todas as entradas no lote. Uma atualização falhou se a entrada incluir o errors
campo; caso contrário, foi efetuada com êxito.
HTTP/1.1 200 OK
Content-Type: application/json
WebRequestActivityId: bf019ef5-fa76-4703-9132-7954b0323c81
Date: Fri, 09 Nov 2018 20:48:15 GMT
Content-Length: 172
{
"kind": "content#inventoryCustomBatchResponse",
"entries": [
{
"kind": "content#inventoryCustomBatchEntryResponse",
"batchId": "1"
},
{
"kind": "content#inventoryCustomBatchEntryResponse",
"batchId": "2",
"errors": {
"errors": [
{
"reason": "invalid",
"message": "Invalid value for: availability, bad in stock is not a valid value",
"domain": "global"
}
]
}
}
]
}
Por exemplo, código que mostra como utilizar o recurso Inventário para atualizar um lote de produtos, veja Atualizar preços e disponibilidade para um lote de produtos.