---
title: "Partially update a boat"
method: PATCH
path: "/api/v1/boats/{id}"
tags: ["Boats"]
---

# Partially update a boat

`PATCH /api/v1/boats/{id}`

## Request

- Base URL: `http://localhost:3002`
- URL: `http://localhost:3002/api/v1/boats/{id}`
- Auth: HTTP bearer

Updates only the fields present in the body. To retire a boat: PATCH { isActive: false }. To unlist from the marketplace: PATCH { isListed: false }. Per spec §4.4 this endpoint is not idempotent (PATCH semantics).

## Path parameters

- `id` string, required

## Request body

- object
  - `name` string
  - `type` 'SAILBOAT' | 'POWERBOAT' | 'PONTOON' | 'JETSKI' | 'KAYAK' | 'CANOE' | 'YACHT' | 'OTHER'
  - `harborId` string
  - `capacity` integer
  - `slipNumber` string, nullable
  - `gateCode` string, nullable
  - `slipInstructions` string, nullable
  - `fuelSurchargeEnabled` boolean
  - `fuelSurchargeAmount` integer, nullable
  - `depositType` 'FIXED' | 'PERCENTAGE'
  - `depositValue` integer
  - `photos` string[]
  - `isActive` boolean
  - `isListed` boolean

## Response `200`

OK

- object
  - `data` object, required
    - `boat` object, required
      - `id` string, required
      - `ownerId` string, required
      - `name` string, required
      - `type` 'SAILBOAT' | 'POWERBOAT' | 'PONTOON' | 'JETSKI' | 'KAYAK' | 'CANOE' | 'YACHT' | 'OTHER', required
      - `description` string, nullable, required
      - `capacity` integer, required
      - `lengthFeet` integer, nullable, required
      - `year` integer, nullable, required
      - `make` string, nullable, required
      - `model` string, nullable, required
      - `photos` string[], required
      - `features` string[], required
      - `rules` string, nullable, required
      - `depositType` 'FIXED' | 'PERCENTAGE' | 'null', nullable, required
      - `depositValue` integer, nullable, required
      - `fuelSurchargeEnabled` boolean, nullable, required
      - `fuelSurchargeAmount` integer, nullable, required
      - `minimumNoticeHours` integer, required
      - `harborId` string, required
      - `isActive` boolean, required
      - `isListed` boolean, required
      - `slipNumber` string, nullable, required
      - `gateCode` string, nullable, required
      - `slipInstructions` string, nullable, required
      - `createdAt` string, required
      - `updatedAt` string, required

## Other responses

- `400`: Request body or query parameters failed validation.
- `401`: Authentication required, or the bearer token is missing or invalid.
- `403`: Authenticated but not permitted to access this resource.
- `404`: The requested resource does not exist (existence is not leaked).

---

[API](https://skmtc.dev/chartercaptain/apis/charter-captain-api.md) · [All operations](https://skmtc.dev/chartercaptain/apis/charter-captain-api/llms.txt) · [OpenAPI document](https://skmtc.dev/chartercaptain/apis/charter-captain-api/revisions/1ffea1113adb?raw)
