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

# Enviar rastreamento da entrega

> Atualiza o rastreamento da entrega do pedido: um evento de entrega (`event`) ou uma ocorrência (`problem`), com dados opcionais de entregador, veículo, previsões e localização.



## OpenAPI

````yaml https://app.deliveryvip.com.br/swaggers/opendelivery.yaml post /v1/orders/{orderId}/tracking
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}/tracking:
    post:
      tags:
        - Orders
      summary: Enviar rastreamento da entrega
      description: >-
        Atualiza o rastreamento da entrega do pedido: um evento de entrega
        (`event`) ou uma ocorrência (`problem`), com dados opcionais de
        entregador, veículo, previsões e localização.
      operationId: updateTracking
      parameters:
        - $ref: '#/components/parameters/orderId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/deliveryTrackingInfo'
      responses:
        '202':
          $ref: '#/components/responses/Action'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
components:
  parameters:
    orderId:
      in: path
      name: orderId
      description: Identificador (UUID) do pedido.
      required: true
      schema:
        type: string
        format: uuid
  schemas:
    deliveryTrackingInfo:
      description: >-
        Envie `event` (andamento da entrega) ou `problem` (ocorrência),
        opcionalmente com `vehicle`, `eta`, `deliveryPerson`, `geoLocalization`
        e `externalTrackingURL`. Campos fora desta lista são rejeitados.
      oneOf:
        - title: Evento de entrega
          allOf:
            - type: object
              required:
                - event
              properties:
                event:
                  type: object
                  required:
                    - type
                    - datetime
                  properties:
                    type:
                      type: string
                      enum:
                        - PICKUP_ONGOING
                        - ARRIVED_AT_MERCHANT
                        - ORDER_PICKED
                        - DELIVERY_ONGOING
                        - ARRIVED_AT_CUSTOMER
                        - ORDER_DELIVERED
                        - CANCELLED
                    message:
                      type: string
                      description: Mensagem livre.
                    datetime:
                      type: string
                      format: date-time
                      description: Momento do evento.
            - $ref: '#/components/schemas/trackingDetails'
        - title: Ocorrência
          allOf:
            - type: object
              required:
                - problem
              properties:
                problem:
                  type: object
                  required:
                    - reason
                    - datetime
                  properties:
                    reason:
                      type: string
                      enum:
                        - DELIVERYPERSON_OCCURRENCE
                        - PAYMENT_PROBLEMS
                        - WRONG_PRODUCT_OR_ITEM
                        - ORDER_DELAYED
                        - ORDER_DAMAGED_OR_VIOLATED
                        - CUSTOMER_DID_NOT_PLACE_ORDER
                        - CUSTOMER_ADDRESS_UNKNOWN
                        - ORDER_MISSING_ITEMS
                        - NOBODY_TO_RECEIVE
                        - DELIVERYPERSON_WAITING_PAYMENT_FOR_ALREADY_PAID_ORDER
                        - ORDER_DELIVERED_WITHOUT_PAYMENT
                        - FRAUD_OR_THEFT
                    message:
                      type: string
                      description: Mensagem livre.
                    datetime:
                      type: string
                      format: date-time
                      description: Momento da ocorrência.
            - $ref: '#/components/schemas/trackingDetails'
    trackingDetails:
      type: object
      properties:
        vehicle:
          type: object
          description: Veículo do entregador.
          required:
            - type
          properties:
            type:
              type: string
              enum:
                - MOTORBIKE_BAG
                - MOTORBIKE_BOX
                - CAR
                - BICYCLE
                - SCOOTER
                - VUC
            licencePlate:
              type: string
              description: Placa do veículo.
        eta:
          type: object
          description: Previsões de coleta e entrega.
          properties:
            pickupEtaInMinutes:
              type: integer
              description: Minutos previstos até a coleta.
            pickupEtaDatetime:
              type: string
              format: date-time
              description: Momento previsto da coleta.
            deliveryEtaInMinutes:
              type: integer
              description: Minutos previstos até a entrega.
            deliveryEtaDatetime:
              type: string
              format: date-time
              description: Momento previsto da entrega.
            maxDeliveryTime:
              type: string
              format: date-time
              description: Prazo máximo de entrega.
        deliveryPerson:
          type: object
          description: Entregador.
          properties:
            id:
              type: string
            name:
              type: string
            pictureURL:
              type: string
              format: uri
        geoLocalization:
          type: object
          description: Localização atual do entregador.
          properties:
            latitude:
              type: number
            longitude:
              type: number
            lastAddress:
              type: object
              required:
                - distanceToPickup
                - distanceToDelivery
                - timestamp
              properties:
                country:
                  type: string
                state:
                  type: string
                city:
                  type: string
                district:
                  type: string
                street:
                  type: string
                postalCode:
                  type: string
                distanceToPickup:
                  type: string
                distanceToDelivery:
                  type: string
                timestamp:
                  type: string
                  format: date-time
        externalTrackingURL:
          type: string
          format: uri
          description: URL pública de rastreamento.
    actionResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Identificador do pedido.
    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:
    Action:
      description: Ação aceita.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/actionResponse'
    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'
    UnprocessableEntity:
      description: >-
        A transição não é permitida no estado atual do pedido ou os dados são
        inválidos.
      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.