OpenAPI para GraphQL SDL
GraphQL Schema Synthesis

Conversor de OpenAPI / Swagger para GraphQL SDL Schema

Converta endpoints REST, corpos de requisição e esquemas JSON de OpenAPI 3.0/3.1 e Swagger 2.0 em tipos, consultas, mutações e definições de entrada GraphQL SDL.

Privacidade 100% no cliente
Zero transmissão ao servidor
Predefinições:
SDL Opções:
Especificação OpenAPI / Swagger (YAML / JSON)OpenAPI 3.x (YAML)
# ==============================================================================
# GraphQL SDL Schema synthesized from OpenAPI / Swagger
# Title: Swagger Petstore (1.0.0)
# Base Server: https://petstore3.swagger.io/api/v3
# Generated by ToolsAA 100% Client-Side Engine
# ==============================================================================


"""ISO-8601 compliant datetime representation"""
scalar DateTime

"""Arbitrary unstructured JSON object data"""
scalar JSON


schema {
  query: Query
  mutation: Mutation
}


type Query {
  # --- Pets ---
  """List all pets"""
  listPets(status: ListPetsStatusEnum, limit: Int): [Pet!]!

  """Find pet by ID"""
  getPetById(petId: ID!): Pet!
}


type Mutation {
  # --- Pets ---
  """Create a pet"""
  createPet(input: NewPetInput!): Pet!

  """Update an existing pet"""
  updatePet(petId: ID!, input: NewPetInput!): Pet!

  """Deletes a pet"""
  deletePet(petId: ID!): Boolean!
}


enum NewPetStatusEnum {
  AVAILABLE
  PENDING
  SOLD
}


enum PetStatusEnum {
  AVAILABLE
  PENDING
  SOLD
}


enum ListPetsStatusEnum {
  AVAILABLE
  PENDING
  SOLD
}


type Category {
  id: ID!
  name: String!
}


type Tag {
  id: ID!
  name: String!
}


type NewPet {
  name: String!
  category: Category
  photoUrls: [String!]!
  tags: [Tag!]
  status: NewPetStatusEnum
}


type Pet {
  id: ID!
  name: String!
  category: Category
  photoUrls: [String!]!
  tags: [Tag!]
  status: PetStatusEnum!
  createdAt: DateTime
}


input CategoryInput {
  id: ID!
  name: String!
}


input TagInput {
  id: ID!
  name: String!
}


input NewPetInput {
  name: String!
  category: CategoryInput
  photoUrls: [String!]!
  tags: [TagInput!]
  status: NewPetStatusEnum
}
5
Endpoints REST Mapeados
10
Tipos GraphQL e Inputs
1.7 KB
Tamanho SDL Estimado

Privacidade 100% Local

Suas especificações de API nunca saem do seu computador. A análise é executada puramente em JavaScript na memória do navegador.

Síntese Completa de GraphQL SDL

Converte requisições GET em queries, operações com efeitos colaterais em mutations e esquemas JSON aninhados em tipos GraphQL.

Compatível com Apollo e Ecossistema GraphQL

Gera definições padrão SDL prontas para uso em Apollo Server, GraphQL Yoga, Hasura e GraphQL Code Generator.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Conversor de OpenAPI / Swagger para GraphQL SDL — Guia de referência

Converta endpoints REST, corpos de requisição e esquemas JSON de OpenAPI 3.0/3.1 e Swagger 2.0 em tipos, consultas, mutações e definições de entrada GraphQL SDL.

Parâmetros principais e controles

operationMapping'query-mutation' | 'query-only'

Controla se as operações REST são mapeadas para Query e Mutation ou restritas apenas a Query.

Padrão: 'query-mutation'
inputNamingConvention'suffix-input' | 'prefix-input' | 'exact'

Define a convenção de nomenclatura para tipos de objeto input gerados a partir de corpos de requisição.

Padrão: 'suffix-input'
idFieldMapping'ID' | 'String' | 'Int'

Define o tipo escalar do GraphQL para parâmetros de rota e identificadores de entidade.

Padrão: 'ID'
nullableMode'strict-non-null' | 'optional'

Determina se propriedades obrigatórias e parâmetros de rota do OpenAPI recebem o marcador de não-nulo (!).

Padrão: 'strict-non-null'
customScalars'enabled' | 'string-only'

Gera declarações de escalares personalizados do GraphQL (DateTime, UUID, JSON) para formatos de string do OpenAPI.

Padrão: 'enabled'

Dicas profissionais e melhores práticas

Gerar tipos Input dedicados

O GraphQL proíbe o uso de tipos de objeto normais (type) como argumentos de mutações. Gere sempre tipos 'Input' dedicados para corpos de requisição do OpenAPI.

Diretivas @rest para endpoints

Inclua diretivas personalizadas como @rest(path: "/users/{id}", method: "GET") para viabilizar a resolução direta de endpoints no Apollo Server RESTDataSource ou GraphQL Mesh.

Mapear esquemas oneOf a uniões

Converta esquemas oneOf com discriminador em tipos union do GraphQL. Envolva ramificações escalares primitivas em objetos sintéticos, já que uniões do GraphQL suportam apenas objetos.

Deduplicar modelos partilhados

Resolva modelos de '#/components/schemas' como tipos GraphQL de nível superior, evitando duplicações desnecessárias entre os diferentes endpoints da API.

Problemas comuns e solução de problemas

Colisão de nomes entre corpo de requisição e modelo de resposta

Ative o sufixo 'Input' (por exemplo, 'CreateUserInput') para diferenciar os tipos de entrada dos tipos de saída que compartilham o mesmo identificador.

Erro de validação com escalares primitivos em esquemas oneOf ou anyOf

Uniões em GraphQL aceitam exclusivamente tipos de objeto. Encapsule tipos primitivos como String ou Int em tipos auxiliares contendo um campo 'value'.

Ausência de resposta 200/201 gerando erro de sintaxe no tipo de retorno

Certifique-se de que a operação OpenAPI especifique pelo menos um esquema de resposta de sucesso (2xx) ou utilize um payload genérico de status.

Perguntas frequentes (FAQ)

Como os métodos HTTP REST são mapeados para tipos raiz do GraphQL?▼

Requisições GET são convertidas em campos de Query. Métodos POST, PUT, PATCH e DELETE tornam-se campos de Mutation, com parâmetros de rota e query transformados em argumentos tipados.

Como os componentes $ref do OpenAPI são resolvidos no GraphQL SDL?▼

Esquemas reutilizáveis localizados em components/schemas são convertidos diretamente em tipos e inputs do GraphQL SDL, prevenindo declarações inline redundantes.

O conversor suporta esquemas polimórficos (oneOf e anyOf) do OpenAPI?▼

Sim. Estruturas oneOf baseadas em objetos com discriminador são traduzidas em uniões ou interfaces GraphQL. Uniões com valores escalares são encapsuladas em tipos wrapper.

Minha especificação de API é enviada para servidores externos?▼

Não. Todo o processamento de análise, conversão para AST e geração do SDL ocorre 100% localmente na memória do seu navegador, sem qualquer envio de dados.

O SDL gerado é compatível com quais servidores e frameworks GraphQL?▼

O esquema gerado segue rigorosamente a especificação oficial do GraphQL (outubro de 2021 em diante), funcionando perfeitamente com Apollo Server, GraphQL Yoga, AWS AppSync e GraphQL Mesh.

Ferramentas e utilitários relacionados

Todas as ferramentas →
Guia do Desenvolvedor: Gerador de Schemas TypeScript TypeBox a partir de DDL SQLDesenvolvimento

Converta instruções SQL CREATE TABLE em esquemas de validação em tempo de execução @sinclair/typebox usando Type.Object, Type.String, Type.Number e Type.Optional.

Abrir ferramenta→
Guia do Desenvolvedor do Gerador de Código cURL para Rust (reqwest e tokio)Desenvolvimento

Converta comandos cURL em requisições HTTP idiomáticas e assíncronas em Rust utilizando reqwest, serde_json, cabeçalhos customizados e runtime Tokio.

Abrir ferramenta→
Guia do Desenvolvedor do Gerador de Código cURL para Ruby (Net::HTTP e Faraday)Desenvolvimento

Converta comandos cURL em código Ruby limpo e idiomático utilizando Net::HTTP, URI, Faraday e manipulação nativa de JSON.

Abrir ferramenta→
Gerador de NetworkPolicy K8S Referência para DesenvolvedoresDesenvolvimento

Referência de engenharia para gerar manifestos declarativos de NetworkPolicy no Kubernetes, isolamento zero-trust de pods, regras de ingress/egress, blocos CIDR e múltiplas portas.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de YAML Kubernetes RBAC Role & ClusterRoleBindingDesenvolvimento

Crie manifestos Kubernetes RBAC para Role, ClusterRole, RoleBinding e ClusterRoleBinding com grupos de API, verbos de recursos e contas de serviço.

Abrir ferramenta→
Guia do Desenvolvedor do Gerador de YAML de Kubernetes StatefulSet & Headless ServiceDesenvolvimento

Gere manifestos de Kubernetes StatefulSet prontos para produção com Headless Service complementar, volumeClaimTemplates persistentes, réplicas e podManagementPolicy.

Abrir ferramenta→