API GraphQL.

Topic summary

Integração de ERP com a Shopify: chamadas REST funcionam, mas requisições GraphQL retornam HTML com status 200, sugerindo problema de autenticação/formatação. O retorno inesperado aparece após ontem, mesmo com token recriado.

Principais hipóteses e correções:

  • Usar método POST (GraphQL exige POST com corpo JSON). Requisições sem método viram GET e podem retornar HTML/redirecionamentos.
  • Headers obrigatórios: Content-Type: application/json e autenticação via X-Shopify-Access-Token ou Authorization: Bearer .
  • Endpoint correto: https://.myshopify.com/admin/api/2024-10/graphql.json (ou versão vigente). O corpo deve conter { “query”: “query { shop { name } }” }.

Verificações adicionais:

  • Garantir escopos/permissões do token adequados à operação.
  • Limpar caches locais/credenciais e revisar possíveis mudanças recentes no ambiente.
  • Consultar logs do ERP para detalhes da resposta.
  • Testar com Postman ou GraphiQL para isolar o problema. Exemplos de curl foram fornecidos para validação.

Status: sem confirmação de resolução; discussão permanece aberta com passos de diagnóstico a seguir.

Summarized with AI on December 16. AI used: gpt-5.

Estou integrando meu ERP através da API da, até ontem estava fluido normalmente.

hoje as minhas requisições API REST, continuam ok mas quando executo uma requisição API GraphQL ao invés de retornar um JSon retorna um html como se tivesse problema de autenticação, apesar de o status retornar 200 OK

ja inclusive refiz o token achando qeu podia ser algum problema com ele, alguém consegue me ajudar?

Você provavelmente esqueceu de usar o método “POST”,

se você não botar nenhum método sua request é tratada como GET.

Tenta usar esse exemplo no terminal com sua chave e loja pra ver se funciona:

curl -X POST https://sua_loja.myshopify.com/admin/api/2024-10/graphql.json
-H ‘Content-Type: application/json’
-H ‘X-Shopify-Access-Token: chave’
-d ‘{
“query”: “{\nproducts(first: 3) {\nedges {\nnode {\nid\ntitle\n}\n}\n}\n}”
}’

Olá Marcio,

O comportamento que você está descrevendo — onde uma requisição à API GraphQL retorna HTML em vez de JSON, apesar de o status ser 200 OK — sugere que pode haver uma questão relacionada à autenticação ou à formatação da requisição. Aqui estão alguns pontos a considerar e verificar:

1. Verificar o Cabeçalho de Autenticação

Certifique-se de que o cabeçalho de autenticação está sendo enviado corretamente. A autenticação para GraphQL deve ser feita através do Bearer Token. Confira se você está enviando o cabeçalho corretamente:

Authorization: Bearer <seu_token_de_acesso>

Mesmo que o token tenha sido recriado, o cabeçalho precisa estar configurado corretamente para que a autenticação funcione.

2. Content-Type

Garanta que o Content-Type da requisição esteja configurado corretamente como application/json. A API GraphQL depende do formato JSON para processar as consultas:

Content-Type: application/json

Sem isso, o servidor pode interpretar erroneamente a requisição como HTML.

3. Estrutura da Requisição GraphQL

Confira se a estrutura da requisição GraphQL está formatada corretamente. Um exemplo de corpo de requisição seria:

{
  "query": "query { shop { name } }"
}

E a requisição completa (exemplo usando curl) seria algo assim:

curl -X POST https://your-shop.myshopify.com/admin/api/2024-01/graphql.json \
  -H "Content-Type: application/json" \
  -H "X-Shopify-Access-Token: <seu_token_de_acesso>" \
  -d '{"query": "{ shop { name } }"}'

4. Verificar se o Endereço da API está Correto

A URL para a API GraphQL deve ser algo como:

https://<your-shop-name>.myshopify.com/admin/api/2024-01/graphql.json

Garanta que você está usando o endpoint correto para a versão da API com a qual está trabalhando.

5. Limpeza de Cache e Autenticação

Se você tiver certeza de que tudo está correto, tente:

  • Limpar caches locais ou caches de autenticação na sua aplicação.
  • Verificar a validade e o escopo do token de autenticação.
  • Verificar se não há problemas temporários com o servidor ou possíveis alterações no ambiente da API que possam ter ocorrido recentemente.

6. Erros de Permissão

Se o token estiver com permissões inadequadas ou se o app associado não tiver as permissões corretas, o Shopify pode estar retornando um HTML com uma página de erro, mesmo com status 200. Verifique se o token tem permissões adequadas para a operação que você está tentando realizar.

7. Logs do Servidor

Se possível, verifique os logs de requisição da sua aplicação ou ERP. Eles podem conter mais informações sobre a resposta recebida.

8. Testar em uma Ferramenta de Teste

Você pode usar ferramentas como o Postman ou o próprio GraphiQL para verificar se a requisição está funcionando corretamente fora do ERP.

Se após essas verificações o problema persistir, vale a pena verificar com o suporte técnico do Shopify, pois pode ser uma questão temporária ou uma mudança recente na API.