This document describes how to delete a delivery vehicle. It assumes you
have set up Fleet Engine. See [Set up Fleet Engine](https://developers.google.com/maps/documentation/mobility/fleet-engine/essentials/set-up-fleet.md.txt).

## Delivery vehicle deletion basics

Your system may use Fleet Engine to delete a delivery vehicle in the following situations:

- To perform cleanup operations while testing Fleet Engine APIs.
- To immediately delete a Delivery Vehicle that is no longer required.

To delete a delivery vehicle, send a request using either gRPC or REST.

- `DeleteDeliveryVehicle()` method: [gRPC](https://developers.google.com/maps/documentation/mobility/fleet-engine/reference/tasks/rpc/maps.fleetengine.delivery.v1.md.txt#maps.fleetengine.delivery.v1.DeliveryService) or [REST](https://developers.google.com/maps/documentation/mobility/fleet-engine/reference/tasks/rest/v1/providers.deliveryVehicles/delete.md.txt)
- `DeleteDeliveryVehicleRequest` message: [gRPC](https://developers.google.com/maps/documentation/mobility/fleet-engine/reference/tasks/rpc/maps.fleetengine.delivery.v1.md.txt#deletedeliveryvehiclerequest) only

Use the appropriate credentials for the service account of your project as
described in [Fleet Engine: Service account roles](https://developers.google.com/maps/documentation/mobility/fleet-engine/essentials/set-up-fleet/service-accounts.md.txt).

> [!NOTE]
> **Note:** Fleet Engine automatically deletes a delivery vehicle after it has been inactive for a period of time. See [Vehicle re-use](https://developers.google.com/maps/documentation/mobility/fleet-engine/essentials/vehicles.md.txt#vehicle_re-use).

## Example: delete delivery vehicle

### Java


The following example shows how to use the [Java gRPC library](https://developers.google.com/maps/documentation/mobility/fleet-engine/essentials/client-libraries-tasks.md.txt#java) to delete a
delivery vehicle. For a complete list of supported languages, see
[Client libraries for scheduled task services](https://developers.google.com/maps/documentation/mobility/fleet-engine/essentials/client-libraries-tasks.md.txt).

```java
  static final String PROJECT_ID = "my-rideshare-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  String deliveryVehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;

  DeliveryServiceBlockingStub deliveryService = DeliveryServiceGrpc.newBlockingStub(channel);

  // Delete Vehicle request
  DeleteDeliveryVehicleRequest deleteDeliveryVehicleRequest =
      DeleteDeliveryVehicleRequest.newBuilder().setName(deliveryVehicleName).build();

  try {
    deliveryService.deleteDeliveryVehicle(deleteDeliveryVehicleRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:            // The delivery vehicle doesn't exist.
         break;
       case FAILED_PRECONDITION:  // There are tasks(s) that reference delivery vehicle.
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }
```

### REST


The following example shows how to delete a delivery vehicle from Fleet Engine using REST by
making a call to `DeleteDeliveryVehicle`.

```bash
  # DELETE https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<vehicleId>
  # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
  curl -X DELETE -H "Authorization: Bearer ${JWT}" \
    "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryvehicles/${VEHICLE_ID}"
```

If the delete operation is successful, the API returns an empty response.

## Handle errors

When deleting a delivery vehicle, you might encounter a `FAILED_PRECONDITION`
error, in which case there are task(s) that reference the delivery vehicle.
To proceed with the deletion:

1. Call `ListTasks` to find task(s) that reference the Delivery Vehicle.
2. Call `DeleteTask` to delete each of the found task.

> [!WARNING]
> **Warning:** Ensure that the found task(s) are no longer required. Once deleted, task(s) cannot be recovered.

## What's next

- [Create a scheduled journey](https://developers.google.com/maps/documentation/mobility/fleet-engine/journeys/tasks.md.txt)