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

> Retorna os eventos ainda não confirmados pelo aplicativo, das lojas vinculadas ao token, criados nas últimas 24 horas. Os eventos vêm em ordem cronológica, no máximo 100 por chamada. Cada evento recebido deve ser confirmado em `/v1/events/acknowledgment`; caso contrário, continuará sendo retornado nas próximas consultas.



## OpenAPI

````yaml https://app.deliveryvip.com.br/swaggers/opendelivery.yaml get /v1/events:polling
openapi: 3.0.3
info:
  version: v1
  title: API OpenDelivery DeliveryVip
  description: >-
    API compatível com o padrão Open Delivery (Abrasel), em que a DeliveryVip
    atua como Ordering Application para Software Services (PDVs e sistemas de
    gestão). A autenticação usa OAuth 2.0 `client_credentials` no endpoint
    `/oauth/token` deste mesmo host, com o escopo `od.all` (tokens sem esse
    escopo recebem 403). Os tokens são opacos e enviados no header
    `Authorization: Bearer <token>`. Datas são retornadas em UTC (ISO 8601).
servers:
  - url: https://od.deliveryvip.com.br
    description: Produção
security:
  - bearerAuth: []
tags:
  - name: OAuth
    description: Emissão de access tokens para a API OpenDelivery.
  - name: Versions
    description: Versões da API implementadas. Não exigem autenticação.
  - name: Events
    description: >-
      Mudanças de estado e outras notificações dos pedidos das lojas vinculadas
      ao aplicativo.
  - name: Orders
    description: Detalhes do pedido e ações sobre ele.
  - name: Merchants
    description: Onboarding da loja, abertura/fechamento e atualização de catálogo.
paths:
  /v1/events:polling:
    get:
      tags:
        - Events
      summary: Listar eventos
      description: >-
        Retorna os eventos ainda não confirmados pelo aplicativo, das lojas
        vinculadas ao token, criados nas últimas 24 horas. Os eventos vêm em
        ordem cronológica, no máximo 100 por chamada. Cada evento recebido deve
        ser confirmado em `/v1/events/acknowledgment`; caso contrário,
        continuará sendo retornado nas próximas consultas.
      operationId: pollEvents
      parameters:
        - in: header
          name: x-polling-merchants
          description: >-
            Restringe a consulta a estas lojas. Aceita o `merchantId` informado
            no onboarding ou o identificador interno da loja, separados por
            vírgula. Todas precisam estar vinculadas ao token.
          required: false
          style: simple
          schema:
            type: array
            items:
              type: string
          example:
            - 313AE66A-5AE4-4FD7-A552-A089CD71F063
        - in: query
          name: eventType
          description: >-
            Filtra pelos tipos de evento. Pode ser repetido
            (`eventType=CREATED&eventType=CANCELLED`) ou separado por vírgula.
          required: false
          style: form
          explode: true
          schema:
            type: array
            items:
              $ref: '#/components/schemas/eventType'
        - in: query
          name: orderType
          description: >-
            Filtra pelo tipo do pedido. Pode ser repetido ou separado por
            vírgula.
          required: false
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - DELIVERY
                - TAKEOUT
                - INDOOR
      responses:
        '200':
          description: Eventos pendentes de confirmação.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/event'
        '204':
          description: Nenhum evento disponível.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: >-
            `eventType`, `orderType` ou `x-polling-merchants` inválido, ou loja
            não vinculada ao token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: '403'
                title: Invalid eventType
        '406':
          $ref: '#/components/responses/NotAcceptable'
components:
  schemas:
    eventType:
      type: string
      enum:
        - CREATED
        - CONFIRMED
        - PREPARING
        - DISPATCHED
        - READY_FOR_PICKUP
        - PICKUP_AREA_ASSIGNED
        - PICKED_UP
        - DELIVERED
        - CONCLUDED
        - CANCELLATION_REQUESTED
        - CANCELLATION_REQUEST_DENIED
        - CANCELLED
        - ORDER_CANCELLATION_REQUEST
        - CALL_WAITER
        - CLOSE_ACCOUNT
    event:
      type: object
      description: >-
        Evento de pedido ou de atendimento em mesa. Eventos de pedido trazem
        `orderId`, `orderURL` e `orderType`; eventos de mesa (`CALL_WAITER`,
        `CLOSE_ACCOUNT`) trazem os campos de local e comanda.
      required:
        - eventId
        - eventType
        - merchantId
        - createdAt
      properties:
        eventId:
          type: string
          format: uuid
          description: Identificador do evento, usado na confirmação.
        eventType:
          $ref: '#/components/schemas/eventType'
        merchantId:
          type: string
          description: >-
            `merchantId` informado no onboarding da loja ou, na ausência dele, o
            identificador interno da loja.
        createdAt:
          type: string
          format: date-time
          description: Momento de criação do evento (UTC).
          example: '2026-10-29T15:04:05Z'
        metadata:
          type: object
          additionalProperties: true
          description: Dados adicionais do evento. Omitido quando vazio.
        orderId:
          type: string
          format: uuid
          description: Identificador do pedido.
        orderURL:
          type: string
          format: uri
          description: URL para consultar o pedido.
          example: >-
            https://od.deliveryvip.com.br/v1/orders/aa67c98c-d81f-5a9c-b0bc-26caa0051aea
        orderType:
          type: string
          description: Tipo do pedido.
          enum:
            - DELIVERY
            - TAKEOUT
            - INDOOR
        placeName:
          type: string
          description: Nome do local (mesa). Apenas em eventos de mesa.
        placeId:
          type: string
          description: Identificador do local (mesa). Apenas em eventos de mesa.
        tab:
          type: string
          description: Comanda. Apenas em eventos de mesa.
        tabId:
          type: string
          description: Identificador da comanda. Apenas em eventos de mesa.
        tabCode:
          type: string
          description: Código da comanda. Apenas em eventos de mesa.
        tabName:
          type: string
          description: Nome da comanda. Apenas em eventos de mesa.
    Error:
      type: object
      required:
        - title
        - status
      properties:
        title:
          type: string
          description: Descrição do problema. Várias mensagens vêm separadas por `|`.
          example: Record not found
        status:
          type: string
          description: Código HTTP da resposta, como texto.
          example: '404'
  responses:
    Unauthorized:
      description: Token ausente, inválido ou expirado.
      content:
        application/json:
          schema:
            type: object
            properties:
              title:
                type: string
                example: Unauthorized
              status:
                type: integer
                example: 401
    NotAcceptable:
      description: Parâmetros em formato inválido.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Access token opaco obtido em `POST /oauth/token` (host
        `od.deliveryvip.com.br`) com `grant_type=client_credentials` e escopo
        `od.all`.

````

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