Pricing
Resolve Pricing
Get the resolved price for each day in a date range
GET
/boats/:id/pricingResolve the effective daily price for each day in a date range. Applies the full pricing waterfall: date overrides take priority over seasonal pricing. Days with no season coverage and no override are marked unavailable.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Boat ID (UUID) |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start | string | Yes | Start date (YYYY-MM-DD) |
end | string | Yes | End date (YYYY-MM-DD) |
The range is exclusive of the end date (i.e., start up to but not including end).
Request
Response
Response Fields
prices array
| Field | Type | Description |
|---|---|---|
date | string | Date (YYYY-MM-DD) |
price | number | Resolved price for this day (0 if unavailable) |
source | string | season or override |
seasonName | string | Name of the matching season (only when source is season) |
isAvailable | boolean | Whether the date is bookable |
note | string | Note from a date override (only when source is override) |
originalPrice | number | null | Pre-discount price (if a seasonal discount applies) |
discountPercentage | number | null | Active discount percentage |
discountName | string | null | Name of the discount |
summary object
| Field | Type | Description |
|---|---|---|
totalDays | integer | Total days in the range |
availableDays | integer | Number of bookable days |
unavailableDays | integer | Number of blocked days |
subtotal | number | Sum of prices for available days |
minPrice | number | Lowest daily price among available days |
maxPrice | number | Highest daily price among available days |
avgPrice | number | Average daily price among available days |
Price Sources
- season: Using a seasonal pricing rule. The matching season's name is included in
seasonName. - override: Using a date-specific price override. Overrides always take priority over seasons.
Pricing Waterfall
- Date override -- if one exists for this date, it wins (can set a custom price or mark unavailable)
- Season -- the highest-priority matching season sets the price
- No coverage -- if neither exists, the day is unavailable (
isAvailable: false,price: 0)
Errors
| Status | Message |
|---|---|
400 | start and end dates are required |
400 | Dates must be in YYYY-MM-DD format |