---
title: "Composite dashboard data"
method: GET
path: "/api/v1/dashboard"
tags: ["Dashboard"]
---

# Composite dashboard data

`GET /api/v1/dashboard`

## Request

- Base URL: `http://localhost:3002`
- URL: `http://localhost:3002/api/v1/dashboard`
- Auth: HTTP bearer

Returns today's charters, revenue stats, upcoming bookings, and optional weather in a single request.

## Response `200`

Dashboard data

- object
  - `data` object
    - `todaysCharters` 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
    - `weather` WeatherForecast
      - `forecast` string, required
      - `windSpeed` number, nullable
      - `waveHeight` number, nullable
      - `hasAdvisory` boolean, required
      - `advisoryType` string, nullable
    - `stats` object
      - `weeklyRevenue` number
      - `monthlyRevenue` number
      - `bookingsThisMonth` integer
      - `avgCharterValue` number
    - `upcoming` BookingSummary[]
      - `id` string, required
      - `captainId` string, required
      - `date` string, date-time, required
      - `status` string, required
      - `totalPrice` number, nullable
      - `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

## Other responses

- `401`: Authentication required, or the bearer token is missing or invalid.

---

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