Comentários do blog
Lista os comentários aprovados de um post e envia um comentário novo, que fica em moderação.
Leitores podem comentar nos posts do blog, com ou sem conta. Todo comentário novo entra pendente e só aparece na lista depois que um administrador o aprova no painel. Por isso, depois de enviar, a tela deve avisar "seu comentário foi enviado e aguarda aprovação", e não tentar exibi-lo.
/api/v1/storefront/blog/posts/{postId}/commentsPúblicaListar os comentários aprovados
Parâmetros de caminho
postIduuidobrigatórioId do post.
Parâmetros de consulta
pageintegerpadrão: 1Página, a partir de 1.
limitintegerpadrão: 20Itens por página, de 1 a 100. Fora da faixa, vale 20.
Exemplo de requisição
bash
curl "$BASE_URL/api/v1/storefront/blog/posts/$POST_ID/comments?limit=20"Resposta
200Comentários
json
{
"items": [
{
"id": "c0a8d1e2-7b6f-4a3c-9d2e-1f0a9b8c7d6e",
"post_id": "91af684b-cf41-4243-a37d-a133a39d6ed3",
"post_title": "Como escolher o mouse perfeito para o seu dia a dia",
"user_name": "Carlos",
"user_email": "carlos@example.com",
"body": "Ótimo guia, comprei o modelo sem fio.",
"status": "approved",
"created_at": "2026-10-10T12:00:00Z",
"updated_at": "2026-10-10T13:00:00Z"
}
],
"total": 1,
"page": 1,
"limit": 20
}Campos da resposta
itemsarrayComentários aprovados do post, do mais novo para o mais antigo.
[] quando não há nenhum.items[].iduuidId do comentário.
items[].post_iduuidPost comentado.
items[].post_titlestringTítulo do post.
items[].user_iduuidConta de quem comentou. Ausente em comentário de visitante.
items[].user_namestringNome exibido.
items[].user_emailstringE-mail informado por quem comentou. É dado pessoal: não exiba na vitrine.
items[].bodystringTexto do comentário.
items[].statusstringpendingapprovedrejectedAqui sempre
approved.items[].ip_addressstringIP de quem comentou, quando registrado. É dado pessoal: não exiba.
items[].created_atstringQuando foi enviado (RFC 3339).
items[].updated_atstringÚltima alteração, por exemplo a aprovação (RFC 3339).
totalintegerTotal de comentários aprovados do post.
pageintegerPágina devolvida.
limitintegerItens por página aplicados.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 403 | Módulo blog desligado. | {"error":"module_disabled","module":"blog"} |
| 500 | postId que não é UUID (por exemplo, o slug), ou falha ao consultar. | {"error":"failed to list comments","detail":"..."} |
/api/v1/storefront/blog/posts/{postId}/commentsPúblicaEnviar um comentário
Parâmetros de caminho
postIduuidobrigatórioId do post.
Cabeçalhos
AuthorizationstringBearer <access_token> do cliente. Opcional; liga o comentário à conta.Corpo da requisição
user_namestringobrigatórioNome a exibir. Espaços nas pontas são removidos.
user_emailstringE-mail de quem comenta. Opcional; a rota não valida o formato.
bodystringobrigatórioTexto do comentário. HTML perigoso é removido.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/storefront/blog/posts/$POST_ID/comments" \
-H "Content-Type: application/json" \
-d '{"user_name":"Carlos","user_email":"carlos@example.com","body":"Ótimo guia!"}'Resposta
201Comentário recebido
json
{
"id": "c0a8d1e2-7b6f-4a3c-9d2e-1f0a9b8c7d6e",
"post_id": "91af684b-cf41-4243-a37d-a133a39d6ed3",
"user_name": "Carlos",
"user_email": "carlos@example.com",
"body": "Ótimo guia!",
"status": "pending",
"ip_address": "203.0.113.10",
"created_at": "2026-10-11T21:00:00Z",
"updated_at": "2026-10-11T21:00:00Z"
}A resposta tem os mesmos campos de items[]; aqui o status é pending.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido. | {"error":"invalid request body","detail":"..."} |
| 400 | body vazio. | {"error":"comment body is required"} |
| 400 | user_name vazio. | {"error":"user_name is required"} |
| 403 | Módulo blog desligado. | {"error":"module_disabled","module":"blog"} |
| 500 | postId que não é UUID ou que não existe, ou falha ao gravar. | {"error":"failed to create comment","detail":"..."} |