---
title: "Customer detail"
method: GET
path: "/api/v1/customers/{id}"
tags: ["Customers"]
---

# Customer detail

`GET /api/v1/customers/{id}`

## Request

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

Returns a single customer with full booking history, total spend, and trip count.

## Path parameters

- `id` string, required

## Response `200`

Customer detail

- object
  - `data` object
    - `id` string, required
    - `firstName` string, required
    - `lastName` string, required
    - `email` string, email, required
    - `phone` string, nullable
    - `notes` string, nullable
    - `createdAt` string, date-time
    - `trips` integer
    - `totalSpent` number
    - `lastTrip` string, date-time, nullable
    - `bookings` Booking[]
      - `id` string, required
      - `captainId` string, required
      - `date` string, date-time, required
      - `startTime` string, nullable
      - `endTime` string, nullable
      - `status` 'PENDING_DEPOSIT' | 'DEPOSIT_PAID' | 'CONFIRMED' | 'COMPLETED' | 'CANCELLED' | 'WEATHER_CANCELLED', required
      - `totalPrice` number, nullable
      - `notes` string, nullable
      - `createdAt` string, date-time
      - `customer` Customer
        - `id` string, required
        - `firstName` string, required
        - `lastName` string, required
        - `email` string, email, required
        - `phone` string, nullable
        - `notes` string, nullable
        - `createdAt` string, date-time
      - `harbor` Harbor
        - `id` string, required
        - `name` string, required
        - `city` string, nullable
        - `state` string, nullable
        - `lat` number, nullable
        - `lng` number, nullable
        - `sortOrder` integer
        - `isActive` boolean, required
      - `duration` Duration
        - `id` string, required
        - `hours` integer, required
        - `label` string, required
        - `isActive` boolean
        - `sortOrder` integer
      - `payments` Payment[]
        - `id` string, required
        - `bookingId` string
        - `amount` number, required
        - `type` 'DEPOSIT' | 'BALANCE' | 'TIP' | 'REFUND', required
        - `status` 'PENDING' | 'SUCCEEDED' | 'FAILED' | 'REFUNDED', required
        - `createdAt` string, date-time
      - `weatherChecks` WeatherCheck[]
        - `id` string
        - `bookingId` string
        - `checkedAt` string, date-time
        - `hasAdvisory` boolean
        - `advisoryType` string, nullable
        - `windSpeed` number, nullable
        - `waveHeight` number, nullable
        - `forecast` string, nullable
      - `notifications` Notification[]
        - `id` string
        - `bookingId` string
        - `type` string
        - `sentAt` string, date-time
        - `status` string

## Other responses

- `401`: Unauthorized
- `404`: Customer not found

---

[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)
