ws-dottie
Version:
Your friendly TypeScript companion for Washington State transportation APIs - WSDOT and WSF data with smart caching and React Query integration
458 lines • 18.8 kB
JSON
{
"openapi": "3.0.0",
"info": {
"title": "Wsdot Travel Times API",
"version": "1.0.0",
"description": "Wsdot Travel Times API - Washington State Department of Transportation APIs"
},
"servers": [
{
"url": "https://www.wsdot.wa.gov/traffic/api/traveltimes/traveltimesrest.svc",
"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."
},
"FetchTravelTimeByIdOutput": {
"type": "object",
"properties": {
"AverageTime": {
"type": "number",
"description": "Average travel time to complete the route in minutes based on historical data."
},
"CurrentTime": {
"type": "number",
"description": "Current estimated travel time to complete the route in minutes based on real-time conditions."
},
"Description": {
"type": "string",
"nullable": true,
"description": "Human-readable description of the travel time route."
},
"Distance": {
"type": "number",
"description": "Total route distance from start to end point in miles."
},
"EndPoint": {
"type": "object",
"nullable": true,
"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 where the travel time route ends."
},
"Name": {
"type": "string",
"nullable": true,
"description": "Display name of the travel time route."
},
"StartPoint": {
"type": "object",
"nullable": true,
"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 where the travel time route begins."
},
"TimeUpdated": {
"type": "string",
"description": "UTC datetime when the travel time data was last updated.",
"format": "date-time"
},
"TravelTimeID": {
"type": "number",
"description": "Numeric ID of the travel time route."
}
},
"required": [
"AverageTime",
"CurrentTime",
"Description",
"Distance",
"EndPoint",
"Name",
"StartPoint",
"TimeUpdated",
"TravelTimeID"
],
"description": "Travel time route information including current and average travel times, route distance, start/end point locations, and update timestamp."
}
},
"parameters": {}
},
"paths": {
"/getTravelTimesAsJson": {
"get": {
"summary": "List travel time data for all available routes.",
"operationId": "fetchTravelTimes",
"tags": [
"travel-time-routes"
],
"x-codeSamples": [
{
"lang": "JavaScript",
"source": "import { fetchTravelTimes } from 'ws-dottie/wsdot-travel-times/core';\n\nconst data = await fetchTravelTimes({\n fetchMode: 'native',\n validate: true\n});\n\nconsole.log(data);"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"AverageTime": {
"type": "number",
"description": "Average travel time to complete the route in minutes based on historical data."
},
"CurrentTime": {
"type": "number",
"description": "Current estimated travel time to complete the route in minutes based on real-time conditions."
},
"Description": {
"type": "string",
"nullable": true,
"description": "Human-readable description of the travel time route."
},
"Distance": {
"type": "number",
"description": "Total route distance from start to end point in miles."
},
"EndPoint": {
"type": "object",
"nullable": true,
"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 where the travel time route ends."
},
"Name": {
"type": "string",
"nullable": true,
"description": "Display name of the travel time route."
},
"StartPoint": {
"type": "object",
"nullable": true,
"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 where the travel time route begins."
},
"TimeUpdated": {
"type": "string",
"description": "UTC datetime when the travel time data was last updated.",
"format": "date-time"
},
"TravelTimeID": {
"type": "number",
"description": "Numeric ID of the travel time route."
}
},
"required": [
"AverageTime",
"CurrentTime",
"Description",
"Distance",
"EndPoint",
"Name",
"StartPoint",
"TimeUpdated",
"TravelTimeID"
],
"description": "Travel time route information including current and average travel times, route distance, start/end point locations, and update timestamp."
}
},
"examples": {
"sampleResponse": {
"summary": "Sample response",
"description": "Example of a successful response from the API (showing first item of 163 total)",
"value": [
{
"AverageTime": 26,
"CurrentTime": 26,
"Description": "Everett to Downtown Seattle using HOV lanes",
"Distance": 26.72,
"EndPoint": {
"Description": "I-5 @ University St in Seattle",
"Direction": "S",
"Latitude": 47.609294,
"Longitude": -122.331759,
"MilePost": 165.83,
"RoadName": "005"
},
"Name": "Everett-Seattle HOV",
"StartPoint": {
"Description": "I-5 @ 41st St in Everett",
"Direction": "S",
"Latitude": 47.964146,
"Longitude": -122.199237,
"MilePost": 192.55,
"RoadName": "005"
},
"TimeUpdated": "2025-11-15T17:40:00.000Z",
"TravelTimeID": 2
}
]
}
}
}
}
}
}
}
},
"/getTravelTimeAsJson?TravelTimeID={TravelTimeID}": {
"get": {
"summary": "Get travel time data for a specific route by ID.",
"operationId": "fetchTravelTimeById",
"tags": [
"travel-time-routes"
],
"x-codeSamples": [
{
"lang": "JavaScript",
"source": "import { fetchTravelTimeById } from 'ws-dottie/wsdot-travel-times/core';\n\nconst data = await fetchTravelTimeById({\n params: {\n \"TravelTimeID\": 1\n },\n fetchMode: 'native',\n validate: true\n});\n\nconsole.log(data);"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FetchTravelTimeByIdOutput"
},
"examples": {
"sampleResponse": {
"summary": "Sample response",
"description": "Example of a successful response from the API",
"value": {
"AverageTime": 27,
"CurrentTime": 26,
"Description": "Everett to Downtown Seattle",
"Distance": 26.72,
"EndPoint": {
"Description": "I-5 @ University St in Seattle",
"Direction": "S",
"Latitude": 47.609294,
"Longitude": -122.331759,
"MilePost": 165.83,
"RoadName": "005"
},
"Name": "Everett-Seattle",
"StartPoint": {
"Description": "I-5 @ 41st St in Everett",
"Direction": "S",
"Latitude": 47.964146,
"Longitude": -122.199237,
"MilePost": 192.55,
"RoadName": "005"
},
"TimeUpdated": "2025-11-15T17:40:00.000Z",
"TravelTimeID": 1
}
}
}
}
}
}
}
}
}
},
"tags": [
{
"name": "travel-time-routes",
"description": "Current and average travel times for major Washington State highway routes.",
"x-description": "Travel time data for routes in Seattle, Tacoma, and Snoqualmie Pass areas, including distance, start/end points, and comparison of current vs. average times.",
"x-cacheStrategy": "STATIC",
"x-useCases": [
"Plan travel routes and estimate arrival times.",
"Compare current conditions against historical averages to identify delays.",
"Optimize departure times based on real-time traffic conditions."
],
"x-updateFrequency": "5m"
}
]
}