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

# Places

> Liste as mesas com QR Code e tablet da loja e controle quais aceitam consumo.

Um place é um ponto fixo de atendimento: uma mesa com **QR Code** ou com **tablet**. Os places são cadastrados pela loja no painel. Pela API você lista os places com a situação de cada um e abre ou fecha cada mesa para consumo.

## O objeto place

**id** `string`

Identificador do place, com o tipo no prefixo: `indoor_qrcode_{uuid}` para mesas com QR Code e `indoor_tablet_{uuid}` para tablets. Use o valor inteiro nas rotas e para relacionar o `placeId` dos [eventos](/docs/guides/merchant/indoor/fluxo-de-integracao/eventos-de-indoor.md).

**name** `string`

Nome da mesa, como `Mesa 20`.

**status** `string`

Situação atual da mesa. Veja a tabela abaixo.

| `status` | Significado |
| - | - |
| `AVAILABLE` | Aberta para consumo e sem pedidos em andamento. |
| `BUSY` | Aberta para consumo e com pedidos em andamento. |
| `CLOSED` | Fechada para consumo: o cliente vê o aviso de mesa fechada e não consegue finalizar pedidos. |

`BUSY` é calculado a partir dos pedidos da mesa e não pode ser definido pela API. O que você controla é se a mesa está aberta ou fechada.

![AVAILABLE e BUSY alternam conforme os pedidos; POST closed leva a CLOSED e POST opened volta para AVAILABLE](https://mintcdn.com/deliveryvip-a4256422/ELxpcniK2_BP8zxT/images/place-status.png?fit=max\&auto=format\&n=ELxpcniK2_BP8zxT\&q=85\&s=bedd00d240d3df0231e2019abac0e484)

Status de uma mesa (place)

## Endpoints

| Ação | Endpoint | Sucesso |
| - | - | - |
| [Listar places](/docs/guides/merchant/indoor/places-api/listar-places.md) | `GET /merchant/v3/{merchantId}/places` | `200` ou `204` |
| [Abrir para consumo](/docs/guides/merchant/indoor/places-api/acoes-de-places/abrir-para-consumo-um-place.md) | `POST /merchant/v3/{merchantId}/places/{placeId}/opened` | `202` |
| [Fechar para consumo](/docs/guides/merchant/indoor/places-api/acoes-de-places/fechar-para-consumo-um-place.md) | `POST /merchant/v3/{merchantId}/places/{placeId}/closed` | `202` |

> [!NOTE]
>
> Não há rotas para cadastrar, editar ou remover places. Isso é feito pela loja no painel.


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