# Criar Negócio do Pipeline

> Cria um novo negócio no pipeline de CRM da conta autenticada, com suporte a vinculação de produtos e cálculo automático de valores.

`POST https://crm.wavups.com/api/v1/account-crm-pipeline-deal`

Página: https://crm.wavups.com/docs/api/negocios-pipeline/criar

## Requisição

`POST https://crm.wavups.com/api/v1/account-crm-pipeline-deal`

- `Token` (string, obrigatório, header):
  Seu token de autenticação.

### Body

- `title` (string, obrigatório, body):
  Título do negócio.

- `stageId` (string, obrigatório, body):
  ID do estágio do pipeline ao qual o negócio pertence.

- `leadId` (string, body):
  ID do lead a ser vinculado ao negócio.

- `dealOwner` (string, body):
  ID do usuário responsável pelo negócio.

- `value` (number, body):
  Valor estimado do negócio. Se omitido e produtos forem vinculados, o valor será calculado automaticamente pela soma dos produtos.

- `status` (string, body):
  Status do negócio: `open`, `won` ou `lost`. Padrão: `open`. Outro valor responde `400`.

  **A etapa manda no status.** Se o `stageId` for uma etapa de ganho ou de perdido (definidas em **Pipelines > Etapas de ganho e perdido**, na plataforma), o negócio já nasce `won` ou `lost`, mesmo que você envie outro `status`. Se você enviar `won` ou `lost` com uma etapa em andamento, o negócio vai para a primeira etapa de ganho ou de perdido do pipeline (se o pipeline tiver uma).

- `wonAt` (string, body):
  Data real do ganho, em ISO 8601 (`2026-10-06` ou `2026-10-06T14:30:00Z`). Só vale quando o negócio nasce ganho. **Se omitida, a data do ganho é o momento da criação.** Use para registrar uma venda que já aconteceu. Não pode ser no futuro (`400`).

- `lostAt` (string, body):
  Data real da perda, em ISO 8601. Mesma regra do `wonAt`, para negócios que nascem perdidos: se omitida, vale o momento da criação.

- `lossReasonId` (string, body):
  Motivo da perda: o ID de um motivo cadastrado na plataforma, o mesmo que aparece em `lossReasonId` nos negócios perdidos. Só vale quando o negócio nasce perdido. ID que não é da conta responde `404`.

- `lossNote` (string, body):
  Observação da perda (até 1000 caracteres). Só vale quando o negócio nasce perdido.

- `currency` (string, body):
  Moeda do valor: código ISO 4217 de 3 letras, como `BRL`, `USD`, `EUR`, `GBP` ou `JPY` (aceito também em minúsculas: `usd` vira `USD`). Padrão: `BRL`. Código desconhecido responde `400`.

- `type` (string, body):
  Tipo ou categoria do negócio.

- `nextAction` (string, body):
  Próxima ação prevista para o negócio.

- `source` (string, body):
  Origem do negócio (ex: `site`, `indicacao`, `whatsapp`).

- `customFields` (object, body):
  Campos personalizados do negócio, pela **chave do campo** (os campos de negócio são por pipeline; veja a chave em **Pipelines > Campos**, na plataforma). Exemplo: `{ "origem_da_proposta": "Indicação", "orcamento": "1.500,50" }`.

  * Só valem os campos do pipeline da etapa em que o negócio fica.
  * **Seleção:** o nome ou o id da opção. **Seleção múltipla:** uma lista de nomes.
  * **Número e moeda:** `1500` ou `1.500,50`. **Data:** `2026-03-15` ou `15/03/2026`. **Sim/Não:** `true`/`false` ou `sim`/`não`.
  * Chave desconhecida, de outro pipeline ou valor inválido responde `400` e nada é gravado. Campos obrigatórios não são exigidos por esta API.

- `probability` (number, body):
  Probabilidade de fechamento em percentual (0 a 100). Padrão: `0`.

- `order` (number, body):
  Ordem de exibição na coluna do estágio. Padrão: `0`.

- `expectedClose` (string, body):
  Data prevista de fechamento no formato ISO 8601 (ex: `2026-09-15T00:00:00.000Z`).

- `products` (array, body):
  Lista de produtos a serem vinculados ao negócio.

  Propriedades do item de produto:
  - `productId` (string, obrigatório, body):
  ID do produto cadastrado na conta.
  
  - `quantity` (number, body):
  Quantidade do produto. Padrão: `1`.
  
  - `discount` (number, body):
  Valor ou percentual de desconto. Padrão: `0`.
  
  - `discountType` (string, body):
  Tipo de desconto: `PERCENTAGE` (percentual) ou `FIXED` (valor fixo). Padrão: `FIXED`.
  
  - `totalPrice` (number, body):
  Preço total do item. **Opcional**: Se omitido, a API buscará o preço cadastrado do produto e calculará o valor total aplicando a quantidade e o desconto informado (`PERCENTAGE` ou `FIXED`). Caso você informe o `totalPrice` explicitamente, o sistema utilizará o valor informado, ignorando o cálculo automático.
  
  

---

## Resposta

Retorna o objeto completo do negócio criado com todos os relacionamentos e produtos vinculados.

- `id` (string):
  Identificador único do negócio criado.

- `stageId` (string):
  ID do estágio vinculado.

- `leadId` (string | null):
  ID do lead vinculado.

- `dealOwner` (string | null):
  ID do usuário responsável.

- `title` (string):
  Título do negócio.

- `description` (string | null):
  Descrição do negócio.

- `value` (number | null):
  Valor total do negócio.

- `status` (string):
  Status do negócio.

- `expectedClose` (string | null):
  Data prevista de fechamento (ISO 8601).

- `wonAt` (string | null):
  Data do ganho (ISO 8601). Preenchida quando o negócio é ganho: a data informada ou o momento da criação.

- `lostAt` (string | null):
  Data da perda (ISO 8601). Preenchida quando o negócio é perdido.

- `customFields` (object):
  Campos personalizados preenchidos do negócio (só os do pipeline dele), pela chave do campo. Seleção traz o **nome** da opção; sem nenhum valor, vem `{}`.

- `currency` (string):
  Moeda do valor: código ISO 4217 de 3 letras (ex: `BRL`, `USD`, `EUR`). Negócio sem moeda gravada vem como `BRL`. O `value` está sempre nessa moeda.

- `lossReasonId` (string | null):
  Motivo da perda escolhido na plataforma (só em negócios perdidos).

- `lossNote` (string | null):
  Observação da perda (só em negócios perdidos).

- `createdAt` (string):
  Data de criação (ISO 8601).

- `AccountCRMLead` (object | null):
  Dados do lead associado ao negócio.

- `AccountUser` (object | null):
  Dados do responsável pelo negócio.

- `AccountCRMPipelineStage` (object):
  Dados do estágio associado ao negócio.

- `accountCRMPipelineDealProductAssignments` (array):
  Produtos vinculados ao negócio.

---

## Exemplos

### Exemplo de requisição

```bash POST /api/v1/account-crm-pipeline-deal
curl --request POST \
  --url 'https://crm.wavups.com/api/v1/account-crm-pipeline-deal' \
  --header 'Token: SEU_TOKEN_DE_API' \
  --header 'Content-Type: application/json' \
  --data '{
  "title": "Contrato Anual - Empresa XPTO",
  "stageId": "cmkfy4kdk0009y0c1qx9fgumt",
  "leadId": "cmsncjkqw0bzx0hll2lv5i34a",
  "dealOwner": "cmuser0012345",
  "currency": "USD",
  "expectedClose": "2026-09-30T00:00:00.000Z",
  "customFields": {
  "orcamento": "2.000,00"
  },
  "products": [
  {
  "productId": "cmprod001",
  "quantity": 2,
  "discount": 50,
  "discountType": "PERCENTAGE"
  }
  ]
  }'
```

```bash Venda já fechada
curl --request POST   --url 'https://crm.wavups.com/api/v1/account-crm-pipeline-deal'   --header 'Token: SEU_TOKEN_DE_API'   --header 'Content-Type: application/json'   --data '{
  "title": "Contrato Anual - Empresa XPTO",
  "stageId": "ID_DA_ETAPA_DE_GANHO",
  "value": 1500,
  "wonAt": "2026-07-15"
  }'
```

### Exemplo de resposta

```json 201
{
  "id": "cldeal002",
  "customFields": {
  "orcamento": 2000
  },
  "stageId": "cmkfy4kdk0009y0c1qx9fgumt",
  "leadId": "cmsncjkqw0bzx0hll2lv5i34a",
  "dealOwner": "cmuser0012345",
  "title": "Contrato Anual - Empresa XPTO",
  "description": null,
  "value": 1500.0,
  "status": "open",
  "currency": "USD",
  "lossReasonId": null,
  "lossNote": null,
  "type": null,
  "nextAction": null,
  "source": null,
  "probability": 0,
  "order": 0,
  "expectedClose": "2026-09-30T00:00:00.000Z",
  "wonAt": null,
  "lostAt": null,
  "createdAt": "2026-08-20T10:00:00.000Z",
  "AccountCRMLead": {
  "id": "cmsncjkqw0bzx0hll2lv5i34a",
  "name": "Gabriel Cerrini",
  "email": "gabriel@email.com",
  "phone": "+5511999998888"
  },
  "AccountUser": {
  "id": "cmuser0012345",
  "User": {
  "name": "Vendedor Proativia",
  "email": "vendedor@empresa.com"
  }
  },
  "AccountCRMPipelineStage": {
  "id": "cmkfy4kdk0009y0c1qx9fgumt",
  "name": "1ºContato",
  "pipelineId": "cmkfy4k700008y0c1phx38422"
  },
  "accountCRMPipelineDealProductAssignments": [
  {
  "id": "cpassign002",
  "accountProductId": "cmprod001",
  "quantity": 2,
  "discount": 50,
  "discountType": "PERCENTAGE",
  "totalPrice": 1500.0,
  "createdAt": "2026-08-20T10:00:00.000Z",
  "AccountProduct": {
  "id": "cmprod001",
  "name": "Plano Anual Consultoria",
  "price": 1500.0,
  "description": "Consultoria continuada para vendas"
  }
  }
  ]
}
```

```json 400
{
  "error": "stageId is required"
}
```

```json 400 (data no futuro)
{
  "error": "wonAt cannot be in the future"
}
```

```json 404
{
  "error": "Pipeline stage not found"
}
```

```json 500
{
  "error": "Error to create account CRM pipeline deal"
}
```
