Como a Storefront API evolui sem quebrar integrações existentes.
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.
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.
@deprecated@deprecated(reason: "Use newField")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.
Considere a migração de groups para categories:
categories é adicionado ao tipo Productgroups é marcado: @deprecated(reason: "Use categories")groups é removidoUse a query de introspection para descobrir campos deprecated no schema:
const response = await fetch(
'/graphql',
{
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'X-API-Version': '2026-06-01'
},
body: JSON.stringify({
query: `query { client(hostname: "minha-loja") { store { name } } }`
})
}
); query IntrospectDeprecated {
__type(name: "Product") {
fields(includeDeprecated: true) {
name
isDeprecated
deprecationReason
}
}
} {
"data": {
"__type": {
"fields": [
{ "name": "title", "isDeprecated": false, "deprecationReason": null },
{ "name": "categories", "isDeprecated": false, "deprecationReason": null },
{ "name": "groups", "isDeprecated": true, "deprecationReason": "Use categories" }
]
}
}
} curl -X POST https://minha-loja.com/graphql \
-H "Content-Type: application/json" \
-H "X-API-Version: 2026-06-01" \
-d '{"query":"query { client(hostname: \"minha-loja\") { store { name } } }"}'