SEO da categoria
Lê e grava o slug, o título e a descrição de SEO de uma categoria, gera os valores a partir do nome e define o modelo de texto que alimenta o SEO dos produtos.
O SEO de uma categoria é o que os buscadores e as redes sociais mostram da página dela: o endereço (slug), o título da aba e a descrição (meta description). Esta página reúne as cinco rotas que cuidam disso:
- ler e gravar o SEO da própria categoria;
- gerar um SEO padrão a partir do nome e da descrição;
- ler e gravar o modelo de texto (frase de chamada e parágrafo publicitário) que a categoria usa para montar automaticamente o título e a descrição dos produtos dela.
Os mesmos campos (slug, seo_title, seo_description, meta_keywords) também podem ser enviados em Criar categoria e Alterar categoria.
/api/v1/admin/categories/{id}/seoAdminConsulta o SEO de uma categoria
Autenticação: Authorization: Bearer <token> com o privilégio view_catalog, manage_catalog ou manage_categories. Não devolve categorias da lixeira.
Parâmetros de caminho
iduuidobrigatório/api/v1/admin/categories/{id}/seoAdminGrava o SEO de uma categoria
Autenticação: Authorization: Bearer <token> com o privilégio manage_categories. Só os campos enviados mudam.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
slugstringMesas Escritório vira mesas-escritorio). Precisa ser único entre as categorias e não pode ficar vazio.seo_titlestringseo_descriptionstringmeta_keywordsstring/api/v1/admin/categories/{id}/seo/generateAdminGera o SEO a partir do nome da categoria
Calcula e grava um SEO padrão. Não tem corpo. A regra é fixa e determinística (não depende de nenhum serviço externo):
slug: o nome da categoria normalizado e, se já existir, com sufixo numérico. Substitui o slug atual.seo_title: o próprio nome, cortado em 60 caracteres (os últimos viram...).seo_description: a descrição da categoria sem HTML, cortada em 155 caracteres (os últimos viram...). Fica vazia se a categoria não tem descrição.
Autenticação: privilégio manage_categories.
Parâmetros de caminho
iduuidobrigatório/api/v1/admin/categories/{id}/seo-templateAdminConsulta o modelo de SEO de produto de uma categoria
O modelo de texto da categoria, uma entrada por idioma. A frase de chamada e o parágrafo publicitário alimentam o título e a descrição de SEO dos produtos da categoria (o título gerado é cortado em 48 caracteres e a descrição em 146). Autenticação: view_catalog, manage_catalog ou manage_categories.
Parâmetros de caminho
iduuidobrigatório/api/v1/admin/categories/{id}/seo-templateAdminGrava o modelo de SEO de produto de uma categoria
Grava a frase de chamada e o parágrafo de um idioma. Enviar as duas frases vazias desliga o modelo para aquele idioma. Autenticação: privilégio manage_categories.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
lang_codestringpt-BR, en...). Sem ele, vale o idioma padrão da loja. A categoria precisa já ter texto cadastrado nesse idioma.call_to_actionstringadvertising_paragraphstringExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/categories/b53fa6b9-a1a5-4862-9fac-cdc5585017c7/seo" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"slug":"mesas-escritorio","seo_title":"Mesas de escritório","seo_description":"As melhores mesas para o seu escritório."}'Resposta
{
"slug": "mesas-escritorio",
"seo_title": "Mesas de escritório",
"seo_description": "As melhores mesas para o seu escritório.",
"meta_keywords": ""
}{
"saved": true,
"templates": [
{ "lang_code": "es", "call_to_action": "", "advertising_paragraph": "" },
{ "lang_code": "pt-BR", "call_to_action": "Compre online", "advertising_paragraph": "Frete rápido para todo o Brasil." }
]
}Campos da resposta
slugstringseo_titlestringseo_descriptionstringmeta_keywordsstringsavedbooleanPUT /seo-template: true quando gravou.templatesarraylang_code, call_to_action e advertising_paragraph. No GET /seo-template este é o único campo ({"templates": [...]}). Vem vazio quando a loja ainda não tem esse recurso.Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | PUT /seo sem nenhum campo gravável (corpo vazio, ou só meta_keywords) | {"error":"no SEO fields to update","detail":"no SEO fields to update"} |
| 400 | Corpo inválido, ou call_to_action/advertising_paragraph com mais de 255 caracteres | {"error":"call_to_action and advertising_paragraph are limited to 255 characters"} |
| 401 | Token ausente ou expirado | {"error":"invalid or expired token"} |
| 403 | Sem privilégio | {"error":"insufficient privileges","required":"manage_categories"} |
| 404 | Categoria não existe ou está na lixeira (/seo e /seo/generate) | {"error":"category not found"} |
| 409 | slug já usado por outra categoria | {"error":"slug already in use","detail":"slug \"mesas\" is already used by another category"} |
| 409 | PUT /seo-template em uma loja que ainda não tem o recurso | {"error":"category SEO template columns are not present on this store yet (migration 1001022)","detail":"..."} |
| 500 | id que não é UUID, ou lang_code sem texto cadastrado na categoria | {"error":"failed to get category SEO","detail":"o valor \"abc\" não é um uuid válido. ..."} |
Mensagens de detail que o servidor escreve em português seguem em português na resposta real.