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

# Obter access token

> Emite um access token com `grant_type=client_credentials`. As credenciais podem ser enviadas no corpo (`client_id`/`client_secret`) ou via HTTP Basic. Quando o `client_secret` é a credencial de uma loja específica (aplicativos com a extensão OpenDelivery), o token fica vinculado apenas àquela loja; nesse caso, a loja precisa ter o aplicativo instalado. Tokens expiram em 24 horas e não têm `refresh_token`. Envie `Content-Type: application/x-www-form-urlencoded`.



## OpenAPI

````yaml https://app.deliveryvip.com.br/swaggers/opendelivery.yaml post /oauth/token
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:
  /oauth/token:
    post:
      tags:
        - OAuth
      summary: Obter access token
      description: >-
        Emite um access token com `grant_type=client_credentials`. As
        credenciais podem ser enviadas no corpo (`client_id`/`client_secret`) ou
        via HTTP Basic. Quando o `client_secret` é a credencial de uma loja
        específica (aplicativos com a extensão OpenDelivery), o token fica
        vinculado apenas àquela loja; nesse caso, a loja precisa ter o
        aplicativo instalado. Tokens expiram em 24 horas e não têm
        `refresh_token`. Envie `Content-Type:
        application/x-www-form-urlencoded`.
      operationId: createToken
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
                - grant_type
              properties:
                grant_type:
                  type: string
                  enum:
                    - client_credentials
                  description: Tipo de concessão OAuth.
                client_id:
                  type: string
                  description: Identificador do aplicativo.
                  example: seu-client-id
                client_secret:
                  type: string
                  description: Segredo do aplicativo ou credencial da loja.
                  example: seu-client-secret
                scope:
                  type: string
                  description: Escopos separados por espaço. Padrão `od.all`.
                  example: od.all
      responses:
        '200':
          description: Token emitido.
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                    description: Access token opaco.
                    example: 2YotnFZFEjr1zCsicMWpAA
                  token_type:
                    type: string
                    description: Tipo do token, sempre `Bearer`.
                    example: Bearer
                  expires_in:
                    type: integer
                    description: Tempo restante de validade, em segundos.
                    example: 86400
                  scope:
                    type: string
                    description: Escopos concedidos.
                    example: od.all
                  created_at:
                    type: integer
                    description: Momento de emissão (Unix timestamp, em segundos).
                    example: 1639571898
        '400':
          description: >-
            Requisição inválida (parâmetro ausente, `grant_type` ou escopo não
            suportado).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthError'
        '401':
          description: >-
            Credenciais inválidas ou loja sem o aplicativo instalado
            (`invalid_client`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauthError'
      security:
        - basicAuth: []
        - {}
components:
  schemas:
    oauthError:
      type: object
      description: Erro no formato OAuth 2.0 (RFC 6749, seção 5.2).
      properties:
        error:
          type: string
          example: invalid_client
        error_description:
          type: string
  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`.
    basicAuth:
      type: http
      scheme: basic
      description: '`client_id` como usuário e `client_secret` como senha.'

````

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