---
title: "Atualizar parcialmente desconto progressivo (merge)"
method: PATCH
path: "/descontosProgressivos/{descontoProgressivoId}"
tags: ["Descontos Progressivos"]
---

# Atualizar parcialmente desconto progressivo (merge)

`PATCH /descontosProgressivos/{descontoProgressivoId}`

## Request

- Base URL: `https://app.vendizap.com/api`
- URL: `https://app.vendizap.com/api/descontosProgressivos/{descontoProgressivoId}`
- Auth: API key in header `X-Auth-Id` and API key in header `X-Auth-Secret`

Atualiza apenas os campos enviados; os demais permanecem como estavam.
O payload mesclado é re-validado pelas regras gerais, incluindo a modalidade de
faixa exclusiva (exatamente uma entre `faixaQuantidade`/`faixaPreco`), senão HTTP 400.
A exigência de ao menos uma modalidade ativa vale **sempre**, mesmo quando o PATCH
não toca faixa. Exceção: só a checagem de exclusividade (as duas ativas ao mesmo
tempo) é pulada quando o payload não envia nenhuma das quatro chaves de faixa
(`faixaQuantidade`, `faixaPreco`, `faixaQuantidadeLista`, `faixaPrecoLista`) —
cobre campanhas legadas ainda com as duas modalidades ativas.

## Request body

- DescontoProgressivoPatch: Altera apenas os campos enviados (merge). O payload mesclado deve continuar atendendo às regras de validação (modalidade de faixa exclusiva — exatamente uma entre `faixaQuantidade`/`faixaPreco` — e `produtos`/`categorias` coerentes com `tipoFiltro`), senão HTTP 400. A exigência de ao menos uma modalidade ativa vale **sempre**, mesmo quando o PATCH não toca faixa. Exceção: só a checagem de exclusividade (as duas ativas ao mesmo tempo) é pulada quando o payload não envia nenhuma das quatro chaves de faixa (`faixaQuantidade`, `faixaPreco`, `faixaQuantidadeLista`, `faixaPrecoLista`) — cobre campanhas legadas ainda com as duas modalidades ativas.
  - `nome` string
  - `tipo` 'produto' | 'pedido'
  - `ativa` boolean
  - `tipoFiltro` 'todosProdutos' | 'produtos' | 'categorias'
  - `produtos` ProdutoRef[]
    - `id` string
    - `codigo` string
  - `categorias` string[]
  - `faixaQuantidade` boolean: Exclusivo com `faixaPreco` no documento mesclado — exatamente uma das duas deve ficar `true`, senão HTTP 400. Desativar uma modalidade zera a lista correspondente (`[]`).
  - `faixaQuantidadeLista` Faixa[]: Não pode ser enviada não-vazia se `faixaQuantidade` for `false` no documento mesclado — retorna HTTP 400.
    - `aPartirDe` number, required: Limiar mínimo a partir do qual a faixa passa a valer (quantidade de itens em `faixaQuantidadeLista`; valor do pedido/produto em `faixaPrecoLista`). Deve ser maior que zero e **estritamente crescente** entre as faixas da mesma lista (sem repetir nem sobrepor). A maior faixa atingida prevalece, não há limite superior.
    - `percentualDesconto` number, required: Percentual de desconto aplicado quando o limiar é atingido. Deve ser maior que zero e no máximo 99, e **estritamente crescente** entre as faixas da mesma lista.
  - `faixaPreco` boolean: Exclusivo com `faixaQuantidade` no documento mesclado — exatamente uma das duas deve ficar `true`, senão HTTP 400. Desativar uma modalidade zera a lista correspondente (`[]`).
  - `faixaPrecoLista` Faixa[]: Não pode ser enviada não-vazia se `faixaPreco` for `false` no documento mesclado — retorna HTTP 400.
    - `aPartirDe` number, required: Limiar mínimo a partir do qual a faixa passa a valer (quantidade de itens em `faixaQuantidadeLista`; valor do pedido/produto em `faixaPrecoLista`). Deve ser maior que zero e **estritamente crescente** entre as faixas da mesma lista (sem repetir nem sobrepor). A maior faixa atingida prevalece, não há limite superior.
    - `percentualDesconto` number, required: Percentual de desconto aplicado quando o limiar é atingido. Deve ser maior que zero e no máximo 99, e **estritamente crescente** entre as faixas da mesma lista.
  - `permiteCupom` boolean: Quando `false`, os itens cobertos por esta campanha (com a faixa atingida) saem da base de cálculo de cupons. Omitir mantém o valor atual.

## Response `200`

Preço de atacado atualizado.

- IdResponse
  - `id` string

## Other responses

- `400`: Erro na requisição que não foi possível ser completada. O erro é retornado em uma string (não JSON).
- `401`: Credenciais informadas inválidas.

---

[API](https://skmtc.dev/vendizap/apis/api-vendizap.md) · [All operations](https://skmtc.dev/vendizap/apis/api-vendizap/llms.txt) · [OpenAPI document](https://skmtc.dev/vendizap/apis/api-vendizap/revisions/2c0d0a254abb?raw)
