> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onbeef.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Atualize o rastreamento

> Envie o estado de uma entrega.

Envie atualizações depois que o pedido for despachado. O payload pode incluir evento, entregador, previsão, localização e veículo.

## Parâmetros de rota

<ParamField path="orderId" type="string (uuid)" required>
  Identificador único do pedido para o qual você está enviando atualizações. Gerado pela Onbeef e retornado no evento do pedido.
</ParamField>

## Corpo da requisição

<ParamField body="deliveryTrackingInfo" type="object" required>
  Objeto com todos os detalhes de rastreamento desta atualização.

  <Expandable title="Campos de deliveryTrackingInfo">
    <ParamField body="deliveryTrackingInfo.event" type="object">
      Evento atual da entrega.

      <Expandable title="Campos de event">
        <ParamField body="deliveryTrackingInfo.event.type" type="string">
          Tipo do evento. Exemplos: `PICKUP_ONGOING`, `PICKUP_ARRIVED`, `DELIVERY_ONGOING`, `DELIVERY_ARRIVED`.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.event.message" type="string">
          Descrição legível do evento atual.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.event.datetime" type="string (date-time)">
          Timestamp ISO 8601 de quando o evento ocorreu.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="deliveryTrackingInfo.problem" type="object">
      Detalhes de eventuais problemas encontrados na entrega, se aplicável.

      <Expandable title="Campos de problem">
        <ParamField body="deliveryTrackingInfo.problem.reason" type="string">
          Motivo do problema, por exemplo `DELIVERYPERSON_OCCURRENCE`.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.problem.message" type="string">
          Descrição do problema.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.problem.datetime" type="string (date-time)">
          Timestamp ISO 8601 de quando o problema foi reportado.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="deliveryTrackingInfo.vehicle" type="object">
      Informações sobre o veículo de entrega.

      <Expandable title="Campos de vehicle">
        <ParamField body="deliveryTrackingInfo.vehicle.type" type="array of strings">
          Tipo(s) do veículo utilizado. Exemplo: `["MOTORBIKE_BAG"]`.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.vehicle.licencePlate" type="string">
          Placa do veículo.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="deliveryTrackingInfo.eta" type="object">
      Detalhes do tempo estimado de chegada.

      <Expandable title="Campos de eta">
        <ParamField body="deliveryTrackingInfo.eta.pickupEtaInMinutes" type="integer">
          Minutos estimados até o entregador chegar à loja para retirada.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.eta.pickupEtaDatetime" type="string (date-time)">
          Data/hora estimada da retirada.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.eta.deliveryEtaInMinutes" type="integer">
          Minutos estimados até a entrega ao cliente.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.eta.deliveryEtaDatetime" type="string (date-time)">
          Data/hora estimada da entrega ao cliente.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.eta.maxDeliveryTime" type="string (date-time)">
          Prazo máximo aceitável para a entrega.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="deliveryTrackingInfo.deliveryPerson" type="object">
      Informações do entregador.

      <Expandable title="Campos de deliveryPerson">
        <ParamField body="deliveryTrackingInfo.deliveryPerson.id" type="string">
          Identificador único do entregador.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.deliveryPerson.name" type="string">
          Nome completo do entregador.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.deliveryPerson.pictureURL" type="string (url)">
          URL da foto de perfil do entregador.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="deliveryTrackingInfo.geoLocalization" type="object">
      Localização GPS atual do entregador.

      <Expandable title="Campos de geoLocalization">
        <ParamField body="deliveryTrackingInfo.geoLocalization.latitude" type="number">
          Latitude atual do entregador.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.geoLocalization.longitude" type="number">
          Longitude atual do entregador.
        </ParamField>

        <ParamField body="deliveryTrackingInfo.geoLocalization.lastAddress" type="object">
          Detalhes do último endereço conhecido do entregador, incluindo `country`, `state`, `city`, `district`, `street`, `postalCode`, `distanceToPickup`, `distanceToDelivery` e `timestamp`.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

## Resposta

### 202: Aceito

A atualização foi aceita para processamento e será refletida no rastreamento exibido ao cliente.

### 401: Não autorizado

Retornado quando a requisição não inclui credenciais de autenticação válidas.

### 404: Não encontrado

Nenhum pedido foi encontrado com o `orderId` informado.

## Exemplo de requisição

<CodeGroup>
  ```bash Sandbox theme={null}
  curl --request POST \
    --url "https://api.dev.connect.onbeefapp.com.br/v1/orders/f47ac10b-58cc-4372-a567-0e02b2c3d479/tracking" \
    --header "Authorization: Bearer <token>" \
    --header "Content-Type: application/json" \
    --data '{
      "deliveryTrackingInfo": {
        "event": {
          "type": "PICKUP_ONGOING",
          "message": "Entregador a caminho da loja",
          "datetime": "2019-08-24T14:15:22Z"
        },
        "vehicle": {
          "type": ["MOTORBIKE_BAG"],
          "licencePlate": "ABC-1234"
        },
        "eta": {
          "pickupEtaInMinutes": 5,
          "pickupEtaDatetime": "2019-08-24T14:20:22Z",
          "deliveryEtaInMinutes": 25,
          "deliveryEtaDatetime": "2019-08-24T14:40:22Z"
        },
        "deliveryPerson": {
          "id": "courier-001",
          "name": "Carlos Souza",
          "pictureURL": "https://example.com/courier.jpg"
        },
        "geoLocalization": {
          "latitude": -23.5605,
          "longitude": -46.6433
        }
      }
    }'
  ```

  ```bash Produção theme={null}
  curl --request POST \
    --url "https://api.connect.onbeefapp.com.br/v1/orders/f47ac10b-58cc-4372-a567-0e02b2c3d479/tracking" \
    --header "Authorization: Bearer <token>" \
    --header "Content-Type: application/json" \
    --data '{
      "deliveryTrackingInfo": {
        "event": {
          "type": "PICKUP_ONGOING",
          "message": "Entregador a caminho da loja",
          "datetime": "2019-08-24T14:15:22Z"
        },
        "vehicle": {
          "type": ["MOTORBIKE_BAG"],
          "licencePlate": "ABC-1234"
        },
        "eta": {
          "pickupEtaInMinutes": 5,
          "pickupEtaDatetime": "2019-08-24T14:20:22Z",
          "deliveryEtaInMinutes": 25,
          "deliveryEtaDatetime": "2019-08-24T14:40:22Z"
        },
        "deliveryPerson": {
          "id": "courier-001",
          "name": "Carlos Souza",
          "pictureURL": "https://example.com/courier.jpg"
        },
        "geoLocalization": {
          "latitude": -23.5605,
          "longitude": -46.6433
        }
      }
    }'
  ```
</CodeGroup>

<Tip>
  Você pode enviar atualizações a cada 30 segundos quando a localização do entregador está mudando ativamente. No mínimo, envie uma atualização em cada marco importante: entregador saindo da sua loja, aproximando-se do endereço de entrega e qualquer problema encontrado.
</Tip>

<Note>
  Este endpoint só faz sentido depois que um pedido foi [despachado](/api-reference/orders/dispatch). Enviar atualizações antes do despacho não terá efeito visível para o cliente.
</Note>
