Versionamento
Como a Storefront API evolui sem quebrar integrações existentes.
Filosofia
A Storefront API segue a prática recomendada pelo GraphQL: evolução de schema em vez de versionamento por URL. Isso significa que novas funcionalidades são adicionadas de forma aditiva e campos antigos são marcados como @deprecated antes de serem removidos.
Endpoint
O endpoint da API é fixo:
| Ambiente | URL |
|---|---|
| Produção | /graphql |
A URL não contém número de versão. O versionamento é feito via header X-API-Version e evolução de schema.
Tipos de Mudança
Mudanças Não-Quebrantes (sempre seguras)
- Adicionar novos campos a tipos existentes
- Adicionar novos tipos e enums
- Adicionar novos argumentos opcionais
- Adicionar novas queries e mutations
- Marcar campos como
@deprecated
Mudanças Quebrantes (requerem migração)
- Remover campos (apenas após período de deprecation)
- Alterar o tipo de um campo
- Renomear campos (tratado como deprecation + novo campo)
- Tornar argumentos opcionais obrigatórios
Ciclo de Deprecation
- Anúncio: Campo é marcado com
@deprecated(reason: "Use newField") - Período de Migração: Campo antigo e novo coexistem (mínimo 90 dias)
- Monitoramento: Uso do campo antigo é monitorado via logging
- Remoção: Campo é removido quando uso chega a zero ou após aviso final
Header X-API-Version
Para mudanças de comportamento que não podem ser expressas apenas no schema, a API aceita o header X-API-Version. Isso permite que clientes optem por comportamentos específicos:
| Header | Tipo | Descrição |
|---|---|---|
| X-API-Version | String | Versão do comportamento desejado (ex: 2026-06-01). Formato date-based. |
Se o header não for enviado, a API usa o comportamento padrão (mais recente). O formato date-based evita problemas com versionamento semântico (1.1, 1.2) e deixa claro quando a versão foi introduzida.
Exemplo de Evolução
Considere a migração de groups para categories:
- Novo campo
categoriesé adicionado ao tipoProduct - Campo
groupsé marcado:@deprecated(reason: "Use categories") - Ambos retornam os mesmos dados por 90 dias
- Após monitoramento,
groupsé removido
Introspection
Use a query de introspection para descobrir campos deprecated no schema: