---
title: "Cadastrar desconto progressivo"
method: POST
path: "/descontosProgressivos"
tags: ["Descontos Progressivos"]
---

# Cadastrar desconto progressivo

`POST /descontosProgressivos`

## Request

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

Cria um novo preço de atacado. O ID do registro criado é retornado
com HTTP 201.

### Regras

- A modalidade de faixa é exclusiva: exatamente uma entre `faixaQuantidade` e `faixaPreco`
  deve estar ativa. Ambas `true` ou ambas `false` retornam HTTP 400.
- Quando `tipo="produto"`, `tipoFiltro` é obrigatório.
- Quando `tipoFiltro="produtos"`, `produtos` é uma lista de referências por `id` ou `codigo`.
- Quando `tipoFiltro="categorias"`, `categorias` aceita IDs ou códigos de categorias raiz.
- Apenas **um** registro do tipo `pedido` ativo é permitido por lojista.
- Em cada lista de faixas, `aPartirDe` e `percentualDesconto` devem ser maiores que zero (percentual no máximo 99) e **estritamente crescentes** entre as faixas.
- `nome` aceita no máximo 50 caracteres.

## Request body

- DescontoProgressivoCreate
  - `nome` string, required: Nome do preço de atacado (máximo 50 caracteres).
  - `tipo` 'produto' | 'pedido', required: `produto`: desconto sobre o preço unitário (combinar com `tipoFiltro`). `pedido`: desconto sobre o total do pedido. Apenas um registro do tipo `pedido` ativo é permitido por lojista.
  - `ativa` boolean: Define se o desconto está ativo. Default `true`.
  - `tipoFiltro` 'todosProdutos' | 'produtos' | 'categorias': Obrigatório quando `tipo="produto"`. Quando `tipo="pedido"`, ignorar.
  - `produtos` ProdutoRef[]: Obrigatório quando `tipoFiltro="produtos"`. Aceita id OU código.
    - `id` string
    - `codigo` string
  - `categorias` string[]: Obrigatório quando `tipoFiltro="categorias"`. Aceita id OU código. Somente categorias raiz.
  - `faixaQuantidade` boolean: Se `true`, `faixaQuantidadeLista` deve conter pelo menos uma faixa. Exclusivo com `faixaPreco` — as duas não podem ser `true` (nem as duas `false`) ao mesmo tempo; violar isso retorna HTTP 400.
  - `faixaQuantidadeLista` Faixa[]: Não pode ser enviada não-vazia se `faixaQuantidade` for `false` — 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: Se `true`, `faixaPrecoLista` deve conter pelo menos uma faixa. Exclusivo com `faixaQuantidade` — as duas não podem ser `true` (nem as duas `false`) ao mesmo tempo; violar isso retorna HTTP 400.
  - `faixaPrecoLista` Faixa[]: Não pode ser enviada não-vazia se `faixaPreco` for `false` — 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 no carrinho. Default `true` (cupom e preço de atacado se acumulam, como antes).

## Response `201`

Preço de atacado criado com sucesso.

- 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)
