> For the complete documentation index, see [llms.txt](https://ajuda.livechat360.com.br/crm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ajuda.livechat360.com.br/crm/api-docs/produtos-da-negociacao.md).

# Produtos da negociacao

As linhas de produto/serviço de uma negociação: quantidade, preço e desconto de cada item. São elas que determinam o valor exibido no cartão da negociação.

| Método | Rota                            | Operação |
| ------ | ------------------------------- | -------- |
| GET    | `…/products`, `…/products/{id}` | `read`   |
| POST   | `…/products`                    | `insert` |
| PUT    | `…/products/{id}`               | `update` |
| DELETE | `…/products/{id}`               | `delete` |

`discount_type` é `amount` (valor fixo), `percentage` (percentual) ou `none` (sem desconto); `discount` traz o valor correspondente (`null` quando `none`); `total_price` é o total calculado da linha.

**Filtro:** `product_id` (inteiro ou lista). **Ordenação:** `product_id` (padrão).

```bash
curl -H "Authorization: Bearer $KEY" "https://app-api.atendeserver.com.br/v1/deals/310/products"
curl -H "Authorization: Bearer $KEY" "https://app-api.atendeserver.com.br/v1/deals/310/products?product_id=15"
```

## Payload

```json
{
  "data": [
    {
      "id": 991,
      "product_id": 15,
      "quantity": 2,
      "price": 199.9,
      "discount_type": "percentage",
      "discount": 10,
      "total_price": 359.82
    }
  ],
  "meta": { "page": 1, "per_page": 30, "total": 1, "total_pages": 1 }
}
```

## Escrita

| Campo           | Tipo                                  | Observações                                                                                                                     |
| --------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `product_id`    | inteiro                               | **obrigatório no POST** (produto do catálogo da conta); **imutável no PUT** (422). Remova a linha e adicione o produto desejado |
| `quantity`      | inteiro ≥ 1                           | padrão 1                                                                                                                        |
| `price`         | número ≥ 0                            | padrão: o preço de catálogo no momento da inclusão                                                                              |
| `discount_type` | enum `none` / `amount` / `percentage` | padrão `none`; usar `amount`/`percentage` exige `discount`; enviar `discount` sozinho em uma linha `none` retorna 422           |
| `discount`      | número ≥ 0                            | valor fixo ou percentual, conforme `discount_type`                                                                              |

As alterações atualizam o valor calculado da negociação. O cartão no quadro reflete a mudança em tempo real.

```bash
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"product_id":15,"quantity":2,"discount_type":"percentage","discount":10}' \
  "https://app-api.atendeserver.com.br/v1/deals/310/products"

curl -X PUT -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"quantity":3,"discount_type":"none"}' "https://app-api.atendeserver.com.br/v1/deals/310/products/991"

curl -X DELETE -H "Authorization: Bearer $KEY" "https://app-api.atendeserver.com.br/v1/deals/310/products/991"
```
