Resolver URLs amigáveis
Descobre qual produto, categoria, página, seller, marca ou post de blog corresponde a um endereço da loja, em duas formas, a antiga com redirecionamento e a canônica.
Em uma vitrine headless o visitante abre /camisetas ou /moda/roupas/camisetas/camisa-x/p e o seu front-end precisa saber o que desenhar. Estas duas rotas respondem exatamente isso, a partir do endereço. Ambas são públicas, sem login, e não têm cache.
Resolver canônico
/api/v1/storefront/seo/canonical-resolvePúblicaResolve um caminho canônico da vitrine para a entidade correspondente
Trata o endereço amigável como a URL oficial e devolve a entidade que ele representa, para você renderizar a página no próprio endereço, sem redirecionar. Tenta, em ordem de prioridade, seller, categoria, produto, post de blog, página e marca. Se o caminho pedido não é exatamente o oficial da entidade (por exemplo, o produto tem o caminho por categoria e você pediu o slug curto), a resposta inclui redirect_to para você redirecionar o visitante (301).
Quando a loja tem mais de um idioma, um prefixo de idioma no começo do caminho (/es/...) é reconhecido e removido antes da busca, e os slugs traduzidos passam a valer. Um slug de outro idioma devolve redirect_to para o slug certo.
A página de privacidade existe em toda loja: o slug dela resolve como page mesmo sem registro.
Parâmetros de consulta
pathstringobrigatóriomoda/roupas/camisetas/camisa-x/p). Deve vir codificado como parâmetro de consulta.Exemplo de requisição
curl -G "$BASE_URL/api/v1/storefront/seo/canonical-resolve" \
--data-urlencode "path=/camisa-flamengo-masculina-i-26-adidas"Resposta
{
"kind": "product",
"id": "22fbd12a-1b6e-41ea-a84f-4d9cf06c8766",
"slug": "camisa-flamengo-masculina-i-26-adidas",
"canonical_path": ["moda", "roupas", "camisetas", "camisa-flamengo-masculina-i-26-adidas", "p"],
"redirect_to": "/moda/roupas/camisetas/camisa-flamengo-masculina-i-26-adidas/p"
}{
"kind": "product",
"id": "22fbd12a-1b6e-41ea-a84f-4d9cf06c8766",
"slug": "camisa-flamengo-masculina-i-26-adidas",
"canonical_path": ["moda", "roupas", "camisetas", "camisa-flamengo-masculina-i-26-adidas", "p"]
}Campos da resposta
kindstringvendorcategoryproductbrandblogpageiduuidslugstringcanonical_patharraylink rel="canonical", o mapa do site e os links internos.module_requiredstringseo-category-paths, para produtos com caminho por categoria). Vazio nos demais.redirect_tostringErros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Sem path | {"error":"missing path parameter"} |
| 404 | Nada corresponde | {"error":"no matching entity found","detail":"nao-existe"} |
| 409 | O primeiro segmento é de uma rota da própria vitrine (products, admin...) | {"error":"first segment is a reserved storefront path","detail":"admin"} |
| 500 | Falha ao resolver | {"error":"failed to resolve URL","detail":"..."} |
Resolver (formato antigo)
/api/v1/storefront/seo/resolvePúblicaResolve uma URL para uma entidade e um redirecionamento legado
Forma antiga, usada pelo redirecionamento de endereços de lojas migradas. Procura, em ordem: (1) a tabela de redirecionamentos do lojista (URLs antigas e mudanças de slug), depois produtos, categorias, páginas, sellers e posts por slug e devolve para onde ir, em formato de caminho clássico (/products/slug, /c/slug, /pages/slug, /vendors/slug, /blog/slug). Para um caminho de vários segmentos, só o último vale como slug da entidade (o caminho inteiro é usado para procurar redirecionamentos).
Se a URL pedida é hoje o endereço vivo de uma entidade, a entidade vence um redirecionamento antigo que apontaria para longe dela. Redirecionamentos encadeados são seguidos com proteção contra ciclos.
Parâmetros de consulta
pathstringobrigatório/camisetas). Só o último segmento identifica a entidade.Exemplo de requisição
curl -G "$BASE_URL/api/v1/storefront/seo/resolve" --data-urlencode "path=/camisetas"Resposta
{
"type": "category",
"slug": "camisetas",
"redirect_url": "/c/camisetas",
"status_code": 302
}Campos da resposta
typestringproductcategorypagevendorblogredirectredirect quando veio da tabela de redirecionamentos.slugstringredirect_urlstring/c/camisetas).status_codeinteger301302301 para redirecionamento cadastrado pelo lojista; 302 para casamento direto com uma entidade.Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Sem path | {"error":"missing path parameter"} |
| 404 | Nada corresponde | {"error":"no matching entity found"} |
| 500 | Falha ao resolver | {"error":"failed to resolve URL","detail":"..."} |