meta { name: 2. Criar Campanha type: http seq: 2 } post { url: {{baseUrl}}/api/campaigns body: json auth: none } body:json { { "title": "Newsletter de Agosto", "subject": "Fique por dentro das novidades de agosto", "htmlBody": "
Conteúdo da campanha...
", "senderId": "{{senderId}}", "contactListId": "{{contactListId}}" } } script:post-response { if (res.body && res.body.id) { bru.setVar("campaignId", res.body.id); } } docs { Requer sessão. Schema (`create-campaign-schema.ts`): `title` (min 3), `subject` (min 3), `htmlBody` (min 1, é sanitizado no servidor via `sanitizeHtml()` antes de salvar), `senderId` (cuid), `contactListId` (cuid, opcional/nullable — pode omitir ou enviar `null`). Se `senderId` vier ausente/vazio, o backend tenta usar automaticamente o primeiro sender do usuário; se não houver NENHUM sender cadastrado → 400 `{"success":false,"error":"Nenhum remetente configurado. Por favor, cadastre uma conta de e-mail remetente antes de salvar a campanha."}`. ⚠️ Validação usa `.parse()` (não `.safeParse()`): título/assunto curtos, `htmlBody` vazio, ou `senderId`/`contactListId` com formato inválido (não-cuid) geram `ZodError` não tratado → **500**, não 400. Sucesso: 201, `Campaign` bruto (`status: "DRAFT"` por default, sem includes de `sender`/`contactList`/`logs`). }