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

# Listar places

> Busque as mesas com QR Code e tablet da loja e veja quais estão livres, ocupadas ou fechadas.

Retorna todos os places da loja: primeiro as mesas com QR Code, depois os tablets, cada grupo em ordem alfabética de nome. Use para montar o mapa de mesas do PDV ou conferir quais estão ocupadas.

| Resposta | Quando |
| - | - |
| `200 OK` | A loja tem places. O corpo é um array. |
| `204 No Content` | A loja não tem places. A resposta vem sem corpo. |

> [!NOTE]
>
> A lista não é paginada: todos os places vêm numa única resposta.

## Requisição

**merchantId** `uuid` *required*

A loja.

```bash cURL theme={null}
curl 'https://api.deliveryvip.com.br/merchant/v3/{merchantId}/places' \
  --header 'Authorization: Bearer {token}'
```

```js Node.js theme={null}
const response = await fetch(`https://api.deliveryvip.com.br/merchant/v3/${merchantId}/places`, {
  headers: { Authorization: `Bearer ${token}` },
})
const places = response.status === 204 ? [] : await response.json()
```

```python Python theme={null}
response = requests.get(
    f"https://api.deliveryvip.com.br/merchant/v3/{merchant_id}/places",
    headers={"Authorization": f"Bearer {token}"},
)
places = [] if response.status_code == 204 else response.json()
```

## Resposta

**id** `string`

`indoor_qrcode_{uuid}` ou `indoor_tablet_{uuid}`.

**name** `string`

Nome da mesa.

**status** `string`

`AVAILABLE`, `BUSY` ou `CLOSED`. Veja [o objeto place](/docs/guides/merchant/indoor/places-api.md#o-objeto-place).

```json 200 OK theme={null}
[
  {
    "id": "indoor_qrcode_a7f4a8b1-8e6d-4614-be9a-b81b10a0de99",
    "name": "Mesa 20",
    "status": "BUSY"
  },
  {
    "id": "indoor_qrcode_300b733f-2230-4128-8c0e-8b2690c170c6",
    "name": "Mesa 30",
    "status": "AVAILABLE"
  },
  {
    "id": "indoor_tablet_b63d1110-bf0f-4d0e-82d9-e91609829655",
    "name": "Mesa 10",
    "status": "CLOSED"
  }
]
```

## Erros

| Status | Quando |
| - | - |
| `401 Unauthorized` | Token ausente, expirado ou inválido. |
| `404 Not Found` | O `merchantId` não autorizou o seu app. |


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