Campanhas
Lista, consulta, cria, edita e apaga campanhas de e-mail em rascunho.
Listar campanhas
Devolve as campanhas, da mais nova para a mais antiga, inclusive as de sellers.
/api/v1/admin/newsletter/campaignsAdminLista as campanhas de e-mail
Rota ligada ao módulo newsletter: com o módulo desligado a resposta é 403. Leitura exige view_newsletter, manage_newsletter ou manage_content.
Parâmetros de consulta
statusstringRSAFR rascunho, S enviando, A enviada, F falhou. As palavras draft e failed também funcionam; sent e sending viram A.pageintegerpadrão: 1limitintegerpadrão: 20vendor_iduuidmarketplace_onlybooleantrue, 1 ou yes, só campanhas da loja.Exemplo de requisição (Listar campanhas)
curl "$BASE_URL/api/v1/admin/newsletter/campaigns?status=R" \
-H "Authorization: Bearer $TOKEN"Resposta (Listar campanhas)
{
"items": [
{
"id": "b2247714-08c6-4ad9-b644-748eae7baa70",
"subject": "Black Friday chegou",
"html_body": "<h1>Ofertas</h1><p>Até 50% off.</p>",
"text_body": "Ofertas: até 50% off.",
"status": "R",
"recipients": 0,
"sent": 0,
"failed": 0,
"scheduled_at": "2026-11-27T12:00:00Z",
"created_at": "2026-10-11T21:05:13.511196Z",
"updated_at": "2026-10-11T21:05:13.511196Z"
}
],
"total": 26,
"page": 1,
"limit": 20
}Campos da resposta
itemsarrayCampanhas da página.
iduuidsubjectstringhtml_bodystringtext_bodystringstatusstringR rascunho, S enviando, A enviada, F falhou.recipientsintegersentintegerfailedintegerscheduled_atstringsent_atstringvendor_iduuidcreated_atstringupdated_atstringtotalintegerpageintegerlimitintegerErros (Listar campanhas)
| 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":["view_newsletter","manage_newsletter","manage_content"]} |
| 500 | Falha de banco. | {"error":"failed to list campaigns","detail":"..."} |
Consultar campanha
Devolve a campanha. Durante o envio, repita a chamada de tempos em tempos para acompanhar sent e failed.
/api/v1/admin/newsletter/campaigns/{id}AdminDevolve uma campanha pelo id
Rota ligada ao módulo newsletter: com o módulo desligado a resposta é 403. Leitura exige view_newsletter, manage_newsletter ou manage_content.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição (Consultar campanha)
curl "$BASE_URL/api/v1/admin/newsletter/campaigns/b2247714-08c6-4ad9-b644-748eae7baa70" \
-H "Authorization: Bearer $TOKEN"Resposta (Consultar campanha)
{
"id": "b2247714-08c6-4ad9-b644-748eae7baa70",
"subject": "Black Friday chegou",
"html_body": "<h1>Ofertas</h1><p>Até 50% off.</p>",
"text_body": "Ofertas: até 50% off.",
"status": "R",
"recipients": 0,
"sent": 0,
"failed": 0,
"scheduled_at": "2026-11-27T12:00:00Z",
"created_at": "2026-10-11T21:05:13.511196Z",
"updated_at": "2026-10-11T21:05:13.511196Z"
}Campos da resposta
iduuidsubjectstringhtml_bodystringtext_bodystringstatusstringR rascunho, S enviando, A enviada, F falhou.recipientsintegersentintegerfailedintegerscheduled_atstringsent_atstringvendor_iduuidcreated_atstringupdated_atstringErros (Consultar campanha)
| 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":["view_newsletter","manage_newsletter","manage_content"]} |
| 404 | Não existe campanha com esse id. | {"error":"campaign not found"} |
| 500 | O id não é um UUID válido (500, não 404). | {"detail":"o valor \"xx\" não é um uuid válido. Envie o identificador completo, com os 36 caracteres e os hífens. Corrija o campo e reenvie.","error":"failed to get campaign"} |
Criar campanha
Cria a campanha sempre em rascunho (R). Nada é enviado até você chamar a rota de envio.
/api/v1/admin/newsletter/campaignsAdminCria uma campanha em rascunho
Rota ligada ao módulo newsletter: com o módulo desligado a resposta é 403. Exige manage_newsletter ou manage_content.
Corpo da requisição
subjectstringobrigatóriohtml_bodystringtext_bodystringscheduled_atstringExemplo de requisição (Criar campanha)
curl -X POST "$BASE_URL/api/v1/admin/newsletter/campaigns" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subject": "Black Friday chegou",
"html_body": "<h1>Ofertas</h1><p>Até 50% off.</p>",
"text_body": "Ofertas: até 50% off.",
"scheduled_at": "2026-11-27T12:00:00Z"
}'Resposta (Criar campanha)
{
"id": "b2247714-08c6-4ad9-b644-748eae7baa70",
"subject": "Black Friday chegou",
"html_body": "<h1>Ofertas</h1><p>Até 50% off.</p>",
"text_body": "Ofertas: até 50% off.",
"status": "R",
"recipients": 0,
"sent": 0,
"failed": 0,
"scheduled_at": "2026-11-27T12:00:00Z",
"created_at": "2026-10-11T21:05:13.511196Z",
"updated_at": "2026-10-11T21:05:13.511196Z"
}Campos da resposta
iduuidsubjectstringhtml_bodystringtext_bodystringstatusstringR rascunho, S enviando, A enviada, F falhou.recipientsintegersentintegerfailedintegerscheduled_atstringsent_atstringvendor_iduuidcreated_atstringupdated_atstringErros (Criar campanha)
| 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_newsletter","manage_content"]} |
| 400 | Corpo inválido, ou falta subject. | {"error":"subject is required"} |
| 500 | Falha ao gravar. | {"error":"failed to create campaign","detail":"..."} |
Atualizar campanha
Atualiza só os campos enviados, e só enquanto a campanha é rascunho (R). Campanhas enviando, enviadas ou que falharam não podem ser editadas.
/api/v1/admin/newsletter/campaigns/{id}AdminAltera uma campanha em rascunho
Rota ligada ao módulo newsletter: com o módulo desligado a resposta é 403. Exige manage_newsletter ou manage_content.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
subjectstringhtml_bodystringtext_bodystringscheduled_atstringExemplo de requisição (Atualizar campanha)
curl -X PUT "$BASE_URL/api/v1/admin/newsletter/campaigns/b2247714-08c6-4ad9-b644-748eae7baa70" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subject": "Black Friday chegou: só hoje"
}'Resposta (Atualizar campanha)
{
"id": "b2247714-08c6-4ad9-b644-748eae7baa70",
"subject": "Black Friday chegou: só hoje",
"html_body": "<h1>Ofertas</h1><p>Até 50% off.</p>",
"text_body": "Ofertas: até 50% off.",
"status": "R",
"recipients": 0,
"sent": 0,
"failed": 0,
"scheduled_at": "2026-11-27T12:00:00Z",
"created_at": "2026-10-11T21:05:13.511196Z",
"updated_at": "2026-10-11T21:05:13.511196Z"
}Campos da resposta
iduuidsubjectstringhtml_bodystringtext_bodystringstatusstringR rascunho, S enviando, A enviada, F falhou.recipientsintegersentintegerfailedintegerscheduled_atstringsent_atstringvendor_iduuidcreated_atstringupdated_atstringErros (Atualizar campanha)
| 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_newsletter","manage_content"]} |
| 400 | A campanha não está em rascunho. | {"error":"can only edit draft campaigns (current status: A)"} |
| 404 | Não existe campanha com esse id. | {"error":"campaign not found"} |
| 500 | Corpo sem nenhum campo (no fields to update), ou falha de banco. | {"error":"failed to update campaign","detail":"no fields to update"} |
Apagar campanha
Só campanhas em rascunho (R) ou que falharam (F) podem ser apagadas. Campanhas já enviadas ficam como histórico.
/api/v1/admin/newsletter/campaigns/{id}AdminApaga uma campanha em rascunho ou que falhou
Rota ligada ao módulo newsletter: com o módulo desligado a resposta é 403. Exige manage_newsletter ou manage_content.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição (Apagar campanha)
curl -X DELETE "$BASE_URL/api/v1/admin/newsletter/campaigns/b2247714-08c6-4ad9-b644-748eae7baa70" \
-H "Authorization: Bearer $TOKEN"Resposta (Apagar campanha)
{
"message": "campaign deleted"
}Erros (Apagar campanha)
| 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_newsletter","manage_content"]} |
| 400 | A campanha não existe ou não pode ser apagada (enviando ou enviada). Os dois casos usam a mesma mensagem. | {"error":"campaign not found or cannot be deleted (only draft/failed campaigns can be deleted)"} |