Slug por idioma
Define o slug de um produto, categoria, página, post ou marca em um idioma, validando o texto e redirecionando o slug antigo.
O slug é o trecho legível da URL (camiseta-basica em /produtos/camiseta-basica). Em lojas com mais de um idioma, cada item pode ter um slug por idioma. Esta rota grava o slug de um idioma específico, garante que ele não colide com outro item e guarda o slug anterior para redirecionar automaticamente. Exige o privilégio manage_categories.
Definir o slug de um idioma
/api/v1/admin/seo/localized-slug/{id}AdminDefine o slug de um item em um idioma
O texto enviado é normalizado: acentos removidos, minúsculas, e qualquer sequência de caracteres que não seja letra ou número vira um hífen (Camiseta Básica! vira camiseta-basica). Se o resultado for vazio, o slug é inválido. Se o slug mudar, o anterior é guardado em uma tabela de redirecionamentos de slug (só o último slug de cada item e idioma), e a URL antiga passa a levar à nova.
Parâmetros de caminho
iduuidobrigatórioentity_type).Corpo da requisição
entity_typestringobrigatórioproductcategorypageblog_postbrandlang_codestringobrigatórioslugstringobrigatórioExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/seo/localized-slug/$PRODUCT_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"entity_type":"product","lang_code":"en","slug":"Basic T-Shirt"}'{ "slug": "basic-t-shirt", "lang_code": "en" }Campos da resposta
slugstringlang_codestringlang_code como foi enviado.Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo JSON inválido | {"error":"invalid request body","detail":"..."} |
| 401 | Sem token ou token expirado | {"error":"missing authorization header"} |
| 403 | Sem o privilégio manage_categories | {"error":"insufficient privileges","required":"manage_categories"} |
| 404 | O serviço de slugs não está disponível nesta instalação | {"error":"localized slug not available"} |
| 422 | O slug normalizado é vazio; é uma palavra reservada da loja (admin, por exemplo); ou já é usado por outro item no mesmo idioma | {"error":"slug_invalid"}, {"error":"slug_reserved"} ou {"error":"slug_taken"} |
| 500 | entity_type desconhecido ou falha ao gravar | {"error":"failed to set localized slug","detail":"unknown entity type \"zzz\""} |