Erro "Invalid account name", na requisição da API de subscription v3

Olá pessoal, alguém pode dar algumas dicas de como usar a API de subscription v3? Fiz uma requisição nesse endpoint, mas retorna “Invalid account name”:

fetch(“/api/rns/pub/subscriptions”, {
method: “GET”,
headers: {
“Content-Type”: “application/json”,
Accept: “application/json”
}}).then((response) => response.json())
.then((response) => console.log(response));

image

Documentação:
List subscriptions (vtex.com)

Um detalhe é que fazendo essa requisição no site antes da migração para o IO ela funciona, que seria o link “{accountname}.vtexcommercestable.com.br”. Será que não funciona para o IO?

Oi Willian! Bom dia, tudo bem por aí?

Então… O problema é nome da account que vocês estão utilizando, assim como o erro diz. Recomendou que vocês revejam qual o nome da account que estão usando e se não tem nenhum caractere, espaço ou qualquer errinho nesse campo.

Karina Mota
Field Software Engineer | VTEX

Olá Karina, primeiramente obridado pela resposta.

Mas no caso, estou utilizando uma URL relativa pra requisição, então seria o site mesmo + o endpoint: "cliente.com.br/api/rns/pub/subscriptions"

Não sei se isso teria algum problema.

Como eu disse, se usar a URL "cliente.vtexcommercestable.com.br/api/rns/pub/subscriptions", que seria a requisição em cima da url antiga, a requisição funciona.

Teria alguma outra sugestão do que pode estar ocorrendo?

Olá @willian.sato, tudo bem?

Acredito que nesse contexto precisará criar um middleware para fazer esta consulta usando a URL absoluta meamo, já que a VTEX precisa do accountName no início da rota como no exemplo:

{accountname}.vtexcommercestable.com.br/api/rns/pub/subscriptions

Tanto que se fizer um teste usando qualquer API Client como o Postman, você obterá como resposta um erro status 400 com o “Invalid AccountName” no body se enviarmos um request sem o accountname no início da rota, como no teu exemplo:

{dominioloja}.com.br/api/rns/pub/subscriptions

Abraços!

2 Likes

Olá @willian.sato concordo com o que o @andremiani citou aqui em cima, você precisa utilizar a rota exatamente no seguinte formato:

https://{{accountname}}.vtexcommercestable.com.br/api/rns/pub/subscriptions

Ou seja, pode ser que utilizar um middleware seja a solução mais adequada para o seu caso.

Karina Mota
Field Software Engineer | VTEX