Traduções do post
Lê e grava título, texto e SEO do post em cada idioma da loja.
Ler traduções do post
Devolve uma entrada por idioma ativo. Idiomas ainda sem tradução vêm preenchidos com o título do idioma padrão e o texto vazio.
/api/v1/admin/blog/posts/{id}/descriptionsAdminLista o conteúdo do post em cada idioma
Rota ligada ao módulo blog: com o módulo desligado a resposta é 403. Leitura exige manage_content ou view_content; escrita exige manage_content.
Parâmetros de caminho
iduuidobrigatórioIdentificador do post.
Exemplo de requisição (Ler traduções)
bash
curl "$BASE_URL/api/v1/admin/blog/posts/91af684b-cf41-4243-a37d-a133a39d6ed3/descriptions" \
-H "Authorization: Bearer $TOKEN"Resposta (Ler traduções)
200Traduções
json
{
"blog_post_id": "91af684b-cf41-4243-a37d-a133a39d6ed3",
"descriptions": {
"pt-BR": {
"lang_code": "pt-BR",
"title": "Como escolher o mouse perfeito",
"body": "<p>...</p>",
"excerpt": "Guia prático.",
"meta_title": "",
"meta_description": ""
},
"en": {
"lang_code": "en",
"title": "How to choose the perfect mouse",
"body": "",
"excerpt": "",
"meta_title": "How to choose the perfect mouse",
"meta_description": ""
}
}
}Campos da resposta
blog_post_iduuidPost.
descriptionsobjectMapa código do idioma para conteúdo (
lang_code, title, body, excerpt, meta_title, meta_description).Erros (Ler traduções)
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O administrador não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["manage_content","view_content"]} |
| 500 | id que não é UUID, ou falha de banco. | {"error":"failed to get post descriptions","detail":"..."} |
Gravar traduções do post
Grava o conteúdo do post em um ou mais idiomas. É parcial: só os idiomas enviados são tocados, e cada um precisa de title. Devolve o mesmo formato da leitura, já recarregado.
/api/v1/admin/blog/posts/{id}/descriptionsAdminCria ou atualiza o conteúdo por idioma
Rota ligada ao módulo blog: com o módulo desligado a resposta é 403. Leitura exige manage_content ou view_content; escrita exige manage_content.
Parâmetros de caminho
iduuidobrigatórioIdentificador do post.
Corpo da requisição
descriptionsobjectobrigatórioMapa código do idioma para conteúdo. Cada valor aceita
title (obrigatório), body, excerpt, meta_title, meta_description.Exemplo de requisição (Gravar traduções)
bash
curl -X PUT "$BASE_URL/api/v1/admin/blog/posts/91af684b-cf41-4243-a37d-a133a39d6ed3/descriptions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"descriptions": {
"en": {
"title": "How to choose the perfect mouse",
"body": "<p>...</p>",
"excerpt": "A practical 5-step guide.",
"meta_title": "Choosing a mouse",
"meta_description": "Pick the right mouse"
}
}
}'Resposta (Gravar traduções)
200Traduções salvas
json
{
"blog_post_id": "91af684b-cf41-4243-a37d-a133a39d6ed3",
"descriptions": {
"en": {
"lang_code": "en",
"title": "How to choose the perfect mouse",
"body": "<p>...</p>",
"excerpt": "A practical 5-step guide.",
"meta_title": "Choosing a mouse",
"meta_description": "Pick the right mouse"
}
}
}Erros (Gravar traduções)
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O administrador não tem o privilégio exigido. | {"error":"insufficient privileges","required":"manage_content"} |
| 400 | descriptions ausente ou vazio, ou um idioma sem title. | {"error":"blog_post_description for en: title is required"} |
| 500 | Falha ao gravar. | {"error":"failed to upsert post descriptions","detail":"..."} |