Extrair nomes e tipos de variáveis GraphQL
Este extrator lê um documento GraphQL executável, verifica a sintaxe e lista as variáveis declaradas em cada consulta, mutação ou assinatura.
Executar grátis
O resultado preserva o tipo e o nome opcional da operação, além do nome e da notação exata de cada variável, inclusive listas e marcadores não nulos. É útil para gerar formulários, revisar operações do cliente, documentar integrações ou verificar consultas antes da execução.
Separe declarações de referências
Variáveis GraphQL aparecem como declarações, como <code>$id: ID!</code>, ao lado da operação, e como referências, como <code>user(id: $id)</code>, na seleção. Esta capacidade retorna somente as declarações e as agrupa na consulta, mutação ou assinatura proprietária. Assim, operações diferentes podem usar o mesmo nome sem serem combinadas. A notação relevante é preservada, incluindo <code>String</code>, <code>ID!</code> e <code>[ID!]!</code>. Valores padrão e diretivas são analisados para comprovar a sintaxe, mas não entram no resultado. Fragmentos também são verificados, embora não gerem registros porque não declaram variáveis de operação. Uma consulta anônima abreviada é apresentada sem nome e com uma lista vazia.
Use uma verificação sintática determinística
Expressões regulares falham diante de comentários, strings, blocos de texto, listas aninhadas, objetos padrão, diretivas, fragmentos, aliases e várias operações. Este parser tokeniza o documento inteiro e segue a gramática executável do GraphQL. Ele rejeita strings abertas, números inválidos, caracteres inesperados, seleções vazias e definições incompletas. Por isso, o resultado pode proteger uma etapa de build. Nenhuma rede ou esquema é consultado. Portanto, a ferramenta não decide se um campo existe no seu servidor, se o tipo combina com um argumento ou se regras dependentes do esquema são atendidas. Use-a para sintaxe e descoberta de declarações; valide contra o esquema separadamente quando ele estiver disponível.
Integre a resposta estruturada
A resposta traz o array <code>operations</code> na ordem original e o total <code>variable_count</code>. Cada operação informa sua categoria, inclui o nome quando escrito e contém <code>variables</code> com registros <code>name</code> e <code>type</code>. O formato serve para criar editores, comparar operações versionadas, montar documentação ou detectar uma nova entrada obrigatória. A separação evita conflitos falsos entre nomes repetidos. A entrada é limitada a 200,000 caracteres para manter o processamento controlado. Nenhuma consulta é executada; esquema, cabeçalhos, credenciais e valores não são necessários. Você pode colar o documento no navegador ou usar a API por US$ 0,002 por item. Um erro informa a posição aproximada do problema.
Casos de uso
Criar um formulário de variáveis
Leia as declarações e gere os campos corretos antes de coletar valores de execução.
Revisar consultas persistidas
Compare nomes e tipos GraphQL exatos quando uma operação versionada mudar.
Documentar operações do cliente
Transforme um documento com várias operações em um inventário agrupado.
Perguntas frequentes
A ferramenta executa a consulta GraphQL?
Não. Ela analisa o documento localmente e nunca acessa um endpoint GraphQL.
As referências às variáveis são incluídas?
Não. Somente declarações são retornadas; referências em campos, argumentos ou diretivas não são novas declarações.
A notação de lista e não nulo é preservada?
Sim. Tipos como ID!, [String!] e [ID!]! mantêm a notação GraphQL completa.
Os campos são validados contra meu esquema?
Não. A sintaxe é validada sem esquema; existência e compatibilidade exigem outra etapa.
São aceitas várias operações e fragmentos?
Sim. As operações saem em ordem; fragmentos válidos são verificados, mas não adicionam declarações.
Quanto custa uma chamada à API?
Cada item custa US$ 0,002. A versão no navegador roda localmente o mesmo parser.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/graphql-query-variables-extract \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"}'const res = await fetch("https://api.kit.forhosting.com/dev/graphql-query-variables-extract", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/graphql-query-variables-extract",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/graphql-query-variables-extract", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"query":"query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"query":"query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/graphql-query-variables-extract", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.graphql_query_variables_extract",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_chars | 200000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |