Redirecionamentos por termo
Cadastra termos de busca que levam o cliente direto a uma página, como "frete grátis" para a página de frete, e lista, altera e apaga esses atalhos.
Alguns termos de busca têm uma resposta melhor que uma lista de produtos: "frete grátis" pede a página de regras de frete, "troca" pede a política de trocas, o nome de uma marca pede a página da marca. Um redirecionamento por termo liga um termo a um endereço. Quando o cliente envia uma busca cujo termo normalizado é igual, a resposta da busca traz redirect_url e a vitrine leva o cliente para lá. Todas as rotas exigem manage_settings.
O casamento é por termo exato normalizado: minúsculas, sem acento, espaços colapsados. "Frete Grátis" e "frete gratis" são o mesmo termo, mas "frete gratis sp" não é.
/api/v1/admin/search/redirectsAdminLista os redirecionamentos
Devolve uma lista simples (array JSON, sem paginação) com os redirecionamentos não apagados.
/api/v1/admin/search/redirectsAdminCria um redirecionamento
Cria o redirecionamento e devolve o registro (status 200). O termo é normalizado antes de gravar e deve ser único.
Corpo da requisição (JSON)
term_normstringobrigatóriotarget_urlstringobrigatório/pages/frete) ou uma URL completa. A API não valida o endereço.is_activebooleanpadrão: falsefalse, ou seja, desligado./api/v1/admin/search/redirects/{id}AdminAltera um redirecionamento
Muda o destino e o estado. Não dá para mudar o termo: para isso, desative este e crie outro. Responde 204, sem corpo.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição (JSON)
target_urlstringobrigatóriois_activebooleanobrigatóriofalse./api/v1/admin/search/redirects/{id}AdminApaga um redirecionamento
Apaga de forma lógica e responde 204. Repetir a chamada também responde 204. O termo continua reservado: não é possível criar outro redirecionamento com o mesmo termo depois de apagar.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/search/redirects" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"term_norm":"frete grátis","target_url":"/pages/frete","is_active":true}'
# desligar sem apagar
curl -X PUT "$BASE_URL/api/v1/admin/search/redirects/$ID" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"target_url":"/pages/frete","is_active":false}'Resposta
{
"id": "aa2b5f46-1bda-42ad-9ecc-3f8d67304a5c",
"term_norm": "frete gratis",
"target_url": "/pages/frete",
"is_active": true
}[
{
"id": "aa2b5f46-1bda-42ad-9ecc-3f8d67304a5c",
"term_norm": "frete gratis",
"target_url": "/pages/frete",
"is_active": true
}
]Campos do redirecionamento
iduuidterm_normstringtarget_urlstringis_activebooleanErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON | {"error":"invalid body","detail":"..."} |
| 401 | Token ausente ou expirado | {"error":"invalid or expired token"} |
| 403 | Falta manage_settings | {"error":"insufficient privileges","required":"manage_settings"} |
| 409 | O termo já existe (inclusive de um redirecionamento apagado) | {"error":"term already exists","detail":"search merchandising: term already exists"} |
| 500 | Id que não é UUID | {"error":"failed to delete redirect","detail":"..."} |