UNPKG

ws-dottie

Version:

Your friendly TypeScript companion for Washington State transportation APIs - WSDOT and WSF data with smart caching and React Query integration

1,437 lines 61.6 kB
{
  "openapi": "3.0.0",
  "info": {
    "title": "Wsdot Toll Rates API",
    "version": "1.0.0",
    "description": "Wsdot Toll Rates API - Washington State Department of Transportation APIs"
  },
  "servers": [
    {
      "url": "https://www.wsdot.wa.gov/traffic/api/tollrates/tollratesrest.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."
      },
      "FetchTollTripRatesOutput": {
        "type": "object",
        "properties": {
          "LastUpdated": {
            "type": "string",
            "description": "UTC datetime when toll trip rates were last updated.",
            "format": "date-time"
          },
          "Trips": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "object",
              "properties": {
                "Message": {
                  "type": "string",
                  "nullable": true,
                  "description": "Toll rate message or display text (e.g., 'FREE', '$4.95'). Empty string when unavailable."
                },
                "MessageUpdateTime": {
                  "type": "string",
                  "description": "UTC datetime when toll rate message was last updated.",
                  "format": "date-time"
                },
                "Toll": {
                  "type": "number",
                  "description": "Toll amount for trip in dollars."
                },
                "TripName": {
                  "type": "string",
                  "nullable": true,
                  "description": "Unique identifier for toll trip route (e.g., '405tp02752', '520tp00422', '099tp03060')."
                }
              },
              "required": [
                "Message",
                "MessageUpdateTime",
                "Toll",
                "TripName"
              ],
              "description": "Toll rate information for a single trip including toll amount, message, and update timestamp."
            },
            "description": "Array of trip rate information for all toll trips. Null when trip rates are unavailable."
          },
          "Version": {
            "type": "integer",
            "description": "Version number of toll trips data. Increments when trip rates data is updated."
          }
        },
        "required": [
          "LastUpdated",
          "Trips",
          "Version"
        ],
        "description": "Container for toll trip rates including update timestamp, array of trip rates, and version number."
      },
      "FetchTollTripVersionOutput": {
        "type": "object",
        "properties": {
          "TimeStamp": {
            "type": "string",
            "description": "UTC datetime when version was created or last updated.",
            "format": "date-time"
          },
          "Version": {
            "type": "integer",
            "description": "Version number for toll trip rates data. Increments when trip rates data is updated."
          }
        },
        "required": [
          "TimeStamp",
          "Version"
        ],
        "description": "Version information for toll trip rates data including version number and timestamp."
      }
    },
    "parameters": {}
  },
  "paths": {
    "/getTollRatesAsJson": {
      "get": {
        "summary": "List current toll rates for all HOV toll lanes statewide.",
        "operationId": "fetchTollRates",
        "tags": [
          "toll-rates"
        ],
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "source": "import { fetchTollRates } from 'ws-dottie/wsdot-toll-rates/core';\n\nconst data = await fetchTollRates({\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": {
                      "EndLatitude": {
                        "type": "number",
                        "description": "Latitude of trip end point in decimal degrees."
                      },
                      "EndLocationName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Display name of trip end location (e.g., 'SR 516', 'SR 18')."
                      },
                      "EndLongitude": {
                        "type": "number",
                        "description": "Longitude of trip end point in decimal degrees."
                      },
                      "EndMilepost": {
                        "type": "number",
                        "description": "Milepost marker for trip end point."
                      },
                      "StartLatitude": {
                        "type": "number",
                        "description": "Latitude of trip start point in decimal degrees."
                      },
                      "StartLocationName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Display name of trip start location (e.g., 'I-405', 'S 180th St')."
                      },
                      "StartLongitude": {
                        "type": "number",
                        "description": "Longitude of trip start point in decimal degrees."
                      },
                      "StartMilepost": {
                        "type": "number",
                        "description": "Milepost marker for trip start point."
                      },
                      "TravelDirection": {
                        "type": "string",
                        "nullable": true,
                        "description": "Direction of travel code (e.g., 'S' for southbound, 'N' for northbound)."
                      },
                      "TripName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Unique identifier for toll trip route (e.g., 'Tmptp02565', '099tp03268')."
                      },
                      "CurrentToll": {
                        "type": "integer",
                        "description": "Current toll amount in cents. May be negative when toll is unavailable. May not match sign display due to timing differences."
                      },
                      "CurrentMessage": {
                        "type": "string",
                        "nullable": true,
                        "description": "Message displayed on toll sign instead of toll amount. Null when toll amount is displayed, empty string when no message is shown."
                      },
                      "StateRoute": {
                        "type": "string",
                        "nullable": true,
                        "description": "State route identifier where toll applies (e.g., '099' for SR-99, '405' for I-405)."
                      },
                      "TimeUpdated": {
                        "type": "string",
                        "description": "UTC datetime when toll rate was last updated.",
                        "format": "date-time"
                      }
                    },
                    "required": [
                      "EndLatitude",
                      "EndLocationName",
                      "EndLongitude",
                      "EndMilepost",
                      "StartLatitude",
                      "StartLocationName",
                      "StartLongitude",
                      "StartMilepost",
                      "TravelDirection",
                      "TripName",
                      "CurrentToll",
                      "CurrentMessage",
                      "StateRoute",
                      "TimeUpdated"
                    ],
                    "description": "Current toll rate information for a single HOV toll lane trip, including pricing and location data."
                  }
                },
                "examples": {
                  "sampleResponse": {
                    "summary": "Sample response",
                    "description": "Example of a successful response from the API (showing first item of 84 total)",
                    "value": [
                      {
                        "EndLatitude": 47.587648851,
                        "EndLocationName": "NB S Portal",
                        "EndLongitude": -122.338771924,
                        "EndMilepost": 30,
                        "StartLatitude": 47.626665944,
                        "StartLocationName": "SB S Portal",
                        "StartLongitude": -122.343652437,
                        "StartMilepost": 33,
                        "TravelDirection": "S",
                        "TripName": "099tp03268",
                        "CurrentToll": 125,
                        "CurrentMessage": null,
                        "StateRoute": "099",
                        "TimeUpdated": "2025-11-15T17:45:16.143Z"
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/getTollTripInfoAsJson": {
      "get": {
        "summary": "List trip information for all toll trips statewide.",
        "operationId": "fetchTollTripInfo",
        "tags": [
          "toll-trip-info"
        ],
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "source": "import { fetchTollTripInfo } from 'ws-dottie/wsdot-toll-rates/core';\n\nconst data = await fetchTollTripInfo({\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": {
                      "EndLatitude": {
                        "type": "number",
                        "description": "Latitude of trip end point in decimal degrees."
                      },
                      "EndLocationName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Display name of trip end location (e.g., 'SR 516', 'SR 18')."
                      },
                      "EndLongitude": {
                        "type": "number",
                        "description": "Longitude of trip end point in decimal degrees."
                      },
                      "EndMilepost": {
                        "type": "number",
                        "description": "Milepost marker for trip end point."
                      },
                      "StartLatitude": {
                        "type": "number",
                        "description": "Latitude of trip start point in decimal degrees."
                      },
                      "StartLocationName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Display name of trip start location (e.g., 'I-405', 'S 180th St')."
                      },
                      "StartLongitude": {
                        "type": "number",
                        "description": "Longitude of trip start point in decimal degrees."
                      },
                      "StartMilepost": {
                        "type": "number",
                        "description": "Milepost marker for trip start point."
                      },
                      "TravelDirection": {
                        "type": "string",
                        "nullable": true,
                        "description": "Direction of travel code (e.g., 'S' for southbound, 'N' for northbound)."
                      },
                      "TripName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Unique identifier for toll trip route (e.g., 'Tmptp02565', '099tp03268')."
                      },
                      "Geometry": {
                        "type": "string",
                        "nullable": true,
                        "description": "Encoded route geometry data for mapping. Empty string or null when geometry is unavailable."
                      },
                      "ModifiedDate": {
                        "type": "string",
                        "description": "UTC datetime when trip route information was last modified.",
                        "format": "date-time"
                      }
                    },
                    "required": [
                      "EndLatitude",
                      "EndLocationName",
                      "EndLongitude",
                      "EndMilepost",
                      "StartLatitude",
                      "StartLocationName",
                      "StartLongitude",
                      "StartMilepost",
                      "TravelDirection",
                      "TripName",
                      "Geometry",
                      "ModifiedDate"
                    ],
                    "description": "Trip route information for a single toll trip, including locations, coordinates, and optional geometry."
                  }
                },
                "examples": {
                  "sampleResponse": {
                    "summary": "Sample response",
                    "description": "Example of a successful response from the API (showing first item of 32 total)",
                    "value": [
                      {
                        "EndLatitude": 47.405611347,
                        "EndLocationName": "SR 516",
                        "EndLongitude": -122.220730198,
                        "EndMilepost": 21.94,
                        "StartLatitude": 47.458726717,
                        "StartLocationName": "I-405",
                        "StartLongitude": -122.217220487,
                        "StartMilepost": 25.65,
                        "TravelDirection": "S",
                        "TripName": "Tmptp02565",
                        "Geometry": "",
                        "ModifiedDate": "2025-10-20T22:00:00.000Z"
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/getTollTripRatesAsJson": {
      "get": {
        "summary": "Get current toll rates for all trips.",
        "operationId": "fetchTollTripRates",
        "tags": [
          "toll-trip-rates"
        ],
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "source": "import { fetchTollTripRates } from 'ws-dottie/wsdot-toll-rates/core';\n\nconst data = await fetchTollTripRates({\n  fetchMode: 'native',\n  validate: true\n});\n\nconsole.log(data);"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchTollTripRatesOutput"
                },
                "examples": {
                  "sampleResponse": {
                    "summary": "Sample response",
                    "description": "Example of a successful response from the API",
                    "value": {
                      "LastUpdated": "2025-11-15T17:36:30.000Z",
                      "Trips": [
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:30.000Z",
                          "Toll": 0,
                          "TripName": "405tp02752"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp02526"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:30.000Z",
                          "Toll": 0,
                          "TripName": "405tp02067"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp01880"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp01879"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:30.000Z",
                          "Toll": 0,
                          "TripName": "405tp01587"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:30.000Z",
                          "Toll": 0,
                          "TripName": "405tp01586"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:30.000Z",
                          "Toll": 0,
                          "TripName": "405tp01585"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp01371"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp01370"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp01369"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp01353"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp01352"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp01351"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp01641"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp01926"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:30.000Z",
                          "Toll": 0,
                          "TripName": "405tp02066"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp02161"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp02162"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp02250"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp02251"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp02252"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp02612"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp02613"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 0,
                          "TripName": "405tp02614"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp02782"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp02783"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp02784"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp02896"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp02897"
                        },
                        {
                          "Message": "FREE",
                          "MessageUpdateTime": "2025-11-15T17:36:31.000Z",
                          "Toll": 0,
                          "TripName": "405tp02898"
                        },
                        {
                          "Message": "$4.95",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 4.95,
                          "TripName": "520tp00422"
                        },
                        {
                          "Message": "$2.95",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 2.95,
                          "TripName": "520tp00421"
                        },
                        {
                          "Message": "$3.25",
                          "MessageUpdateTime": "2025-11-15T17:36:28.000Z",
                          "Toll": 3.25,
                          "TripName": "099tp03060"
                        },
                        {
                          "Message": "$1.25",
                          "MessageUpdateTime": "2025-11-15T17:36:28.000Z",
                          "Toll": 1.25,
                          "TripName": "099tp03268"
                        },
                        {
                          "Message": "$3.20",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 3.2,
                          "TripName": "509tp02050"
                        },
                        {
                          "Message": "$1.20",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1.2,
                          "TripName": "509tp02051"
                        },
                        {
                          "Message": "$3.20",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 3.2,
                          "TripName": "509tp02093"
                        },
                        {
                          "Message": "$1.20",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1.2,
                          "TripName": "509tp02092"
                        },
                        {
                          "Message": "",
                          "MessageUpdateTime": "2025-11-15T17:11:26.000Z",
                          "Toll": 0,
                          "TripName": "167tp01320"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01559"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01736"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01737"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01886"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01887"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp02027"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp02028"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp02194"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp02195"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp02196"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp02260"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp02174"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01885"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01654"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01653"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01476"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01475"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01284"
                        },
                        {
                          "Message": "$1.00",
                          "MessageUpdateTime": "2025-11-15T17:36:29.000Z",
                          "Toll": 1,
                          "TripName": "167tp01283"
                        },
                        {
                          "Message": "",
                          "MessageUpdateTime": "2025-11-15T17:40:45.193Z",
                          "Toll": 0,
                          "TripName": "167tp01102"
                        },
                        {
                          "Message": "",
                          "MessageUpdateTime": "2025-11-15T17:40:45.193Z",
                          "Toll": 0,
                          "TripName": "167tp01101"
                        },
                        {
                          "Message": "",
                          "MessageUpdateTime": "2025-11-15T17:40:45.193Z",
                          "Toll": 0,
                          "TripName": "167tp01100"
                        },
                        {
                          "Message": "",
                          "MessageUpdateTime": "2025-11-15T17:40:45.193Z",
                          "Toll": 0,
                          "TripName": "167tp00793"
                        },
                        {
                          "Message": "",
                          "MessageUpdateTime": "2025-11-15T17:40:45.193Z",
                          "Toll": 0,
                          "TripName": "167tp00792"
                        },
                        {
                          "Message": "",
                          "MessageUpdateTime": "2025-11-15T17:40:45.193Z",
                          "Toll": 0,
                          "TripName": "167tp00791"
                        }
                      ],
                      "Version": 375654
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/getTripRatesByDateAsJson?FromDate={FromDate}&ToDate={ToDate}": {
      "get": {
        "summary": "Get historical toll rates for a specified date range.",
        "operationId": "fetchTripRatesByDate",
        "tags": [
          "toll-rates"
        ],
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "source": "import { fetchTripRatesByDate } from 'ws-dottie/wsdot-toll-rates/core';\n\nconst data = await fetchTripRatesByDate({\n  params: {\n    \"FromDate\": \"2025-11-21\",\n    \"ToDate\": \"2025-11-22\"\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": {
                      "LastUpdated": {
                        "type": "string",
                        "description": "UTC datetime when toll trip rates were last updated.",
                        "format": "date-time"
                      },
                      "Trips": {
                        "type": "array",
                        "nullable": true,
                        "items": {
                          "type": "object",
                          "properties": {
                            "Message": {
                              "type": "string",
                              "nullable": true,
                              "description": "Toll rate message or display text (e.g., 'FREE', '$4.95'). Empty string when unavailable."
                            },
                            "MessageUpdateTime": {
                              "type": "string",
                              "description": "UTC datetime when toll rate message was last updated.",
                              "format": "date-time"
                            },
                            "Toll": {
                              "type": "number",
                              "description": "Toll amount for trip in dollars."
                            },
                            "TripName": {
                              "type": "string",
                              "nullable": true,
                              "description": "Unique identifier for toll trip route (e.g., '405tp02752', '520tp00422', '099tp03060')."
                            }
                          },
                          "required": [
                            "Message",
                            "MessageUpdateTime",
                            "Toll",
                            "TripName"
                          ],
                          "description": "Toll rate information for a single trip including toll amount, message, and update timestamp."
                        },
                        "description": "Array of trip rate information for all toll trips. Null when trip rates are unavailable."
                      },
                      "Version": {
                        "type": "integer",
                        "description": "Version number of toll trips data. Increments when trip rates data is updated."
                      }
                    },
                    "required": [
                      "LastUpdated",
                      "Trips",
                      "Version"
                    ],
                    "description": "Container for toll trip rates including update timestamp, array of trip rates, and version number."
                  }
                },
                "examples": {
                  "sampleResponse": {
                    "summary": "Sample response",
                    "description": "Example of a successful response from the API (showing first item of 14 total)",
                    "value": [
                      {
                        "LastUpdated": "2025-11-14T08:57:07.000Z",
                        "Trips": [
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp02752"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp02526"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp02067"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:43.000Z",
                            "Toll": 0,
                            "TripName": "405tp01880"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:43.000Z",
                            "Toll": 0,
                            "TripName": "405tp01879"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp01587"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp01586"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp01585"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp01371"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp01370"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp01369"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp01353"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp01352"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp01351"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp01641"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:43.000Z",
                            "Toll": 0,
                            "TripName": "405tp01926"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp02066"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp02161"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp02162"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp02250"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp02251"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:42.000Z",
                            "Toll": 0,
                            "TripName": "405tp02252"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp02612"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp02613"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp02614"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp02782"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp02783"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "405tp02784"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:43.000Z",
                            "Toll": 0,
                            "TripName": "405tp02896"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:43.000Z",
                            "Toll": 0,
                            "TripName": "405tp02897"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:43.000Z",
                            "Toll": 0,
                            "TripName": "405tp02898"
                          },
                          {
                            "Message": "$3.35",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 3.35,
                            "TripName": "520tp00422"
                          },
                          {
                            "Message": "$1.35",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 1.35,
                            "TripName": "520tp00421"
                          },
                          {
                            "Message": "$3.25",
                            "MessageUpdateTime": "2025-11-14T08:56:40.000Z",
                            "Toll": 3.25,
                            "TripName": "099tp03060"
                          },
                          {
                            "Message": "$1.25",
                            "MessageUpdateTime": "2025-11-14T08:56:40.000Z",
                            "Toll": 1.25,
                            "TripName": "099tp03268"
                          },
                          {
                            "Message": "$3.20",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 3.2,
                            "TripName": "509tp02050"
                          },
                          {
                            "Message": "$1.20",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 1.2,
                            "TripName": "509tp02051"
                          },
                          {
                            "Message": "$3.20",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 3.2,
                            "TripName": "509tp02093"
                          },
                          {
                            "Message": "$1.20",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 1.2,
                            "TripName": "509tp02092"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01320"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:49.000Z",
                            "Toll": 0,
                            "TripName": "167tp01559"
                          },
                          {
                            "Message": "CLOSED",
                            "MessageUpdateTime": "2025-11-14T08:56:49.000Z",
                            "Toll": 0,
                            "TripName": "167tp01736"
                          },
                          {
                            "Message": "CLOSED",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01737"
                          },
                          {
                            "Message": "CLOSED",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01886"
                          },
                          {
                            "Message": "CLOSED",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01887"
                          },
                          {
                            "Message": "HOV ONLY",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp02027"
                          },
                          {
                            "Message": "HOV ONLY",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp02028"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp02194"
                          },
                          {
                            "Message": "HOV ONLY",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp02195"
                          },
                          {
                            "Message": "HOV ONLY",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp02196"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp02260"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp02174"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01885"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01654"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01653"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01476"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01475"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01284"
                          },
                          {
                            "Message": "FREE",
                            "MessageUpdateTime": "2025-11-14T08:56:41.000Z",
                            "Toll": 0,
                            "TripName": "167tp01283"
                          },
                          {
                            "Message": "",
                            "MessageUpdateTime": "2025-11-14T09:01:03.460Z",
                            "Toll": 0,
                            "TripName": "167tp01102"
                          },
                          {
                            "Message": "",
                            "MessageUpdateTime": "2025-11-14T09:01:03.460Z",
                            "Toll": 0,
                            "TripName": "167tp01101"
                          },
                          {
                            "Message": "",
                            "MessageUpdateTime": "2025-11-14T09:01:03.460Z",
                            "Toll": 0,
                            "TripName": "167tp01100"
                          },
                          {
                            "Message": "",
                            "MessageUpdateTime": "2025-11-14T09:01:03.460Z",
                            "Toll": 0,
                            "TripName": "167tp00793"
                          },
                          {
                            "Message": "",
                            "MessageUpdateTime": "2025-11-14T09:01:03.460Z",
                            "Toll": 0,
                            "TripName": "167tp00792"
                          },
                          {
                            "Message": "",
                            "MessageUpdateTime": "2025-11-14T09:01:03.460Z",
                            "Toll": 0,
                            "TripName": "167tp00791"
                          }
                        ],
                        "Version": 375226
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/getTripRatesByVersionAsJson?Version={Version}": {
      "get": {
        "summary": "Get toll rates for a specific version number.",
        "operationId": "fetchTripRatesByVersion",
        "tags": [
          "toll-rates"
        ],
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "source": "import { fetchTripRatesByVersion } from 'ws-dottie/wsdot-toll-rates/core';\n\nconst data = await fetchTripRatesByVersion({\n  params: {\n    \"Version\": 352417\n  },\n  fetchMode: 'native',\n  validate: true\n});\n\nconsole.log(data);"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchTollTripRatesOutput"
                },
                "examples": {
                  "sampleResponse": {
                    "summary": "Sample response",
                    "description": "Example of a successful response from the API",
                    "value": {
                      "LastUpdated": "0001-01-01T08:00:00.000Z",
                      "Trips": null,
                      "Version": 0
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/getTollTripVersionAsJson": {
      "get": {
        "summary": "Get current version and timestamp for toll trip data.",
        "operationId": "fetchTollTripVersion",
        "tags": [
          "toll-trip-version"
        ],
        "x-codeSamples": [
          {
            "lang": "JavaScript",
            "source": "import { fetchTollTripVersion } from 'ws-dottie/wsdot-toll-rates/core';\n\nconst data = await fetchTollTripVersion({\n  fetchMode: 'native',\n  validate: true\n});\n\nconsole.log(data);"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchTollTripVersionOutput"
                },
                "examples": {
                  "sampleResponse": {
                    "summary": "Sample response",
                    "description": "Example of a successful response from the API",
                    "value": {
                      "TimeStamp": "2025-11-15T17:36:30.000Z",
                      "Version": 375654
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "toll-rates",
      "description": "Current toll rates for high occupancy vehicle (HOV) toll lanes statewide.",
      "x-description": "Real-time toll pricing data including trip locations, current toll amounts, route associations, and update timestamps for congestion management.",
      "x-cacheStrategy": "FREQUENT",
      "x-useCases": [
        "Calculate travel costs for HOV toll lane usage.",
        "Display current toll amounts in navigation apps.",
        "Make informed routing decisions based on toll pricing."
      ],
      "x-updateFrequency": "5m"
    },
    {
      "name": "toll-trip-info",
      "description": "Trip route information for HOV toll lanes including locations, mileposts, and geometry.",
      "x-description": "Reference data for toll trip routes including start and end locations, coordinates, mileposts, travel direction, and optional geometry data for mapping.",
      "x-cacheStrategy": "FREQUENT",
      "x-useCases": [
        "Display toll trip routes on maps.",
        "Look up trip information by location or route.",
        "Build trip selection interfaces for toll rate queries."
      ],
      "x-updateFrequency": "daily"
    },
    {
      "name": "toll-trip-rates",
      "description": "Comprehensive toll rate data for all trips including pricing, messages, and version tracking.",
      "x-description": "Container for toll trip rates supporting current data, historical date ranges, and version-specific queries. Includes pricing details, informational messages, and version tracking for transportation planning.",
      "x-cacheStrategy": "FREQUENT",
      "x-useCases": [
        "Retrieve current toll rates for all trips.",
        "Analyze historical toll pricing trends.",
        "Access version-specific rate data for change tracking."
      ],
      "x-updateFrequency": "5m"
    },
    {
      "name": "toll-trip-version",
      "description": "Version and timestamp information for toll trip data.",
      "x-description": "Current version number and timestamp for toll trip rates data, enabling cache management and data freshness tracking.",
      "x-cacheStrategy": "FREQUENT",
      "x-useCases": [
        "Check data freshness before fetching toll rates.",
        "Determine when to invalidate cached toll rate data.",
        "Track version changes for toll trip rates."
      ],
      "x-updateFrequency": "5m"
    }
  ]
}