DTN

DTN Pavement Conditions API

Pavement condition data endpoints

Operations 2

GET /pavement/conditions Get Pavement Conditions #
POST /pavement/conditions Get Pavement Conditions by Route #

Documentation

📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-weather-conditions-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-observation-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-precipitation-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Other%20APIs/financial-market-data/documentation
📖
Documentation
https://devportal.dtn.com/catalog/WebSocket/agency-bulletin-websocket-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-agency-bulletin-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-alerting-API/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Other%20APIs/dtn-astronomical-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-climatology-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Other%20APIs/dtn-developer-portal-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-energy-event-index-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-enhanced-flight-hazards-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-lightning-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/WebSocket/dtn-lightning-websocket/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-metars-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-map-tile-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-marine-weather-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-notams-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-pireps-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/pavement-conditions-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-probabilistic-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Refined%20Fuels/dtn-refined-fuels-demand/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-renewables-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-sigmets-airmets/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Marine%20and%20Offshore/dtn-shipping-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Agriculture/dtn-soil-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-storm-impact-analytics/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-storm-risk-analytics-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-tafs-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-tropical-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/WebSocket/dtn-websocket-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-windsaloft-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Refined%20Fuels/digital-commerce-orders/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Refined%20Fuels/energy-digital-commerce-integrations-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Agriculture/farm-intel-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/radarscope-radar-products/documentation

Specifications

Other Resources

🔗
Reference
https://devportal.dtn.com/catalog/Weather/dtn-weather-conditions-api/documentation
🔗
Portal
https://devportal.dtn.com/
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-weather-conditions-api/postman-collection/2.2.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-weather-conditions-api/release-notes/2.2.0
🔗
Portal
https://api.weather.mg/
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-observation-api/postman-collection/2.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-observation-api/release-notes/2.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-precipitation-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/financial-market-data/postman-collection/1.0.2
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/agency-bulletin-websocket-api/release-notes/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-agency-bulletin-api/release-notes/2.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-astronomical-api/postman-collection/2.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-astronomical-api/release-notes/2.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-climatology-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-developer-portal-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-energy-event-index-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-enhanced-flight-hazards-api/postman-collection/1.10.2
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-enhanced-flight-hazards-api/release-notes/1.10.2
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-lightning-websocket/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-metars-api/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-metars-api/release-notes/1.9.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-map-tile-api/postman-collection/2.0.16
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-map-tile-api/release-notes/2.0.16
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-marine-weather-api/postman-collection/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-marine-weather-api/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-notams-api/postman-collection/1.10.1
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-notams-api/release-notes/1.10.1
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-pireps-api/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-pireps-api/release-notes/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/pavement-conditions-api/release-notes/2.0.2
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-probabilistic-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-renewables-api/postman-collection/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-renewables-api/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-sigmets-airmets/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-sigmets-airmets/release-notes/1.9.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-soil-api/postman-collection/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-soil-api/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-storm-impact-analytics/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-storm-risk-analytics-api/postman-collection/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-storm-risk-analytics-api/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-tafs-api/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-tafs-api/release-notes/1.9.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-tropical-api/postman-collection/1.0.6
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-tropical-api/release-notes/1.0.6
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-windsaloft-api/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-windsaloft-api/release-notes/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/digital-commerce-orders/release-notes/1.0.0

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dtn-pavement-conditions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dtn-pavement-conditions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Pavement Conditions API
  version: 2.0.2
  description: "The Pavement Conditions API v2 offers users pavement temperature and condition details for road segments in a specified area with enhanced GeoJSON support and pagination. DTN supplies road data on segments across North America and Europe, allowing users to request data for a geographic area or specific roadway within the database.\n\n**What's New in v2.0.2:**\n- Route Generation \n  \n  — A new `GET /v2/directions` endpoint generates route geometry via the Mapbox Directions API.\n\n- Query Pavement Conditions Along a Route or Route-Based Filtering (RB Filter)\n\n  - Pavement data can be filtered using either `startPoint` and `endPoint` coordinates or a GeoJSON geometry provided in the request body.\n  - When `startPoint` and `endPoint` are supplied to the `v2/logistics` or `v2/pavement/conditions` endpoints, a route is automatically generated internally via the Mapbox API.\n  - Pagination is determined by the number of route `segments` when RB Filter is active.\n  - Each paginated response includes a `statistics` object summarizing covered, uncovered, and total segment counts.\n  - Results may be optionally narrowed by a weather `parameter` filter.\n  - Results may also be optionally narrowed by Estimated Time of Arrival (`etaFilter`).\n\n- Added pavementValidEndTime in returned data\n\n**Authentication**: This API uses Bearer token authentication. When obtaining your access token, use the following audience values:\n- **Production**: `https://pavement-condition.prd.wx.zones.dtn.com`\n- **Staging**: `https://pavement-condition.stg.wx.zones.dtn.com`"
  contact:
    name: Ben Hershey
    url: https://pavement-condition.prd.wx.zones.dtn.com
    email: ben.hershey@dtn.com
servers:
- url: https://pavement-condition.prd.wx.zones.dtn.com/v2
  description: Production server
- url: https://pavement-condition.stg.wx.zones.dtn.com/v2
  description: Staging server
tags:
- name: Pavement Conditions
  description: Pavement condition data endpoints
paths:
  /pavement/conditions:
    get:
      tags:
      - Pavement Conditions
      summary: Get Pavement Conditions
      description: "Retrieves pavement conditions for road segments in GeoJSON FeatureCollection format. Returns up to 1000 records by default.\nData is grouped by segment ID with pagination metadata included in the response.\n\n**Query modes:**\n- By bounding box (`bbox`) — returns all segments within the area\n- By route (`startPoint` + `endPoint`) — uses Mapbox Directions API to generate a route, then returns segments along it\n\n**Filtering options:**\n- Pavement data can be filtered using either `startPoint` and `endPoint` coordinates or a bounding box (`bbox`).\n  - Results may be optionally narrowed by a weather `parameter` filter.\n  - Results may also be optionally narrowed by Estimated Time of Arrival (`etaFilter`).\n\n**Return Data:**\n\n| Field Name | Description | Imperial Unit | Metric Unit |\n| ---------- | ----------- | ------------- | ----------- |\n| id | Database table primary key ID | N/A | N/A |\n| segmentId | Road segment identifier (string) | N/A | N/A |\n| lat | Latitude for center point of road segment | Degrees | Degrees |\n| lon | Longitude for center point of road segment | Degrees | Degrees |\n| timestamp | Date/time for when the output variables are valid (UTC) | N/A | N/A |\n| pavementCreationTime | Date/time when the pavement model was run (UTC) | N/A | N/A |\n| pavementValidTime | Date/time for when the output variables are valid (UTC) | N/A | N/A |\n| pavementValidEndTime | Date/time for when the pavement forecast validity period ends (UTC) | N/A | N/A |\n| airTemp | Air temperature | Fahrenheit | Celsius |\n| visibility | Visibility distance | mi | km |\n| windDirection | Wind direction relative to true North (range from 0 to 360) | Degrees | Degrees |\n| windGust | Wind gust speed | mi/hr | km/hr |\n| windSpeed | Wind speed | mi/hr | km/hr |\n| iceRate | Ice precipitation rate | in/hr | mm/hr |\n| liquidRate | Liquid precipitation rate | in/hr | mm/hr |\n| snowRate | Snow precipitation rate | in/hr | mm/hr |\n| mobilityIndex | Mobility of vehicles compared to expected traffic patterns (100% mobility means traffic movement is expected to be unaffected by the conditions) | Percent | Percent |\n| pavementTemperature | Temperature of the road surface | Fahrenheit | Celsius |\n| blowingSnowAlertLevel | Level of blowing snow intensity (2 - Lowest, 5 - Highest) | N/A | N/A |\n| compactedSnowDepth | Depth of compacted snow on the road | in | mm |\n| frostDepth | Depth of frost on the road | in | mm |\n| iceDepth | Depth of ice on the road | in | mm |\n| liquidDepth | Depth of liquid on the road | in | mm |\n| snowDepth | Depth of snow on the road | in | mm |\n| unbondedIceDepth | Depth of ice on the road that is not bonded to the road surface | in | mm |\n| pavementCondition | Classification of the road condition. Possible conditions are dry, slush, chemical_wet, damp, wet, frost, ice, snow, compacted_snow | N/A | N/A |\n| crashRiskIndex | Crash risk factor compared to average conditions (ex: 2.0 means the risk of crash is two times the average) | N/A | N/A |\n| crashRiskUncertainty | One standard deviation on the crash risk factor (statistical error) | N/A | N/A |\n| roadName | Name of the road or highway | N/A | N/A |\n| osmClass | OpenStreetMap road classification (e.g., motorway, trunk, primary) | N/A | N/A |\n| geometry | GeoJSON geometry representing the road segment (LineString or MultiLineString) | N/A | N/A |\n| createdAt | Record creation timestamp | N/A | N/A |\n| updatedAt | Record last update timestamp | N/A | N/A |\n\n**Sample Requests:**\n\n1. **Get default data (1000 records):**\n   ```\n   GET /v2/pavement/conditions\n   ```\n\n2. **Get data for specific geographic area (US):**\n   ```\n   GET /v2/pavement/conditions?bbox=-156.1317111,19.6270521,-155.9317111,19.8270521\n   ```\n\n3. **Get data for European area:**\n   ```\n   GET /v2/pavement/conditions?bbox=3.555,49.470,6.262,50.849\n   ```\n\n4. **Get specific page:**\n   ```\n   GET /v2/pavement/conditions?bbox=-156.1317111,19.6270521,-155.9317111,19.8270521&limit=1000&page=2\n   ```\n\n5. **Filter by time range:**\n   ```\n   GET /v2/pavement/conditions?bbox=-156.1317111,19.6270521,-155.9317111,19.8270521&startTime=2025-12-04T20:00:00.000Z&endTime=2025-12-05T20:00:00.000Z\n   ```\n\n6. **Get data in metric units:**\n   ```\n   GET /v2/pavement/conditions?units=metric\n   ```\n\n7. **Route-based filtering with departure time:**\n   ```\n   GET /v2/pavement/conditions?startPoint=-93.3905,45.1310&endPoint=-93.2695,45.1420&departAt=2026-03-13T15:00:00.000Z\n   ```\n\n8. **Route-based filtering with arrival time:**\n   ```\n   GET /v2/pavement/conditions?startPoint=-93.3905,45.1310&endPoint=-93.2695,45.1420&arriveAt=2026-03-13T16:00:00.000Z\n   ```\n\n9. **Route-based with ETA filter (single forecast per segment):**\n   ```\n   GET /v2/pavement/conditions?startPoint=-93.3905,45.1310&endPoint=-93.2695,45.1420&departAt=2026-03-13T15:00:00.000Z&etaFilter=true\n   ```\n\n10. **Route-based with parameter filter:**\n    ```\n    GET /v2/pavement/conditions?startPoint=-93.3905,45.1310&endPoint=-93.2695,45.1420&departAt=2026-03-13T15:00:00.000Z&parameter=crashRiskIndex,mobilityIndex\n    ```\n"
      operationId: getPavementConditionsV2
      parameters:
      - name: bbox
        in: query
        description: 'Bounding box coordinates to filter results by geographic area.

          Format: `minLongitude,minLatitude,maxLongitude,maxLatitude`

          '
        required: false
        schema:
          type: string
        example: -156.1317111,19.6270521,-155.9317111,19.8270521
      - name: limit
        in: query
        description: Maximum number of records to return. Default is 1000.
        required: false
        schema:
          type: integer
          default: 1000
        example: 1000
      - name: page
        in: query
        description: Page number for pagination. Default is 1.
        required: false
        schema:
          type: integer
          default: 1
        example: 1
      - name: startTime
        in: query
        description: 'Filter records with timestamp greater than or equal to this value.

          Format: ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)

          '
        required: false
        schema:
          type: string
          format: date-time
        example: '2025-12-04T20:00:00.000Z'
      - name: endTime
        in: query
        description: 'Filter records with timestamp less than or equal to this value.

          Format: ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)

          '
        required: false
        schema:
          type: string
          format: date-time
        example: '2025-12-05T20:00:00.000Z'
      - name: units
        in: query
        description: Unit system for response values. Default is imperial.
        required: false
        schema:
          type: string
          enum:
          - metric
          - imperial
          default: imperial
        example: imperial
      - name: startPoint
        in: query
        description: 'Starting point coordinates for Mapbox route generation.

          Format: `longitude,latitude`

          '
        required: false
        schema:
          type: string
        example: -93.3905,45.1310
      - name: endPoint
        in: query
        description: 'Ending point coordinates for Mapbox route generation.

          Format: `longitude,latitude`

          '
        required: false
        schema:
          type: string
        example: -93.2695,45.1420
      - name: departAt
        in: query
        description: 'Departure time for the route. Mutually exclusive with `arriveAt`.

          When provided, the response includes per-feature `arrivalTime` and top-level `properties.arrivalTimeUTC`.

          Format: ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)

          '
        required: false
        schema:
          type: string
          format: date-time
        example: '2026-03-13T15:00:00.000Z'
      - name: arriveAt
        in: query
        description: 'Desired arrival time at the destination. Mutually exclusive with `departAt`.

          When provided, the response includes per-feature `departureTime` and top-level `properties.departureTimeUTC`.

          Format: ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)

          '
        required: false
        schema:
          type: string
          format: date-time
        example: '2026-03-13T16:00:00.000Z'
      - name: bufferMeters
        in: query
        description: Buffer distance in meters around the route for spatial query. Default is 5.
        required: false
        schema:
          type: integer
          default: 5
        example: 5
      - name: etaFilter
        in: query
        description: 'When true, filters condition data to only return the record matching the segment''s arrival time window.

          Requires `departAt` and either `startPoint`/`endPoint` or duration in body.

          '
        required: false
        schema:
          type: boolean
          default: false
        example: true
      - name: parameter
        in: query
        description: 'Comma-separated list of field names to include in the response data.

          When provided, only the specified fields are returned per condition record.

          Use the /v2/parameters endpoint to see valid options.

          '
        required: false
        schema:
          type: string
        example: crashRiskIndex,mobilityIndex
      responses:
        '200':
          description: Successful response with GeoJSON FeatureCollection and pagination metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PavementConditionsResponse'
              examples:
                pavementConditions:
                  value:
                    pagination:
                      total: 26496
                      limit: 10
                      nextOffset: 10
                    geojson:
                      type: FeatureCollection
                      features:
                      - type: Feature
                        id: SL-100727058
                        geometry:
                          type: MultiLineString
                          coordinates:
                          - - - 5.0157406
                              - 49.7305403
                            - - 5.0144574
                              - 49.7288971
                            - - 5.0137122
                              - 49.7278154
                          - - - 4.9970947
                              - 49.6874619
                            - - 4.9966223
                              - 49.6868132
                            - - 4.9960744
                              - 49.6862484
                        properties:
                          segmentId: SL-100727058
                          roadName: null
                          osmClass: R-N-58-000
                          data:
                          - id: 6638317100
                            lat: 49.70771017429127
                            lon: 5.0404408386138515
                            timestamp: '2026-06-14T15:00:00.000Z'
                            pavementCreationTime: '2026-06-15T15:39:49.000Z'
                            pavementValidTime: '2026-06-14T15:00:00.000Z'
                            pavementValidEndTime: '2026-06-14T16:00:00.000Z'
                            airTemp: 19.05
                            visibility: 36.04
                            windDirection: 309
                            windGust: 34.92
                            windSpeed: 15.84
                            iceRate: 0
                            liquidRate: 0
                            snowRate: 0
                            mobilityIndex: 100
                            pavementTemperature: 34.69
                            blowingSnowAlertLevel: 2
                            compactedSnowDepth: 0
                            frostDepth: 0
                            iceDepth: 0
                            liquidDepth: 0
                            snowDepth: 0
                            unbondedIceDepth: 0
                            pavementCondition: dry
                            crashRiskIndex: 0.97
                            crashRiskUncertainty: 0
                            createdAt: '2026-06-15T15:53:04.676Z'
                            updatedAt: '2026-06-15T15:53:04.676Z'
        '400':
          description: Bad Request - Invalid units parameter
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: Invalid unit. Allowed values are "metric" or "imperial".
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '503':
          description: Service Unavailable - Data partition temporarily unavailable for the requested region.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                type: service-unavailable
                title: Backend or Database Unavailable
                status: 503
                detail: 'No active partition available for domain: EuropeV2. No metadata entry found for key=active_folder_EuropeV2'
                instance: urn:dtn:one-transport-api:/v2/pavement/conditions:requestId:b0d7ac21-459c-45a5-ab6f-e09cea96cf9e
                error: No metadata entry found for key=active_folder_EuropeV2
      security:
      - clientCredentials: []
    post:
      tags:
      - Pavement Conditions
      summary: Get Pavement Conditions by Route
      description: "Retrieves pavement conditions along a route in GeoJSON FeatureCollection format.\nSupports two modes:\n\n**Option 1 - Mapbox waypoints (query params):**\nProvide `startPoint` and `endPoint` to automatically generate a route via Mapbox Directions API.\nOptionally provide `departAt` or `arriveAt` (mutually exclusive) for per-segment timing.\n\n**Option 2 - Direct route (body):**\nProvide a GeoJSON LineString or FeatureCollection in the request body.\n\n**Filtering options:**\n- Pavement data can be filtered using either `startPoint` and `endPoint` coordinates or a GeoJSON geometry provided in the request body.\n  - Results may be optionally narrowed by a weather `parameter` filter.\n  - Results may also be optionally narrowed by Estimated Time of Arrival (`etaFilter`).\n\nQuery parameters take priority over the request body when both are provided.\n\n**Timing behavior:**\n- When `departAt` is provided: each feature includes `arrivalTime` and the response includes `properties.arrivalTimeUTC` (departAt + route duration)\n- When `arriveAt` is provided: each feature includes `departureTime` and the response includes `properties.departureTimeUTC` (arriveAt - route duration)\n\n**Sample Requests:**\n\n1. **Route via Mapbox with departure time:**\n   ```\n   POST /v2/pavement/conditions?startPoint=-93.3905,45.1310&endPoint=-93.2695,45.1420&departAt=2026-03-13T15:00:00.000Z\n   ```\n\n2. **Route via Mapbox with arrival time:**\n   ```\n   POST /v2/pavement/conditions?startPoint=-93.3905,45.1310&endPoint=-93.2695,45.1420&arriveAt=2026-03-13T16:00:00.000Z\n   ```\n\n3. **Direct route via body:**\n   ```\n   POST /v2/pavement/conditions\n   Body: { \"type\": \"LineString\", \"coordinates\": [[-93.39, 45.13], [-93.27, 45.14]] }\n   ```\n"
      operationId: getConditionsByRoute
      parameters:
      - name: departAt
        in: query
        description: 'Departure time for the route. Mutually exclusive with `arriveAt`.

          When provided, the response includes per-feature `arrivalTime` and top-level `properties.arrivalTimeUTC`.

          Format: ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)

          '
        required: false
        schema:
          type: string
          format: date-time
        example: '2026-03-13T15:00:00.000Z'
      - name: arriveAt
        in: query
        description: 'Desired arrival time at the destination. Mutually exclusive with `departAt`.

          When provided, the response includes per-feature `departureTime` and top-level `properties.departureTimeUTC`.

          Format: ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)

          '
        required: false
        schema:
          type: string
          format: date-time
        example: '2026-03-13T16:00:00.000Z'
      - name: bufferMeters
        in: query
        description: Buffer distance in meters around the route for spatial query. Default is 5.
        required: false
        schema:
          type: integer
          default: 5
        example: 5
      - name: limit
        in: query
        description: 'Maximum number of records to return. Default is 100 for route-based requests.

          Maximum allowed is 300 for route-based requests.

          '
        required: false
        schema:
          type: integer
          default: 100
          maximum: 300
        example: 100
      - name: page
        in: query
        description: Page number for pagination. Default is 1.
        required: false
        schema:
          type: integer
          default: 1
        example: 1
      - name: startTime
        in: query
        description: 'Filter records with timestamp greater than or equal to this value.

          Format: ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)

          '
        required: false
        schema:
          type: string
          format: date-time
        example: '2025-12-04T20:00:00.000Z'
      - name: endTime
        in: query
        description: 'Filter records with timestamp less than or equal to this value.

          Format: ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)

          '
        required: false
        schema:
          type: string
          format: date-time
        example: '2025-12-05T20:00:00.000Z'
      - name: units
        in: query
        description: Unit system for response values. Default is imperial.
        required: false
        schema:
          type: string
          enum:
          - metric
          - imperial
          default: imperial
        example: imperial
      - name: etaFilter
        in: query
        description: 'When true, filters condition data to only return the record matching the segment''s arrival time window.

          Requires `departAt` and either `startPoint`/`endPoint` or duration in body.

          '
        required: false
        schema:
          type: boolean
          default: false
        example: true
      - name: parameter
        in: query
        description: 'Comma-separated list of field names to include in the response data.

          When provided, only the specified fields are returned per condition record.

          Use the /v2/parameters endpoint to see valid options.

          '
        required: false
        schema:
          type: string
        example: crashRiskIndex,mobilityIndex
      requestBody:
        description: 'GeoJSON route geometry. Required when `startPoint`/`endPoint` query params are not provided.

          Accepts a LineString or FeatureCollection with LineString features.

          '
        required: false
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/LineStringRoute'
              - $ref: '#/components/schemas/FeatureCollectionRoute'
            examples:
              lineString:
                summary: LineString route
                value:
                  type: LineString
                  coordinates:
                  - - -93.3905
                    - 45.131
                  - - -93.35
                    - 45.135
                  - - -93.2695
                    - 45.142
              featureCollection:
                summary: FeatureCollection route
                value:
                  type: FeatureCollection
                  features:
                  - type: Feature
                    geometry:
                      type: LineString
                      coordinates:
                      - - -93.3905
                        - 45.131
                      - - -93.2695
                        - 45.142
      responses:
        '200':
          description: Successful response with GeoJSON FeatureCollection, pagination metadata, and route timing properties.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteConditionsResponse'
              examples:
                departAtResponse:
                  summary: Response with departAt (shows arrivalTimeUTC)
                  value:
                    pagination:
                      total: 50
                      limit: 1000
                      nextOffset: 50
                    geojson:
                      type: FeatureCollection
                      features:
                      - type: Feature
                        id: 40341366
                        geometry:
                          type: LineString
                          coordinates:
                          - - -93.3905
                            - 45.131
                          - - -93.35
                            - 45.135
                        properties:
                          routeId: 40341366
                          roadName: I-94
                          osmClass: motorway
                          arrivalTime: '2026-03-13T15:05:00.000Z'
                          data:
                          - id: 1001
                            lat: 45.131
                            lon: -93.3905
                            timestamp: '2026-03-13T15:00:00.000Z'
                            airTemp: 32.5
                            pavementCondition: wet
                    properties:
                      arrivalTimeUTC: '2026-03-13T15:30:00.000Z'
                arriveAtResponse:
                  summary: Response with arriveAt (shows departureTimeUTC)
                  value:
                    pagination:
                      total: 50
                      limit: 1000
                      nextOffset: 50
                    geojson:
                      type: FeatureCollection
                      features:
                      - type: Feature
                        id: 40341366
                        geometry:
                          type: LineString
                          coordinates:
                          - - -93.3905
                            - 45.131
                          - - -93.35
                            - 45.135
                        properties:
                          routeId: 40341366
                          roadName: I-94
                          osmClass: motorway
                          departureTime: '2026-03-13T15:25:00.000Z'
                          data:
                          - id: 1001
                            lat: 45.131
                            lon: -93.3905
                            timestamp: '2026-03-13T15:00:00.000Z'
                            airTemp: 32.5
                            pavementCondition: wet
                    properties:
                      departureTimeUTC: '2026-03-13T15:00:00.000Z'
        '400':
          description: Bad Request - Invalid parameters
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              examples:
                mutuallyExclusive:
                  value:
                    error: Cannot use both departAt and arriveAt
                invalidBody:
                  value:
                    error: Body must be a LineString or FeatureCollection
                invalidDepartureTime:
                  value:
                    error: '''departureTime'' is not a valid parameter. Use ''departAt'' instead.'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/ForbiddenResponse'
        '404':
          description: No conditions found along the route
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: No conditions found along route(s)
        '502':
          description: Bad Gateway - External service (Mapbox) failure or unreachable
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Service Unavailable - Data partition temporarily unavailable
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - clientCredentials: []
components:
  schemas:
    LineStringRoute:
      type: object
      required:
      - type
      - coordinates
      properties:
        type:
          type: string
          enum:
          - LineString
        coordinates:
          type: array
          minItems: 2
          items:
            type: array
            minItems: 2
            items:
              type: number
    RouteConditionsResponse:
      type: object
      properties:
        pagination:
          type: object
          properties:
            total:
              type: integer
              description: Total number of records available
            limit:
              type: integer
              description: Maximum number of records per page
            nextOffset:
              type: integer
              description: Offset for the next page
        geojson:
          type: object
          properties:
            type:
              type: string
              enum:
              - FeatureCollection
            features:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                    - Feature
                  id:
                    type: integer
                    description: Route ID
                  geometry:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - LineString
                      coordinates:
                        type: array
                        items:
                          type: array
                          items:
                            type: number
                  properties:
                    type: object
                    properties:
                      routeId:
                        type: integer
                      roadName:
                        type: string
                      osmClass:
                        type: string
                      arrivalTime:
                        type: string
                        format: date-time
                        description: Estimated arrival time at this segment (present when departAt is used)
                      departureTime:
                        type: string
                        format: date-time
                        description: Estimated departure time from this segment (present when arriveAt is used)
                      data:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                            lat:
                              type: number
                            lon:
                              type: number
                            timestamp:
                              type: string
                              format: date-time
                            pavementCreationTime:
                              type: string
                              format: date-time
                            pavementValidTime:
                              type: string
                              format: date-time
                            pavementValidEndTime:
                              type: string
                              format: date-time
                            airTemp:
                              type: number
                            visibility:
                              type: number
                            windDirection:
                              type: number
                            windGust:
                              type: number
                            windSpeed:
                              type: number
                            iceRate:
                              type: number
                            liquidRate:
                              type: number
                            snowRate:
                              type: number
                            mobilityIndex:
                              type: number
                            pavementTemperature:
                              type: number
                            blowingSnowAlertLevel:
                              type: integer
                            compactedSnowDepth:
                              type: number
                            frostDepth:
                              type: number
                            iceDepth:
                              type: number
                            liquidDepth:
                              type: number
                            snowDepth:
                              type: number
                            unbondedIceDepth:
                              type: number
                            pavementCondition:
                              type: string
                            crashRiskIndex:
                              type: number
                            crashRiskUncertainty:
                              type: number
                            createdAt:
                              type: string
                              format: date-time
                            updatedAt:
                              type: string
                              format: date-time
        properties:
          type: 

# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dtn/refs/heads/main/openapi/dtn-pavement-conditions-api-openapi.yml