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

# Consultar pedido

> Retorna os detalhes de um pedido de uma loja vinculada ao token. Pedidos aguardando pagamento ou não pagos não são retornados.



## OpenAPI

````yaml https://app.deliveryvip.com.br/swaggers/opendelivery.yaml get /v1/orders/{orderId}
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/orders/{orderId}:
    get:
      tags:
        - Orders
      summary: Consultar pedido
      description: >-
        Retorna os detalhes de um pedido de uma loja vinculada ao token. Pedidos
        aguardando pagamento ou não pagos não são retornados.
      operationId: getOrder
      parameters:
        - $ref: '#/components/parameters/orderId'
        - in: query
          name: views
          description: >-
            Formato dos complementos dos itens. Sem o parâmetro, cada item traz
            `options` (lista plana). `optionGroups` retorna
            `items[].optionGroups` e `groupOptions` retorna
            `items[].optionsGroup`, ambos agrupados por grupo de complemento.
          required: false
          schema:
            type: string
            enum:
              - optionGroups
              - groupOptions
      responses:
        '200':
          description: Detalhes do pedido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    orderId:
      in: path
      name: orderId
      description: Identificador (UUID) do pedido.
      required: true
      schema:
        type: string
        format: uuid
  schemas:
    order:
      type: object
      description: Pedido no formato Open Delivery. Datas em UTC (ISO 8601).
      properties:
        id:
          type: string
          format: uuid
          description: Id do pedido.
        type:
          type: string
          description: >-
            Tipo do pedido. Pedidos de consumo no local são retornados como
            `INDOOR`.
          enum:
            - DELIVERY
            - TAKEOUT
            - INDOOR
        displayId:
          type: string
          description: Código curto do pedido, exibido para a loja e o cliente.
        salesChannel:
          type: string
          description: Canal de venda do pedido.
          enum:
            - STORE
            - MARKETPLACE
            - TABLET
            - QRCODE
            - TAB
        createdAt:
          type: string
          format: date-time
          description: Data e hora de criação do pedido.
        orderTiming:
          type: string
          description: Pedido imediato ou agendado.
          enum:
            - INSTANT
            - SCHEDULED
        preparationStartDateTime:
          type: string
          format: date-time
          description: Início previsto do preparo (atualmente igual a `createdAt`).
        lastEvent:
          type: string
          description: >-
            Último evento do pedido, derivado do seu estado atual. Omitido
            quando o estado não corresponde a nenhum destes valores.
          enum:
            - CREATED
            - CONFIRMED
            - READY_FOR_PICKUP
            - CONCLUDED
            - CANCELLED
        merchant:
          type: object
          properties:
            id:
              type: string
              description: >-
                Id da loja: o id que o aplicativo usa para a loja
                (`orderingAppMerchantId`), quando configurado; caso contrário, o
                UUID da loja na plataforma.
            name:
              type: string
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              index:
                type: integer
                description: Posição do item no pedido.
              name:
                type: string
              externalCode:
                type: string
                description: Código externo do item. Omitido quando vazio.
              unit:
                type: string
                description: Unidade de medida. Sempre `UN`.
                enum:
                  - UN
              ean:
                type: string
                description: Código EAN. Omitido quando vazio.
              quantity:
                type: integer
              specialInstructions:
                type: string
                description: Observação do cliente para o item. Omitida quando vazia.
              unitPrice:
                $ref: '#/components/schemas/money'
              optionsPrice:
                $ref: '#/components/schemas/money'
              totalPrice:
                $ref: '#/components/schemas/money'
              options:
                type: array
                description: >-
                  Complementos escolhidos (formato padrão). Omitido quando o
                  item não tem complementos.
                items:
                  $ref: '#/components/schemas/orderOption'
              optionGroups:
                type: array
                description: Complementos agrupados (view `optionGroups`).
                items:
                  $ref: '#/components/schemas/orderOptionGroup'
              optionsGroup:
                type: array
                deprecated: true
                description: Complementos agrupados (view `groupOptions`, descontinuada).
                items:
                  $ref: '#/components/schemas/orderOptionGroup'
        otherFees:
          type: array
          description: Taxas do pedido. Presente apenas em pedidos de entrega.
          items:
            type: object
            properties:
              name:
                type: string
              type:
                type: string
                enum:
                  - DELIVERY_FEE
                  - SERVICE_FEE
                  - TIP
                  - MIN_ORDER_FEE
              receivedBy:
                type: string
                enum:
                  - MARKETPLACE
                  - MERCHANT
                  - LOGISTIC_SERVICES
              receiverDocument:
                type: string
              price:
                $ref: '#/components/schemas/money'
        discounts:
          type: array
          description: Descontos aplicados. Omitido quando o pedido não tem desconto.
          items:
            type: object
            properties:
              amount:
                $ref: '#/components/schemas/money'
              target:
                type: string
                description: Sobre o que o desconto incide.
                enum:
                  - CART
                  - DELIVERY_FEE
              sponsorshipValues:
                type: array
                description: Quem financia o desconto.
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      enum:
                        - MARKETPLACE
                        - MERCHANT
                    amount:
                      $ref: '#/components/schemas/money'
                    discountCode:
                      type: string
                      description: Código ou título do desconto.
        total:
          type: object
          description: Totais do pedido.
          properties:
            itemsPrice:
              $ref: '#/components/schemas/money'
            otherFees:
              $ref: '#/components/schemas/money'
            discount:
              $ref: '#/components/schemas/money'
            orderAmount:
              $ref: '#/components/schemas/money'
        payments:
          type: object
          properties:
            prepaid:
              type: number
              description: Valor já pago online.
            pending:
              type: number
              description: Valor a receber na entrega ou retirada.
            methods:
              type: array
              items:
                type: object
                properties:
                  value:
                    type: number
                  currency:
                    type: string
                    enum:
                      - BRL
                  type:
                    type: string
                    description: Momento do pagamento.
                    enum:
                      - PREPAID
                      - PENDING
                      - ONLINE
                      - OFFLINE
                  method:
                    type: string
                    description: Forma de pagamento.
                    enum:
                      - CREDIT
                      - DEBIT
                      - MEAL_VOUCHER
                      - FOOD_VOUCHER
                      - DIGITAL_WALLET
                      - PIX
                      - CASH
                      - CREDIT_DEBIT
                      - COUPON
                      - REDEEM
                      - PREPAID_REDEEM
                      - OTHER
                  brand:
                    type: string
                    description: Bandeira. Omitida quando não se aplica.
                    example: VISA
                  methodInfo:
                    type: string
                    description: >-
                      Informação adicional da forma de pagamento. Omitida quando
                      vazia.
                  changeFor:
                    type: number
                    description: >-
                      Valor para o qual levar troco. Presente apenas quando há
                      troco.
        loyalty:
          $ref: '#/components/schemas/loyaltyBlock'
        customer:
          type: object
          description: Cliente. Omitido quando o pedido não tem nome de comprador.
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
            documentNumber:
              type: string
              description: CPF/CNPJ do cliente. Omitido quando não informado.
            phone:
              type: object
              properties:
                number:
                  type: string
                  description: Telefone no formato E.164, sem formatação.
                  example: '5511999999999'
            email:
              type: string
              description: E-mail. Omitido para clientes convidados (sem cadastro).
            ordersCountOnMerchant:
              type: integer
              description: Quantidade de pedidos do cliente na loja.
        schedule:
          type: object
          description: Janela do agendamento. Presente apenas em pedidos agendados.
          properties:
            scheduledDateTimeStart:
              type: string
              format: date-time
            scheduledDateTimeEnd:
              type: string
              format: date-time
        delivery:
          type: object
          description: Dados da entrega. Presente apenas em pedidos de entrega.
          properties:
            deliveredBy:
              type: string
              enum:
                - MERCHANT
            estimatedDeliveryDateTime:
              type: string
              format: date-time
            deliveryAddress:
              $ref: '#/components/schemas/address'
        takeout:
          type: object
          description: Dados da retirada. Presente apenas em pedidos para retirada.
          properties:
            mode:
              type: string
              enum:
                - DEFAULT
            takeoutDateTime:
              type: string
              format: date-time
        indoor:
          type: object
          description: Dados do consumo no local. Presente apenas em pedidos `INDOOR`.
          properties:
            mode:
              type: string
              description: >-
                `DEFAULT` para consumo no local sem mesa/comanda, `TAB` para
                pedidos em comanda e `PLACE` para pedidos em mesa.
              enum:
                - DEFAULT
                - PLACE
                - TAB
            indoorDateTime:
              type: string
              format: date-time
            place:
              type: string
            placeName:
              type: string
            placeId:
              type: string
            tab:
              type: string
            tabId:
              type: string
              format: uuid
            tabName:
              type: string
            tabCode:
              type: string
        sendDelivered:
          type: boolean
          description: >-
            A loja é responsável pelo evento DELIVERED (sem operador logístico
            externo).
        sendPreparing:
          type: boolean
          description: A loja deve enviar o evento PREPARING.
        sendPickedUp:
          type: boolean
          description: A loja é responsável pelo evento PICKED_UP (pedidos para retirada).
        sendTracking:
          type: boolean
          description: A loja deve enviar atualizações de rastreamento.
        extraInfo:
          type: string
          description: Observação geral do pedido. Omitida quando vazia.
    money:
      type: object
      description: Valor monetário.
      required:
        - value
        - currency
      properties:
        value:
          type: number
          description: Valor, com até 4 casas decimais.
          example: 39.9
        currency:
          type: string
          description: Moeda (código ISO 4217).
          enum:
            - BRL
    orderOption:
      type: object
      description: Complemento escolhido em um item do pedido.
      properties:
        id:
          type: string
          format: uuid
        index:
          type: integer
          description: Posição do complemento na lista.
        name:
          type: string
        externalCode:
          type: string
          description: Código externo do complemento. Omitido quando vazio.
        unit:
          type: string
          description: Unidade de medida. Sempre `UN`.
          enum:
            - UN
        quantity:
          type: integer
        unitPrice:
          $ref: '#/components/schemas/money'
        totalPrice:
          $ref: '#/components/schemas/money'
    orderOptionGroup:
      type: object
      description: >-
        Grupo de complementos de um item do pedido (views
        `optionGroups`/`groupOptions`).
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        externalCode:
          type: string
          description: Código externo do grupo. Omitido quando vazio.
        totalPrice:
          $ref: '#/components/schemas/money'
        options:
          type: array
          items:
            $ref: '#/components/schemas/orderOption'
    loyaltyBlock:
      type: object
      description: >-
        Presente no pedido apenas para aplicativos cujo programa de fidelidade o
        cliente aderiu. Cada aplicativo recebe somente o bloco do seu próprio
        programa.


        O bloco identifica o cliente no operador e informa o que foi resgatado
        neste pedido. Ele não traz nenhum valor calculado pela plataforma: as
        regras de acúmulo pertencem ao operador, que escolhe sua própria base a
        partir do `total` do pedido (por exemplo, `itemsPrice` menos `discount`,
        se frete e taxas não devem acumular).


        O bloco descreve o pedido como ele está no momento da leitura, não um
        instante do seu histórico. Um aplicativo que recebe um evento CONCLUDED
        consulta o pedido e faz o acúmulo; um que recebe um evento CANCELLED
        estorna o acúmulo que havia concedido para aquele pedido.


        Quando um resgate está REVERSED, o saldo voltou para o cliente, que
        portanto pagou esse valor por outros meios — mas os totais do pedido
        continuam mostrando o desconto que ele havia financiado. Some
        `redemption.amount.value` de volta a qualquer base derivada dos totais
        do pedido. Um pedido que nunca teve resgate não traz a chave
        `redemption`.
      required:
        - accountId
        - programId
      properties:
        accountId:
          type: string
          description: Identificador da conta do cliente no operador.
        programId:
          type: string
          description: Identificador do programa no operador.
        redemption:
          type: object
          description: >-
            O resgate debitado neste pedido, presente somente na entrega para o
            aplicativo que foi debitado. CONFIRMED significa que o resgate vale:
            o desconto que ele financia está dentro de `total.discount` do
            pedido. REVERSED significa que o saldo foi devolvido ao cliente.
          required:
            - externalId
            - status
            - amount
          properties:
            externalId:
              type: string
              description: >-
                Identificador do resgate gerado pelo operador quando o débito
                foi criado.
            status:
              type: string
              enum:
                - CONFIRMED
                - REVERSED
            amount:
              $ref: '#/components/schemas/money'
    address:
      type: object
      description: Endereço.
      properties:
        country:
          type: string
          description: Sigla do país.
          example: BR
        state:
          type: string
          description: Sigla do estado.
          example: SP
        city:
          type: string
          example: São Paulo
        district:
          type: string
          description: Bairro.
          example: Moema
        street:
          type: string
          description: Logradouro.
          example: Avenida Ibirapuera
        number:
          type: string
          example: '100'
        complement:
          type: string
          description: Complemento. Omitido quando vazio.
          example: Bloco 2, apto 31
        reference:
          type: string
          description: Ponto de referência. Omitido quando vazio.
          example: Casa amarela
        postalCode:
          type: string
          description: CEP.
          example: 04029-000
        formattedAddress:
          type: string
          description: Endereço completo formatado.
        coordinates:
          type: object
          properties:
            latitude:
              type: number
              example: -23.54809
            longitude:
              type: number
              example: -46.63638
    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
    NotFound:
      description: Recurso não encontrado.
      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.