---
title: "Update an owned open maintenance task"
method: PATCH
path: "/api/v1/operations/maintenance/{eventId}"
tags: ["Maintenance"]
---

# Update an owned open maintenance task

`PATCH /api/v1/operations/maintenance/{eventId}`

## Request

- Base URL: `https://fleetkeep.co.uk`
- URL: `https://fleetkeep.co.uk/api/v1/operations/maintenance/{eventId}`
- Auth: OAuth 2 (authorization code, authorization URL `https://fleetkeep.co.uk/auth/oauth2/authorize`, token URL `https://fleetkeep.co.uk/auth/oauth2/token`, scopes: `maintenance:write`)

Completed history is immutable and returns not_found.

## Request body

- MaintenanceInput
  - `type` 'oil_change' | 'brake_check' | 'tyre_check' | 'service' | 'inspection' | 'document_renewal' | 'repair' | 'other', required
  - `title` string, nullable
  - `notes` string, nullable
  - `dueDate` string, date, nullable
  - `dueMileage` integer, nullable
  - `recurrenceIntervalDays` integer, nullable: Requires dueDate. Completion creates a successor due this many days later.
  - `supplier` string, nullable
  - `priority` 'low' | 'normal' | 'high' | 'null', nullable

## Response `200`

Task updated and audited.

- object
  - `event` MaintenanceEvent, required
    - `forecast` object, nullable
      - `baselineDate` string, date, required
      - `baselineMileage` integer, required
      - `intervalMiles` integer, required
      - `annualMileage` number, required
      - `reminderDays` integer[], required
    - `id` string, uuid, required
    - `vehicleId` string, uuid, required
    - `registration` string
    - `vehicleLabel` string, nullable
    - `type` 'oil_change' | 'brake_check' | 'tyre_check' | 'service' | 'inspection' | 'document_renewal' | 'repair' | 'other', required
    - `title` string, required
    - `notes` string, nullable
    - `dueDate` string, date, nullable
    - `dueMileage` integer, nullable
    - `recurrenceIntervalDays` integer, nullable
    - `supplier` string, nullable
    - `priority` 'low' | 'normal' | 'high', required
    - `status` 'open' | 'completed', required
    - `completedAt` string, date-time, nullable
    - `createdAt` string, date-time, required
    - `dueStatus` MaintenanceDueStatus
      - `level` 'overdue' | 'critical' | 'warning' | 'clear' | 'unknown', required
      - `reason` 'date' | 'mileage' | 'none', required
      - `daysUntil` integer, nullable, required
      - `milesUntil` integer, nullable, required

## Other responses

- `400`: The request body or query was invalid.
- `401`: Missing or invalid Bearer access token.
- `403`: Token does not include the required scope.
- `404`: The requested resource does not exist on the authorised user's account, is the wrong event type, or is immutable history for this operation.
- `429`: Per-token rate limit exceeded (60 requests per minute).

---

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