Endpoint "suggestions/matches/action/{actionName}"

Olá,
Eu estou em dúvida no endpoint “suggestions/matches/action/{actionName}” pois quero mandar varios SKU para o mesmo produto aprovar, mas a questão é que o produto não existe ainda, e ele está criando um produto para cada SKU, como posso controlar isso?

1 Like

Boa tarde, Thiago!

Não sei se compreendi muito bem a sua dúvida, você gostaria de aprovar vários SKUs recebidos em um produto, correto?

Nesse caso existem duas opções:

Documentação:

Isso responde a sua pergunta?

Karina Mota
Field Software Engineer | VTEX

Bom dia,
Eu queria aprovar vários SKU para o mesmo produto, caso o produto não exista eu informo newproduct e todos os SKU que eu enviar vao aprovar para um mesmo produto que irá criar?
Caso o produto exista eu informo productMatch e todos os SKU irao aprovar para um produto existente? E onde passo esta chave do produto existente

Olá Tiago!

Isso mesmo, caso o produto não exista você vai usar o parâmetro newproduct no parâmetro matchType no body da requisição:

Caso o produto já exista, você vai usar o parâmetro produtcMatch também no parâmetro matchType no body da requisição:

Nesse caso, além do parâmetro productMatch é necessário informar o productRef também no body da requisição:

Karina Mota
Field Software Engineer | VTEX

e o productRef seria qual referencia? O código interno da VTEX? Código do Seller qual seria que devo passar?

Ola,
Poderia me ajudar? O productRef seria qual referencia? O código interno da VTEX? Código do Seller qual seria que devo passar?

Oi Thiago!

O productRef é o Id do produto já existente no Marketplace, consegue testar por aí dessa forma e me dizer se funciona?

Karina Mota
Field Software Engineer | VTEX

Bom dia Karina,
Fiz um teste aqui e passar um array no endpoint suggestions/matches/action/newproduct
passei o seguinte JSON

[
  {
    "itemId": "269338",
    "versionId": "02092024173121436",
    "matchId": "02102024005906272",
    "matcherId": "02102024005906272",
    "categoryId": "14",
    "brandId": "2000000",
    "skuRef": null,
    "productRef": null,
    "sellerId": ""
  },
  {
    "itemId": "269334",
    "versionId": "02092024173121989",
    "matchId": "02102024002608052",
    "matcherId": "02102024002608052",
    "categoryId": "14",
    "brandId": "2000000",
    "skuRef": null,
    "productRef": null,
    "sellerId": ""
  },
  {
    "itemId": "269335",
    "versionId": "02092024173121838",
    "matchId": "02102024002602203",
    "matcherId": "02102024002602203",
    "categoryId": "14",
    "brandId": "2000000",
    "skuRef": null,
    "productRef": null,
    "sellerId": ""
  },
  {
    "itemId": "269336",
    "versionId": "02252024145244641",
    "matchId": "02102024002419951",
    "matcherId": "02102024002419951",
    "categoryId": "14",
    "brandId": "2000000",
    "skuRef": null,
    "productRef": null,
    "sellerId": ""
  },
  {
    "itemId": "269337",
    "versionId": "02092024173123619",
    "matchId": "02102024001757490",
    "matcherId": "02102024001757490",
    "categoryId": "14",
    "brandId": "2000000",
    "skuRef": null,
    "productRef": null,
    "sellerId": ""
  }
]

OBS: Removi apenas o sellerId aqui quando colei, por questão de segurança.

Esse conteudo me gerou um produto para cada SKU enviado

Oi Thiago!

Mas nesse caso você gostaria que os produtos fossem atribuídos a produtos existentes? Caso fosse isso você precisaria enviar o “productRef” preenchido.

Karina Mota
Field Software Engineer | VTEX

Nesse caso queria que todos que eu passei na lista, fossem criados em um novo produto, pois estou passado a action “newproduct”

O mesmo foi criado um produto para cada item, como faço para que todos os SKU vao pro mesmo produto?

Oi Thiago, vamos lá…

Para o primeiro SKU, que irá ser atribuído a um novo produto você vai usar o parâmetro newproduct no parâmetro matchType no body da requisição:

Para todos os outros SKUs que você deseja que sejam atrelados ao produto que acabou de ser criado, você vai precisar utilizar o parâmetro produtcMatch também no parâmetro matchType no body da requisição e informar o Id do produto no campo productRef, pode testar dessa forma e me dizer se funcionou como o esperado?

Mas eu estou mandando mutiplos ao mesmo tempo, conforme o endpoint e estou enviando o action “newproduct” até onde eu entendi, deveria pegar todos estes SKU que estou passando nesse endpoint e jogar para um produto apenas, não criar um produto para cada SKU (que é o que está acontecendo)

Voce comentou acima do endpoint que é Individually, não multiple.

Ola, alguma sugestão?

Oi Thiago! Bom dia!

Tudo bem por aí?

Na verdade, o problema está justamente nisso. Nesse caso apenas o primeiro produto deveria ser enviado com newproduct os demais produtos precisariam ser enviados com o produtcMatch e seu respectivo productRef. Será que você consegue testar dessa forma?

Bom dia, tudo bem e contigo?
Mas como vou pegar o productref que gerou do primeiro produto? Pois não retorna o código do produto gerado.

Oi Thiago, boa tarde!

Tudo bem por aqui sim!

Então… Para tentar entender exatamente as suas questões e acabei de realizar o procedimento em uma loja teste, conforme você desejava. Vou tentar te passar todo o passo a passo que utilizei, tudo bem?

1. Rodar a API Get all SKU suggestions para obter o {version} obtido no campo “LatestVersionId” e {matchid} obtido no campo “MatchId” ambos necessários para a próxima API a ser utilizada.

2. Rodar a API Match Received SKUs individually utilizando os campos citados anteriormente e preenchendo o campo matchType do body da requisição com a opção newproduct, vou deixar aqui o cURL que eu utilizei:

curl --location --request PUT 'https://api.vtex.com/{accountName}/suggestions/{sellerId}/{sellerskuid}/versions/{version}/matches/{matchid}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'AppKey: {{AppKey}} ' \
--header 'Cookie: janus_sid=98f564d3-9c1c-4925-b7f9-8b415558c1cd' \
--data '{"matcherId":"vtex-matcher",
"matchType":"itemMatch",
"score":"80",
"product":{"name":"New Product Suggestions - Teste",
"description":"New Product Suggestions - Teste",
"categoryId":10,
"brandId":2000002,
"matchType":"newproduct",
"specifications":null},
"sku":
{
    "name":"New SKU Suggestions - Teste",
    "eans":["111111111111"],
    "refId":null,
    "height":10,
    "width":10,
    "length":10,
    "weight":10,
    "images": {
    "image": "https://images.ctfassets.net/alneenqid6w5/p4aDcgaE4SmyYkCwaW0CI/189307d29c86dae17beabde67780d907/tamanhosImg.png"
    },
        "unitMultiplier":1,
        "measurementUnit":"un",
        "specifications":{"Embalagem":"2kg"}
    }

}'

3. Após rodar a API citada acima, é possível obter na resposta dela o Id do produto criado, ele aparece no campo productId, veja:

4. Após isso basta utilizar a API Match Received SKUs individually conforme as instruções já passadas.

Observação Importante: Durante o processo eu não fiz o uso da API Match Multiple Received SKUs por que ela atualmente está em manutenção conforme o aviso da nossa página no developers:

Ola,
tentei fazer da forma como vc me passou, nao estou utilizando mais o endpoint de Match Mutiple Received SKUs, estou mandando individual, mas agora estou recebendo o seguinte retorno: “Insufficient score for approval. Suggestion status: ‘Pending’.”

Sendo que o score do Match é 80
image

Pensei que poderia ser a categoria/marca do produto também, estou passando o seguindo body
{‘matcherId’: ‘vtex-matcher’, ‘matchType’: ‘productMatch’, ‘score’: ‘80’, ‘productRef’: ‘90253197’, ‘skuRef’: None, ‘categoryId’: 56, ‘brandId’: 2000317, ‘sku’: {‘name’: ‘MARINHO - G’, ‘eans’: […], ‘refId’: None, ‘height’: 8.0, ‘width’: 15.0, ‘length’: 23.0, ‘weight’: 400.0, ‘images’: {…}, ‘unitMultiplier’: 1.0, ‘measurementUnit’: ‘un’, ‘specifications’: {…}}}

Oi @thiagothgaspar, será que você consegue checar como estão as configurações da sua loja por meio da API Get Account’s Approval Settings? Acredito que ela vai conseguir trazer a resposta que você precisa.

Caso após checar, você queria ajustar essas configurações pode utilizar a API Save Account’s Approval Settings

Bom dia,
Acredito ter dado certo agora!! Me tira uma dúvida porque eu devo passar o score no endpoint Match Multiple Received SKUs e preciso configurar o score no Save Account’s Approval Settings não entendi esta parte do score