> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Documentação das APIs da DeliveryVip, em português. Regras que mais quebram integrações: (1) Merchant API: faça polling em GET /merchant/v3/events:polling no máximo a cada 30 s por token; confirme todo evento recebido com POST /merchant/v3/events/acknowledgment e corpo [{"id": "<eventId>"}] (o campo lido é id, não eventId), inclusive eventos repetidos ou que o sistema não trata; deduplique por eventId; o evento é só um aviso, busque o pedido na orderURL. (2) Tokens client_credentials valem 24 h e não têm refresh_token: peça outro ao receber 401. (3) Webhooks: valide a assinatura HMAC sobre o corpo bruto e responda 2xx rápido; o polling é a reconciliação. (4) Open Delivery: host od.deliveryvip.com.br, um client_secret por loja, datas em UTC. (5) Fidelidade: o operador implementa 5 rotas assinadas com HMAC e chama o config push; o estorno precisa ser idempotente. (6) Partner API: scope dv.partner. Não invente endpoints: use a referência gerada das specs OpenAPI.

# Atualizar um desconto

> Altere o valor, o período ou as regras de um desconto existente.

Altera um desconto. Os campos são os mesmos do [cadastro](/docs/guides/merchant/discount/adicionar-um-desconto.md#requisição), todos opcionais: envie só o que quer mudar. O que não for enviado fica como está.

> [!NOTE]
>
> **Opções na atualização.** Sem `options` no corpo, as opções atuais ficam como estão. Com `options`, a lista enviada substitui a atual: uma opção que não estiver nela é desligada, e `"options": []` desliga todas.

> [!NOTE]
>
> Para ligar ou desligar o desconto agora, use as [ações](/docs/guides/merchant/discount/acoes-dos-descontos.md) em vez de mexer nas datas. `status` é ignorado se enviado.

## Requisição

**merchantId** `uuid` *required*

A loja.

**discountId** `uuid` *required*

O `id` do desconto.

**type** `string`

`SMART` ou `COUPON`.

**name** `string`

Nome do desconto `SMART`.

**code** `string`

Código do cupom `COUPON`.

**startsAt** `datetime`

A partir de quando o desconto vale.

**endsAt** `datetime`

Até quando o desconto vale.

**rules** `object`

Envie só as regras que mudam.

**propriedades**

**value** `number`

Valor do desconto.

**valueType** `string`

`PERCENTAGE` ou `FIXED_AMOUNT`.

**discountType** `string`

`SUBTOTAL`, `TOTAL` ou `DELIVERY`.

**minimumOrderValue** `number`

Valor mínimo dos produtos na sacola.

**usageLimit** `integer`

Limite total de usos. `0` é ilimitado.

**usagePerCustomer** `string`

`MANY`, `ONCE` ou `FIRST_ORDER`.

**options** `string[]`

Lista completa de opções: `NON_PROMOTION_PRODUCTS` e, só em `COUPON`, `CUMULATIVE_WITH_SMART`. Substitui a lista atual; omita para manter.

```bash cURL theme={null}
curl --request PATCH 'https://api.deliveryvip.com.br/merchant/v3/{merchantId}/discounts/{discountId}' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "rules": { "value": 15 },
    "options": ["NON_PROMOTION_PRODUCTS"]
  }'
```

```js Node.js theme={null}
const response = await fetch(
  `https://api.deliveryvip.com.br/merchant/v3/${merchantId}/discounts/${discountId}`,
  {
    method: 'PATCH',
    headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ rules: { value: 15 }, options: ['NON_PROMOTION_PRODUCTS'] }),
  },
)
const discount = await response.json()
```

```python Python theme={null}
response = requests.patch(
    f"https://api.deliveryvip.com.br/merchant/v3/{merchant_id}/discounts/{discount_id}",
    headers={"Authorization": f"Bearer {token}"},
    json={"rules": {"value": 15}, "options": ["NON_PROMOTION_PRODUCTS"]},
)
discount = response.json()
```

## Resposta

Retorna `200 OK` com o [objeto desconto](/docs/guides/merchant/discount/obter-detalhes-do-desconto.md#resposta) atualizado.

```json 200 OK theme={null}
{
  "id": "4572126a-6161-4b68-af04-3cb2fb4fa7a5",
  "createdAt": "2024-08-01T19:43:15-03:00",
  "startsAt": "2024-04-28T17:18:00-03:00",
  "type": "SMART",
  "name": "Desconto 10%",
  "status": "ACTIVE",
  "rules": {
    "valueType": "PERCENTAGE",
    "value": 15.0,
    "minimumOrderValue": 32.0,
    "usageLimit": 0,
    "usagePerCustomer": "MANY",
    "discountType": "SUBTOTAL"
  },
  "options": ["NON_PROMOTION_PRODUCTS"]
}
```

> [!NOTE]
>
> A atualização não mexe nos canais de venda. Se o desconto também estava ligado a outros canais pelo painel, como um marketplace, eles continuam ligados.

## Erros

| Status | Quando |
| - | - |
| `403 Forbidden` | A loja não contratou o módulo de descontos. |
| `404 Not Found` | O `merchantId` não autorizou o seu app, ou o desconto não existe ou foi removido. |
| `422 Unprocessable Content` | O resultado da alteração é inválido, pelas mesmas regras do [cadastro](/docs/guides/merchant/discount/adicionar-um-desconto.md#erros). O `title` traz os campos com problema. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.