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

# Adicionar uma comanda

> Cadastre uma nova comanda com nome e código, pronta para uso.

Cadastra uma comanda na loja. Ela nasce `AVAILABLE` e `OPENED`, ou seja, já aceita pedidos. Use o `qrcode` da resposta para imprimir o QR Code da comanda.

## Requisição

**merchantId** `uuid` *required*

A loja.

**name** `string` *required*

Identificação que a equipe vê, como `0013` ou `Comanda 13`.

**code** `string` *required*

Código da comanda. Precisa ser único entre as comandas da loja, sem diferenciar maiúsculas de minúsculas.

> [!NOTE]
>
> `status` e `situation` não são aceitos no cadastro e são ignorados se enviados. Para fechar a comanda, use a ação [fechar para consumo](/docs/guides/merchant/indoor/comanda-api/acoes-das-comandas/fechar-para-consumo-uma-comanda.md).

```bash cURL theme={null}
curl --request POST 'https://api.deliveryvip.com.br/merchant/v3/{merchantId}/tabs' \
  --header 'Authorization: Bearer {token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "0013",
    "code": "0013"
  }'
```

```js Node.js theme={null}
const response = await fetch(`https://api.deliveryvip.com.br/merchant/v3/${merchantId}/tabs`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: '0013', code: '0013' }),
})
const tab = await response.json()
```

```python Python theme={null}
response = requests.post(
    f"https://api.deliveryvip.com.br/merchant/v3/{merchant_id}/tabs",
    headers={"Authorization": f"Bearer {token}"},
    json={"name": "0013", "code": "0013"},
)
tab = response.json()
```

## Resposta

Retorna `201 Created` com o [objeto comanda](/docs/guides/merchant/indoor/comanda-api.md#o-objeto-comanda).

```json 201 Created theme={null}
{
  "id": "7ddccf97-1079-4a61-9b21-2e931c9560bd",
  "createdAt": "2023-02-09T17:56:43-03:00",
  "name": "0013",
  "code": "0013",
  "qrcode": "https://qrcode.dvstore.com/qrcode/indoor_tab_7ddccf97-1079-4a61-9b21-2e931c9560bd",
  "status": "AVAILABLE",
  "situation": "OPENED"
}
```

## Erros

Em `422`, o `title` traz os campos com problema e as mensagens de validação.

```json 422 Unprocessable Content theme={null}
{
  "status": "422",
  "title": { "code": ["has already been taken"] }
}
```

| Status | Quando |
| - | - |
| `404 Not Found` | O `merchantId` não autorizou o seu app. |
| `422 Unprocessable Content` | `name` ou `code` ausente, ou `code` já usado por outra comanda da loja. |


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