---
title: "Update an upcoming preventive maintenance instance"
method: PATCH
path: "/maintenance/preventive/upcoming"
tags: ["Preventive Maintenance"]
---

# Update an upcoming preventive maintenance instance

`PATCH /maintenance/preventive/upcoming`

## Request

- Base URL: `https://api.samsara.com`
- URL: `https://api.samsara.com/maintenance/preventive/upcoming`
- Auth: HTTP bearer

Patches the due-target and last-resolved values on the open preventive maintenance instance for a schedule and asset. Only fields provided in the request are updated.

 <b>Rate limit:</b> 5 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

To use this endpoint, select **Write Upcoming Preventive Maintenance** under the Preventive Maintenance category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
 

 **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

## Query parameters

- `assetId` string
- `scheduleId` string

## Request body

- EntityUpcomingPreventativeMaintenancesServiceUpdateUpcomingPreventiveMaintenanceRequestBody: Request body for updating a UpcomingPreventativeMaintenance
  - `lastResolvedAt` string: Date and time when the prior instance was resolved.
  - `lastResolvedAtEngineHours` integer: Engine hours at the time the prior instance was resolved.
  - `lastResolvedAtOdometer` integer: Odometer reading at the time the prior instance was resolved. Measured in meters.
  - `nextEngineHours` integer: The next engine hour value that the vehicle is scheduled to be serviced.
  - `nextOdometer` integer: The next odometer value that the vehicle is scheduled to be serviced. Measured in meters.
  - `nextTime` string: The next time that the vehicle is scheduled to be serviced for a date based PM.

## Response `200`

OK response.

- EntityUpcomingPreventativeMaintenancesServiceUpdateUpcomingPreventiveMaintenanceResponseBody
  - `data` EntityUpdateUpcomingPreventiveMaintenanceTypeResponseBody, required: UpcomingPreventativeMaintenance object
    - `asset` EntityUpdateUpcomingPreventiveMaintenanceAssetRefTypeResponseBody: Reference to a Asset
      - `id` string, required: The ID of the referenced Asset.
    - `currentEngineHours` integer: Current engine hours for the asset at the time of query.
    - `currentOdometer` integer: Current odometer reading for the asset at the time of query. Measured in meters.
    - `currentOdometerMiles` integer: Current odometer reading for the asset at the time of query. Measured in miles.
    - `dueInDays` integer: The number of days until the next scheduled service for a date based PM.
    - `dueInEngineHours` integer: The number of engine hours until the next scheduled service.
    - `dueInOdometer` integer: The odometer distance until the next scheduled service. Measured in meters.
    - `dueInOdometerMiles` integer: The odometer distance until the next scheduled service. Measured in miles.
    - `lastResolvedAt` string: Date and time when the prior instance was resolved.
    - `lastResolvedAtEngineHours` integer: Engine hours at the time the prior instance was resolved.
    - `lastResolvedAtOdometer` integer: Odometer reading at the time the prior instance was resolved. Measured in meters.
    - `nextEngineHours` integer: The next engine hour value that the vehicle is scheduled to be serviced.
    - `nextOdometer` integer: The next odometer value that the vehicle is scheduled to be serviced. Measured in meters.
    - `nextOdometerMiles` integer: The next odometer value that the vehicle is scheduled to be serviced. Measured in miles.
    - `nextTime` string: The next time that the vehicle is scheduled to be serviced for a date based PM.
    - `priority` integer: Estimated number of days until the next scheduled service, calculated by converting mileage and engine hour schedules to approximate daily rates. We take the minimum value for schedules with multiple interval types.
    - `schedule` EntityUpdateUpcomingPreventiveMaintenancePreventativeMaintenanceScheduleRefTypeResponseBody: Reference to a PreventativeMaintenanceSchedule
      - `id` string, required: The ID of the referenced PreventativeMaintenanceSchedule.
    - `status` 'unknown' | 'overdue' | 'upcoming': Status of the preventive maintenance schedule. Valid values: `unknown`, `overdue`, `upcoming`
    - `workOrder` EntityUpdateUpcomingPreventiveMaintenanceWorkOrderRefTypeResponseBody: Reference to a WorkOrder
      - `id` string, required: The ID of the referenced WorkOrder.

## Other responses

- `401`: Unauthorized response.
- `404`: Not Found response.
- `405`: Method Not Allowed response.
- `413`: Content Too Large response.
- `429`: Too Many Requests response.
- `500`: Internal Server Error response.
- `501`: Not Implemented response.
- `502`: Bad Gateway response.
- `503`: Service Unavailable response.
- `504`: Gateway Timeout response.
- `default`: Bad Request response.

---

[API](https://skmtc.dev/samsara/apis/samsara-api.md) - [All operations](https://skmtc.dev/samsara/apis/samsara-api/llms.txt) - [OpenAPI document](https://skmtc.dev/samsara/apis/samsara-api/revisions/a9e35d4999be?raw)
