> ## 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.

# Cadastrar uma revenda

> Crie uma revenda abaixo do seu parceiro, com teste de 10 dias e loja de demonstração.

`POST /partner/v2/{partnerId}/resales` cria a revenda com assinatura em `TRIAL` por 10 dias. Junto com ela são criados:

* os preços da revenda, copiados da tabela que o parceiro definiu para revendas;
* uma **loja de demonstração** com assinatura `DEMO`, usando os dados da própria revenda.

> [!NOTE]
>
> O `partnerId` precisa ser o ID de um **parceiro**. Revendas não criam outras revendas: com o ID de uma revenda (ou com token de revenda) a resposta é `403`.

## Corpo

**name** `string` *required*

Nome fantasia.

**corporateName** `string` *required*

Razão social.

**identifier** `string` *required*

CNPJ ou CPF, com ou sem formatação. Precisa ser válido e único entre as revendas do parceiro.

**email** `string` *required*

E-mail da revenda.

**phone.number** `string` *required*

Telefone da revenda.

**personResponsible** `object` *required*

Responsável pela revenda.

**propriedades**

**name** `string` *required*

Nome.

**email** `string` *required*

E-mail.

**phone.number** `string` *required*

Telefone.

**document** `string`

CPF do responsável. Atenção: aqui o campo é `document`, não `identifier` como nas lojas.

**address** `object` *required*

Endereço. Todos os campos são obrigatórios: `postalCode`, `street`, `number`, `district`, `city` e `state`.

## Requisição

```bash cURL theme={null}
curl --request POST 'https://api.deliveryvip.com.br/partner/v2/{partnerId}/resales' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Revenda Sul",
    "corporateName": "Revenda Sul LTDA",
    "identifier": "11222333000144",
    "email": "contato@revendasul.com.br",
    "phone": { "number": "51999998888" },
    "personResponsible": {
      "name": "Carlos Lima",
      "email": "carlos@revendasul.com.br",
      "phone": { "number": "51988887777" },
      "document": "12345678909"
    },
    "address": {
      "postalCode": "90020-000",
      "street": "Rua dos Andradas",
      "number": "100",
      "district": "Centro Histórico",
      "city": "Porto Alegre",
      "state": "RS"
    }
  }'
```

```js Node.js theme={null}
const response = await fetch(`https://api.deliveryvip.com.br/partner/v2/${partnerId}/resales`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'Revenda Sul',
    corporateName: 'Revenda Sul LTDA',
    identifier: '11222333000144',
    email: 'contato@revendasul.com.br',
    phone: { number: '51999998888' },
    personResponsible: {
      name: 'Carlos Lima',
      email: 'carlos@revendasul.com.br',
      phone: { number: '51988887777' },
    },
    address: {
      postalCode: '90020-000',
      street: 'Rua dos Andradas',
      number: '100',
      district: 'Centro Histórico',
      city: 'Porto Alegre',
      state: 'RS',
    },
  }),
})
const resale = await response.json()
```

```python Python theme={null}
response = requests.post(
    f"https://api.deliveryvip.com.br/partner/v2/{partner_id}/resales",
    headers={"Authorization": f"Bearer {token}"},
    json={
        "name": "Revenda Sul",
        "corporateName": "Revenda Sul LTDA",
        "identifier": "11222333000144",
        "email": "contato@revendasul.com.br",
        "phone": {"number": "51999998888"},
        "personResponsible": {
            "name": "Carlos Lima",
            "email": "carlos@revendasul.com.br",
            "phone": {"number": "51988887777"},
        },
        "address": {
            "postalCode": "90020-000",
            "street": "Rua dos Andradas",
            "number": "100",
            "district": "Centro Histórico",
            "city": "Porto Alegre",
            "state": "RS",
        },
    },
)
resale = response.json()
```

## Respostas

| Status | Quando |
| - | - |
| `201 Created` | Revenda criada, no formato de [Obter detalhes](/docs/guides/partner/resale/utilizando-a-api/obter-detalhes-da-resale.md), com `subscription.status: TRIAL`. |
| `403 Forbidden` | `partnerId` é de uma revenda ou está fora do alcance do token. |
| `422 Unprocessable Content` | Dados inválidos. O `title` traz os erros por campo, com nomes internos em snake\_case. |


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