# Atualizar Negócio do Pipeline

> Atualiza os dados de um negócio existente no pipeline de CRM pelo seu ID, incluindo seus produtos vinculados.

`PUT https://crm.wavups.com/api/v1/account-crm-pipeline-deal/{id}`

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

## Requisição

`PUT https://crm.wavups.com/api/v1/account-crm-pipeline-deal/{id}`

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

- `id` (string, obrigatório, path):
  ID do negócio a ser atualizado.

### Body

Todos os campos são opcionais. Envie apenas os campos que deseja atualizar.

- `title` (string, body):
  Novo título do negócio.

- `stageId` (string, body):
  Novo ID do estágio do pipeline.

- `leadId` (string, body):
  Novo ID do lead vinculado.

- `dealOwner` (string, body):
  Novo ID do usuário responsável.

- `description` (string, body):
  Nova descrição do negócio.

- `value` (number, body):
  Novo valor estimado do negócio.

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

  O status e a etapa andam juntos: marcar `won` ou `lost` leva o negócio para a primeira etapa de ganho ou de perdido do pipeline; mover para uma etapa de ganho ou de perdido (pelo `stageId`) marca o negócio como `won` ou `lost`; reabrir (`open`) leva de volta para a última etapa em andamento.

  Ao virar ganho ou perdido, a data do ganho (`wonAt`) ou da perda (`lostAt`) passa a ser o momento da alteração, a não ser que você envie a data real. Enviar o mesmo status de novo não muda a data.

- `wonAt` (string, body):
  Data real do ganho, em ISO 8601 (`2026-10-06` ou `2026-10-06T14:30:00Z`). Só é aceita quando o negócio fica ganho (já é, ou vira com esta alteração); senão responde `400`. Serve também para corrigir a data de um negócio já ganho. Não pode ser no futuro.

- `lostAt` (string, body):
  Data real da perda, em ISO 8601. Mesma regra do `wonAt`, para negócios perdidos.

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

- `lossNote` (string, body):
  Observação da perda (até 1000 caracteres).

- `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). Só a moeda muda: o `value` não é convertido. Código desconhecido responde `400`.

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

- `nextAction` (string, body):
  Nova próxima ação prevista.

- `source` (string, body):
  Nova origem do negócio.

- `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 (quando você troca a etapa, vale o pipeline da etapa de destino).
  * **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.
  * Neste endpoint, `null` ou texto vazio **limpa** o campo, e os campos que você não enviar ficam como estão.

- `probability` (number, body):
  Nova probabilidade de fechamento em percentual (0 a 100).

- `order` (number, body):
  Nova posição de ordenação.

- `expectedClose` (string, body):
  Nova data prevista de fechamento no formato ISO 8601.

- `products` (array, body):
  Nova lista de produtos a serem associados ao negócio (substitui os vínculos existentes).

  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` ou `FIXED`. Padrão: `FIXED`.
  
  - `totalPrice` (number, body):
  Preço total do item. **Opcional**: Se omitido, a API calculará automaticamente com base no preço do produto cadastrado na conta, quantidade e desconto. Se informado explicitamente, o valor enviado será mantido.
  
  

---

## Resposta

- `message` (string):
  Mensagem de confirmação da atualização.

---

## Exemplos

### Exemplo de requisição

```bash PUT /api/v1/account-crm-pipeline-deal/{id}
curl --request PUT \
  --url 'https://crm.wavups.com/api/v1/account-crm-pipeline-deal/cmsnopzzl002l01ukfjsxp80a' \
  --header 'Token: SEU_TOKEN_DE_API' \
  --header 'Content-Type: application/json' \
  --data '{
  "status": "won",
  "wonAt": "2026-10-06",
  "value": 2000.0,
  "currency": "EUR",
  "customFields": {
  "orcamento": 2000,
  "segmento": "Varejo"
  },
  "products": [
  {
  "productId": "cmprod001",
  "quantity": 1,
  "discount": 0,
  "discountType": "FIXED"
  }
  ]
  }'
```

### Exemplo de resposta

```json 200
{
  "message": "Account CRM pipeline deal updated successfully"
}
```

```json 400
{
  "error": "wonAt is only accepted when the deal is won"
}
```

```json 404
{
  "error": "Account CRM pipeline deal not found"
}
```

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