meta {
  name: 2. Criar Contato
  type: http
  seq: 2
}

post {
  url: {{baseUrl}}/api/contacts
  body: json
  auth: none
}

body:json {
  {
    "email": "joao.souza@example.com",
    "name": "João Souza",
    "phone": "11999990000",
    "tags": ["lead"],
    "listIds": ["{{contactListId}}"]
  }
}

script:post-response {
  if (res.body && res.body.contact && res.body.contact.id) {
    bru.setVar("contactId", res.body.contact.id);
  }
}

docs {
  Requer sessão (o contato criado não fica vinculado a nenhum usuário — `Contact` não tem `userId`).

  Schema (`create-contact-schema.ts`): `email` (obrigatório, trim+lowercase automático, formato válido), `name`/`phone` (opcionais, trim, min 1 se enviados), `tags` (array opcional de strings), `listIds` (array opcional de ids — **sem validar se as listas existem ou pertencem ao usuário logado**).

  ⚠️ Validação usa `.parse()` → body inválido → **500**, não 400.

  Erro de negócio: `AppError.badRequest("Já existe um contato com esse e-mail")` → 400 (checagem prévia; a constraint `@unique` do banco é só uma rede de segurança).

  Sucesso: 201, `{"contact": Contact}` — **atenção**: mesmo enviando `listIds`, a resposta não inclui `listMemberships` (rode "3. Obter Contato" depois para confirmar a associação).
}
