Campanhas de newsletter
Cria, edita, lista e apaga rascunhos de e-mail marketing do seller.
Uma campanha é um e-mail com assunto, corpo em HTML e versão em texto. O seller a prepara aqui como rascunho (status: R). A API do seller não envia: o envio vai para todos os assinantes da loja e fica com o administrador.
Listar campanhas
/api/v1/vendor/newsletter/campaignsSellerLista as campanhas do seller
Da mais nova para a mais antiga, sem paginação.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Exemplo de requisição
bash
curl -X GET "$BASE_URL/api/v1/vendor/newsletter/campaigns" \
-H "Authorization: Bearer $TOKEN"200Campanhas
json
{
"campaigns": [
{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"subject": "Novidades de novembro",
"html_body": "<h1>Novidades</h1><p>Chegou a coleção nova.</p>",
"text_body": "Novidades: chegou a coleção nova.",
"status": "R",
"recipients": 0,
"sent": 0,
"failed": 0,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}
],
"total": 1
}Campos da resposta
campaignsarrayCampanhas do seller.
iduuidId da campanha.
subjectstringAssunto do e-mail.
html_bodystringCorpo em HTML, gravado como enviado.
text_bodystringVersão em texto puro.
statusstringRPSAFLetra:
R rascunho, P agendada, S enviando, A enviada, F falhou.recipientsintegerDestinatários do envio.
0 em rascunho.sentintegerEntregues ao provedor de e-mail.
failedintegerFalhas de envio.
scheduled_atstringHorário de envio planejado (RFC 3339). Ausente se não houver.
sent_atstringQuando foi enviada. Ausente antes.
vendor_iduuidSeller dono.
created_atstringCriação (RFC 3339, UTC).
updated_atstringÚltima alteração.
totalintegerQuantidade de campanhas.
Consultar campanha
/api/v1/vendor/newsletter/campaigns/{id}SellerDevolve uma campanha
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioId da campanha.
Exemplo de requisição
bash
curl -X GET "$BASE_URL/api/v1/vendor/newsletter/campaigns/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN"200Campanha
json
{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"subject": "Novidades de novembro",
"html_body": "<h1>Novidades</h1><p>Chegou a coleção nova.</p>",
"text_body": "Novidades: chegou a coleção nova.",
"status": "R",
"recipients": 0,
"sent": 0,
"failed": 0,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Criar rascunho
/api/v1/vendor/newsletter/campaignsSellerCria um rascunho de campanha
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Corpo da requisição
subjectstringobrigatórioAssunto. Não pode ser vazio.
html_bodystringCorpo em HTML. Gravado exatamente como enviado.
text_bodystringVersão em texto puro, para clientes de e-mail sem HTML.
scheduled_atstringHorário planejado de envio (RFC 3339). É só um dado: nada é enviado por este campo.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/vendor/newsletter/campaigns" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subject": "Novidades de novembro",
"html_body": "<h1>Novidades</h1><p>Chegou a coleção nova.</p>",
"text_body": "Novidades: chegou a coleção nova."
}'201Rascunho criado
json
{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"subject": "Novidades de novembro",
"html_body": "<h1>Novidades</h1><p>Chegou a coleção nova.</p>",
"text_body": "Novidades: chegou a coleção nova.",
"status": "R",
"recipients": 0,
"sent": 0,
"failed": 0,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Alterar rascunho
/api/v1/vendor/newsletter/campaigns/{id}SellerAltera um rascunho
Parcial: só os campos enviados mudam. Só funciona enquanto status for R. Sem nenhum campo, devolve a campanha como está.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioId da campanha.
Corpo da requisição
subjectstringNovo assunto.
html_bodystringNovo corpo HTML.
text_bodystringNova versão em texto.
scheduled_atstringNovo horário planejado.
Exemplo de requisição
bash
curl -X PUT "$BASE_URL/api/v1/vendor/newsletter/campaigns/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subject": "Novidades de novembro: coleção nova"
}'200Rascunho atualizado
json
{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"subject": "Novidades de novembro: coleção nova",
"html_body": "<h1>Novidades</h1><p>Chegou a coleção nova.</p>",
"text_body": "Novidades: chegou a coleção nova.",
"status": "R",
"recipients": 0,
"sent": 0,
"failed": 0,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Apagar campanha
/api/v1/vendor/newsletter/campaigns/{id}SellerApaga uma campanha
Só rascunhos (R) e campanhas que falharam (F) podem ser apagadas. Remoção definitiva.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioId da campanha.
Exemplo de requisição
bash
curl -X DELETE "$BASE_URL/api/v1/vendor/newsletter/campaigns/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN"200Campanha apagada
json
{
"message": "campaign deleted"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário do seller (equipe) não tem nenhum dos privilégios exigidos. O dono da loja nunca recebe este erro. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
| 403 | O usuário autenticado não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |
| 400 | JSON inválido, subject vazio na criação, ou edição de campanha que não é rascunho. | {"error":"can only edit draft campaigns (current status: A)"} |
| 404 | Campanha inexistente ou de outro seller; também ao apagar uma campanha que não é rascunho nem falha. | {"error":"campaign not found or cannot be deleted (only draft/failed campaigns can be deleted)"} |