ws-dottie
Version:
Your friendly TypeScript companion for Washington State transportation APIs - WSDOT and WSF data with smart caching and React Query integration
3,932 lines • 261 kB
YAML
openapi: 3.0.0
info:
title: Wsf Terminals API
version: 1.0.0
description: Wsf Terminals API - Washington State Department of Transportation APIs
servers:
- url: https://www.wsdot.wa.gov/ferries/api/terminals/rest
description: Production server
components:
schemas:
RoadwayLocation:
type: object
properties:
Description:
type: string
nullable: true
description: Human-readable description of the roadway location, such as interchange names or cross streets.
Direction:
type: string
nullable: true
description: 'Traffic direction designation: N, S, B, NB, or SB, indicating which side of the highway is affected.'
Latitude:
type: number
description: Latitude of the roadway location in decimal degrees.
Longitude:
type: number
description: Longitude of the roadway location in decimal degrees.
MilePost:
type: number
description: Milepost marker along the highway corridor, with 0 indicating route terminus.
RoadName:
type: string
nullable: true
description: Highway or route designation code, such as '005' for I-5 or '090' for I-90.
required:
- Description
- Direction
- Latitude
- Longitude
- MilePost
- RoadName
description: Roadway location information including route, milepost, coordinates, and direction.
FetchCacheFlushDateTerminalsOutput:
type: string
description: UTC datetime when static endpoint data was last updated, or undefined if no update has occurred.
format: date-time
FetchTerminalBasicsByTerminalIdOutput:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
OverheadPassengerLoading:
type: boolean
description: True if overhead passenger loading facility is available; otherwise false.
Elevator:
type: boolean
description: True if terminal has elevator access; otherwise false.
WaitingRoom:
type: boolean
description: True if terminal has waiting room facility; otherwise false.
FoodService:
type: boolean
description: True if terminal offers food service; otherwise false.
Restroom:
type: boolean
description: True if terminal has restroom facilities; otherwise false.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- OverheadPassengerLoading
- Elevator
- WaitingRoom
- FoodService
- Restroom
description: Basic terminal information including identification, amenities, and regional assignments.
FetchTerminalBulletinsByTerminalIdOutput:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
Bulletins:
type: array
items:
type: object
properties:
BulletinTitle:
type: string
nullable: true
description: Title of the bulletin.
BulletinText:
type: string
nullable: true
description: HTML-formatted content of the bulletin.
BulletinSortSeq:
type: integer
description: Display sort order for the bulletin; lower values appear first.
BulletinLastUpdated:
type: string
nullable: true
description: UTC datetime when the bulletin was last updated.
format: date-time
BulletinLastUpdatedSortable:
type: string
nullable: true
description: Legacy sortable string representation of the bulletin update date.
format: date-time
required:
- BulletinTitle
- BulletinText
- BulletinSortSeq
- BulletinLastUpdated
- BulletinLastUpdatedSortable
description: Bulletin information including title, HTML content, sort order, and update date.
description: Array of bulletins and alerts associated with the terminal.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- Bulletins
description: Terminal information with associated bulletins and alerts.
FetchTerminalLocationsByTerminalIdOutput:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
Latitude:
type: number
nullable: true
description: Latitude of the terminal in decimal degrees.
Longitude:
type: number
nullable: true
description: Longitude of the terminal in decimal degrees.
AddressLineOne:
type: string
nullable: true
description: First line of the terminal street address.
AddressLineTwo:
type: string
nullable: true
description: Second line of the terminal street address.
City:
type: string
nullable: true
description: City where the terminal is located.
State:
type: string
nullable: true
description: State code where the terminal is located.
ZipCode:
type: string
nullable: true
description: Postal zip code for the terminal location.
Country:
type: string
nullable: true
description: Country code where the terminal is located.
MapLink:
type: string
nullable: true
description: URL to a map displaying the terminal location.
Directions:
type: string
nullable: true
description: HTML-formatted driving directions to the terminal.
DispGISZoomLoc:
type: array
nullable: true
items:
type: object
properties:
ZoomLevel:
type: integer
description: GIS zoom level for map display.
Latitude:
type: number
nullable: true
description: Latitude coordinate for this zoom level in decimal degrees.
Longitude:
type: number
nullable: true
description: Longitude coordinate for this zoom level in decimal degrees.
required:
- ZoomLevel
- Latitude
- Longitude
description: GIS zoom level location information including zoom level and coordinates.
description: Array of GIS zoom level locations for the terminal.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- Latitude
- Longitude
- AddressLineOne
- AddressLineTwo
- City
- State
- ZipCode
- Country
- MapLink
- Directions
- DispGISZoomLoc
description: Detailed terminal location information including coordinates, address, map link, driving directions, and GIS zoom level locations.
FetchTerminalSailingSpaceByTerminalIdOutput:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
DepartingSpaces:
type: array
nullable: true
items:
type: object
properties:
Departure:
type: string
description: Date and time of departure, as a UTC datetime. E.g., '2025-11-02T21:35:00.000Z' for departure at 9:35 PM on November 2, 2025. Used for departure schedule display and space availability timing.
format: date-time
IsCancelled:
type: boolean
description: Indicator whether departure is cancelled, as a boolean. E.g., false for active departures, true for cancelled departures. Used to determine if departure is operational.
VesselID:
type: integer
description: Unique identifier for vessel planned to service departure, as an integer ID. E.g., '69' for Samish vessel, '38' for Yakima vessel, '17' for Kaleetan vessel. Used to identify which vessel operates departure.
VesselName:
type: string
nullable: true
description: Human-readable name of vessel planned to service departure, as a vessel name. E.g., 'Samish' for vessel 69, 'Yakima' for vessel 38, 'Kaleetan' for vessel 17, null when vessel name is unavailable. Provides vessel identification for display.
MaxSpaceCount:
type: integer
description: Maximum vehicle capacity on vessel making departure, as an integer count. E.g., '141' for Samish vessel capacity, '139' for Yakima vessel capacity, '197' for Tacoma vessel capacity. Used to calculate space availability percentage.
SpaceForArrivalTerminals:
type: array
nullable: true
items:
type: object
properties:
TerminalID:
type: integer
description: Unique identifier for arrival terminal destination, as an integer ID. E.g., '10' for Friday Harbor terminal, '13' for Lopez Island terminal. Used to identify destination terminal for space availability.
TerminalName:
type: string
nullable: true
description: Human-readable name of arrival terminal destination, as a terminal name. E.g., 'Anacortes -> Friday Harbor' for multi-destination sailing, 'Seattle' for single destination, null when terminal name is unavailable. Provides destination identification for display.
VesselID:
type: integer
description: Unique identifier for vessel planned to service departure, as an integer ID. E.g., '69' for Samish vessel, '38' for Yakima vessel, '17' for Kaleetan vessel. Used to identify which vessel operates departure.
VesselName:
type: string
nullable: true
description: Human-readable name of vessel planned to service departure, as a vessel name. E.g., 'Samish' for vessel 69, 'Yakima' for vessel 38, 'Kaleetan' for vessel 17, null when vessel name is unavailable. Provides vessel identification for display.
DisplayReservableSpace:
type: boolean
description: Indicator whether reservable space information should be displayed, as a boolean. E.g., true for routes supporting reservations, false for routes without reservations. Used to determine if reservation space data should be shown.
ReservableSpaceCount:
type: integer
nullable: true
description: Remaining reservable vehicle spaces available on vessel, as an integer count. E.g., '45' for 45 reservable spaces remaining, '36' for 36 reservable spaces, null when reservations are not supported or count is unavailable. Used for reservation availability display.
ReservableSpaceHexColor:
type: string
nullable: true
description: Hex color code representing reservable space availability status, as a hex color. E.g., '#FFFF00' for yellow (limited availability), '#888888' for gray (not available), null when color is unavailable. Used for visual space availability indicators.
DisplayDriveUpSpace:
type: boolean
description: Indicator whether drive-up space information should be displayed, as a boolean. E.g., true for routes with drive-up space tracking, false when drive-up space is not tracked. Used to determine if drive-up space data should be shown.
DriveUpSpaceCount:
type: integer
nullable: true
description: Remaining drive-up vehicle spaces available on vessel, as an integer count. E.g., '67' for 67 drive-up spaces remaining, '197' for 197 drive-up spaces, null when drive-up space is not tracked or count is unavailable. Used for drive-up availability display.
DriveUpSpaceHexColor:
type: string
nullable: true
description: Hex color code representing drive-up space availability status, as a hex color. E.g., '#00FF00' for green (good availability), '#FFFF00' for yellow (limited availability), null when color is unavailable. Used for visual space availability indicators.
MaxSpaceCount:
type: integer
description: Maximum vehicle capacity on vessel making departure, as an integer count. E.g., '141' for Samish vessel capacity, '139' for Yakima vessel capacity, '197' for Tacoma vessel capacity. Used to calculate space availability percentage.
ArrivalTerminalIDs:
type: array
nullable: true
items:
type: integer
description: Array of arrival terminal IDs associated with this space count set, as terminal ID integers. E.g., array containing terminal 10 for single destination, array containing terminals 13, 10 for multi-destination sailing, null when terminal IDs are unavailable. Used to identify all destinations served by this space count.
required:
- TerminalID
- TerminalName
- VesselID
- VesselName
- DisplayReservableSpace
- ReservableSpaceCount
- ReservableSpaceHexColor
- DisplayDriveUpSpace
- DriveUpSpaceCount
- DriveUpSpaceHexColor
- MaxSpaceCount
- ArrivalTerminalIDs
description: Represents space availability information for arrival terminal destination including terminal/vessel identification, reservable space count and color, drive-up space count and color, maximum capacity, and arrival terminal IDs. E.g., Friday Harbor destination with 67 drive-up spaces (green) and 141 maximum capacity on Samish vessel. Used for real-time space availability display.
description: Array of space availability information for one or more arrival terminal destinations, as space for arrival terminal objects. E.g., array containing Friday Harbor destination with space counts, array containing multiple destinations for multi-destination sailing, null when space information is unavailable. Used for real-time space availability display by destination.
required:
- Departure
- IsCancelled
- VesselID
- VesselName
- MaxSpaceCount
- SpaceForArrivalTerminals
description: Represents departing space information including departure time, cancellation status, vessel details, maximum capacity, and space availability for arrival terminals. E.g., departure at 9:35 PM with Samish vessel (ID 69, capacity 141) and space information for Friday Harbor destination. Used for real-time departure space availability display.
description: Array of upcoming departures leaving terminal with space availability information, as departing space objects. E.g., array containing multiple departures with vessel and space details, null when departure information is unavailable. Used for real-time departure space availability display.
IsNoFareCollected:
type: boolean
nullable: true
description: Indicator whether terminal is capable of collecting fares, as a boolean. E.g., null when fare collection status is unknown, false when terminal collects fares, true when terminal does not collect fares. Used to determine fare collection capability.
NoFareCollectedMsg:
type: string
nullable: true
description: Optional message explaining how inability to collect fares affects terminal conditions data, as a message string. E.g., null when fare collection is available, message when fare collection affects space tracking accuracy. Used to inform users about data limitations.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- IsNoFareCollected
- NoFareCollectedMsg
description: Terminal sailing space information including terminal identification, upcoming departures with space availability, and fare collection status.
FetchTerminalTransportsByTerminalIdOutput:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
ParkingInfo:
type: string
nullable: true
description: HTML-formatted parking information for terminal, as parking details. E.g., 'Off-Peak rates effective October 1 through April 30, 2026...' for Anacortes parking rates, null when parking information is unavailable. HTML-formatted text for parking information display.
ParkingShuttleInfo:
type: string
nullable: true
description: HTML-formatted information about parking-related shuttles servicing terminal, as shuttle information. E.g., null when no parking shuttles, shuttle details when available. Used for parking shuttle information display.
AirportInfo:
type: string
nullable: true
description: HTML-formatted tips for commuting to terminal from airport, as airport directions. E.g., 'From the Seattle-Tacoma International Airport, allow a minimum of 2 1/2 hours...' for Anacortes airport directions, null when airport information is unavailable. HTML-formatted text for airport commuter information.
AirportShuttleInfo:
type: string
nullable: true
description: HTML-formatted information about airport shuttles servicing terminal, as shuttle information. E.g., 'When traveling from Sea-Tac Airport to Anacortes there is a shuttle...' for Anacortes airport shuttle, null when airport shuttle information is unavailable. HTML-formatted text for airport shuttle information.
MotorcycleInfo:
type: string
nullable: true
description: HTML-formatted information for motorcycle travelers, as motorcycle tips. E.g., 'While motorcycles are not, by Washington Administrative Code...' for motorcycle staging and loading information, null when motorcycle information is unavailable. HTML-formatted text for motorcycle commuter information.
TruckInfo:
type: string
nullable: true
description: HTML-formatted information for truck travelers, as truck tips. E.g., 'Expect heavy truck traffic on the first 3 sailings in the morning...' for truck travel information, null when truck information is unavailable. HTML-formatted text for truck commuter information.
BikeInfo:
type: string
nullable: true
description: HTML-formatted information for bicycle travelers, as bicycle tips. E.g., 'Approaching the Anacortes Terminal, you will arrive at the vehicle tollbooths...' for bicycle staging information, null when bicycle information is unavailable. HTML-formatted text for bicycle commuter information.
TrainInfo:
type: string
nullable: true
description: HTML-formatted information about trains servicing terminal, as train information. E.g., null when no train service, train details when available. Used for train commuter information display.
TaxiInfo:
type: string
nullable: true
description: HTML-formatted information about taxis servicing terminal, as taxi information. E.g., null when no taxi information, taxi details when available. Used for taxi commuter information display.
HovInfo:
type: string
nullable: true
description: HTML-formatted tips for carpool/vanpool commuters, as HOV information. E.g., 'Carpool/Vanpools must be ticketed and in line 10 minutes before...' for Bainbridge Island HOV information, null when HOV information is unavailable. HTML-formatted text for carpool/vanpool commuter information.
TransitLinks:
type: array
nullable: true
items:
type: object
properties:
LinkURL:
type: string
nullable: true
description: URL to transit agency website or service page, as a transit URL. E.g., 'http://www.skagittransit.org/' for Skagit Transit, 'http://www.kitsaptransit.com/service/routed-buses' for Kitsap Transit, null when transit link is unavailable. Used for accessing transit agency information.
LinkName:
type: string
nullable: true
description: Human-readable name of transit agency, as a transit agency name. E.g., 'Skagit Transit' for Skagit Transit agency, 'Kitsap Transit' for Kitsap Transit agency, null when transit name is unavailable. Provides transit agency identification for display.
SortSeq:
type: integer
nullable: true
description: Preferred sort order for transit link display, as an integer. E.g., null when sort order is not specified. Lower values appear first when sorting transit links in ascending order. Used for transit link display ordering.
required:
- LinkURL
- LinkName
- SortSeq
description: Represents transit link information including transit agency URL, name, and sort order. E.g., Skagit Transit link (http://www.skagittransit.org/). Used for displaying transit agency connections and links.
description: Array of transit agency links servicing terminal, as transit link objects. E.g., array containing Skagit Transit link for Anacortes terminal, array containing Kitsap Transit link for Bainbridge Island terminal, null when transit links are unavailable. Used for displaying transit agency connections.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- ParkingInfo
- ParkingShuttleInfo
- AirportInfo
- AirportShuttleInfo
- MotorcycleInfo
- TruckInfo
- BikeInfo
- TrainInfo
- TaxiInfo
- HovInfo
- TransitLinks
description: Terminal transportation and commuter information including parking details, vehicle-specific tips, airport information, transit links, and HOV/carpool information.
FetchTerminalVerboseByTerminalIdOutput:
allOf:
- type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
OverheadPassengerLoading:
type: boolean
description: Indicator whether terminal supports overhead passenger loading from upper vehicle deck, as a boolean. E.g., true for terminals with overhead walkways like Anacortes and Bainbridge Island, false for terminals without overhead loading capability. Used to determine passenger boarding capabilities and accessibility features.
Elevator:
type: boolean
description: Indicator whether terminal has elevator access for passengers, as a boolean. E.g., false for terminals like Anacortes and Bainbridge Island without elevators, true for terminals with elevator access. Used to determine ADA accessibility and passenger mobility accommodations.
WaitingRoom:
type: boolean
description: Indicator whether terminal has indoor waiting room facility, as a boolean. E.g., true for terminals like Anacortes and Bainbridge Island with waiting rooms, false for terminals without waiting facilities. Used to determine passenger comfort amenities and sheltered waiting areas.
FoodService:
type: boolean
description: Indicator whether terminal offers food service facilities, as a boolean. E.g., true for terminals like Anacortes and Bainbridge Island with galleys or cafes, false for terminals without food service. Used to determine available amenities for passengers during wait times.
Restroom:
type: boolean
description: Indicator whether terminal has restroom facilities, as a boolean. E.g., true for terminals like Anacortes and Bainbridge Island with restrooms, false for terminals without restroom access. Used to determine passenger comfort amenities and basic facility availability.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- OverheadPassengerLoading
- Elevator
- WaitingRoom
- FoodService
- Restroom
description: Base terminal information including identification, naming, regional association, and display ordering.
- type: object
properties:
Bulletins:
type: array
items:
type: object
properties:
BulletinTitle:
type: string
nullable: true
description: Title of the bulletin.
BulletinText:
type: string
nullable: true
description: HTML-formatted content of the bulletin.
BulletinSortSeq:
type: integer
description: Display sort order for the bulletin; lower values appear first.
BulletinLastUpdated:
type: string
nullable: true
description: UTC datetime when the bulletin was last updated.
format: date-time
BulletinLastUpdatedSortable:
type: string
nullable: true
description: Legacy sortable string representation of the bulletin update date.
format: date-time
required:
- BulletinTitle
- BulletinText
- BulletinSortSeq
- BulletinLastUpdated
- BulletinLastUpdatedSortable
description: Bulletin information including title, HTML content, sort order, and update date.
description: Active bulletins and alerts associated with terminal, as an array of bulletin objects. E.g., array containing vehicle reservation notices for Anacortes terminal, empty array for terminals without active bulletins. Used to display important terminal information, service changes, and passenger notifications.
required:
- Bulletins
- type: object
properties:
Latitude:
type: number
nullable: true
description: Terminal latitude coordinate, in decimal degrees. E.g., 48.507351 for Anacortes terminal, 47.622339 for Bainbridge Island terminal, null when coordinate data is unavailable. Used for mapping, distance calculations, and geographic display.
Longitude:
type: number
nullable: true
description: Terminal longitude coordinate, in decimal degrees. E.g., -122.677 for Anacortes terminal, -122.509617 for Bainbridge Island terminal, null when coordinate data is unavailable. Used for mapping, distance calculations, and geographic display.
AddressLineOne:
type: string
nullable: true
description: Primary street address line for terminal location, as a street address. E.g., '2100 Ferry Terminal Road' for Anacortes terminal, '270 Olympic Drive SE' for Bainbridge Island terminal, null when address is unavailable. Used for navigation, mapping, and location identification.
AddressLineTwo:
type: string
nullable: true
description: Secondary address line for terminal location, as an address supplement. E.g., null for most terminals without suite or building numbers, present when additional address details are needed. Used for complete address formatting when available.
City:
type: string
nullable: true
description: City name where terminal is located, as a city name. E.g., 'Anacortes' for Anacortes terminal, 'Bainbridge Island' for Bainbridge Island terminal, null when city is unavailable. Used for location identification and address formatting.
State:
type: string
nullable: true
description: State abbreviation where terminal is located, as a state code. E.g., 'WA' for Washington state terminals, null when state is unavailable. Used for location identification and address formatting.
ZipCode:
type: string
nullable: true
description: Postal code for terminal location, as a zip code string. E.g., '98221' for Anacortes terminal, '98110' for Bainbridge Island terminal, null when zip code is unavailable. Used for location identification and address formatting.
Country:
type: string
nullable: true
description: Country name where terminal is located, as a country code. E.g., 'USA' for United States terminals, null when country is unavailable. Used for location identification and international address formatting.
MapLink:
type: string
nullable: true
description: URL link to external mapping service displaying terminal location, as a map URL. E.g., Google Maps link for Anacortes terminal, null when map link is unavailable. Used for providing direct navigation links to terminal location.
Directions:
type: string
nullable: true
description: Driving directions to terminal from major routes, as HTML-formatted text. E.g., directions from Interstate 5 to Anacortes terminal, null when directions are unavailable. Used for navigation assistance and route planning.
DispGISZoomLoc:
type: array
nullable: true
items:
type: object
properties:
ZoomLevel:
type: integer
description: GIS zoom level for map display.
Latitude:
type: number
nullable: true
description: Latitude coordinate for this zoom level in decimal degrees.
Longitude:
type: number
nullable: true
description: Longitude coordinate for this zoom level in decimal degrees.
required:
- ZoomLevel
- Latitude
- Longitude
description: GIS zoom level location information including zoom level and coordinates.
description: GIS map display coordinates for terminal at various zoom levels, as an array of zoom-level coordinates. E.g., array with 18 zoom levels for Anacortes terminal, null when zoom-level data is unavailable. Used for optimized map rendering at different zoom levels.
required:
- Latitude
- Longitude
- AddressLineOne
- AddressLineTwo
- City
- State
- ZipCode
- Country
- MapLink
- Directions
- DispGISZoomLoc
- type: object
properties:
DepartingSpaces:
type: array
nullable: true
items:
type: object
properties:
Departure:
type: string
description: Date and time of departure, as a UTC datetime. E.g., '2025-11-02T21:35:00.000Z' for departure at 9:35 PM on November 2, 2025. Used for departure schedule display and space availability timing.
format: date-time
IsCancelled:
type: boolean
description: Indicator whether departure is cancelled, as a boolean. E.g., false for active departures, true for cancelled departures. Used to determine if departure is operational.
VesselID:
type: integer
description: Unique identifier for vessel planned to service departure, as an integer ID. E.g., '69' for Samish vessel, '38' for Yakima vessel, '17' for Kaleetan vessel. Used to identify which vessel operates departure.
VesselName:
type: string
nullable: true
description: Human-readable name of vessel planned to service departure, as a vessel name. E.g., 'Samish' for vessel 69, 'Yakima' for vessel 38, 'Kaleetan' for vessel 17, null when vessel name is unavailable. Provides vessel identification for display.
MaxSpaceCount:
type: integer
description: Maximum vehicle capacity on vessel making departure, as an integer count. E.g., '141' for Samish vessel capacity, '139' for Yakima vessel capacity, '197' for Tacoma vessel capacity. Used to calculate space availability percentage.
SpaceForArrivalTerminals:
type: array
nullable: true
items:
type: object
properties:
TerminalID:
type: integer
description: Unique identifier for arrival terminal destination, as an integer ID. E.g., '10' for Friday Harbor terminal, '13' for Lopez Island terminal. Used to identify destination terminal for space availability.
TerminalName:
type: string
nullable: true
description: Human-readable name of arrival terminal destination, as a terminal name. E.g., 'Anacortes -> Friday Harbor' for multi-destination sailing, 'Seattle' for single destination, null when terminal name is unavailable. Provides destination identification for display.
VesselID:
type: integer
description: Unique identifier for vessel planned to service departure, as an integer ID. E.g., '69' for Samish vessel, '38' for Yakima vessel, '17' for Kaleetan vessel. Used to identify which vessel operates departure.
VesselName:
type: string
nullable: true
description: Human-readable name of vessel planned to service departure, as a vessel name. E.g., 'Samish' for vessel 69, 'Yakima' for vessel 38, 'Kaleetan' for vessel 17, null when vessel name is unavailable. Provides vessel identification for display.
DisplayReservableSpace:
type: boolean
description: Indicator whether reservable space information should be displayed, as a boolean. E.g., true for routes supporting reservations, false for routes without reservations. Used to determine if reservation space data should be shown.
ReservableSpaceCount:
type: integer
nullable: true
description: Remaining reservable vehicle spaces available on vessel, as an integer count. E.g., '45' for 45 reservable spaces remaining, '36' for 36 reservable spaces, null when reservations are not supported or count is unavailable. Used for reservation availability display.
ReservableSpaceHexColor:
type: string
nullable: true
description: Hex color code representing reservable space availability status, as a hex color. E.g., '#FFFF00' for yellow (limited availability), '#888888' for gray (not available), null when color is unavailable. Used for visual space availability indicators.
DisplayDriveUpSpace:
type: boolean
description: Indicator whether drive-up space information should be displayed, as a boolean. E.g., true for routes with drive-up space tracking, false when drive-up space is not tracked. Used to determine if drive-up space data should be shown.
DriveUpSpaceCount:
type: integer
nullable: true
description: Remaining drive-up vehicle spaces available on vessel, as an integer count. E.g., '67' for 67 drive-up spaces remaining, '197' for 197 drive-up spaces, null when drive-up space is not tracked or count is unavailable. Used for drive-up availability display.
DriveUpSpaceHexColor:
type: string
nullable: true
description: Hex color code representing drive-up space availability status, as a hex color. E.g., '#00FF00' for green (good availability), '#FFFF00' for yellow (limited availability), null when color is unavailable. Used for visual space availability indicators.
MaxSpaceCount:
type: integer
description: Maximum vehicle capacity on vessel making departure, as an integer count. E.g., '141' for Samish vessel capacity, '139' for Yakima vessel capacity, '197' for Tacoma vessel capacity. Used to calculate space availability percentage.
ArrivalTerminalIDs:
type: array
nullable: true
items:
type: integer
description: Array of arrival terminal IDs associated with this space count set, as terminal ID integers. E.g., array containing terminal 10 for single destination, array containing terminals 13, 10 for multi-destination sailing, null when terminal IDs are unavailable. Used to identify all destinations served by this space count.
required:
- TerminalID
- TerminalName
- VesselID
- VesselName
- DisplayReservableSpace
- ReservableSpaceCount
- ReservableSpaceHexColor
- DisplayDriveUpSpace
- DriveUpSpaceCount
- DriveUpSpaceHexColor
- MaxSpaceCount
- ArrivalTerminalIDs
description: Represents space availability information for arrival terminal destination including terminal/vessel identification, reservable space count and color, drive-up space count and color, maximum capacity, and arrival terminal IDs. E.g., Friday Harbor destination with 67 drive-up spaces (green) and 141 maximum capacity on Samish vessel. Used for real-time space availability display.
description: Array of space availability information for one or more arrival terminal destinations, as space for arrival terminal objects. E.g., array containing Friday Harbor destination with space counts, array containing multiple destinations for multi-destination sailing, null when space information is unavailable. Used for real-time space availability display by destination.
required:
- Departure
- IsCancelled
- VesselID
- VesselName
- MaxSpaceCount
- SpaceForArrivalTerminals
description: Represents departing space information including departure time, cancellation status, vessel details, maximum capacity, and space availability for arrival terminals. E.g., departure at 9:35 PM with Samish vessel (ID 69, capacity 141) and space information for Friday Harbor destination. Used for real-time departure space availability display.
description: Most recent departure sailing space information from terminal, as an array of departing space objects. E.g., array containing vessel details, departure times, and space availability for recent sailings, null or empty when departure data is unavailable. Used for real-time sailing space tracking and capacity monitoring.
IsNoFareCollected:
type: boolean
nullable: true
description: Indicator whether terminal lacks fare collection capability, as a boolean. E.g., null for terminals like Anacortes and Bainbridge Island that collect fares, true for terminals without fare collection. Used to determine fare collection availability and terminal conditions data reliability.
NoFareCollectedMsg:
type: string
nullable: true
description: Message explaining how lack of fare collection affects terminal conditions data, as a notification message. E.g., null for terminals with fare collection, present when terminal cannot collect fares. Used to inform users about data limitations for terminals without fare collection.
required:
- IsNoFareCollected
- NoFareCollectedMsg
- type: object
properties:
ParkingInfo:
type: string
nullable: true
description: Parking availability, rates, and policies for terminal, as HTML-formatted text. E.g., parking rates and payment options for Anacortes terminal, null when parking information is unavailable. Used for parking planning and cost estimation.
ParkingShuttleInfo:
type: string
nullable: true
description: Information about shuttle services connecting parking areas to terminal, as HTML-formatted text. E.g., null for terminals without parking shuttles, present when parking shuttles are available. Used for planning parking and terminal access.
AirportInfo:
type: string
nullable: true
description: Driving directions and travel time from airport to terminal, as HTML-formatted text. E.g., directions from Sea-Tac Airport to Anacortes terminal, null when airport information is unavailable. Used for airport-to-terminal route planning.
AirportShuttleInfo:
type: string
nullable: true
description: Information about shuttle services connecting airport to terminal, as HTML-formatted text. E.g., Bellair Airporter service information for Anacortes terminal, null when airport shuttles are unavailable. Used for airport-to-terminal transportation planning.
MotorcycleInfo:
type: string
nullable: true
description: Motorcycle staging, loading, and fare information for terminal, as HTML-formatted text. E.g., motorcycle loading procedures and staging areas for Anacortes terminal, null when motorcycle information is unavailable. Used for motorcycle rider planning and terminal procedures.
TruckInfo:
type: string
nullable: true
description: Truck requirements, oversized vehicle approval, and loading information for terminal, as HTML-formatted text. E.g., overweight vehicle travel approval requirements for Anacortes terminal, null when truck information is unavailable. Used for commercial vehicle planning and compliance.
BikeInfo:
type: string
nullable: true
description: Bicycle staging, loading procedures, and fare information for terminal, as HTML-formatted text. E.g., bicycle loading procedures and rack availability for Anacortes terminal, null when bicycle information is unavailable. Used for bicycle rider planning and terminal procedures.
TrainInfo:
type: string
nullable: true
description: Train service information connecting to terminal, as HTML-formatted text. E.g., null for terminals without train service, present when train connections are available. Used for multimodal transportation planning.
TaxiInfo:
type: string
nullable: true
description: Taxi service information for terminal, as HTML-formatted text. E.g., null for terminals without taxi information, present when taxi services are documented. Used for local transportation planning.
HovInfo:
type: string
nullable: true
description: Carpool and vanpool information including preferential loading requirements, as HTML-formatted text. E.g., carpool registration and loading procedures for Bainbridge Island terminal, null when HOV information is unavailable. Used for rideshare planning and preferential loading coordination.
TransitLinks:
type: array
nullable: true
items:
type: object
properties:
LinkURL:
type: string
nullable: true
description: URL to transit agency website or service page, as a transit URL. E.g., 'http://www.skagittransit.org/' for Skagit Transit, 'http://www.kitsaptransit.com/service/routed-buses' for Kitsap Transit, null when transit link is unavailable. Used for accessing transit agency information.
LinkName:
type: string
nullable: true
description: Human-readable name of transit agency, as a transit agency name. E.g., 'Skagit Transit' for Skagit Transit agency, 'Kitsap Transit' for Kitsap Transit agency, null when transit name is unavailable. Provides transit agency identification for display.
SortSeq:
type: integer
nullable: true
description: Preferred sort order for transit link display, as an integer. E.g., null when sort order is not specified. Lower values appear first when sorting transit links in ascending order. Used for transit link display ordering.
required:
- LinkURL
- LinkName
- SortSeq
description: Represents transit link information including transit agency URL, name, and sort order. E.g., Skagit Transit link (http://www.skagittransit.org/). Used for displaying transit agency connections and links.
description: Links to transit agencies providing service to terminal, as an array of transit link objects. E.g., array containing Skagit Transit link for Anacortes terminal, Kitsap Transit link for Bainbridge Island terminal, null or empty when no transit links are available. Used for multimodal transportation planning and transit connection information.
required:
- ParkingInfo
- ParkingShuttleInfo
- AirportInfo
- AirportShuttleInfo
- MotorcycleInfo
- TruckInfo
- BikeInfo
- TrainInfo
- TaxiInfo
- HovInfo
- TransitLinks
- type: object
properties:
WaitTimes:
type: array
nullable: true
items:
type: object
properties:
RouteID:
type: integer
nullable: true
description: Numeric ID of the route associated with the wait time.
RouteName:
type: string
nullable: true
description: Display name of the route associated with the wait time.
WaitTimeNotes:
type: string
nullable: true
description: Text notes detailing wait time conditions and tips for vehicles and passengers.
format: date-time
WaitTimeLastUpdated:
type: string
nullable: true
description: UTC datetime when the wait time information was last updated.
format: date-time
WaitTimeIVRNotes:
type: string
nullable: true
description: Wait time notes formatted for Interactive Voice Response systems.
format: date-time
required:
- RouteID
- RouteName
- WaitTimeNotes
- WaitTimeLastUpdated
- WaitTimeIVRNotes
description: Wait time information including route association, notes, IVR notes, and update date.
description: Current wait time information and arrival recommendations for terminal, as an array of wait time objects. E.g., array containing vehicle reservation requirements and arrival time recommendations for Anacortes terminal, null when wait time data is unavailable. Used for trip planning and arrival time guidance.
required:
- WaitTimes
- type: object
properties:
RealtimeIntroMsg:
type: string
nullable: true
description: Introductory message explaining real-time terminal conditions data display, as HTML-formatted text. E.g., message about approximate vehicle spaces available in holding area for Anacortes terminal, null when intro message is unavailable. Used to provide context for real-time conditions data.
format: date-time
AdditionalInfo:
type: string
nullable: true
description: Additional terminal information including hours, services, and general details, as HTML-formatted text. E.g., passenger booth hours and kiosk information for Anacortes terminal, null when additional information is unavailable. Used for comprehensive terminal information display.
LostAndFoundInfo:
type: string
nullable: true
description: Lost and found procedures, contact information, and retention policies for terminal, as HTML-formatted text. E.g., lost and found location and contact details for Anacortes terminal, null when lost and found information is unavailable. Used for lost item reporting and retrieval.
SecurityInfo:
type: string
nullable: true
description: Security plan information and safety policies for terminal, as HTML-formatted text. E.g., U.S. Coast Guard approved security plan information, null when security information is unavailable. Used for security awareness and compliance information.
ConstructionInfo:
type: string
nullable: true
description: Ongoing or planned construction activities affecting terminal, as HTML-formatted text. E.g., null for terminals without active construction, present when construction impacts terminal operations. Used for construction impact awareness and trip planning.
FoodServiceInfo:
type: string
nullable: true
description: Food service hours, locations, and availability for terminal, as HTML-formatted text. E.g., galley hours and cafe information for Anacortes terminal, null when food service information is unavailable. Used for meal planning and food service availability.
AdaInfo:
type: string
nullable: true
description: ADA accessibility features, elevator access, and accommodation information for terminal, as HTML-formatted text. E.g., overhead passenger ramp and elevator access information for Anacortes terminal, null when ADA information is unavailable. Used for accessibility planning and accommodation requests.
FareDiscountInfo:
type: string
nullable: true
description: Fare discount programs, eligibility requirements, and purchase information for terminal, as HTML-formatted text. E.g., senior and youth fare information for Anacortes terminal, null when fare discount information is unavailable. Used for fare planning and discount eligibility.
TallySystemInfo:
type: string
nullable: true
description: Tally system information for terminal operations, as HTML-formatted text. E.g., null for terminals without tally system documentation, present when tally system information is available. Used for operational information and system documentation.
ChamberOfCommerce:
type: object
nullable: true
properties:
LinkURL:
type: string
nullable: true
description: URL link to local chamber of commerce website, as a web URL. E.g., 'http://www.anacortes.org' for Anacortes Chamber of Commerce, null when chamber link is unavailable. Used for local business and visitor information.
LinkName:
type: string
nullable: true
description: Display name for local chamber of commerce, as a chamber name. E.g., 'Chamber of Commerce' for Anacortes, 'Bainbridge Island Chamber of Commerce' for Bainbridge Island, null when chamber name is unavailable. Used for display and identification.
SortSeq:
type: integer
nullable: true
description: Preferred display sort order for chamber of commerce link, as an integer sequence number. E.g., null for default sorting, numeric value when specific sort order is required. Used for controlling link display order.
required:
- LinkURL
- LinkName
- SortSeq
description: Chamber of commerce information including link URL, name, and sort order for terminal, as a chamber object. E.g., object with Anacortes Chamber of Commerce link, null when chamber information is unavailable. Used for local business and visitor information.
FacInfo:
type: string
nullable: true
description: Facility advisory committee contact information for terminal, as HTML-formatted text. E.g., Ferry Advisory Committee contact information, null when facility information is unavailable. Used for community participation and feedback.
ResourceStatus:
type: string
nullable: true
description: Resource status information for terminal operations, as a status string. E.g., null for terminals without resource status documentation, present when resource status information is available. Used for operational status tracking.
TypeDesc:
type: string
nullable: true
description: Terminal type classification description, as a type string. E.g., 'Passenger and Car' for terminals like Anacortes and Bainbridge Island, null when type description is unavailable. Used for terminal classification and display.
REALTIME_SHUTOFF_FLAG:
type: boolean
description: Indicator whether real-time conditions data is disabled for terminal, as a boolean. E.g., false for terminals with active real-time data, true when real-time data is shut off. Used to determine real-time data availability.
REALTIME_SHUTOFF_MESSAGE:
type: string
nullable: true
description: Message explaining why real-time conditions data is unavailable, as a status message. E.g., 'The Real-Time Conditions are unavailable due to technical difficulties' for terminals with shutoff flag true, null when real-time data is available. Used to inform users about real-time data status.
format: date-time
VisitorLinks:
type: array
nullable: true
items:
type: object
properties:
LinkURL:
type: string
nullable: true
description: URL to transit agency website or service page, as a transit URL. E.g., 'http://www.skagittransit.org/' for Skagit Transit, 'http://www.kitsaptransit.com/service/routed-buses' for Kitsap Transit, null when transit link is unavailable. Used for accessing transit agency information.
LinkName:
type: string
nullable: true
description: Human-readable name of transit agency, as a transit agency name. E.g., 'Skagit Transit' for Skagit Transit agency, 'Kitsap Transit' for Kitsap Transit agency, null when transit name is unavailable. Provides transit agency identification for display.
SortSeq:
type: integer
nullable: true
description: Preferred sort order for transit link display, as an integer. E.g., null when sort order is not specified. Lower values appear first when sorting transit links in ascending order. Used for transit link display ordering.
required:
- LinkURL
- LinkName
- SortSeq
description: Represents transit link information including transit agency URL, name, and sort order. E.g., Skagit Transit link (http://www.skagittransit.org/). Used for displaying transit agency connections and links.
description: Links to visitor information and tourism resources for terminal area, as an array of visitor link objects. E.g., empty array for terminals without visitor links, array with tourism resources when available. Used for visitor information and local attractions.
required:
- RealtimeIntroMsg
- AdditionalInfo
- LostAndFoundInfo
- SecurityInfo
- ConstructionInfo
- FoodServiceInfo
- AdaInfo
- FareDiscountInfo
- TallySystemInfo
- ChamberOfCommerce
- FacInfo
- ResourceStatus
- TypeDesc
- REALTIME_SHUTOFF_FLAG
- REALTIME_SHUTOFF_MESSAGE
- VisitorLinks
description: Comprehensive terminal information combining data from terminalBasics, terminalBulletins, terminalLocations, terminalTransports, and terminalWaitTimes endpoints.
FetchTerminalWaitTimesByTerminalIdOutput:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
WaitTimes:
type: array
nullable: true
items:
type: object
properties:
RouteID:
type: integer
nullable: true
description: Numeric ID of the route associated with the wait time.
RouteName:
type: string
nullable: true
description: Display name of the route associated with the wait time.
WaitTimeNotes:
type: string
nullable: true
description: Text notes detailing wait time conditions and tips for vehicles and passengers.
format: date-time
WaitTimeLastUpdated:
type: string
nullable: true
description: UTC datetime when the wait time information was last updated.
format: date-time
WaitTimeIVRNotes:
type: string
nullable: true
description: Wait time notes formatted for Interactive Voice Response systems.
format: date-time
required:
- RouteID
- RouteName
- WaitTimeNotes
- WaitTimeLastUpdated
- WaitTimeIVRNotes
description: Wait time information including route association, notes, IVR notes, and update date.
description: Array of wait time information associated with the terminal.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- WaitTimes
description: Terminal wait time information including terminal identification and wait time list.
parameters: {}
paths:
/cacheflushdate:
get:
summary: Get cache flush timestamp for static terminals data.
operationId: fetchCacheFlushDateTerminals
tags:
- cache-flush-date-terminals
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchCacheFlushDateTerminals } from 'ws-dottie/wsf-terminals/core';
const data = await fetchCacheFlushDateTerminals({
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FetchCacheFlushDateTerminalsOutput'
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API
value: '2025-11-15T17:45:00.477Z'
/terminalBasics:
get:
summary: List basic information for all terminals.
operationId: fetchTerminalBasics
tags:
- terminal-basics
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalBasics } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalBasics({
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
OverheadPassengerLoading:
type: boolean
description: True if overhead passenger loading facility is available; otherwise false.
Elevator:
type: boolean
description: True if terminal has elevator access; otherwise false.
WaitingRoom:
type: boolean
description: True if terminal has waiting room facility; otherwise false.
FoodService:
type: boolean
description: True if terminal offers food service; otherwise false.
Restroom:
type: boolean
description: True if terminal has restroom facilities; otherwise false.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- OverheadPassengerLoading
- Elevator
- WaitingRoom
- FoodService
- Restroom
description: Basic terminal information including identification, amenities, and regional assignments.
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API (showing first item of 20 total)
value:
- TerminalID: 1
TerminalSubjectID: 111
RegionID: 1
TerminalName: Anacortes
TerminalAbbrev: ANA
SortSeq: 10
OverheadPassengerLoading: true
Elevator: false
WaitingRoom: true
FoodService: true
Restroom: true
/terminalBasics/{TerminalID}:
get:
summary: Get basic information for a specific terminal by ID.
operationId: fetchTerminalBasicsByTerminalId
tags:
- terminal-basics
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalBasicsByTerminalId } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalBasicsByTerminalId({
params: {
"TerminalID": 1
},
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FetchTerminalBasicsByTerminalIdOutput'
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API
value:
TerminalID: 1
TerminalSubjectID: 111
RegionID: 1
TerminalName: Anacortes
TerminalAbbrev: ANA
SortSeq: 10
OverheadPassengerLoading: true
Elevator: false
WaitingRoom: true
FoodService: true
Restroom: true
/terminalBulletins:
get:
summary: List bulletins and alerts for all terminals.
operationId: fetchTerminalBulletins
tags:
- terminal-bulletins
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalBulletins } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalBulletins({
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
Bulletins:
type: array
items:
type: object
properties:
BulletinTitle:
type: string
nullable: true
description: Title of the bulletin.
BulletinText:
type: string
nullable: true
description: HTML-formatted content of the bulletin.
BulletinSortSeq:
type: integer
description: Display sort order for the bulletin; lower values appear first.
BulletinLastUpdated:
type: string
nullable: true
description: UTC datetime when the bulletin was last updated.
format: date-time
BulletinLastUpdatedSortable:
type: string
nullable: true
description: Legacy sortable string representation of the bulletin update date.
format: date-time
required:
- BulletinTitle
- BulletinText
- BulletinSortSeq
- BulletinLastUpdated
- BulletinLastUpdatedSortable
description: Bulletin information including title, HTML content, sort order, and update date.
description: Array of bulletins and alerts associated with the terminal.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- Bulletins
description: Terminal information with associated bulletins and alerts.
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API (showing first item of 20 total)
value:
- TerminalID: 1
TerminalSubjectID: 111
RegionID: 1
TerminalName: Anacortes
TerminalAbbrev: ANA
SortSeq: 10
Bulletins:
- BulletinTitle: Ana/SJs - Kaleetan to replace Samish this Sunday, Nov. 16
BulletinText: <p><span data-contrast="none">This Sunday, Nov. 16, the <em>Kaleetan</em> will replace the<em> Samish</em> on the Anacortes/San Juan Islands route. We do not expect service impacts during this vessel swap. Thank you for your patience as we move boats around the system to complete maintenance, repairs, and inspections.<br /></span><span data-ccp-props="{"335557856":16777215,"335559739":0}"><br /></span></p>
BulletinSortSeq: 2
BulletinLastUpdated: '2025-11-15T17:08:11.927Z'
BulletinLastUpdatedSortable: '20251115090811'
/terminalBulletins/{TerminalID}:
get:
summary: Get bulletins and alerts for a specific terminal by ID.
operationId: fetchTerminalBulletinsByTerminalId
tags:
- terminal-bulletins
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalBulletinsByTerminalId } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalBulletinsByTerminalId({
params: {
"TerminalID": 3
},
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FetchTerminalBulletinsByTerminalIdOutput'
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API
value:
TerminalID: 3
TerminalSubjectID: 103
RegionID: 4
TerminalName: Bainbridge Island
TerminalAbbrev: BBI
SortSeq: 40
Bulletins: []
/terminalLocations:
get:
summary: List location information for all terminals.
operationId: fetchTerminalLocations
tags:
- terminal-locations
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalLocations } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalLocations({
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
Latitude:
type: number
nullable: true
description: Latitude of the terminal in decimal degrees.
Longitude:
type: number
nullable: true
description: Longitude of the terminal in decimal degrees.
AddressLineOne:
type: string
nullable: true
description: First line of the terminal street address.
AddressLineTwo:
type: string
nullable: true
description: Second line of the terminal street address.
City:
type: string
nullable: true
description: City where the terminal is located.
State:
type: string
nullable: true
description: State code where the terminal is located.
ZipCode:
type: string
nullable: true
description: Postal zip code for the terminal location.
Country:
type: string
nullable: true
description: Country code where the terminal is located.
MapLink:
type: string
nullable: true
description: URL to a map displaying the terminal location.
Directions:
type: string
nullable: true
description: HTML-formatted driving directions to the terminal.
DispGISZoomLoc:
type: array
nullable: true
items:
type: object
properties:
ZoomLevel:
type: integer
description: GIS zoom level for map display.
Latitude:
type: number
nullable: true
description: Latitude coordinate for this zoom level in decimal degrees.
Longitude:
type: number
nullable: true
description: Longitude coordinate for this zoom level in decimal degrees.
required:
- ZoomLevel
- Latitude
- Longitude
description: GIS zoom level location information including zoom level and coordinates.
description: Array of GIS zoom level locations for the terminal.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- Latitude
- Longitude
- AddressLineOne
- AddressLineTwo
- City
- State
- ZipCode
- Country
- MapLink
- Directions
- DispGISZoomLoc
description: Detailed terminal location information including coordinates, address, map link, driving directions, and GIS zoom level locations.
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API (showing first item of 20 total)
value:
- TerminalID: 1
TerminalSubjectID: 111
RegionID: 1
TerminalName: Anacortes
TerminalAbbrev: ANA
SortSeq: 10
Latitude: 48.507351
Longitude: -122.677
AddressLineOne: 2100 Ferry Terminal Road
AddressLineTwo: null
City: Anacortes
State: WA
ZipCode: '98221'
Country: USA
MapLink: https://www.google.com/maps/place/Anacortes+Ferry+Terminal,+Anacortes,+WA+98221/@48.5060112,-122.6776819,15z/data=!4m2!3m1!1s0x5485790ea2748ed5:0x5c9a071494b5411f</p>
Directions: "From Interstate 5 take exit 230 and follow SR 20 westbound to Anacortes. After arriving in Anacortes continue north on Commercial Ave. Turn left on 12th St, which becomes Oakes Ave, and then continue to the ferry terminal.<p>\r\n<b>Dropping off or picking up?</b><p>\r\nWhen approaching the ferry terminal to pick up or drop off and not disabled, follow Ferry Terminal Road to the left of the auto toll booths to the parking lot near the terminal. There should be parking near the sidewalk where the buses turn around for a quick pick up/drop off.</p>"
DispGISZoomLoc:
- ZoomLevel: 0
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 1
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 2
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 3
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 4
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 5
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 6
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 7
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 8
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 9
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 10
Latitude: 48.499482
Longitude: -122.664992
- ZoomLevel: 11
Latitude: 48.501302
Longitude: -122.668425
- ZoomLevel: 12
Latitude: 48.500619
Longitude: -122.678038
- ZoomLevel: 13
Latitude: 48.504032
Longitude: -122.679068
- ZoomLevel: 14
Latitude: 48.506022
Longitude: -122.678725
- ZoomLevel: 15
Latitude: 48.506591
Longitude: -122.678124
- ZoomLevel: 16
Latitude: 48.506591
Longitude: -122.677995
- ZoomLevel: 17
Latitude: 48.506612
Longitude: -122.678006
/terminalLocations/{TerminalID}:
get:
summary: Get location information for a specific terminal by ID.
operationId: fetchTerminalLocationsByTerminalId
tags:
- terminal-locations
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalLocationsByTerminalId } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalLocationsByTerminalId({
params: {
"TerminalID": 5
},
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FetchTerminalLocationsByTerminalIdOutput'
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API
value:
TerminalID: 5
TerminalSubjectID: 112
RegionID: 2
TerminalName: Clinton
TerminalAbbrev: CLI
SortSeq: 20
Latitude: 47.9754
Longitude: -122.349581
AddressLineOne: 64 South Ferrydock Road
AddressLineTwo: null
City: Clinton
State: WA
ZipCode: '98236'
Country: USA
MapLink: http://maps.yahoo.com/#mvt=m&lat=47.97483&lon=-122.352299&zoom=18&q1=64%20S.%20Ferrydock%20Rd.%20Clinton%2C%20WA%2098236
Directions: "Highway 20 on Whidbey Island turns into Highway 525 S which leads directly to the Clinton terminal.<br><p>\r\n<b>Dropping off or picking up?</b><br>\r\nThe ferry terminal pick up or drop off point is prior to the toll booth on Ferry Dock Road.<p> "
DispGISZoomLoc:
- ZoomLevel: 0
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 1
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 2
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 3
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 4
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 5
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 6
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 7
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 8
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 9
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 10
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 11
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 12
Latitude: 47.9754
Longitude: -122.349581
- ZoomLevel: 13
Latitude: 47.975465
Longitude: -122.352097
- ZoomLevel: 14
Latitude: 47.974948
Longitude: -122.351496
- ZoomLevel: 15
Latitude: 47.974948
Longitude: -122.351367
- ZoomLevel: 16
Latitude: 47.975034
Longitude: -122.351324
- ZoomLevel: 17
Latitude: 47.975027
Longitude: -122.351335
/terminalSailingSpace:
get:
summary: List sailing space availability for all terminals.
operationId: fetchTerminalSailingSpace
tags:
- terminal-sailing-space
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalSailingSpace } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalSailingSpace({
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
DepartingSpaces:
type: array
nullable: true
items:
type: object
properties:
Departure:
type: string
description: Date and time of departure, as a UTC datetime. E.g., '2025-11-02T21:35:00.000Z' for departure at 9:35 PM on November 2, 2025. Used for departure schedule display and space availability timing.
format: date-time
IsCancelled:
type: boolean
description: Indicator whether departure is cancelled, as a boolean. E.g., false for active departures, true for cancelled departures. Used to determine if departure is operational.
VesselID:
type: integer
description: Unique identifier for vessel planned to service departure, as an integer ID. E.g., '69' for Samish vessel, '38' for Yakima vessel, '17' for Kaleetan vessel. Used to identify which vessel operates departure.
VesselName:
type: string
nullable: true
description: Human-readable name of vessel planned to service departure, as a vessel name. E.g., 'Samish' for vessel 69, 'Yakima' for vessel 38, 'Kaleetan' for vessel 17, null when vessel name is unavailable. Provides vessel identification for display.
MaxSpaceCount:
type: integer
description: Maximum vehicle capacity on vessel making departure, as an integer count. E.g., '141' for Samish vessel capacity, '139' for Yakima vessel capacity, '197' for Tacoma vessel capacity. Used to calculate space availability percentage.
SpaceForArrivalTerminals:
type: array
nullable: true
items:
type: object
properties:
TerminalID:
type: integer
description: Unique identifier for arrival terminal destination, as an integer ID. E.g., '10' for Friday Harbor terminal, '13' for Lopez Island terminal. Used to identify destination terminal for space availability.
TerminalName:
type: string
nullable: true
description: Human-readable name of arrival terminal destination, as a terminal name. E.g., 'Anacortes -> Friday Harbor' for multi-destination sailing, 'Seattle' for single destination, null when terminal name is unavailable. Provides destination identification for display.
VesselID:
type: integer
description: Unique identifier for vessel planned to service departure, as an integer ID. E.g., '69' for Samish vessel, '38' for Yakima vessel, '17' for Kaleetan vessel. Used to identify which vessel operates departure.
VesselName:
type: string
nullable: true
description: Human-readable name of vessel planned to service departure, as a vessel name. E.g., 'Samish' for vessel 69, 'Yakima' for vessel 38, 'Kaleetan' for vessel 17, null when vessel name is unavailable. Provides vessel identification for display.
DisplayReservableSpace:
type: boolean
description: Indicator whether reservable space information should be displayed, as a boolean. E.g., true for routes supporting reservations, false for routes without reservations. Used to determine if reservation space data should be shown.
ReservableSpaceCount:
type: integer
nullable: true
description: Remaining reservable vehicle spaces available on vessel, as an integer count. E.g., '45' for 45 reservable spaces remaining, '36' for 36 reservable spaces, null when reservations are not supported or count is unavailable. Used for reservation availability display.
ReservableSpaceHexColor:
type: string
nullable: true
description: Hex color code representing reservable space availability status, as a hex color. E.g., '#FFFF00' for yellow (limited availability), '#888888' for gray (not available), null when color is unavailable. Used for visual space availability indicators.
DisplayDriveUpSpace:
type: boolean
description: Indicator whether drive-up space information should be displayed, as a boolean. E.g., true for routes with drive-up space tracking, false when drive-up space is not tracked. Used to determine if drive-up space data should be shown.
DriveUpSpaceCount:
type: integer
nullable: true
description: Remaining drive-up vehicle spaces available on vessel, as an integer count. E.g., '67' for 67 drive-up spaces remaining, '197' for 197 drive-up spaces, null when drive-up space is not tracked or count is unavailable. Used for drive-up availability display.
DriveUpSpaceHexColor:
type: string
nullable: true
description: Hex color code representing drive-up space availability status, as a hex color. E.g., '#00FF00' for green (good availability), '#FFFF00' for yellow (limited availability), null when color is unavailable. Used for visual space availability indicators.
MaxSpaceCount:
type: integer
description: Maximum vehicle capacity on vessel making departure, as an integer count. E.g., '141' for Samish vessel capacity, '139' for Yakima vessel capacity, '197' for Tacoma vessel capacity. Used to calculate space availability percentage.
ArrivalTerminalIDs:
type: array
nullable: true
items:
type: integer
description: Array of arrival terminal IDs associated with this space count set, as terminal ID integers. E.g., array containing terminal 10 for single destination, array containing terminals 13, 10 for multi-destination sailing, null when terminal IDs are unavailable. Used to identify all destinations served by this space count.
required:
- TerminalID
- TerminalName
- VesselID
- VesselName
- DisplayReservableSpace
- ReservableSpaceCount
- ReservableSpaceHexColor
- DisplayDriveUpSpace
- DriveUpSpaceCount
- DriveUpSpaceHexColor
- MaxSpaceCount
- ArrivalTerminalIDs
description: Represents space availability information for arrival terminal destination including terminal/vessel identification, reservable space count and color, drive-up space count and color, maximum capacity, and arrival terminal IDs. E.g., Friday Harbor destination with 67 drive-up spaces (green) and 141 maximum capacity on Samish vessel. Used for real-time space availability display.
description: Array of space availability information for one or more arrival terminal destinations, as space for arrival terminal objects. E.g., array containing Friday Harbor destination with space counts, array containing multiple destinations for multi-destination sailing, null when space information is unavailable. Used for real-time space availability display by destination.
required:
- Departure
- IsCancelled
- VesselID
- VesselName
- MaxSpaceCount
- SpaceForArrivalTerminals
description: Represents departing space information including departure time, cancellation status, vessel details, maximum capacity, and space availability for arrival terminals. E.g., departure at 9:35 PM with Samish vessel (ID 69, capacity 141) and space information for Friday Harbor destination. Used for real-time departure space availability display.
description: Array of upcoming departures leaving terminal with space availability information, as departing space objects. E.g., array containing multiple departures with vessel and space details, null when departure information is unavailable. Used for real-time departure space availability display.
IsNoFareCollected:
type: boolean
nullable: true
description: Indicator whether terminal is capable of collecting fares, as a boolean. E.g., null when fare collection status is unknown, false when terminal collects fares, true when terminal does not collect fares. Used to determine fare collection capability.
NoFareCollectedMsg:
type: string
nullable: true
description: Optional message explaining how inability to collect fares affects terminal conditions data, as a message string. E.g., null when fare collection is available, message when fare collection affects space tracking accuracy. Used to inform users about data limitations.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- IsNoFareCollected
- NoFareCollectedMsg
description: Terminal sailing space information including terminal identification, upcoming departures with space availability, and fare collection status.
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API (showing first item of 13 total)
value:
- TerminalID: 1
TerminalSubjectID: 111
RegionID: 1
TerminalName: Anacortes
TerminalAbbrev: ANA
SortSeq: 10
DepartingSpaces:
- Departure: '2025-11-15T18:05:00.000Z'
IsCancelled: false
VesselID: 69
VesselName: Samish
MaxSpaceCount: 141
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Lopez Island -> Orcas Island
VesselID: 69
VesselName: Samish
DisplayReservableSpace: true
ReservableSpaceCount: null
ReservableSpaceHexColor: '#888888'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 30
DriveUpSpaceHexColor: '#FFFF00'
MaxSpaceCount: 141
ArrivalTerminalIDs:
- 13
- 15
- Departure: '2025-11-15T18:30:00.000Z'
IsCancelled: false
VesselID: 38
VesselName: Yakima
MaxSpaceCount: 139
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Friday Harbor
VesselID: 38
VesselName: Yakima
DisplayReservableSpace: true
ReservableSpaceCount: null
ReservableSpaceHexColor: '#888888'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 77
DriveUpSpaceHexColor: '#FFFF00'
MaxSpaceCount: 139
ArrivalTerminalIDs:
- 10
- Departure: '2025-11-15T19:55:00.000Z'
IsCancelled: false
VesselID: 2
VesselName: Chelan
MaxSpaceCount: 120
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Shaw Island -> Orcas Island -> Anacortes
VesselID: 2
VesselName: Chelan
DisplayReservableSpace: true
ReservableSpaceCount: 57
ReservableSpaceHexColor: '#FFFF00'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 73
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 120
ArrivalTerminalIDs:
- 18
- 15
- 13
- Departure: '2025-11-15T21:35:00.000Z'
IsCancelled: false
VesselID: 69
VesselName: Samish
MaxSpaceCount: 141
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Friday Harbor
VesselID: 69
VesselName: Samish
DisplayReservableSpace: true
ReservableSpaceCount: 57
ReservableSpaceHexColor: '#FFFF00'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 76
DriveUpSpaceHexColor: '#FFFF00'
MaxSpaceCount: 141
ArrivalTerminalIDs:
- 10
- Departure: '2025-11-15T21:55:00.000Z'
IsCancelled: false
VesselID: 38
VesselName: Yakima
MaxSpaceCount: 139
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Lopez Island
VesselID: 38
VesselName: Yakima
DisplayReservableSpace: true
ReservableSpaceCount: 91
ReservableSpaceHexColor: '#00FF00'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 110
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 139
ArrivalTerminalIDs:
- 13
- Departure: '2025-11-15T23:20:00.000Z'
IsCancelled: false
VesselID: 2
VesselName: Chelan
MaxSpaceCount: 120
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Orcas Island -> Shaw Island -> Anacortes
VesselID: 2
VesselName: Chelan
DisplayReservableSpace: true
ReservableSpaceCount: 28
ReservableSpaceHexColor: '#FFFF00'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 44
DriveUpSpaceHexColor: '#FFFF00'
MaxSpaceCount: 120
ArrivalTerminalIDs:
- 15
- 18
- Departure: '2025-11-16T00:20:00.000Z'
IsCancelled: false
VesselID: 38
VesselName: Yakima
MaxSpaceCount: 139
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Lopez Island -> Friday Harbor
VesselID: 38
VesselName: Yakima
DisplayReservableSpace: true
ReservableSpaceCount: 37
ReservableSpaceHexColor: '#FFFF00'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 57
DriveUpSpaceHexColor: '#FFFF00'
MaxSpaceCount: 139
ArrivalTerminalIDs:
- 13
- 10
- Departure: '2025-11-16T01:35:00.000Z'
IsCancelled: false
VesselID: 69
VesselName: Samish
MaxSpaceCount: 141
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Lopez Island -> Friday Harbor
VesselID: 69
VesselName: Samish
DisplayReservableSpace: true
ReservableSpaceCount: 64
ReservableSpaceHexColor: '#FFFF00'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 83
DriveUpSpaceHexColor: '#FFFF00'
MaxSpaceCount: 141
ArrivalTerminalIDs:
- 13
- 10
- Departure: '2025-11-16T02:05:00.000Z'
IsCancelled: false
VesselID: 2
VesselName: Chelan
MaxSpaceCount: 120
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Shaw Island -> Orcas Island -> Anacortes
VesselID: 2
VesselName: Chelan
DisplayReservableSpace: true
ReservableSpaceCount: 43
ReservableSpaceHexColor: '#FFFF00'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 59
DriveUpSpaceHexColor: '#FFFF00'
MaxSpaceCount: 120
ArrivalTerminalIDs:
- 18
- 15
- Departure: '2025-11-16T04:15:00.000Z'
IsCancelled: false
VesselID: 38
VesselName: Yakima
MaxSpaceCount: 139
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Lopez Island -> Friday Harbor
VesselID: 38
VesselName: Yakima
DisplayReservableSpace: true
ReservableSpaceCount: 57
ReservableSpaceHexColor: '#FFFF00'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 76
DriveUpSpaceHexColor: '#FFFF00'
MaxSpaceCount: 139
ArrivalTerminalIDs:
- 13
- 10
- Departure: '2025-11-16T04:40:00.000Z'
IsCancelled: false
VesselID: 2
VesselName: Chelan
MaxSpaceCount: 120
SpaceForArrivalTerminals:
- TerminalID: 1
TerminalName: Anacortes -> Shaw Island -> Orcas Island -> Anacortes
VesselID: 2
VesselName: Chelan
DisplayReservableSpace: true
ReservableSpaceCount: 90
ReservableSpaceHexColor: '#00FF00'
DisplayDriveUpSpace: true
DriveUpSpaceCount: 106
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 120
ArrivalTerminalIDs:
- 18
- 15
IsNoFareCollected: null
NoFareCollectedMsg: null
/terminalSailingSpace/{TerminalID}:
get:
summary: Get sailing space availability for a specific terminal by ID.
operationId: fetchTerminalSailingSpaceByTerminalId
tags:
- terminal-sailing-space
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalSailingSpaceByTerminalId } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalSailingSpaceByTerminalId({
params: {
"TerminalID": 7
},
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FetchTerminalSailingSpaceByTerminalIdOutput'
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API
value:
TerminalID: 7
TerminalSubjectID: 101
RegionID: 4
TerminalName: Seattle
TerminalAbbrev: P52
SortSeq: 20
DepartingSpaces:
- Departure: '2025-11-15T18:00:00.000Z'
IsCancelled: false
VesselID: 36
VesselName: Walla Walla
MaxSpaceCount: 186
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 36
VesselName: Walla Walla
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 163
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 186
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-15T18:40:00.000Z'
IsCancelled: false
VesselID: 32
VesselName: Tacoma
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 32
VesselName: Tacoma
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 189
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-15T19:10:00.000Z'
IsCancelled: false
VesselID: 17
VesselName: Kaleetan
MaxSpaceCount: 139
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 17
VesselName: Kaleetan
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 139
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 139
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-15T19:25:00.000Z'
IsCancelled: false
VesselID: 37
VesselName: Wenatchee
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 37
VesselName: Wenatchee
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-15T20:20:00.000Z'
IsCancelled: false
VesselID: 36
VesselName: Walla Walla
MaxSpaceCount: 186
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 36
VesselName: Walla Walla
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 186
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 186
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-15T20:30:00.000Z'
IsCancelled: false
VesselID: 32
VesselName: Tacoma
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 32
VesselName: Tacoma
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-15T21:15:00.000Z'
IsCancelled: false
VesselID: 37
VesselName: Wenatchee
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 37
VesselName: Wenatchee
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-15T21:30:00.000Z'
IsCancelled: false
VesselID: 17
VesselName: Kaleetan
MaxSpaceCount: 139
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 17
VesselName: Kaleetan
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 139
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 139
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-15T22:10:00.000Z'
IsCancelled: false
VesselID: 32
VesselName: Tacoma
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 32
VesselName: Tacoma
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-15T22:50:00.000Z'
IsCancelled: false
VesselID: 36
VesselName: Walla Walla
MaxSpaceCount: 186
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 36
VesselName: Walla Walla
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 186
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 186
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-15T23:05:00.000Z'
IsCancelled: false
VesselID: 37
VesselName: Wenatchee
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 37
VesselName: Wenatchee
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-15T23:50:00.000Z'
IsCancelled: false
VesselID: 32
VesselName: Tacoma
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 32
VesselName: Tacoma
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-16T00:15:00.000Z'
IsCancelled: false
VesselID: 17
VesselName: Kaleetan
MaxSpaceCount: 139
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 17
VesselName: Kaleetan
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 139
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 139
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-16T00:45:00.000Z'
IsCancelled: false
VesselID: 37
VesselName: Wenatchee
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 37
VesselName: Wenatchee
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-16T01:30:00.000Z'
IsCancelled: false
VesselID: 36
VesselName: Walla Walla
MaxSpaceCount: 186
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 36
VesselName: Walla Walla
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 186
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 186
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-16T01:35:00.000Z'
IsCancelled: false
VesselID: 32
VesselName: Tacoma
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 32
VesselName: Tacoma
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-16T02:25:00.000Z'
IsCancelled: false
VesselID: 37
VesselName: Wenatchee
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 37
VesselName: Wenatchee
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-16T02:45:00.000Z'
IsCancelled: false
VesselID: 17
VesselName: Kaleetan
MaxSpaceCount: 139
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 17
VesselName: Kaleetan
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 139
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 139
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-16T03:20:00.000Z'
IsCancelled: false
VesselID: 32
VesselName: Tacoma
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 32
VesselName: Tacoma
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-16T03:50:00.000Z'
IsCancelled: false
VesselID: 36
VesselName: Walla Walla
MaxSpaceCount: 186
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 36
VesselName: Walla Walla
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 186
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 186
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-16T04:10:00.000Z'
IsCancelled: false
VesselID: 37
VesselName: Wenatchee
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 37
VesselName: Wenatchee
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-16T05:00:00.000Z'
IsCancelled: false
VesselID: 32
VesselName: Tacoma
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 32
VesselName: Tacoma
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-16T05:05:00.000Z'
IsCancelled: false
VesselID: 17
VesselName: Kaleetan
MaxSpaceCount: 139
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 17
VesselName: Kaleetan
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 139
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 139
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-16T05:45:00.000Z'
IsCancelled: false
VesselID: 37
VesselName: Wenatchee
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 37
VesselName: Wenatchee
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-16T06:30:00.000Z'
IsCancelled: false
VesselID: 36
VesselName: Walla Walla
MaxSpaceCount: 186
SpaceForArrivalTerminals:
- TerminalID: 4
TerminalName: Bremerton
VesselID: 36
VesselName: Walla Walla
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 186
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 186
ArrivalTerminalIDs:
- 4
- Departure: '2025-11-16T06:40:00.000Z'
IsCancelled: false
VesselID: 32
VesselName: Tacoma
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 32
VesselName: Tacoma
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
- Departure: '2025-11-16T07:15:00.000Z'
IsCancelled: false
VesselID: 37
VesselName: Wenatchee
MaxSpaceCount: 197
SpaceForArrivalTerminals:
- TerminalID: 3
TerminalName: Bainbridge Island
VesselID: 37
VesselName: Wenatchee
DisplayReservableSpace: false
ReservableSpaceCount: null
ReservableSpaceHexColor: null
DisplayDriveUpSpace: true
DriveUpSpaceCount: 197
DriveUpSpaceHexColor: '#00FF00'
MaxSpaceCount: 197
ArrivalTerminalIDs:
- 3
IsNoFareCollected: null
NoFareCollectedMsg: null
/terminalTransports:
get:
summary: List transportation information for all terminals.
operationId: fetchTerminalTransports
tags:
- terminal-transports
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalTransports } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalTransports({
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
ParkingInfo:
type: string
nullable: true
description: HTML-formatted parking information for terminal, as parking details. E.g., 'Off-Peak rates effective October 1 through April 30, 2026...' for Anacortes parking rates, null when parking information is unavailable. HTML-formatted text for parking information display.
ParkingShuttleInfo:
type: string
nullable: true
description: HTML-formatted information about parking-related shuttles servicing terminal, as shuttle information. E.g., null when no parking shuttles, shuttle details when available. Used for parking shuttle information display.
AirportInfo:
type: string
nullable: true
description: HTML-formatted tips for commuting to terminal from airport, as airport directions. E.g., 'From the Seattle-Tacoma International Airport, allow a minimum of 2 1/2 hours...' for Anacortes airport directions, null when airport information is unavailable. HTML-formatted text for airport commuter information.
AirportShuttleInfo:
type: string
nullable: true
description: HTML-formatted information about airport shuttles servicing terminal, as shuttle information. E.g., 'When traveling from Sea-Tac Airport to Anacortes there is a shuttle...' for Anacortes airport shuttle, null when airport shuttle information is unavailable. HTML-formatted text for airport shuttle information.
MotorcycleInfo:
type: string
nullable: true
description: HTML-formatted information for motorcycle travelers, as motorcycle tips. E.g., 'While motorcycles are not, by Washington Administrative Code...' for motorcycle staging and loading information, null when motorcycle information is unavailable. HTML-formatted text for motorcycle commuter information.
TruckInfo:
type: string
nullable: true
description: HTML-formatted information for truck travelers, as truck tips. E.g., 'Expect heavy truck traffic on the first 3 sailings in the morning...' for truck travel information, null when truck information is unavailable. HTML-formatted text for truck commuter information.
BikeInfo:
type: string
nullable: true
description: HTML-formatted information for bicycle travelers, as bicycle tips. E.g., 'Approaching the Anacortes Terminal, you will arrive at the vehicle tollbooths...' for bicycle staging information, null when bicycle information is unavailable. HTML-formatted text for bicycle commuter information.
TrainInfo:
type: string
nullable: true
description: HTML-formatted information about trains servicing terminal, as train information. E.g., null when no train service, train details when available. Used for train commuter information display.
TaxiInfo:
type: string
nullable: true
description: HTML-formatted information about taxis servicing terminal, as taxi information. E.g., null when no taxi information, taxi details when available. Used for taxi commuter information display.
HovInfo:
type: string
nullable: true
description: HTML-formatted tips for carpool/vanpool commuters, as HOV information. E.g., 'Carpool/Vanpools must be ticketed and in line 10 minutes before...' for Bainbridge Island HOV information, null when HOV information is unavailable. HTML-formatted text for carpool/vanpool commuter information.
TransitLinks:
type: array
nullable: true
items:
type: object
properties:
LinkURL:
type: string
nullable: true
description: URL to transit agency website or service page, as a transit URL. E.g., 'http://www.skagittransit.org/' for Skagit Transit, 'http://www.kitsaptransit.com/service/routed-buses' for Kitsap Transit, null when transit link is unavailable. Used for accessing transit agency information.
LinkName:
type: string
nullable: true
description: Human-readable name of transit agency, as a transit agency name. E.g., 'Skagit Transit' for Skagit Transit agency, 'Kitsap Transit' for Kitsap Transit agency, null when transit name is unavailable. Provides transit agency identification for display.
SortSeq:
type: integer
nullable: true
description: Preferred sort order for transit link display, as an integer. E.g., null when sort order is not specified. Lower values appear first when sorting transit links in ascending order. Used for transit link display ordering.
required:
- LinkURL
- LinkName
- SortSeq
description: Represents transit link information including transit agency URL, name, and sort order. E.g., Skagit Transit link (http://www.skagittransit.org/). Used for displaying transit agency connections and links.
description: Array of transit agency links servicing terminal, as transit link objects. E.g., array containing Skagit Transit link for Anacortes terminal, array containing Kitsap Transit link for Bainbridge Island terminal, null when transit links are unavailable. Used for displaying transit agency connections.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- ParkingInfo
- ParkingShuttleInfo
- AirportInfo
- AirportShuttleInfo
- MotorcycleInfo
- TruckInfo
- BikeInfo
- TrainInfo
- TaxiInfo
- HovInfo
- TransitLinks
description: Terminal transportation and commuter information including parking details, vehicle-specific tips, airport information, transit links, and HOV/carpool information.
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API (showing first item of 20 total)
value:
- TerminalID: 1
TerminalSubjectID: 111
RegionID: 1
TerminalName: Anacortes
TerminalAbbrev: ANA
SortSeq: 10
ParkingInfo: "Off-Peak rates effective October 1 through April 30, 2026:<br>\r\n<ul>\r\n<li>1 day rate (car) - $8.00</li>\r\n<li>2 day rate (car) - $13.00</li>\r\n<li>3 day rate (car) - $15.00</li>\r\n<li>4 day rate (car) - $19.00</li>\r\n<li>7 day rate (car) - $24.00</li>\r\n<li>8 day rate (car) - $30.00</li>\r\n<li>9 day rate (car) - $35.00</li>\r\n<li>10 day rate (car) - $40.00</li>\r\n<li>14 day rate (car) - $46.00</li>\r\n<li>15 day rate (car) - $51.00</li>\r\n<li>16 day rate (car) - $57.00</li>\r\n<li>17 day rate (car) - $62.00</li>\r\n<li>21 day rate (car) - $67.00</li><p>\r\n\r\n\r\n\r\n<li>1 day rate (RV) - $13.00</li>\r\n<li>2 day rate (RV) - $24.00</li>\r\n<li>3 day rate (RV) - $28.00</li>\r\n<li>4 day rate (RV) - $92.00</li>\r\n<li>7 day rate (RV) - $46.00</li>\r\n<li>8 day rate (RV) - $57.00</li>\r\n<li>9 day rate (RV) - $67.00</li>\r\n<li>10 day rate (RV) - $78.00</li>\r\n<li>14 day rate (RV) - $87.00</li>\r\n<li>15 day rate (RV) - $98.00</li>\r\n<li>16 day rate (RV) - $112.00</li><p>\r\n\r\nThere are two ways to either initially pay for parking or to extend your current parking session remotely via your cell phone or mobile app:<p>\r\n\r\n<ul>Use the PayByPhone mobile app or call 1-888-680-7275. The automated system will ask for the Station #1644, the Stall # you parked in and the number of day(s) needed.</ul><p>\r\n \r\n<b>Contact 509-295-6490 for additional parking information.</b></p>\r\n\r\nCustomers wishing to purchase a Monthly, Seasonal, or RV/Boat Storage permits, please call Diamond Parking Services at (206) 729-0590 or 1-800-828-4197 and press option 2. Customer Service Representatives are available Monday – Friday 7:30 am to 7:00 pm PST or by email at Monthly@DiamondParking.com<p>\r\n\r\nThere is no charge for disabled parking customers displaying a valid disabled parking placard or license plate in this parking lot only. It’s important to note that when all the sign posted ADA spaces are filled in this WSF lot, customers are allowed to park in any empty space in this lot, for free, with their ADA placard, except those spaces reserved for other uses (e.g., carpool and Ferry System employee vehicles).</p> "
ParkingShuttleInfo: null
AirportInfo: From the Seattle-Tacoma International Airport, allow a minimum of 2 1/2 hours driving time to Anacortes and plan to arrive at least 45 minutes before your ferry is scheduled to depart. Follow road signs to the freeway. Drive north to enter eastbound on 518. You will need to get on I-5 North, just follow the road signs. Take I-5 North for approximately 85 miles to state route 20. Take exit 230, turn left at the light and follow the signs into downtown Anacortes. Turn left on 12th Street. Our terminal is 4 to 5 miles outside town.</p>
AirportShuttleInfo: When traveling from Sea-Tac Airport to Anacortes there is a shuttle from Sea-Tac Airport to our Anacortes Dock. For schedule and fare information call 1-866-235-5247 or check <a href="http://www.airporter.com/" class="content_text">Bellair Airporter</a>.<p>Island Airporter is another service that provides transportation from Sea-Tac Airport to Friday Harbor. To contact them for fare and schedule information, call (360) 378-7438 or check <a href="http://www.islandairporter.com/"class=content_text">Island Airporter</a>.</p>
MotorcycleInfo: "While motorcycles are not, by Washington Administrative Code (WAC 468-300-700), a preferential loading category of users, they are often loaded prior to automobiles for operational and staging purposes. Arrival at the dock after vehicle load has commenced requires motorcycles to wait until all cars have been loaded for the next motorcycle loading opportunity. Motorcycles should proceed, while on the dock, at no more than 10 mph. Use caution when car decks are wet. The following information details specific staging for this terminal:<p>\r\n<strong>Entry/Staging:</strong><br>\r\nMotorcyclists queue, along with vehicles, in traffic line prior to tollbooths. Proceed to motorcycle staging area in front of holding lanes as directed by ticket seller or traffic attendant.<p>\r\n<strong>Loading:</strong><br>\r\nLoading order: bicycles, motorcycles, vehicles, late arriving motorcycles as space permits. \r\nSpace may be limited to 30 motorcycles per sailing.</p>\r\n\r\n"
TruckInfo: "Expect heavy truck traffic on the first 3 sailings in the morning. Trucks going standby are advised to travel between the 7:40 am to 11:00 am time frame.<p>WSF requires trucks with a gross vehicle weight of over 80,000 lbs and/or over 8’6” wide to have “travel approval” before crossing any of our routes. Vessels on this route have a limited height clearance and trucks may be loaded out of sequence.<p>\r\nTrucks that have a gross vehicle weight of over 80,000 lbs but are hauling less than 80,000 lbs will need to provide a weight slip.<p>\r\nPlease fill out our <A HREF=\"https://wsdot.wa.gov/ferries/rider-information/trucks\" class=\"content_text\">Oversized/Overweight Vehicle Travel</A> form and email it to wsfinfo@wsdot.wa.gov. Please allow three business days for completion and approval. You can contact us at anytime for status updates at (206)464-6400 (Seattle).<p>The Canada Border Service Agency does not provide Commercial Services at the Sidney Terminal, as this office is not a designated commercial office.</p>"
BikeInfo: "Approaching the Anacortes Terminal, you will arrive at the vehicle tollbooths first on the right. Bicyclists may bypass these and the line of vehicle traffic at the vehicle tollbooths to get onto the ferry dock when the passenger tollbooth in the terminal is open, but must go through a vehicle tollbooth if the terminal and passenger tollbooth are closed. Signage at the vehicle tollbooth will indicate if the passenger tollbooth is open. If passenger booth is open, bicyclists should secure their bikes at the terminal and go into the terminal to purchase their tickets.<p>\r\nThere is one bike rack at the terminal which holds 12 bikes. Bicyclists should arrive 20 minutes prior to departure time to be loaded at the beginning of loading process to be certain they are loaded for their specific destination and multi-destination sailings. If a bicyclist arrives after vehicle loading has begun, they may not be loaded for their desired destination.</p>"
TrainInfo: null
TaxiInfo: null
HovInfo: null
TransitLinks:
- LinkURL: http://www.skagittransit.org/
LinkName: Skagit Transit
SortSeq: null
/terminalTransports/{TerminalID}:
get:
summary: Get transportation information for a specific terminal by ID.
operationId: fetchTerminalTransportsByTerminalId
tags:
- terminal-transports
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalTransportsByTerminalId } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalTransportsByTerminalId({
params: {
"TerminalID": 10
},
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FetchTerminalTransportsByTerminalIdOutput'
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API
value:
TerminalID: 10
TerminalSubjectID: 115
RegionID: 1
TerminalName: Friday Harbor
TerminalAbbrev: FRH
SortSeq: 50
ParkingInfo: There is no parking at the Friday Harbor terminal. There is limited short term on street parking available.
ParkingShuttleInfo: null
AirportInfo: null
AirportShuttleInfo: null
MotorcycleInfo: "While motorcycles are not, by Washington Administrative Code (WAC 468-300-700), a preferential loading category of users, they are often loaded prior to automobiles for operational and staging purposes. Arrival at the dock after vehicle load has commenced requires motorcycles to wait until all cars have been loaded for the next motorcycle loading opportunity. Motorcycles should proceed, while on the dock, at no more than 10 mph. Use caution when car decks are wet. The following information details specific staging for this terminal:<p> \r\n\r\n<b>Motorcycle Fare Purchase/Redemption</b><br>\r\nTickets are required for International travel to Sidney, B.C. Canada.<p>\r\n\r\n<b>Motorcycle Entry/Staging</b><br>\r\nMotorcycles are staged on the yellow curb lane in front of Cannery Landing.<p>\r\n\r\n<b>Motorcycle Loading</b><br>\r\nLoading order: bicycles, motorcycles, vehicles, late arriving motorcycles as space permits.<p> \r\n\r\n<b>Motorcycle Special Communication</b><br>\r\nRecommended arrival time is 20 minutes prior to scheduled sailing time.<br>\r\nOn high traffic sailings, vessel overloads may occur for travel to Anacortes. To avoid missing a desired sailing, motorcyclists should arrive an hour prior to scheduled sailing.<p>\r\n\r\nInter-island tickets may be used between any two islands, they are not destination specific and fare payment is required traveling westbound only. Motorcyclists travel free eastbound. "
TruckInfo: "WSF requires trucks with a gross vehicle weight of over 80,000 lbs and/or over 8’6” wide to have “travel approval” before crossing any of our routes. Vessels on this route have a limited height clearance and trucks may be loaded out of sequence.<p>\r\nTrucks that have a gross vehicle weight of over 80,000 lbs but are hauling less than 80,000 lbs will need to provide a weight slip.<p>\r\nPlease fill out our <A HREF=\"https://wsdot.wa.gov/ferries/rider-information/trucks\" class=\"content_text\">Oversized/Overweight Vehicle Travel</A> form and email it to wsfinfo@wsdot.wa.gov. Please allow three business days for completion and approval. You can contact us at anytime for status updates at (206)464-6400.</p>\r\n"
BikeInfo: Bicyclists load through the passenger terminal and should bypass the vehicle holding lanes. Bicyclists should arrive 20 minutes prior to departure time to be loaded at the beginning of vehicle loading. If a bicyclist arrives after vehicle loading has begun, they will be loaded at the end of the load. The terminal has bicycle racks near the terminal along Front Street. Bicyclists are asked to walk on and walk off the vessel. The Agent will notify bicyclists when they may ride while offloading.
TrainInfo: null
TaxiInfo: null
HovInfo: null
TransitLinks: []
/terminalVerbose:
get:
summary: List comprehensive information for all terminals.
operationId: fetchTerminalVerbose
tags:
- terminal-verbose
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalVerbose } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalVerbose({
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
allOf:
- type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
OverheadPassengerLoading:
type: boolean
description: Indicator whether terminal supports overhead passenger loading from upper vehicle deck, as a boolean. E.g., true for terminals with overhead walkways like Anacortes and Bainbridge Island, false for terminals without overhead loading capability. Used to determine passenger boarding capabilities and accessibility features.
Elevator:
type: boolean
description: Indicator whether terminal has elevator access for passengers, as a boolean. E.g., false for terminals like Anacortes and Bainbridge Island without elevators, true for terminals with elevator access. Used to determine ADA accessibility and passenger mobility accommodations.
WaitingRoom:
type: boolean
description: Indicator whether terminal has indoor waiting room facility, as a boolean. E.g., true for terminals like Anacortes and Bainbridge Island with waiting rooms, false for terminals without waiting facilities. Used to determine passenger comfort amenities and sheltered waiting areas.
FoodService:
type: boolean
description: Indicator whether terminal offers food service facilities, as a boolean. E.g., true for terminals like Anacortes and Bainbridge Island with galleys or cafes, false for terminals without food service. Used to determine available amenities for passengers during wait times.
Restroom:
type: boolean
description: Indicator whether terminal has restroom facilities, as a boolean. E.g., true for terminals like Anacortes and Bainbridge Island with restrooms, false for terminals without restroom access. Used to determine passenger comfort amenities and basic facility availability.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- OverheadPassengerLoading
- Elevator
- WaitingRoom
- FoodService
- Restroom
description: Base terminal information including identification, naming, regional association, and display ordering.
- type: object
properties:
Bulletins:
type: array
items:
type: object
properties:
BulletinTitle:
type: string
nullable: true
description: Title of the bulletin.
BulletinText:
type: string
nullable: true
description: HTML-formatted content of the bulletin.
BulletinSortSeq:
type: integer
description: Display sort order for the bulletin; lower values appear first.
BulletinLastUpdated:
type: string
nullable: true
description: UTC datetime when the bulletin was last updated.
format: date-time
BulletinLastUpdatedSortable:
type: string
nullable: true
description: Legacy sortable string representation of the bulletin update date.
format: date-time
required:
- BulletinTitle
- BulletinText
- BulletinSortSeq
- BulletinLastUpdated
- BulletinLastUpdatedSortable
description: Bulletin information including title, HTML content, sort order, and update date.
description: Active bulletins and alerts associated with terminal, as an array of bulletin objects. E.g., array containing vehicle reservation notices for Anacortes terminal, empty array for terminals without active bulletins. Used to display important terminal information, service changes, and passenger notifications.
required:
- Bulletins
- type: object
properties:
Latitude:
type: number
nullable: true
description: Terminal latitude coordinate, in decimal degrees. E.g., 48.507351 for Anacortes terminal, 47.622339 for Bainbridge Island terminal, null when coordinate data is unavailable. Used for mapping, distance calculations, and geographic display.
Longitude:
type: number
nullable: true
description: Terminal longitude coordinate, in decimal degrees. E.g., -122.677 for Anacortes terminal, -122.509617 for Bainbridge Island terminal, null when coordinate data is unavailable. Used for mapping, distance calculations, and geographic display.
AddressLineOne:
type: string
nullable: true
description: Primary street address line for terminal location, as a street address. E.g., '2100 Ferry Terminal Road' for Anacortes terminal, '270 Olympic Drive SE' for Bainbridge Island terminal, null when address is unavailable. Used for navigation, mapping, and location identification.
AddressLineTwo:
type: string
nullable: true
description: Secondary address line for terminal location, as an address supplement. E.g., null for most terminals without suite or building numbers, present when additional address details are needed. Used for complete address formatting when available.
City:
type: string
nullable: true
description: City name where terminal is located, as a city name. E.g., 'Anacortes' for Anacortes terminal, 'Bainbridge Island' for Bainbridge Island terminal, null when city is unavailable. Used for location identification and address formatting.
State:
type: string
nullable: true
description: State abbreviation where terminal is located, as a state code. E.g., 'WA' for Washington state terminals, null when state is unavailable. Used for location identification and address formatting.
ZipCode:
type: string
nullable: true
description: Postal code for terminal location, as a zip code string. E.g., '98221' for Anacortes terminal, '98110' for Bainbridge Island terminal, null when zip code is unavailable. Used for location identification and address formatting.
Country:
type: string
nullable: true
description: Country name where terminal is located, as a country code. E.g., 'USA' for United States terminals, null when country is unavailable. Used for location identification and international address formatting.
MapLink:
type: string
nullable: true
description: URL link to external mapping service displaying terminal location, as a map URL. E.g., Google Maps link for Anacortes terminal, null when map link is unavailable. Used for providing direct navigation links to terminal location.
Directions:
type: string
nullable: true
description: Driving directions to terminal from major routes, as HTML-formatted text. E.g., directions from Interstate 5 to Anacortes terminal, null when directions are unavailable. Used for navigation assistance and route planning.
DispGISZoomLoc:
type: array
nullable: true
items:
type: object
properties:
ZoomLevel:
type: integer
description: GIS zoom level for map display.
Latitude:
type: number
nullable: true
description: Latitude coordinate for this zoom level in decimal degrees.
Longitude:
type: number
nullable: true
description: Longitude coordinate for this zoom level in decimal degrees.
required:
- ZoomLevel
- Latitude
- Longitude
description: GIS zoom level location information including zoom level and coordinates.
description: GIS map display coordinates for terminal at various zoom levels, as an array of zoom-level coordinates. E.g., array with 18 zoom levels for Anacortes terminal, null when zoom-level data is unavailable. Used for optimized map rendering at different zoom levels.
required:
- Latitude
- Longitude
- AddressLineOne
- AddressLineTwo
- City
- State
- ZipCode
- Country
- MapLink
- Directions
- DispGISZoomLoc
- type: object
properties:
DepartingSpaces:
type: array
nullable: true
items:
type: object
properties:
Departure:
type: string
description: Date and time of departure, as a UTC datetime. E.g., '2025-11-02T21:35:00.000Z' for departure at 9:35 PM on November 2, 2025. Used for departure schedule display and space availability timing.
format: date-time
IsCancelled:
type: boolean
description: Indicator whether departure is cancelled, as a boolean. E.g., false for active departures, true for cancelled departures. Used to determine if departure is operational.
VesselID:
type: integer
description: Unique identifier for vessel planned to service departure, as an integer ID. E.g., '69' for Samish vessel, '38' for Yakima vessel, '17' for Kaleetan vessel. Used to identify which vessel operates departure.
VesselName:
type: string
nullable: true
description: Human-readable name of vessel planned to service departure, as a vessel name. E.g., 'Samish' for vessel 69, 'Yakima' for vessel 38, 'Kaleetan' for vessel 17, null when vessel name is unavailable. Provides vessel identification for display.
MaxSpaceCount:
type: integer
description: Maximum vehicle capacity on vessel making departure, as an integer count. E.g., '141' for Samish vessel capacity, '139' for Yakima vessel capacity, '197' for Tacoma vessel capacity. Used to calculate space availability percentage.
SpaceForArrivalTerminals:
type: array
nullable: true
items:
type: object
properties:
TerminalID:
type: integer
description: Unique identifier for arrival terminal destination, as an integer ID. E.g., '10' for Friday Harbor terminal, '13' for Lopez Island terminal. Used to identify destination terminal for space availability.
TerminalName:
type: string
nullable: true
description: Human-readable name of arrival terminal destination, as a terminal name. E.g., 'Anacortes -> Friday Harbor' for multi-destination sailing, 'Seattle' for single destination, null when terminal name is unavailable. Provides destination identification for display.
VesselID:
type: integer
description: Unique identifier for vessel planned to service departure, as an integer ID. E.g., '69' for Samish vessel, '38' for Yakima vessel, '17' for Kaleetan vessel. Used to identify which vessel operates departure.
VesselName:
type: string
nullable: true
description: Human-readable name of vessel planned to service departure, as a vessel name. E.g., 'Samish' for vessel 69, 'Yakima' for vessel 38, 'Kaleetan' for vessel 17, null when vessel name is unavailable. Provides vessel identification for display.
DisplayReservableSpace:
type: boolean
description: Indicator whether reservable space information should be displayed, as a boolean. E.g., true for routes supporting reservations, false for routes without reservations. Used to determine if reservation space data should be shown.
ReservableSpaceCount:
type: integer
nullable: true
description: Remaining reservable vehicle spaces available on vessel, as an integer count. E.g., '45' for 45 reservable spaces remaining, '36' for 36 reservable spaces, null when reservations are not supported or count is unavailable. Used for reservation availability display.
ReservableSpaceHexColor:
type: string
nullable: true
description: Hex color code representing reservable space availability status, as a hex color. E.g., '#FFFF00' for yellow (limited availability), '#888888' for gray (not available), null when color is unavailable. Used for visual space availability indicators.
DisplayDriveUpSpace:
type: boolean
description: Indicator whether drive-up space information should be displayed, as a boolean. E.g., true for routes with drive-up space tracking, false when drive-up space is not tracked. Used to determine if drive-up space data should be shown.
DriveUpSpaceCount:
type: integer
nullable: true
description: Remaining drive-up vehicle spaces available on vessel, as an integer count. E.g., '67' for 67 drive-up spaces remaining, '197' for 197 drive-up spaces, null when drive-up space is not tracked or count is unavailable. Used for drive-up availability display.
DriveUpSpaceHexColor:
type: string
nullable: true
description: Hex color code representing drive-up space availability status, as a hex color. E.g., '#00FF00' for green (good availability), '#FFFF00' for yellow (limited availability), null when color is unavailable. Used for visual space availability indicators.
MaxSpaceCount:
type: integer
description: Maximum vehicle capacity on vessel making departure, as an integer count. E.g., '141' for Samish vessel capacity, '139' for Yakima vessel capacity, '197' for Tacoma vessel capacity. Used to calculate space availability percentage.
ArrivalTerminalIDs:
type: array
nullable: true
items:
type: integer
description: Array of arrival terminal IDs associated with this space count set, as terminal ID integers. E.g., array containing terminal 10 for single destination, array containing terminals 13, 10 for multi-destination sailing, null when terminal IDs are unavailable. Used to identify all destinations served by this space count.
required:
- TerminalID
- TerminalName
- VesselID
- VesselName
- DisplayReservableSpace
- ReservableSpaceCount
- ReservableSpaceHexColor
- DisplayDriveUpSpace
- DriveUpSpaceCount
- DriveUpSpaceHexColor
- MaxSpaceCount
- ArrivalTerminalIDs
description: Represents space availability information for arrival terminal destination including terminal/vessel identification, reservable space count and color, drive-up space count and color, maximum capacity, and arrival terminal IDs. E.g., Friday Harbor destination with 67 drive-up spaces (green) and 141 maximum capacity on Samish vessel. Used for real-time space availability display.
description: Array of space availability information for one or more arrival terminal destinations, as space for arrival terminal objects. E.g., array containing Friday Harbor destination with space counts, array containing multiple destinations for multi-destination sailing, null when space information is unavailable. Used for real-time space availability display by destination.
required:
- Departure
- IsCancelled
- VesselID
- VesselName
- MaxSpaceCount
- SpaceForArrivalTerminals
description: Represents departing space information including departure time, cancellation status, vessel details, maximum capacity, and space availability for arrival terminals. E.g., departure at 9:35 PM with Samish vessel (ID 69, capacity 141) and space information for Friday Harbor destination. Used for real-time departure space availability display.
description: Most recent departure sailing space information from terminal, as an array of departing space objects. E.g., array containing vessel details, departure times, and space availability for recent sailings, null or empty when departure data is unavailable. Used for real-time sailing space tracking and capacity monitoring.
IsNoFareCollected:
type: boolean
nullable: true
description: Indicator whether terminal lacks fare collection capability, as a boolean. E.g., null for terminals like Anacortes and Bainbridge Island that collect fares, true for terminals without fare collection. Used to determine fare collection availability and terminal conditions data reliability.
NoFareCollectedMsg:
type: string
nullable: true
description: Message explaining how lack of fare collection affects terminal conditions data, as a notification message. E.g., null for terminals with fare collection, present when terminal cannot collect fares. Used to inform users about data limitations for terminals without fare collection.
required:
- IsNoFareCollected
- NoFareCollectedMsg
- type: object
properties:
ParkingInfo:
type: string
nullable: true
description: Parking availability, rates, and policies for terminal, as HTML-formatted text. E.g., parking rates and payment options for Anacortes terminal, null when parking information is unavailable. Used for parking planning and cost estimation.
ParkingShuttleInfo:
type: string
nullable: true
description: Information about shuttle services connecting parking areas to terminal, as HTML-formatted text. E.g., null for terminals without parking shuttles, present when parking shuttles are available. Used for planning parking and terminal access.
AirportInfo:
type: string
nullable: true
description: Driving directions and travel time from airport to terminal, as HTML-formatted text. E.g., directions from Sea-Tac Airport to Anacortes terminal, null when airport information is unavailable. Used for airport-to-terminal route planning.
AirportShuttleInfo:
type: string
nullable: true
description: Information about shuttle services connecting airport to terminal, as HTML-formatted text. E.g., Bellair Airporter service information for Anacortes terminal, null when airport shuttles are unavailable. Used for airport-to-terminal transportation planning.
MotorcycleInfo:
type: string
nullable: true
description: Motorcycle staging, loading, and fare information for terminal, as HTML-formatted text. E.g., motorcycle loading procedures and staging areas for Anacortes terminal, null when motorcycle information is unavailable. Used for motorcycle rider planning and terminal procedures.
TruckInfo:
type: string
nullable: true
description: Truck requirements, oversized vehicle approval, and loading information for terminal, as HTML-formatted text. E.g., overweight vehicle travel approval requirements for Anacortes terminal, null when truck information is unavailable. Used for commercial vehicle planning and compliance.
BikeInfo:
type: string
nullable: true
description: Bicycle staging, loading procedures, and fare information for terminal, as HTML-formatted text. E.g., bicycle loading procedures and rack availability for Anacortes terminal, null when bicycle information is unavailable. Used for bicycle rider planning and terminal procedures.
TrainInfo:
type: string
nullable: true
description: Train service information connecting to terminal, as HTML-formatted text. E.g., null for terminals without train service, present when train connections are available. Used for multimodal transportation planning.
TaxiInfo:
type: string
nullable: true
description: Taxi service information for terminal, as HTML-formatted text. E.g., null for terminals without taxi information, present when taxi services are documented. Used for local transportation planning.
HovInfo:
type: string
nullable: true
description: Carpool and vanpool information including preferential loading requirements, as HTML-formatted text. E.g., carpool registration and loading procedures for Bainbridge Island terminal, null when HOV information is unavailable. Used for rideshare planning and preferential loading coordination.
TransitLinks:
type: array
nullable: true
items:
type: object
properties:
LinkURL:
type: string
nullable: true
description: URL to transit agency website or service page, as a transit URL. E.g., 'http://www.skagittransit.org/' for Skagit Transit, 'http://www.kitsaptransit.com/service/routed-buses' for Kitsap Transit, null when transit link is unavailable. Used for accessing transit agency information.
LinkName:
type: string
nullable: true
description: Human-readable name of transit agency, as a transit agency name. E.g., 'Skagit Transit' for Skagit Transit agency, 'Kitsap Transit' for Kitsap Transit agency, null when transit name is unavailable. Provides transit agency identification for display.
SortSeq:
type: integer
nullable: true
description: Preferred sort order for transit link display, as an integer. E.g., null when sort order is not specified. Lower values appear first when sorting transit links in ascending order. Used for transit link display ordering.
required:
- LinkURL
- LinkName
- SortSeq
description: Represents transit link information including transit agency URL, name, and sort order. E.g., Skagit Transit link (http://www.skagittransit.org/). Used for displaying transit agency connections and links.
description: Links to transit agencies providing service to terminal, as an array of transit link objects. E.g., array containing Skagit Transit link for Anacortes terminal, Kitsap Transit link for Bainbridge Island terminal, null or empty when no transit links are available. Used for multimodal transportation planning and transit connection information.
required:
- ParkingInfo
- ParkingShuttleInfo
- AirportInfo
- AirportShuttleInfo
- MotorcycleInfo
- TruckInfo
- BikeInfo
- TrainInfo
- TaxiInfo
- HovInfo
- TransitLinks
- type: object
properties:
WaitTimes:
type: array
nullable: true
items:
type: object
properties:
RouteID:
type: integer
nullable: true
description: Numeric ID of the route associated with the wait time.
RouteName:
type: string
nullable: true
description: Display name of the route associated with the wait time.
WaitTimeNotes:
type: string
nullable: true
description: Text notes detailing wait time conditions and tips for vehicles and passengers.
format: date-time
WaitTimeLastUpdated:
type: string
nullable: true
description: UTC datetime when the wait time information was last updated.
format: date-time
WaitTimeIVRNotes:
type: string
nullable: true
description: Wait time notes formatted for Interactive Voice Response systems.
format: date-time
required:
- RouteID
- RouteName
- WaitTimeNotes
- WaitTimeLastUpdated
- WaitTimeIVRNotes
description: Wait time information including route association, notes, IVR notes, and update date.
description: Current wait time information and arrival recommendations for terminal, as an array of wait time objects. E.g., array containing vehicle reservation requirements and arrival time recommendations for Anacortes terminal, null when wait time data is unavailable. Used for trip planning and arrival time guidance.
required:
- WaitTimes
- type: object
properties:
RealtimeIntroMsg:
type: string
nullable: true
description: Introductory message explaining real-time terminal conditions data display, as HTML-formatted text. E.g., message about approximate vehicle spaces available in holding area for Anacortes terminal, null when intro message is unavailable. Used to provide context for real-time conditions data.
format: date-time
AdditionalInfo:
type: string
nullable: true
description: Additional terminal information including hours, services, and general details, as HTML-formatted text. E.g., passenger booth hours and kiosk information for Anacortes terminal, null when additional information is unavailable. Used for comprehensive terminal information display.
LostAndFoundInfo:
type: string
nullable: true
description: Lost and found procedures, contact information, and retention policies for terminal, as HTML-formatted text. E.g., lost and found location and contact details for Anacortes terminal, null when lost and found information is unavailable. Used for lost item reporting and retrieval.
SecurityInfo:
type: string
nullable: true
description: Security plan information and safety policies for terminal, as HTML-formatted text. E.g., U.S. Coast Guard approved security plan information, null when security information is unavailable. Used for security awareness and compliance information.
ConstructionInfo:
type: string
nullable: true
description: Ongoing or planned construction activities affecting terminal, as HTML-formatted text. E.g., null for terminals without active construction, present when construction impacts terminal operations. Used for construction impact awareness and trip planning.
FoodServiceInfo:
type: string
nullable: true
description: Food service hours, locations, and availability for terminal, as HTML-formatted text. E.g., galley hours and cafe information for Anacortes terminal, null when food service information is unavailable. Used for meal planning and food service availability.
AdaInfo:
type: string
nullable: true
description: ADA accessibility features, elevator access, and accommodation information for terminal, as HTML-formatted text. E.g., overhead passenger ramp and elevator access information for Anacortes terminal, null when ADA information is unavailable. Used for accessibility planning and accommodation requests.
FareDiscountInfo:
type: string
nullable: true
description: Fare discount programs, eligibility requirements, and purchase information for terminal, as HTML-formatted text. E.g., senior and youth fare information for Anacortes terminal, null when fare discount information is unavailable. Used for fare planning and discount eligibility.
TallySystemInfo:
type: string
nullable: true
description: Tally system information for terminal operations, as HTML-formatted text. E.g., null for terminals without tally system documentation, present when tally system information is available. Used for operational information and system documentation.
ChamberOfCommerce:
type: object
nullable: true
properties:
LinkURL:
type: string
nullable: true
description: URL link to local chamber of commerce website, as a web URL. E.g., 'http://www.anacortes.org' for Anacortes Chamber of Commerce, null when chamber link is unavailable. Used for local business and visitor information.
LinkName:
type: string
nullable: true
description: Display name for local chamber of commerce, as a chamber name. E.g., 'Chamber of Commerce' for Anacortes, 'Bainbridge Island Chamber of Commerce' for Bainbridge Island, null when chamber name is unavailable. Used for display and identification.
SortSeq:
type: integer
nullable: true
description: Preferred display sort order for chamber of commerce link, as an integer sequence number. E.g., null for default sorting, numeric value when specific sort order is required. Used for controlling link display order.
required:
- LinkURL
- LinkName
- SortSeq
description: Chamber of commerce information including link URL, name, and sort order for terminal, as a chamber object. E.g., object with Anacortes Chamber of Commerce link, null when chamber information is unavailable. Used for local business and visitor information.
FacInfo:
type: string
nullable: true
description: Facility advisory committee contact information for terminal, as HTML-formatted text. E.g., Ferry Advisory Committee contact information, null when facility information is unavailable. Used for community participation and feedback.
ResourceStatus:
type: string
nullable: true
description: Resource status information for terminal operations, as a status string. E.g., null for terminals without resource status documentation, present when resource status information is available. Used for operational status tracking.
TypeDesc:
type: string
nullable: true
description: Terminal type classification description, as a type string. E.g., 'Passenger and Car' for terminals like Anacortes and Bainbridge Island, null when type description is unavailable. Used for terminal classification and display.
REALTIME_SHUTOFF_FLAG:
type: boolean
description: Indicator whether real-time conditions data is disabled for terminal, as a boolean. E.g., false for terminals with active real-time data, true when real-time data is shut off. Used to determine real-time data availability.
REALTIME_SHUTOFF_MESSAGE:
type: string
nullable: true
description: Message explaining why real-time conditions data is unavailable, as a status message. E.g., 'The Real-Time Conditions are unavailable due to technical difficulties' for terminals with shutoff flag true, null when real-time data is available. Used to inform users about real-time data status.
format: date-time
VisitorLinks:
type: array
nullable: true
items:
type: object
properties:
LinkURL:
type: string
nullable: true
description: URL to transit agency website or service page, as a transit URL. E.g., 'http://www.skagittransit.org/' for Skagit Transit, 'http://www.kitsaptransit.com/service/routed-buses' for Kitsap Transit, null when transit link is unavailable. Used for accessing transit agency information.
LinkName:
type: string
nullable: true
description: Human-readable name of transit agency, as a transit agency name. E.g., 'Skagit Transit' for Skagit Transit agency, 'Kitsap Transit' for Kitsap Transit agency, null when transit name is unavailable. Provides transit agency identification for display.
SortSeq:
type: integer
nullable: true
description: Preferred sort order for transit link display, as an integer. E.g., null when sort order is not specified. Lower values appear first when sorting transit links in ascending order. Used for transit link display ordering.
required:
- LinkURL
- LinkName
- SortSeq
description: Represents transit link information including transit agency URL, name, and sort order. E.g., Skagit Transit link (http://www.skagittransit.org/). Used for displaying transit agency connections and links.
description: Links to visitor information and tourism resources for terminal area, as an array of visitor link objects. E.g., empty array for terminals without visitor links, array with tourism resources when available. Used for visitor information and local attractions.
required:
- RealtimeIntroMsg
- AdditionalInfo
- LostAndFoundInfo
- SecurityInfo
- ConstructionInfo
- FoodServiceInfo
- AdaInfo
- FareDiscountInfo
- TallySystemInfo
- ChamberOfCommerce
- FacInfo
- ResourceStatus
- TypeDesc
- REALTIME_SHUTOFF_FLAG
- REALTIME_SHUTOFF_MESSAGE
- VisitorLinks
description: Comprehensive terminal information combining data from terminalBasics, terminalBulletins, terminalLocations, terminalTransports, and terminalWaitTimes endpoints.
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API (showing first item of 20 total)
value:
- TerminalID: 1
TerminalSubjectID: 111
RegionID: 1
TerminalName: Anacortes
TerminalAbbrev: ANA
SortSeq: 10
OverheadPassengerLoading: true
Elevator: false
WaitingRoom: true
FoodService: true
Restroom: true
Bulletins:
- BulletinTitle: Ana/SJs - Kaleetan to replace Samish this Sunday, Nov. 16
BulletinText: <p><span data-contrast="none">This Sunday, Nov. 16, the <em>Kaleetan</em> will replace the<em> Samish</em> on the Anacortes/San Juan Islands route. We do not expect service impacts during this vessel swap. Thank you for your patience as we move boats around the system to complete maintenance, repairs, and inspections.<br /></span><span data-ccp-props="{"335557856":16777215,"335559739":0}"><br /></span></p>
BulletinSortSeq: 2
BulletinLastUpdated: '2025-11-15T17:08:11.927Z'
BulletinLastUpdatedSortable: '20251115090811'
Latitude: 48.507351
Longitude: -122.677
AddressLineOne: 2100 Ferry Terminal Road
AddressLineTwo: null
City: Anacortes
State: WA
ZipCode: '98221'
Country: USA
MapLink: https://www.google.com/maps/place/Anacortes+Ferry+Terminal,+Anacortes,+WA+98221/@48.5060112,-122.6776819,15z/data=!4m2!3m1!1s0x5485790ea2748ed5:0x5c9a071494b5411f</p>
Directions: "From Interstate 5 take exit 230 and follow SR 20 westbound to Anacortes. After arriving in Anacortes continue north on Commercial Ave. Turn left on 12th St, which becomes Oakes Ave, and then continue to the ferry terminal.<p>\r\n<b>Dropping off or picking up?</b><p>\r\nWhen approaching the ferry terminal to pick up or drop off and not disabled, follow Ferry Terminal Road to the left of the auto toll booths to the parking lot near the terminal. There should be parking near the sidewalk where the buses turn around for a quick pick up/drop off.</p>"
DispGISZoomLoc:
- ZoomLevel: 0
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 1
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 2
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 3
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 4
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 5
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 6
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 7
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 8
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 9
Latitude: 48.507351
Longitude: -122.677
- ZoomLevel: 10
Latitude: 48.499482
Longitude: -122.664992
- ZoomLevel: 11
Latitude: 48.501302
Longitude: -122.668425
- ZoomLevel: 12
Latitude: 48.500619
Longitude: -122.678038
- ZoomLevel: 13
Latitude: 48.504032
Longitude: -122.679068
- ZoomLevel: 14
Latitude: 48.506022
Longitude: -122.678725
- ZoomLevel: 15
Latitude: 48.506591
Longitude: -122.678124
- ZoomLevel: 16
Latitude: 48.506591
Longitude: -122.677995
- ZoomLevel: 17
Latitude: 48.506612
Longitude: -122.678006
IsNoFareCollected: null
NoFareCollectedMsg: null
ParkingInfo: "Off-Peak rates effective October 1 through April 30, 2026:<br>\r\n<ul>\r\n<li>1 day rate (car) - $8.00</li>\r\n<li>2 day rate (car) - $13.00</li>\r\n<li>3 day rate (car) - $15.00</li>\r\n<li>4 day rate (car) - $19.00</li>\r\n<li>7 day rate (car) - $24.00</li>\r\n<li>8 day rate (car) - $30.00</li>\r\n<li>9 day rate (car) - $35.00</li>\r\n<li>10 day rate (car) - $40.00</li>\r\n<li>14 day rate (car) - $46.00</li>\r\n<li>15 day rate (car) - $51.00</li>\r\n<li>16 day rate (car) - $57.00</li>\r\n<li>17 day rate (car) - $62.00</li>\r\n<li>21 day rate (car) - $67.00</li><p>\r\n\r\n\r\n\r\n<li>1 day rate (RV) - $13.00</li>\r\n<li>2 day rate (RV) - $24.00</li>\r\n<li>3 day rate (RV) - $28.00</li>\r\n<li>4 day rate (RV) - $92.00</li>\r\n<li>7 day rate (RV) - $46.00</li>\r\n<li>8 day rate (RV) - $57.00</li>\r\n<li>9 day rate (RV) - $67.00</li>\r\n<li>10 day rate (RV) - $78.00</li>\r\n<li>14 day rate (RV) - $87.00</li>\r\n<li>15 day rate (RV) - $98.00</li>\r\n<li>16 day rate (RV) - $112.00</li><p>\r\n\r\nThere are two ways to either initially pay for parking or to extend your current parking session remotely via your cell phone or mobile app:<p>\r\n\r\n<ul>Use the PayByPhone mobile app or call 1-888-680-7275. The automated system will ask for the Station #1644, the Stall # you parked in and the number of day(s) needed.</ul><p>\r\n \r\n<b>Contact 509-295-6490 for additional parking information.</b></p>\r\n\r\nCustomers wishing to purchase a Monthly, Seasonal, or RV/Boat Storage permits, please call Diamond Parking Services at (206) 729-0590 or 1-800-828-4197 and press option 2. Customer Service Representatives are available Monday – Friday 7:30 am to 7:00 pm PST or by email at Monthly@DiamondParking.com<p>\r\n\r\nThere is no charge for disabled parking customers displaying a valid disabled parking placard or license plate in this parking lot only. It’s important to note that when all the sign posted ADA spaces are filled in this WSF lot, customers are allowed to park in any empty space in this lot, for free, with their ADA placard, except those spaces reserved for other uses (e.g., carpool and Ferry System employee vehicles).</p> "
ParkingShuttleInfo: null
AirportInfo: From the Seattle-Tacoma International Airport, allow a minimum of 2 1/2 hours driving time to Anacortes and plan to arrive at least 45 minutes before your ferry is scheduled to depart. Follow road signs to the freeway. Drive north to enter eastbound on 518. You will need to get on I-5 North, just follow the road signs. Take I-5 North for approximately 85 miles to state route 20. Take exit 230, turn left at the light and follow the signs into downtown Anacortes. Turn left on 12th Street. Our terminal is 4 to 5 miles outside town.</p>
AirportShuttleInfo: When traveling from Sea-Tac Airport to Anacortes there is a shuttle from Sea-Tac Airport to our Anacortes Dock. For schedule and fare information call 1-866-235-5247 or check <a href="http://www.airporter.com/" class="content_text">Bellair Airporter</a>.<p>Island Airporter is another service that provides transportation from Sea-Tac Airport to Friday Harbor. To contact them for fare and schedule information, call (360) 378-7438 or check <a href="http://www.islandairporter.com/"class=content_text">Island Airporter</a>.</p>
MotorcycleInfo: "While motorcycles are not, by Washington Administrative Code (WAC 468-300-700), a preferential loading category of users, they are often loaded prior to automobiles for operational and staging purposes. Arrival at the dock after vehicle load has commenced requires motorcycles to wait until all cars have been loaded for the next motorcycle loading opportunity. Motorcycles should proceed, while on the dock, at no more than 10 mph. Use caution when car decks are wet. The following information details specific staging for this terminal:<p>\r\n<strong>Entry/Staging:</strong><br>\r\nMotorcyclists queue, along with vehicles, in traffic line prior to tollbooths. Proceed to motorcycle staging area in front of holding lanes as directed by ticket seller or traffic attendant.<p>\r\n<strong>Loading:</strong><br>\r\nLoading order: bicycles, motorcycles, vehicles, late arriving motorcycles as space permits. \r\nSpace may be limited to 30 motorcycles per sailing.</p>\r\n\r\n"
TruckInfo: "Expect heavy truck traffic on the first 3 sailings in the morning. Trucks going standby are advised to travel between the 7:40 am to 11:00 am time frame.<p>WSF requires trucks with a gross vehicle weight of over 80,000 lbs and/or over 8’6” wide to have “travel approval” before crossing any of our routes. Vessels on this route have a limited height clearance and trucks may be loaded out of sequence.<p>\r\nTrucks that have a gross vehicle weight of over 80,000 lbs but are hauling less than 80,000 lbs will need to provide a weight slip.<p>\r\nPlease fill out our <A HREF=\"https://wsdot.wa.gov/ferries/rider-information/trucks\" class=\"content_text\">Oversized/Overweight Vehicle Travel</A> form and email it to wsfinfo@wsdot.wa.gov. Please allow three business days for completion and approval. You can contact us at anytime for status updates at (206)464-6400 (Seattle).<p>The Canada Border Service Agency does not provide Commercial Services at the Sidney Terminal, as this office is not a designated commercial office.</p>"
BikeInfo: "Approaching the Anacortes Terminal, you will arrive at the vehicle tollbooths first on the right. Bicyclists may bypass these and the line of vehicle traffic at the vehicle tollbooths to get onto the ferry dock when the passenger tollbooth in the terminal is open, but must go through a vehicle tollbooth if the terminal and passenger tollbooth are closed. Signage at the vehicle tollbooth will indicate if the passenger tollbooth is open. If passenger booth is open, bicyclists should secure their bikes at the terminal and go into the terminal to purchase their tickets.<p>\r\nThere is one bike rack at the terminal which holds 12 bikes. Bicyclists should arrive 20 minutes prior to departure time to be loaded at the beginning of loading process to be certain they are loaded for their specific destination and multi-destination sailings. If a bicyclist arrives after vehicle loading has begun, they may not be loaded for their desired destination.</p>"
TrainInfo: null
TaxiInfo: null
HovInfo: null
TransitLinks:
- LinkURL: http://www.skagittransit.org/
LinkName: Skagit Transit
SortSeq: null
WaitTimes:
- RouteID: null
RouteName: null
WaitTimeNotes: 'Vehicle reservations to the San Juan Islands are available at www.takeaferry.com or by calling 511, and must be made at least 2 hours prior to sailing time. A 45 to 60 minute advance arrival is advised for reservation holders. Reservation holders who check in later than 30 minutes prior to sailing time will travel stand by. Walk-on passengers should arrive at least 15 minutes prior to departure sailing. '
WaitTimeLastUpdated: '2020-08-18T19:31:10.000Z'
WaitTimeIVRNotes: Vehicle reservations to the San Juan Islands are available online or by speaking to an information agent, and must be made at least 2 hours prior to sailing time. A 45 to 60 minute advance arrival is advised for reservation holders. Reservation holders who check in later than 30 minutes prior to sailing time will travel stand by. Walk on passengers should arrive at least 15 minutes prior to departure. To speak with an information agent please press zero.
RealtimeIntroMsg: <strong>Approximate Vehicle Spaces Available in Holding Area</strong><br /><em>Drive-up shows the approximate number of available unreserved spaces per sailing. A negative number indicates the estimated number of vehicles beyond our vessel capacity that are currently through the tollbooth and parked in the holding area. We usually get 5-10 additional drive-up vehicles than the number shown due to reservation no-shows.</em></p>
AdditionalInfo: "<b>Passenger Booth Hours</b><p>\r\nThe passenger ticket booth in the terminal waiting room will be open:<p>\r\n\r\n<ul style=\"margin-top:0; margin-bottom:0;\">\r\n<li>Saturday - Thursday: 5:10 am to 9:00 pm<br>\r\n<li>Friday: 5:00 am to 11:00 pm<br></ul><p>\r\nThe overhead walkway will be operated:<p>\r\n<li>Daily: 5:35 am to 9:30 pm<br>\r\n\r\nWhen the passenger ticket booth is closed, full-fare walk on tickets may be purchased with a credit card from the Kiosk in the Terminal. All other transactions (checks not accepted) must be purchased at the Auto Toll Booth.<p><b>\r\n<p>\r\n\r\nPlease note: <b>Senior and youth tickets are not available at the kiosk</b> and must be purchased from the Auto Toll Booth when the Passenger Booth is closed.</p>"
LostAndFoundInfo: Lost and found items on this route are turned in to the Anacortes ferry terminal. Due to storage limitations, found items are held for 10 days from the date they were found. Our Information Agents can assist you with lost and found inquiries from 7:00 am to 5:30 pm (daily) at (206) 464-6400 or 1-888-808-7977.</p>
SecurityInfo: WSF has implemented a U.S. Coast Guard approved security plan, for more information please visit our <a href="https://wsdot.wa.gov/ferries/rider-information/safety" class="content_text"><strong>Safety and Security</a></strong> page.</p>
ConstructionInfo: null
FoodServiceInfo: "<p><b>Galley Hours</b><p>\r\n<li> (Vessel #1)</li>\r\n<li>5:30am – 8:00 pm Daily</li>\r\n<b> (Vessel #2)</li>\r\n<li>7:45 am – 7:15 pm Monday - Thursday </li>\r\n<li>7:45 am – 10:45 pm Fri, Sat & Sun </li>\r\n<b> (Vessel #3)</li>\r\n<li>5:45a.m. – 8:30 pm Daily</li><br>\r\n\r\nCafé Hours: Monday through Sunday 6am to 6pm)</a></strong><p>\r\n\r\nDockside Hours:<br>\r\nThursday through Monday 8am to 6pm</li>\r\nTuesday & Wednesday 9:30am to 6pm</li><br>\r\n\r\nNews/Book Stand: Same hours as the café. (Monday through Sunday 6am to 6pm)<p>"
AdaInfo: "Disabled passengers traveling without a vehicle will load and offload at the Anacortes terminal using the overhead passenger ramp, however, at all of the island terminals, walk-on passengers will load and off load via the car deck. All vessels on these routes have elevator access.<p>\r\nFor passengers traveling in a vehicle who need elevator access, or who need extra space for a lift, please alert the ticket seller at the terminal prior to boarding the ferry so that we can meet your needs and make your trip as pleasant as possible.</p><p>"
FareDiscountInfo: "We offer seniors (65+), persons with disabilities and passengers with a Medicare card, or other eligibility verification, travel at half the regular passenger fare rate. Children and youth under the age of 19 travel free, although teenagers behind the wheel of a motor vehicle must pay the adult vehicle and driver fare.<p>\r\nMulti-ride cards are good for 90 days from the date of purchase and are <b>non-refundable</b>. For more information check <a href=\"http://www.wsdot.wa.gov/ferries/fares/\" class=\"content_text\"><strong>Fares.</a></strong><p>\r\n<b>Fare Purchase/Redemption</b><br>\r\nPurchase and redeem tickets at the auto tollbooths. Tickets may be purchased at the passenger booth, at the kiosk inside the terminal waiting room, or online in advance.<p>\r\nFares vary depending on destination. Please check fare information online or call 1-888-808-7977 (WA & B.C.) or (206) 464-6400.<p>\r\nRoundtrip redemption occurs at auto tollbooth.</p>\r\n "
TallySystemInfo: null
ChamberOfCommerce:
LinkURL: http://www.anacortes.org
LinkName: Chamber of Commerce
SortSeq: null
FacInfo: Contact the <a href="https://wsdot.wa.gov/ferries/about-us/community-participation" class="content_text">Ferry Advisory Committee</a> chair representing your community with suggestions or concerns about ferry service.</p>
ResourceStatus: null
TypeDesc: Passenger and Car
REALTIME_SHUTOFF_FLAG: false
REALTIME_SHUTOFF_MESSAGE: 'The Real-Time Conditions are unavailable due to technical difficulties. '
VisitorLinks: []
/terminalVerbose/{TerminalID}:
get:
summary: Get comprehensive information for a specific terminal by ID.
operationId: fetchTerminalVerboseByTerminalId
tags:
- terminal-verbose
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalVerboseByTerminalId } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalVerboseByTerminalId({
params: {
"TerminalID": 4
},
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FetchTerminalVerboseByTerminalIdOutput'
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API
value:
TerminalID: 4
TerminalSubjectID: 102
RegionID: 4
TerminalName: Bremerton
TerminalAbbrev: BRE
SortSeq: 30
OverheadPassengerLoading: true
Elevator: true
WaitingRoom: true
FoodService: true
Restroom: true
Bulletins:
- BulletinTitle: Sea/Brem - Chimacum to replace Kaleetan this Sunday, Nov. 16
BulletinText: "<p><span data-contrast=\"none\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW106257461 BCX8\"><span class=\"NormalTextRun SCXW106257461 BCX8\">This Sunday, Nov. 16, the <em>Chimacum</em> will replace the </span><em><span class=\"NormalTextRun SCXW106257461 BCX8\">Kaleetan</span></em><span class=\"NormalTextRun SCXW106257461 BCX8\"> on the </span></span><a class=\"Hyperlink SCXW106257461 BCX8\" href=\"https://wsdot.com/ferries/schedule/scheduledetailbyroute.aspx?route=sea-br\" target=\"_blank\" rel=\"noreferrer noopener\"><span data-contrast=\"none\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun Underlined SCXW106257461 BCX8\"><span class=\"NormalTextRun SCXW106257461 BCX8\" data-ccp-charstyle=\"Hyperlink\">Seattle/Bremerton</span></span></a><span data-contrast=\"none\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW106257461 BCX8\"><span class=\"NormalTextRun SCXW106257461 BCX8\"> route. We do not expect service impacts during this vessel swap. Thank you for your patience as we move boats around the system to complete maintenance, repairs, and inspections.</span></span><span class=\"EOP SCXW106257461 BCX8\" data-ccp-props=\"{"335557856":16777215,"335559739":0}\">\_<br /><br /></span></p>"
BulletinSortSeq: 2
BulletinLastUpdated: '2025-11-15T17:12:31.130Z'
BulletinLastUpdatedSortable: '20251115091231'
- BulletinTitle: 'Sea/Brem-ADA Alert: Elevator on the Kaleetan is temporarily unavailable.'
BulletinText: "<p>The elevator on the <em>Kaleetan</em> is temporarily unavailable. There are facilities located on the car deck level of the ferry. \_Updates will occur when more information is available.</p>"
BulletinSortSeq: 8
BulletinLastUpdated: '2025-11-12T12:42:41.987Z'
BulletinLastUpdatedSortable: '20251112044241'
- BulletinTitle: Sea/Brem - Changes to Seattle/Bremerton Route Schedule This Winter
BulletinText: "<p><span data-contrast=\"none\">For our upcoming winter sailing season starting Dec. 28, there will be changes to the </span><a href=\"https://wsdot.com/ferries/schedule/scheduledetailbyroute.aspx?route=sea-br\"><span data-contrast=\"none\">Seattle/Bremerton route schedule</span></a><span data-contrast=\"auto\"> due to construction. </span><span data-contrast=\"none\">While we're replacing two in-water terminal structures at Bremerton in January, we cannot tie up two boats there overnight. The route’s #1 boat will dock in Seattle during this work.</span><span data-ccp-props=\"{"335557856":16777215,"335559739":0}\">\_</span></p>\r\n<p><span data-contrast=\"none\">Winter schedule changes from Dec. 28, 2025 through March 21, 2026:</span><span data-ccp-props=\"{"335557856":16777215,"335559739":0}\">\_</span></p>\r\n<ul>\r\n<li><span data-contrast=\"none\">No 4:50 a.m. Bremerton departure (early morning commuters can take the </span><a href=\"https://www.kitsaptransit.com/service/fast-ferry/bremerton-fast-ferry\"><span data-contrast=\"none\">Kitsap Fast Ferry’</span></a><span data-contrast=\"none\">s 4:40 a.m. sailing).</span><span data-ccp-props=\"{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335557856":16777215,"335559737":0,"335559738":0,"335559739":0,"335559740":259}\">\_</span></li>\r\n<li><span data-contrast=\"none\">The 3:00 p.m. out of Bremerton will leave at 2:40 p.m.</span><span data-ccp-props=\"{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335557856":16777215,"335559737":0,"335559738":0,"335559739":0,"335559740":259}\">\_</span></li>\r\n<li><span data-contrast=\"none\">Added 10:15 p.m. Bremerton to Seattle sailing.</span><span data-ccp-props=\"{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335557856":16777215,"335559737":0,"335559738":0,"335559739":0,"335559740":259}\">\_</span></li>\r\n<li><span data-contrast=\"none\">On Sundays, the 8:35 a.m. Seattle and 9:50 a.m. Bremerton departures are canceled for refueling (normally done overnight in Bremerton).</span><span data-ccp-props=\"{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335557856":16777215,"335559737":0,"335559738":0,"335559739":0,"335559740":259}\">\_</span></li>\r\n</ul>\r\n<p><span data-ccp-props=\"{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335557856":16777215,"335559737":0,"335559738":0,"335559739":0,"335559740":259}\">\_</span><span data-contrast=\"none\">We will send additional reminders about these schedule changes, including when they are live on the schedule webpage.<br /></span></p>"
BulletinSortSeq: 5
BulletinLastUpdated: '2025-10-17T17:51:24.437Z'
BulletinLastUpdatedSortable: '20251017105124'
Latitude: 47.561847
Longitude: -122.624089
AddressLineOne: 211 1st Street
AddressLineTwo: null
City: Bremerton
State: WA
ZipCode: '98337'
Country: USA
MapLink: https://www.google.com/maps/place/Bremerton+Ferry+Terminal/@47.563433,-122.625944,17z/data=!3m1!4b1!4m2!3m1!1s0x549037829490e63f:0x69f8efd7ef8a5a9f
Directions: "Northbound on Highway 3: Exit SR 3 onto SR 304 which is marked Bremerton and features a ferry icon. Follow SR 304 (which becomes Callow) to Burwell (still SR 304)and follow signs to terminal.<p>\r\nSouthbound on Highway 3: Exit SR 3 at Kitsap Way (SR 310). Continue on SR 310 as it becomes 6th street. Turn right onto Pacific Ave, then left to 1st street which leads directly to tollbooths.<p>\r\nPost-Tunnel Construction: The 959-foot-long tunnel routes off-loading vehicle traffic from the ferry terminal to Burwell Street, resulting in improved pedestrian safety and reduced congestion in Bremerton's waterfront area.<p>\r\n<b>Exiting from the Bremerton Ferry</b><p>\r\nTo Downtown Bremerton: exit the tunnel, go right on Park ave., and go right on 4th Ave.<p>\r\nTo SR 3 Silverdale/Port Orchard: exit the tunnel, continue west on SR304/Burwell St., follow signs to SR 3/Silverdale/Port Orchard.<p>\r\nTo East Bremerton: exit the tunnel, go right on Warren Ave.<p>\r\n<b>No pedestrians or bicycles allowed in tunnel.</b><p>\r\n<b>Dropping off or picking up?</b><br>\r\nThe pick up or drop off points are located on 1st street and 2nd street just north of the terminal. "
DispGISZoomLoc:
- ZoomLevel: 0
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 1
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 2
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 3
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 4
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 5
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 6
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 7
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 8
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 9
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 10
Latitude: 47.561847
Longitude: -122.624089
- ZoomLevel: 11
Latitude: 47.561418
Longitude: -122.632943
- ZoomLevel: 12
Latitude: 47.56165
Longitude: -122.629167
- ZoomLevel: 13
Latitude: 47.56304
Longitude: -122.625219
- ZoomLevel: 14
Latitude: 47.562345
Longitude: -122.624875
- ZoomLevel: 15
Latitude: 47.562026
Longitude: -122.624789
- ZoomLevel: 16
Latitude: 47.5622
Longitude: -122.624854
- ZoomLevel: 17
Latitude: 47.562207
Longitude: -122.624843
IsNoFareCollected: null
NoFareCollectedMsg: null
ParkingInfo: "There are many parking lots near the Bremerton terminal. All are within 3.5 blocks of the terminal. Time and price options are posted at each lot. All offer 24-hour rates for overnight or extended stays. Parking is also available under the Bremerton Hotel/Conference Center and city garage three blocks north of terminal. For more information contact Impark Parking Services at 360-616-4808 or at the <a href=\"http://www.ci.bremerton.wa.us/453/Parking\" class=\"content_text\"><strong>City of Bremerton</a></strong> website.<p>\r\n\r\nThe Kitsap Transit bus routes to the Bremerton Ferry Terminal are 11, 15, 20, 21, 22, 24, 25, & 26. For more detailed bus information, please visit Kitsap Transit's <a href=\"http://www.kitsaptransit.com/rider-resources/bus-transfer-centers\" class=\"content_text\"><strong>Rider Resources</a></strong> page. <p>\r\n\r\nPickup and dropoff information at the Bremerton Transit Center is available <a href=\"http://www.kitsaptransit.com/uploads/images/staging/crbdisabledparkingmap.gif\"\r\n<a href=\"\"class=\"content_text\">here</a>."
ParkingShuttleInfo: null
AirportInfo: null
AirportShuttleInfo: "The <a href=\"http://www.kitsapairporter.com/\" class=\"content_text\">Kitsap Airporter</a> provides bus service from Sea-Tac International Airport to the Kitsap Peninsula.<p>\r\n "
MotorcycleInfo: "While motorcycles are not, by Washington Administrative Code (WAC 468-300-700), a preferential loading category of users, they are often loaded prior to automobiles for operational and staging purposes. Arrival at the dock after vehicle load has commenced requires motorcycles to wait until all cars have been loaded for the next motorcycle loading opportunity. Motorcycles should proceed, while on the dock, at no more than 10 mph. Use caution when car decks are wet. The following information details specific staging for this terminal:<p>\r\n<b>Motorcycle Fare Purchase/Redemption</b><br>\r\nPurchase tickets at the auto tollbooths, at the kiosk inside the terminal waiting room, or online in advance.<p>\r\n<b>Motorcycle Entry/Staging</b><br>\r\nQueue with automobiles prior to tollbooth. Sales and fare collection occur at tollbooth main window, no transactions through back window. Staging varies by time of day and slip in use, ask the ticket sellers or traffic attendants where to stage.<p>\r\n<b>Motorcycle Loading</b><br>\r\nLoading order: Bicycles, motorcycles, vehicles, late arriving motorcycles as space permits.<br>\r\nDuring commute hours, a motorcycle mid-load may occur.<p>\r\n<b>Motorcycle Special Communication</b><br>\r\nFor motorcycles arriving after vehicle load concludes, space availability will determine ability to board sailing.\r\n"
TruckInfo: "WSF requires trucks with a gross vehicle weight of over 80,000 lbs and/or over 8’6” wide to have “travel approval” before crossing any of our routes. Vessels on this route have a limited height clearance and trucks may be loaded out of sequence.<p>\r\nTrucks that have a gross vehicle weight of over 80,000 lbs but are hauling less than 80,000 lbs will need to provide a weight slip.<p>\r\nPlease fill out our <A HREF=\"https://wsdot.wa.gov/ferries/rider-information/trucks\" class=\"content_text\">Oversized/Overweight Vehicle Travel</A> form and email it to wsfinfo@wsdot.wa.gov. Please allow three business days for completion and approval. You can contact us at anytime for status updates at (206)464-6400.</p>"
BikeInfo: "There is no payment for passengers or bicycles traveling from Bremerton to Seattle. Bicyclists may bypass the line of vehicle traffic to get onto the ferry dock. A rider does not need to stop at the tollbooth traveling eastbound. Bicyclists should arrive 20 minutes prior to departure time to be loaded at the beginning of loading process. If a bicyclist arrives after vehicle loading has begun, they will be loaded at the end of the load. There are five racks at the terminal which hold 28 bikes.<p>\r\n \r\n"
TrainInfo: null
TaxiInfo: null
HovInfo: "Carpool/Vanpools must be ticketed and in line 10 minutes before scheduled sailing time to receive preferential loading. If you are late, you will be loaded on a space available basis at the end of the loading. \r\nFor information or to register for our rideshare program see our<a href=\"https://wsdot.wa.gov/ferries/rider-information/groups-events/carpools-vanpools\" class=\"content_text\">carpools and vanpools</a> page. </p>"
TransitLinks:
- LinkURL: http://www.kitsaptransit.com/service/routed-buses
LinkName: Kitsap Transit
SortSeq: null
- LinkURL: http://www.kitsaptransit.com/service/category/foot-ferry
LinkName: Kitsap Transit Foot Ferry
SortSeq: null
WaitTimes:
- RouteID: null
RouteName: null
WaitTimeNotes: The morning departures through the 7:20am sailing are the most heavily traveled with vehicle traffic. Vehicle drivers are advised to arrive 45-60 minutes prior to sailing. In the afternoon the 3:00 p.m. sailing may be busy with a 30 minute advance arrival suggested. For non-peak travel, a 20 minute advance arrival is suggested. Walk-on passengers should arrive at least 15 minutes prior to sailing.
WaitTimeLastUpdated: '2020-08-18T19:31:10.000Z'
WaitTimeIVRNotes: The morning departures through the 7 20 AM sailing are the most heavily traveled with vehicle traffic. Vehicle drivers are advised to arrive 45 to 60 minutes prior to sailing. In the afternoon the 3 PM sailing may be busy with a 30 minute advance arrival suggested. For non peak travel, a 20 minute advance arrival is suggested. Walk on Passengers should arrive at least 15 minutes prior to sailing.
RealtimeIntroMsg: null
AdditionalInfo: null
LostAndFoundInfo: "If you lose something on this route, it will be taken to the customer information booth at the Seattle Ferry Terminal (Colman Dock). The booth is open every day from 9:00 a.m. to 7:00 p.m. Any lost items will be kept for 30 days.<p>\r\n\r\nYou can call (206) 515-3439 or email WSFLost_Found@wsdot.wa.gov for help from 9:00 a.m. to 5:00 p.m., Monday to Friday. If you contact us outside these hours, we will reply the next business day.<p>\r\n\r\nOur Information Agents are also available to help with lost and found questions from 7:00 a.m. to 5:30 p.m. every day at (206) 464-6400 or 1-888-808-7977. "
SecurityInfo: WSF has implemented a U.S. Coast Guard approved security plan, for more information please visit our <a href="https://wsdot.wa.gov/ferries/rider-information/safety" class="content_text"><strong>Safety and Security</a></strong> page.</p>
ConstructionInfo: null
FoodServiceInfo: "<b>Galley Hours <p>(Bremerton Route - Vessel #1)</b>\r\n<li>4:45 a.m. - 9:30 p.m. Daily</li><p>\r\n<b>Galley Hours <p>(Bremerton Route - Vessel #2)</b>\r\n<li>6:15 a.m. - 8:15 p.m. Daily</li>"
AdaInfo: "For more details on how to drop off/pickup at the Bremerton Transit Center for disabled passengers please check <a href=\"http://kitsaptransit.com/uploads/images/staging/crbdisabledparkingmap.gif\"class=\"content_text\">Disabled Pick-Up/Drop-off Map.</a><p>\r\n"
FareDiscountInfo: "We offer seniors (65+), persons with disabilities and passengers with a Medicare card, or other eligibility verification, travel at half the regular passenger fare rate. Children and youth under the age of 19 travel free, although teenagers behind the wheel of a motor vehicle must pay the adult vehicle and driver fare.<p>\r\nMulti-ride cards are good for 90 days from the date of purchase and are <b>non-refundable</b>.<p>For more information check <a href=\"http://www.wsdot.wa.gov/ferries/fares/\" class=\"content_text\"><strong>Fares.</a></strong><p>\r\n<b>Fare Purchase/Redemption</b><br>\r\nPurchase and redeem tickets at the auto tollbooths. Tickets may be purchased at the passenger booth, or at the kiosk inside the terminal waiting room, or online in advance.<br><p>\r\n<b>Pre-purchasing Wave2Go tickets does not guarantee a space on the vessel.</b>"
TallySystemInfo: null
ChamberOfCommerce:
LinkURL: http://www.bremertonchamber.org/
LinkName: Bremerton Chamber of Commerce
SortSeq: null
FacInfo: Contact the <a href="https://wsdot.wa.gov/ferries/about-us/community-participation" class="content_text">Ferry Advisory Committee</a> chair representing your community with suggestions or concerns about ferry service.</p>
ResourceStatus: null
TypeDesc: Passenger and Car
REALTIME_SHUTOFF_FLAG: false
REALTIME_SHUTOFF_MESSAGE: 'The Approximate Vehicle Spaces Available in Holding Area tool is currently unavailable due to technical issues. '
VisitorLinks: []
/terminalWaitTimes:
get:
summary: List wait time information for all terminals.
operationId: fetchTerminalWaitTimes
tags:
- terminal-wait-times
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalWaitTimes } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalWaitTimes({
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
type: object
properties:
TerminalID:
type: integer
description: Numeric ID of the terminal.
TerminalSubjectID:
type: integer
description: Numeric ID of the terminal in the WSF subject management system.
RegionID:
type: integer
description: Numeric ID of the geographical region where the terminal is located.
TerminalName:
type: string
nullable: true
description: Display name of the terminal.
TerminalAbbrev:
type: string
nullable: true
description: Abbreviation code for the terminal.
SortSeq:
type: integer
description: Display sort order; lower values appear first in lists.
WaitTimes:
type: array
nullable: true
items:
type: object
properties:
RouteID:
type: integer
nullable: true
description: Numeric ID of the route associated with the wait time.
RouteName:
type: string
nullable: true
description: Display name of the route associated with the wait time.
WaitTimeNotes:
type: string
nullable: true
description: Text notes detailing wait time conditions and tips for vehicles and passengers.
format: date-time
WaitTimeLastUpdated:
type: string
nullable: true
description: UTC datetime when the wait time information was last updated.
format: date-time
WaitTimeIVRNotes:
type: string
nullable: true
description: Wait time notes formatted for Interactive Voice Response systems.
format: date-time
required:
- RouteID
- RouteName
- WaitTimeNotes
- WaitTimeLastUpdated
- WaitTimeIVRNotes
description: Wait time information including route association, notes, IVR notes, and update date.
description: Array of wait time information associated with the terminal.
required:
- TerminalID
- TerminalSubjectID
- RegionID
- TerminalName
- TerminalAbbrev
- SortSeq
- WaitTimes
description: Terminal wait time information including terminal identification and wait time list.
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API (showing first item of 20 total)
value:
- TerminalID: 1
TerminalSubjectID: 111
RegionID: 1
TerminalName: Anacortes
TerminalAbbrev: ANA
SortSeq: 10
WaitTimes:
- RouteID: null
RouteName: null
WaitTimeNotes: 'Vehicle reservations to the San Juan Islands are available at www.takeaferry.com or by calling 511, and must be made at least 2 hours prior to sailing time. A 45 to 60 minute advance arrival is advised for reservation holders. Reservation holders who check in later than 30 minutes prior to sailing time will travel stand by. Walk-on passengers should arrive at least 15 minutes prior to departure sailing. '
WaitTimeLastUpdated: '2020-08-18T19:31:10.000Z'
WaitTimeIVRNotes: Vehicle reservations to the San Juan Islands are available online or by speaking to an information agent, and must be made at least 2 hours prior to sailing time. A 45 to 60 minute advance arrival is advised for reservation holders. Reservation holders who check in later than 30 minutes prior to sailing time will travel stand by. Walk on passengers should arrive at least 15 minutes prior to departure. To speak with an information agent please press zero.
/terminalWaitTimes/{TerminalID}:
get:
summary: Get wait time information for a specific terminal by ID.
operationId: fetchTerminalWaitTimesByTerminalId
tags:
- terminal-wait-times
x-codeSamples:
- lang: JavaScript
source: |-
import { fetchTerminalWaitTimesByTerminalId } from 'ws-dottie/wsf-terminals/core';
const data = await fetchTerminalWaitTimesByTerminalId({
params: {
"TerminalID": 11
},
fetchMode: 'native',
validate: true
});
console.log(data);
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FetchTerminalWaitTimesByTerminalIdOutput'
examples:
sampleResponse:
summary: Sample response
description: Example of a successful response from the API
value:
TerminalID: 11
TerminalSubjectID: 116
RegionID: 2
TerminalName: 'Coupeville '
TerminalAbbrev: COU
SortSeq: 40
WaitTimes:
- RouteID: null
RouteName: null
WaitTimeNotes: WSF recommends reservation holders arrive 30-45 minutes prior to departure to ensure timely processing and boarding. Reservations for vehicles and motorcycles can be made at www.takeaferry.com or by calling 5-1-1 at least two hours prior to departure. Walk-on passengers should arrive at least 15 minutes prior to departure.
WaitTimeLastUpdated: '2020-08-18T19:31:10.000Z'
WaitTimeIVRNotes: W S F recommends reservation holders arrive 30 to 45 minutes prior to departure to ensure timely processing and boarding. Reservations for vehicles and motorcycles can be made online or by speaking to an information agent at least two hours prior to departure. Walk on passengers should arrive at least 15 minutes prior to departure.
tags:
- name: cache-flush-date-terminals
description: Cache invalidation timestamp for static wsf-terminals data.
x-description: Timestamp indicating when static endpoint data for the wsf-terminals API was last updated. Use this endpoint to determine when to invalidate cached terminal information. When the returned date changes, refresh your cached data. Polled automatically by ws-dottie useQuery hooks.
x-cacheStrategy: STATIC
x-useCases:
- Detect when static terminal data has changed and invalidate caches.
- Poll periodically to refresh cached terminal information.
- Coordinate cache invalidation across multiple terminal endpoints.
- name: terminal-basics
description: Essential terminal details including identification, amenities, and regional assignments.
x-description: Basic terminal information for Washington State Ferry terminals including IDs, names, abbreviations, amenities (overhead passenger loading, elevator, waiting room, food service, restrooms), and sort order. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.
x-cacheStrategy: STATIC
x-useCases:
- Display terminal lists with basic identification and amenities.
- Plan ferry trips with accessibility and facility information.
- Filter terminals by region or amenities.
- name: terminal-bulletins
description: Service alerts and notifications for ferry terminals.
x-description: Important notices and alerts associated with Washington State Ferry terminals including service updates, travel advisories, and critical announcements. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.
x-cacheStrategy: STATIC
x-useCases:
- Display terminal alerts and service notices in rider apps.
- Show travel advisories and critical announcements.
- Monitor terminal-specific and system-wide notifications.
- name: terminal-locations
description: Geographical location data for ferry terminals.
x-description: Location information for Washington State Ferry terminals including coordinates, addresses, map links, driving directions, and GIS zoom-level coordinates. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.
x-cacheStrategy: STATIC
x-useCases:
- Display terminal locations on maps and navigation systems.
- Provide driving directions and address information.
- Integrate with GIS mapping applications.
- name: terminal-sailing-space
description: Real-time sailing space availability for upcoming departures.
x-description: Terminal condition data including drive-up and reservation spaces available for select departures, vessel information, and cancellation status. Data changes frequently (potentially every 5 seconds). Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group. Do not cache results for extended periods.
x-cacheStrategy: STATIC
x-useCases:
- Display real-time space availability for upcoming sailings.
- Show drive-up and reservation space counts with color indicators.
- Monitor vessel assignments and departure cancellations.
- name: terminal-transports
description: Transportation options and parking information for terminals.
x-description: Commuter information for Washington State Ferry terminals including parking details, vehicle-specific tips (motorcycle, truck, bike), airport information, transit links, and HOV/carpool information. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.
x-cacheStrategy: STATIC
x-useCases:
- Display parking information and rates for terminal planning.
- Provide vehicle-specific tips for motorcycles, trucks, and bicycles.
- Show transit links and airport connection information.
- name: terminal-verbose
description: Comprehensive terminal information combining all terminal data types.
x-description: Complete terminal information combining data from terminalBasics, terminalBulletins, terminalLocations, terminalTransports, and terminalWaitTimes endpoints. Includes identification, amenities, bulletins, locations, transportation info, sailing space, wait times, and additional details. Use when you need to reduce API calls and don't mind larger payloads. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.
x-cacheStrategy: STATIC
x-useCases:
- Retrieve all terminal information in a single API call.
- Reduce application chattiness when comprehensive data is needed.
- Build integrated terminal information displays.
- name: terminal-wait-times
description: Wait time conditions and travel tips for vehicles and passengers.
x-description: Current wait conditions and travel recommendations for both vehicles and walk-on passengers at Washington State Ferry terminals including wait time notes, IVR notes, route information, and update dates. Use the cacheFlushDate endpoint for this API to determine when to invalidate cached data for this group.
x-cacheStrategy: STATIC
x-useCases:
- Display wait time information and arrival recommendations.
- Provide travel tips for optimal departure timing.
- Show route-specific wait time conditions.