UNPKG

ws-dottie

Version:

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

210 lines (155 loc) 9.23 kB
# WSDOT Highway Alerts API The WSDOT Highway Alerts API provides real-time traffic alert information for Washington State highways, including construction, maintenance, closures, and other traffic-related events. > **📚 Documentation Navigation**: [Index](../INDEX.md) • [Getting Started](../GETTING-STARTED.md) • [API Reference](../API-REFERENCE.md) • [Examples](../EXAMPLES.md) ## Overview This module provides access to the WSDOT Highway Alerts API, which offers real-time highway alert data across Washington State, including traffic events, construction, maintenance, closures, and geographic location data. ### Key Features | Feature | Description | Availability | |---------|-------------|--------------| | **Real-time Alerts** | Current traffic alerts and incidents | ✅ Available | | **Event Categories** | Construction, maintenance, closures, weather | ✅ Available | | **Location Data** | Geographic coordinates and milepost information | ✅ Available | | **Priority Levels** | Alert priority from Lowest to Highest | ✅ Available | | **Regional Filtering** | Filter alerts by geographic areas | ✅ Available | | **Status Tracking** | Open, closed, and scheduled event status | ✅ Available | ### Data Update Frequency | Data Type | Update Frequency | Cache Strategy | Notes | |-----------|------------------|----------------|-------| | **Alert Data** | Real-time | `MINUTE_UPDATES` | Updated continuously as events occur | | **Location Data** | Static | `WEEKLY_UPDATES` | Infrastructure data | ## WSDOT Documentation - **[WSDOT Highway Alerts API Documentation](https://wsdot.wa.gov/traffic/api/Documentation/group___highway_alerts.html)** - **[WSDOT Highway Alerts API Help](https://wsdot.wa.gov/traffic/api/HighwayAlerts/HighwayAlertsREST.svc/Help)** ## API Endpoints ### Endpoints Summary | Endpoint | Method | Description | Parameters | Returns | |----------|--------|-------------|------------|---------| | `GetAlertsAsJson` | GET | Get all current traffic alerts | `AccessCode` | `HighwayAlert[]` | | `GetAlertAsJson` | GET | Get specific alert by ID | `AccessCode`, `AlertID` | `HighwayAlert` | | `GetAlertsByMapAreaAsJson` | GET | Get alerts filtered by geographic area | `AccessCode`, `MapArea` | `HighwayAlert[]` | ### Base URL ``` https://wsdot.wa.gov/Traffic/api/HighwayAlerts/HighwayAlertsREST.svc ``` ## Usage Examples ### Basic Usage ```typescript import { WsdotHighwayAlerts } from 'ws-dottie'; // Get all current traffic alerts const alerts = await WsdotHighwayAlerts.getHighwayAlerts(); // Get specific alert by ID const alert = await WsdotHighwayAlerts.getHighwayAlertById({ alertId: 655238 }); // Get alerts for specific geographic area const areaAlerts = await WsdotHighwayAlerts.getHighwayAlertsByMapArea({ mapArea: "Seattle" }); ``` ### Parameter Examples | Function | Parameters | Example | Description | |----------|------------|---------|-------------| | `getHighwayAlerts` | None | `getHighwayAlerts()` | Get all current traffic alerts | | `getHighwayAlertById` | `{ alertId: number }` | `getHighwayAlertById({ alertId: 655238 })` | Get specific alert by ID | | `getHighwayAlertsByMapArea` | `{ mapArea: string }` | `getHighwayAlertsByMapArea({ mapArea: "Seattle" })` | Get alerts for specific area | ### Returns See Data Types below. Functions return arrays of `HighwayAlert` or a single `HighwayAlert` when querying by ID. ### Common Use Cases ```typescript // Example 1: Display all current traffic alerts const alerts = await WsdotHighwayAlerts.getHighwayAlerts(); alerts.forEach(alert => { console.log(`${alert.HeadlineDescription}: ${alert.EventCategory}`); }); // Example 2: Get alerts for specific area const areaAlerts = await WsdotHighwayAlerts.getHighwayAlertsByMapArea({ mapArea: "Seattle" }); // Display Seattle area traffic alerts ``` ## React Integration For comprehensive React Query hooks, TanStack Query setup, error handling, and caching strategies, see the [API Reference](../API-REFERENCE.md) documentation. ### Available Hooks | Hook | Parameters | Description | Caching Strategy | |------|------------|-------------|------------------| | `useHighwayAlerts` | None | Get all current traffic alerts | `MINUTE_UPDATES` | | `useHighwayAlertById` | `{ alertId: number }` | Get specific alert by ID | `MINUTE_UPDATES` | | `useHighwayAlertsByMapArea` | `{ mapArea: string }` | Get alerts for specific area | `MINUTE_UPDATES` | ### Basic Hook Usage ```typescript import { useHighwayAlerts } from 'ws-dottie'; function HighwayAlertsList() { const { data, isLoading, error } = useHighwayAlerts(); if (isLoading) return <div>Loading alerts...</div>; if (error) return <div>Error: {error.message}</div>; return ( <div> {data?.map(alert => ( <div key={alert.AlertID}> <h3>{alert.HeadlineDescription}</h3> <p>Category: {alert.EventCategory}</p> <p>Priority: {alert.Priority}</p> <p>Location: {alert.RoadName}</p> </div> ))} </div> ); } ``` ## Data Types ### Type Summary | Type Name | Description | Key Properties | |-----------|-------------|----------------| | `HighwayAlert` | Traffic alert information | `AlertID`, `HeadlineDescription`, `EventCategory`, `Priority`, `RoadName`, `StartRoadName`, `EndRoadName` | ### Detailed Type Definitions ```typescript type HighwayAlert = { AlertID: number; // Unique identifier for the alert HeadlineDescription: string; // Brief description of the alert EventCategory: string; // Category of the event (e.g., "Construction", "Maintenance") Priority: string; // Priority level (Lowest, Low, Normal, High, Highest) RoadName: string; // Name of the affected road StartRoadName: string; // Starting location of the affected area EndRoadName: string; // Ending location of the affected area StartLatitude: number; // Starting latitude coordinate StartLongitude: number; // Starting longitude coordinate EndLatitude: number; // Ending latitude coordinate EndLongitude: number; // Ending longitude coordinate StartMilePost: number; // Starting milepost EndMilePost: number; // Ending milepost LastUpdatedTime: string; // Last update timestamp ExpectedEndTime: string; // Expected end time of the event Direction: string; // Direction of travel affected State: string; // State where the alert is located }; ``` ## Common Use Cases ### Use Case 1: Real-time Traffic Alert Dashboard **Scenario**: Display real-time traffic alerts for travelers and commuters **Solution**: Use the `getAlerts` function to create a live dashboard of current traffic events ```typescript // Implementation example const alerts = await WsdotHighwayAlerts.getHighwayAlerts(); // Display in real-time dashboard with auto-refresh ``` ### Use Case 2: Regional Traffic Monitoring **Scenario**: Monitor traffic alerts for specific geographic areas (e.g., Seattle metro) **Solution**: Use the `getAlertsByMapArea` function to filter alerts by region ```typescript // Implementation example const areaAlerts = await WsdotHighwayAlerts.getHighwayAlertsByMapArea({ mapArea: "Seattle" }); // Monitor Seattle area traffic alerts for local commuters ``` ## Performance & Caching This API uses the **MINUTE_UPDATES** caching strategy. For detailed information about caching configuration, performance optimization, and advanced caching options, see the [Performance & Caching](../API-REFERENCE.md#performance--caching) section in the API Reference. | Caching Aspect | Configuration | Description | |----------------|---------------|-------------| | **Stale Time** | 1 minute | Data considered fresh for 1 minute | | **Refetch Interval** | 1 minute | Automatically refetch data every 1 minute | | **GC Time** | 1 hour | Keep unused data in cache for 1 hour | | **Retry** | None | No retries | ## Update Frequency Refer to Data Update Frequency near the top of this page for freshness guidance (minute‑level real‑time updates for alerts). ## Common Patterns For information about data transformation, error handling, caching strategies, and other common patterns, see the [API Reference](../API-REFERENCE.md) documentation. ## References - **[Error Handling](../API-REFERENCE.md#error-handling)** - Comprehensive error handling patterns - **[Data Transformation](../API-REFERENCE.md#data-transformation)** - Automatic data conversion and filtering - **[React Hooks](../API-REFERENCE.md#react-hooks)** - Complete React integration guide - **[Performance & Caching](../API-REFERENCE.md#performance--caching)** - Advanced caching configuration - **[Testing Status](../API-REFERENCE.md#testing-status)** - E2E test completion and validation status - **[API Compliance](../API-REFERENCE.md#api-compliance)** - WSDOT API alignment verification