ws-dottie
Version:
Your friendly TypeScript companion for Washington State transportation APIs - WSDOT and WSF data with smart caching and React Query integration
614 lines • 25.4 kB
JSON
{
"openapi": "3.0.0",
"info": {
"title": "Wsdot Highway Cameras API",
"version": "1.0.0",
"description": "Wsdot Highway Cameras API - Washington State Department of Transportation APIs"
},
"servers": [
{
"url": "https://www.wsdot.wa.gov/traffic/api/highwaycameras/highwaycamerasrest.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."
},
"FetchHighwayCameraByCameraIdOutput": {
"type": "object",
"properties": {
"CameraID": {
"type": "number",
"description": "Numeric ID of the camera."
},
"CameraLocation": {
"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 information for camera placement, including route and milepost."
},
"CameraOwner": {
"type": "string",
"nullable": true,
"description": "Organization or agency that owns the camera."
},
"Description": {
"type": "string",
"nullable": true,
"description": "Short descriptive text about the camera's purpose or location."
},
"DisplayLatitude": {
"type": "number",
"description": "Latitude of the camera display position in decimal degrees."
},
"DisplayLongitude": {
"type": "number",
"description": "Longitude of the camera display position in decimal degrees."
},
"ImageHeight": {
"type": "number",
"description": "Pixel height of the camera image."
},
"ImageURL": {
"type": "string",
"nullable": true,
"description": "URL where the camera image is stored and accessible."
},
"ImageWidth": {
"type": "number",
"description": "Pixel width of the camera image."
},
"IsActive": {
"type": "boolean",
"description": "True if the camera is currently active and being updated; otherwise false."
},
"OwnerURL": {
"type": "string",
"nullable": true,
"description": "Website URL for the camera owner organization."
},
"Region": {
"type": "string",
"nullable": true,
"description": "WSDOT region code that owns the camera."
},
"SortOrder": {
"type": "number",
"description": "Display sort order; lower values appear first when sorting cameras by location."
},
"Title": {
"type": "string",
"nullable": true,
"description": "Display name of the camera."
}
},
"required": [
"CameraID",
"CameraLocation",
"CameraOwner",
"Description",
"DisplayLatitude",
"DisplayLongitude",
"ImageHeight",
"ImageURL",
"ImageWidth",
"IsActive",
"OwnerURL",
"Region",
"SortOrder",
"Title"
],
"description": "Highway camera information including location data, image URLs, status, ownership, and display metadata."
}
},
"parameters": {}
},
"paths": {
"/searchCamerasAsJson": {
"get": {
"summary": "Search cameras by route and milepost range.",
"operationId": "searchHighwayCamerasByRouteAndMilepost",
"tags": [
"cameras"
],
"x-codeSamples": [
{
"lang": "JavaScript",
"source": "import { searchHighwayCamerasByRouteAndMilepost } from 'ws-dottie/wsdot-highway-cameras/core';\n\nconst data = await searchHighwayCamerasByRouteAndMilepost({\n params: {\n \"StateRoute\": \"I-5\",\n \"StartingMilepost\": 10,\n \"EndingMilepost\": 20\n },\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": {
"CameraID": {
"type": "number",
"description": "Numeric ID of the camera."
},
"CameraLocation": {
"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 information for camera placement, including route and milepost."
},
"CameraOwner": {
"type": "string",
"nullable": true,
"description": "Organization or agency that owns the camera."
},
"Description": {
"type": "string",
"nullable": true,
"description": "Short descriptive text about the camera's purpose or location."
},
"DisplayLatitude": {
"type": "number",
"description": "Latitude of the camera display position in decimal degrees."
},
"DisplayLongitude": {
"type": "number",
"description": "Longitude of the camera display position in decimal degrees."
},
"ImageHeight": {
"type": "number",
"description": "Pixel height of the camera image."
},
"ImageURL": {
"type": "string",
"nullable": true,
"description": "URL where the camera image is stored and accessible."
},
"ImageWidth": {
"type": "number",
"description": "Pixel width of the camera image."
},
"IsActive": {
"type": "boolean",
"description": "True if the camera is currently active and being updated; otherwise false."
},
"OwnerURL": {
"type": "string",
"nullable": true,
"description": "Website URL for the camera owner organization."
},
"Region": {
"type": "string",
"nullable": true,
"description": "WSDOT region code that owns the camera."
},
"SortOrder": {
"type": "number",
"description": "Display sort order; lower values appear first when sorting cameras by location."
},
"Title": {
"type": "string",
"nullable": true,
"description": "Display name of the camera."
}
},
"required": [
"CameraID",
"CameraLocation",
"CameraOwner",
"Description",
"DisplayLatitude",
"DisplayLongitude",
"ImageHeight",
"ImageURL",
"ImageWidth",
"IsActive",
"OwnerURL",
"Region",
"SortOrder",
"Title"
],
"description": "Highway camera information including location data, image URLs, status, ownership, and display metadata."
}
},
"examples": {
"sampleResponse": {
"summary": "Sample response",
"description": "Example of a successful response from the API (showing first item of 12 total)",
"value": [
{
"CameraID": 9290,
"CameraLocation": {
"Description": null,
"Direction": "B",
"Latitude": 45.753907,
"Longitude": -122.66372,
"MilePost": 10,
"RoadName": "I-5"
},
"CameraOwner": null,
"Description": null,
"DisplayLatitude": 45.753907,
"DisplayLongitude": -122.66372,
"ImageHeight": 249,
"ImageURL": "https://images.wsdot.wa.gov/sw/005vc00976.jpg",
"ImageWidth": 335,
"IsActive": true,
"OwnerURL": null,
"Region": "SW",
"SortOrder": 1000,
"Title": "I-5 at MP 9.7: N of 179th St"
}
]
}
}
}
}
}
}
}
},
"/getCameraAsJson?CameraID={CameraID}": {
"get": {
"summary": "Get camera details by camera ID.",
"operationId": "fetchHighwayCameraByCameraId",
"tags": [
"cameras"
],
"x-codeSamples": [
{
"lang": "JavaScript",
"source": "import { fetchHighwayCameraByCameraId } from 'ws-dottie/wsdot-highway-cameras/core';\n\nconst data = await fetchHighwayCameraByCameraId({\n params: {\n \"CameraID\": 9818\n },\n fetchMode: 'native',\n validate: true\n});\n\nconsole.log(data);"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FetchHighwayCameraByCameraIdOutput"
},
"examples": {
"sampleResponse": {
"summary": "Sample response",
"description": "Example of a successful response from the API",
"value": {
"CameraID": 9818,
"CameraLocation": {
"Description": null,
"Direction": "W",
"Latitude": 48.498333,
"Longitude": -122.6625,
"MilePost": 1,
"RoadName": "Airports"
},
"CameraOwner": "WSDOT Aviation",
"Description": null,
"DisplayLatitude": 48.498333,
"DisplayLongitude": -122.6625,
"ImageHeight": 208,
"ImageURL": "https://images.wsdot.wa.gov/airports/anafuel.jpg",
"ImageWidth": 352,
"IsActive": true,
"OwnerURL": "https://wsdot.wa.gov/travel/aviation/airports-list/anacortes",
"Region": "WA",
"SortOrder": 5300,
"Title": "Anacortes Airport Fuel Pump"
}
}
}
}
}
}
}
}
},
"/getCamerasAsJson": {
"get": {
"summary": "List all highway cameras statewide.",
"operationId": "fetchHighwayCameras",
"tags": [
"cameras"
],
"x-codeSamples": [
{
"lang": "JavaScript",
"source": "import { fetchHighwayCameras } from 'ws-dottie/wsdot-highway-cameras/core';\n\nconst data = await fetchHighwayCameras({\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": {
"CameraID": {
"type": "number",
"description": "Numeric ID of the camera."
},
"CameraLocation": {
"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 information for camera placement, including route and milepost."
},
"CameraOwner": {
"type": "string",
"nullable": true,
"description": "Organization or agency that owns the camera."
},
"Description": {
"type": "string",
"nullable": true,
"description": "Short descriptive text about the camera's purpose or location."
},
"DisplayLatitude": {
"type": "number",
"description": "Latitude of the camera display position in decimal degrees."
},
"DisplayLongitude": {
"type": "number",
"description": "Longitude of the camera display position in decimal degrees."
},
"ImageHeight": {
"type": "number",
"description": "Pixel height of the camera image."
},
"ImageURL": {
"type": "string",
"nullable": true,
"description": "URL where the camera image is stored and accessible."
},
"ImageWidth": {
"type": "number",
"description": "Pixel width of the camera image."
},
"IsActive": {
"type": "boolean",
"description": "True if the camera is currently active and being updated; otherwise false."
},
"OwnerURL": {
"type": "string",
"nullable": true,
"description": "Website URL for the camera owner organization."
},
"Region": {
"type": "string",
"nullable": true,
"description": "WSDOT region code that owns the camera."
},
"SortOrder": {
"type": "number",
"description": "Display sort order; lower values appear first when sorting cameras by location."
},
"Title": {
"type": "string",
"nullable": true,
"description": "Display name of the camera."
}
},
"required": [
"CameraID",
"CameraLocation",
"CameraOwner",
"Description",
"DisplayLatitude",
"DisplayLongitude",
"ImageHeight",
"ImageURL",
"ImageWidth",
"IsActive",
"OwnerURL",
"Region",
"SortOrder",
"Title"
],
"description": "Highway camera information including location data, image URLs, status, ownership, and display metadata."
}
},
"examples": {
"sampleResponse": {
"summary": "Sample response",
"description": "Example of a successful response from the API (showing first item of 1648 total)",
"value": [
{
"CameraID": 9818,
"CameraLocation": {
"Description": null,
"Direction": "W",
"Latitude": 48.498333,
"Longitude": -122.6625,
"MilePost": 1,
"RoadName": "Airports"
},
"CameraOwner": "WSDOT Aviation",
"Description": null,
"DisplayLatitude": 48.498333,
"DisplayLongitude": -122.6625,
"ImageHeight": 208,
"ImageURL": "https://images.wsdot.wa.gov/airports/anafuel.jpg",
"ImageWidth": 352,
"IsActive": true,
"OwnerURL": "https://wsdot.wa.gov/travel/aviation/airports-list/anacortes",
"Region": "WA",
"SortOrder": 5300,
"Title": "Anacortes Airport Fuel Pump"
}
]
}
}
}
}
}
}
}
}
},
"tags": [
{
"name": "cameras",
"description": "Traffic monitoring cameras on Washington state highways.",
"x-description": "Camera locations, image URLs, status, and metadata for real-time traffic condition visibility.",
"x-cacheStrategy": "STATIC",
"x-useCases": [
"Display live camera feeds in traffic monitoring applications.",
"Show road conditions and weather impacts for route planning.",
"Provide visual traffic status in traveler information systems."
],
"x-updateFrequency": "5m"
}
]
}