{"openapi":"3.0.2","info":{"title":"DTN Observation API","description":"# Introduction\n\nWelcome to the DTN Observations API - your gateway to access live and historical measured weather station data for over 70,000 devices globally from public and private station networks. DTN’s fast, robust, and scalable Observations API has been designed to cater to a wide range of users, including:\n\n- Scientists engaged in climate research\n- Energy company analysts\n- Insurance analysts and loss-adjusters\n- Software developers building weather apps\n\n**Key features**: DTN Observations API, gives access to both real-time and historical data in one endpoint for an ever growing list of atmospheric, road, agricultural and marine parameters. Data is quality controlled and available in metric or imperial units and gap-filling with model data is also possible. Our stations endpoint helps you to identify relevant weather stations and their meta-data. Up to 30 days of data can be requested per query, with archived data available from 1901 to 1 minute ago.\n\n\nLike other DTN API’s, your response comes in a neatly packaged format which is easily parsable using any GeoJSON parser. The interactive documentation that follows is a guide to setting up requests, understanding responses, and leveraging all the features of DTN’s Observations API.\n\n## Prerequisites\n\nTo start using the DTN Observations API, you don't need to be a programming wiz. If you're comfortable with the basics of RESTful APIs - things like GET and POST requests - you're good to go. Don't sweat the details; our easy-to-follow and interactive docs, Postman collection, and user-friendly API design will have you pulling weather observations in no time.\n\n## API Credentials\n\nTo start making requests, you will first need your API credentials that includes your client ID and client secret. If you do not have your API credentials, please contact your account manager or the DTN sales team at apisupport@dtn.com.\n\nRemember not to share your API credentials publicly or use others' API keys, as this may compromise the security of your data.\n\nAfter you have obtained your API credentials, head over to the authentication section of this documentation to learn how to get your access token.\n\n## Account Scopes\n\nAccount scopes define the features your account can access and the extent to which you can access them.\n\n**a) Core Scope**\n\nThe Core Scope is designed for basic usage, offering access to fundamental features:\n\n * **Limited Access:** Only `Core` parameters are available in the Observations endpoint. You can find the full list of these parameters in the Parameters endpoint. \n * **Time Restrictions:** You can only access observation data from the past 32 days.\n * **Observation Limitations:** Access is restricted to public observations.\n\n**b) Plus Scope**\n\nThe Plus Scope is the most advanced scope, offering more features and fewer limitations compared to the Core Scope.\n\n * **Full Access:** Accounts with this scope can access all `Core` parameters as well as additional parameters not included in the Core Scope.\n * **Latest and Archive Access:** Observation data is available from both the latest updates and archived records dating back to 1901.\n * **Observation Access:** Public observations and those from DTN EU are fully accessible.\n\nFor details about the features and limitations of these scopes, refer to the descriptions provided for each endpoint.\n\n> **Note:** `Core Scope` applies to new customers by default, existing customers are entitled to the `Plus Scope`. For new customers, please contact apisupport@dtn.com to enable access to the `Plus Scope`.\n\n## Rate Limits\n\nAPI requests are subject to rate limits based on your subscription tier:\n\n| Tier | Rate Limit |\n|------|------------|\n| **Enterprise** | 250 requests per second |\n| **Business** | 100 requests per second |\n| **Basic** | 25 requests per second |\n\n**Important Notes:**\n- Rate limits apply per API key\n- Quota usage is calculated based on observations returned, not requests made\n- If you exceed your rate limit, you'll receive a `429 Too Many Requests` response\n- Contact apisupport@dtn.com to discuss upgrading your tier or adjusting limits\n\n## Making your first request\nStarting off your journey with the DTN Observations API couldn't be easier. We've provided a variety of options to suit your needs and comfort level: \n\n**a) Interactive Documentation:** Our interactive documentation is a great starting point. Simply navigate to the \"Authentication\" section, insert your credentials, and you'll obtain an access token behind the scenes. Then, you can immediately start exploring the API endpoints right from within the documentation.\n\n**b) Postman Collection:** If you prefer a more hands-on approach, consider downloading our Postman collection from this [link](https://dtn.app.box.com/folder/163559665961?s=eckpxm0rbi8id7pnox74693laffpyh9u). \n After inserting your credentials, you can start testing and using the API in a highly interactive environment.\n \n**c) Writing Code:** If you're ready to dive into writing code, check out the Python example below which is requesting airTemp data for the morning of July 4th 2023 at Heathrow Airport:\n\n \n import requests\n import json\n\n #--- Obtain an API access token ---\n\n auth_url = 'https://api.auth.dtn.com/v1/tokens/authorize'\n\n body = {\n 'grant_type': 'client_credentials',\n 'client_id': '...insert your client id here...',\n 'client_secret': '...insert your client secret here...',\n 'audience': 'https://weather.api.dtn.com/observations'\n }\n response = requests.post(auth_url, json=body)\n access_token = response.json()['data']['access_token']\n\n #--- Invoke the API ---\n\n api_base_url = 'https://obs.api.dtn.com/v2/observations'\n data = {\n 'stationCode': 'CPTR3', \n 'parameters': 'airTemp', \n 'startTime': '2023-07-04T00:00:00Z',\n 'endTime': '2023-07-04T12:00:00Z'\n }\n\n headers = {'Authorization': 'Bearer ' + access_token}\n response = requests.get(api_base_url, params=data, headers=headers)\n\n #--- Print the response ---\n\n print(response.json())\n\n\nThis example demonstrates the complete authentication and data retrieval flow. The access token is obtained automatically in the first step and used in the API request.","version":"2.0.0"},"servers":[{"url":"https://obs.api.dtn.com"}],"paths":{"/v2/observations":{"get":{"tags":["API Endpoints"],"summary":"Observations","description":"Use this endpoint to get near-real time or historic observations for one or more stations (up to 100 stations per request).\n\n### Finding Stations and Parameters\n\n* Use the `/stations` endpoint to search for and identify stations of interest.\n* Use the `/parameters` endpoint to explore available parameters.\n* Observation type (`obsType`) descriptions are also listed in the `/stations` documentation.\n\n### Intervals\n\nControl the temporal resolution of the returned data with the `interval` parameter:\n\n| Interval | Description |\n|----------|-------------|\n| `15m` | Returns observations at fixed 15-minute intervals. Each value is interpolated from hourly observations. Can only be used with parameters ending in `15Min`. |\n| `1h` | Returns observations at fixed hourly intervals. Each value represents the closest measurement to the top of the hour. |\n| `24h` | Returns daily aggregations for parameters with a `24Hour` suffix. The aggregation period covers each full 24-hour window between `startTime` and `endTime`. |\n\n### Quota Usage\n\nQuota is calculated **per station**, not per request or observations.\n\n**Example**\n\nIf you request data for 10 stations, your total quota usage is:\n\n```\n10 stations = 10 quota units\n```\n\nThe number of observations returned, parameters requested, or time range does not affect quota usage—only the number of stations in your request.\n\n\nDeep Dive to Quota Calculations
\n\nThe quota is based solely on the number of stations requested, regardless of how many observations are returned.\n\n**Formula:**\n```\nTotal Quota Usage = Number of Stations Requested\n```\n\n**Example**\n\nLet's say you make a request for 3 stations with the following parameters:\n- **Stations:** `CPTR3, TQTCE, VMWB5`\n- **Parameters:** `airTemp, windSpeed, relativeHumidity` (3 parameters)\n- **Time Range:** 24 hours with hourly data (24 time points)\n\nTotal quota usage:\n```\n3 stations = 3 quota units\n```\n\n**Key Points:**\n- Quota is counted per station requested, not per observation\n- The number of parameters does not affect quota\n- The time range does not affect quota\n- The number of observations returned does not affect quota\n- The number of API requests doesn't affect quota—only the number of stations requested\n\n \n\n### Access Scopes and Data Availability\n\n| Feature | Core Scope | Plus Scope |\n|---------|------------|------------|\n| **Parameters** | Access limited to Core parameters only. Including non-Core parameters (e.g., `soilTemp`, `surfaceTemp`) will not change the response. | Access to all parameters, both Core and Non-Core. |\n| **Stations** | Data limited to public stations, excluding DTN EU stations. | Includes data from all stations, including DTN EU. |\n| **Data Access** | Only latest data (past 32 days) is available. | Supports both latest and archived observations (dating back to 1901). |\n\n### Gap Filling with Model Data\n\n**What is Gap Filling?**\n\nFills missing observations with data from DTN's gridded weather model.\n\n**Important:** When `gapFill=true`, the `obsProperties` parameter is automatically set to `true` by default to help you identify which observations are gap-filled.\n\n\nDeep Dive to Gap Filling
\n\n**When to Use:**\n- Creating continuous time series for analysis\n- Machine learning training datasets\n- Filling short data gaps in station records\n\n**Requirements:**\n- Gap-filling scope enabled on your account\n- Use with `interval=1h`\n- Available from January 1, 2013 onwards\n\n**Supported Parameters:**\n\nNot all parameters support gap filling. Check the `/parameters` endpoint for details.\n\n**Example:**\n```\nGET /v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed&startTime=2025-01-20T00:00:00Z&endTime=2025-01-22T00:00:00Z&interval=1h&gapFill=true\n```\n\n**Identifying Gap-Filled Data:**\n\nWhen `gapFill=true`, observation properties are automatically included in the response. Gap-filled observations will have specific indicators in the properties to distinguish them from actual station measurements.\n\n**Response Comparison:**\n\n**Without Gap Filling (`gapFill=false` or omitted):**\n\nMissing data at 11:00 creates a gap in the time series.\n\n```json\n{\n \"properties\": {\n \"2025-01-20T10:00:00Z\": {\n \"airTemp\": 15.5\n },\n \"2025-01-20T12:00:00Z\": {\n \"airTemp\": 17.2\n }\n }\n}\n```\n\n**With Gap Filling (`gapFill=true`):**\n\nGap at 11:00 is filled with model data, indicated by `\"obsType\": \"MODEL\"`.\n\n```json\n{\n \"properties\": {\n \"2025-01-20T10:00:00Z\": {\n \"airTemp\": 15.5,\n \"airTempProperties\": {\n \"obsType\": \"METAR\",\n \"isDerived\": false,\n \"qc\": \"pass\"\n }\n },\n \"2025-01-20T11:00:00Z\": {\n \"airTemp\": 16.3,\n \"airTempProperties\": {\n \"obsType\": \"MODEL\"\n }\n },\n \"2025-01-20T12:00:00Z\": {\n \"airTemp\": 17.2,\n \"airTempProperties\": {\n \"obsType\": \"METAR\",\n \"isDerived\": false,\n \"qc\": \"pass\"\n }\n }\n }\n}\n```\n\n**Key Difference:** Gap-filled observations have `\"obsType\": \"MODEL\"` in the properties, while actual station measurements show the observation type (e.g., `\"METAR\"`, `\"SYNOP\"`).\n\n \n\n### Time Zones and Timestamps\n\n**All Times are in UTC**\n\n**Important:** All timestamps in requests and responses use UTC (Coordinated Universal Time).\n\n**Request Format:**\n- Use ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ` or `YYYY-MM-DDTHH:MM:SS`\n- The `Z` suffix explicitly indicates UTC time, but timestamps without `Z` are also treated as UTC\n- Examples: `2025-01-22T14:30:00Z` or `2025-01-22T14:30:00`\n\n\nDeep Dive to Time Zones and Timestamps
\n\n**Converting Local Time to UTC**\n\nIf you need data for a specific local time:\n1. Convert your local time to UTC\n2. Use the UTC time in your API request\n\n**Example:**\n- Local time: January 22, 2025, 9:00 AM EST (UTC-5)\n- UTC time: January 22, 2025, 2:00 PM UTC\n- API parameter: `startTime=2025-01-22T14:00:00Z` or `startTime=2025-01-22T14:00:00`\n\n**Daily Aggregations and Time Zones**\n\nWhen using `interval=24h`, the aggregation period is determined by your `startTime`:\n\n**Midnight-to-Midnight Aggregation:**\n- Set `startTime` to midnight in your desired timezone (expressed in UTC)\n- Example for EST (UTC-5): `startTime=2025-01-22T05:00:00Z` (midnight EST)\n\n**Understanding `aggregationTimeLabel`:**\n- `end` (default): Timestamp represents the end of the 24-hour period\n- `start`: Timestamp represents the start of the 24-hour period\n\n**Example:**\n```\nstartTime=2025-01-22T00:00:00Z\nendTime=2025-01-25T00:00:00Z\ninterval=24h\naggregationTimeLabel=end\n```\n\nReturns data for:\n- `2025-01-23T00:00:00Z` (data from Jan 22 00:00 to Jan 23 00:00)\n- `2025-01-24T00:00:00Z` (data from Jan 23 00:00 to Jan 24 00:00)\n- `2025-01-25T00:00:00Z` (data from Jan 24 00:00 to Jan 25 00:00)\n\n \n\n### Data Quality and QC Flags\n\n**Understanding Quality Control**\n\nDTN applies automated quality control checks to all observations to identify potentially erroneous data.\n\n**QC Flag Values:**\n- `pass`: Observation passed all quality checks\n- `suspicious`: Observation flagged as potentially questionable\n- `fail`: Observation failed quality checks\n\n\nDeep Dive to QC Flags
\n\n**Viewing QC Flags**\n\nSet `obsProperties=true` to include QC information in the response.\n\n**Example Response:**\n```json\n{\n \"timestamp\": \"2025-01-22T12:00:00Z\",\n \"airTemp\": 45.2,\n \"properties\": {\n \"airTemp\": {\n \"qc\": \"suspicious\",\n \"obsType\": \"METAR\",\n \"isDerived\": false\n }\n }\n}\n```\n\n**Filtering by Quality**\n\n**Get Only Good Data:**\n\nUse `onlyGood=true` to automatically filter out observations that failed QC.\n\n```\nGET /v2/observations?stationCode=CPTR3¶meters=airTemp&startTime=2025-01-22T00:00:00Z&endTime=2025-01-22T23:59:59Z&onlyGood=true\n```\n\n**Derived Parameters**\n\nSome parameters are calculated from other measurements:\n\n**isDerived Flag:**\n- `true`: Value calculated by DTN (e.g., `relativeHumidity` from `dewPoint` and `airTemp`)\n- `false`: Direct measurement from the station\n\n**Common Derived Parameters:**\n- `relativeHumidity` (from `dewPoint` and `airTemp`)\n- `heatIndex` (from `airTemp` and `relativeHumidity`)\n- `windChill` (from `airTemp` and `windSpeed`)\n\n**Historical Data Limitations**\n\n**Note:** QC flags and observation properties may not be available for archived historical data.\n\n- Latest data (past 32 days): Full QC information available\n- Archived data (older than 32 days): Limited or no QC information\n\n \n\n### Station Tags (showTags Parameter)\n\n**What are Station Tags?**\n\nStation tags contain metadata about observation stations, including identifying information such as station name and management ID. By default, tags are not included in the response to maintain backward compatibility.\n\n**When to Use:**\n\nUse `showTags=true` when you need to display station information alongside observations, such as:\n- Plotting observations on a map with station names\n- Creating reports that identify data sources\n- Correlating observations with station metadata without additional API calls\n\n**How It Works:**\n\n- `showTags=false` (default): Response excludes tags, keeping payload minimal\n- `showTags=true`: Each feature includes a `tags` object with station metadata\n\n**Tag Structure:**\n\nWhen included, tags contain at minimum:\n- `name`: Human-readable station name\n- `mgID`: Management ID for the station\n\n**Example Comparison:**\n\n**Without Tags (`showTags=false` or omitted):**\n```json\n{\n \"type\": \"Feature\",\n \"geometry\": {\n \"type\": \"Point\",\n \"coordinates\": [-0.45, 51.4833]\n },\n \"properties\": {\n \"2025-01-22T00:00:00Z\": {\n \"airTemp\": 3,\n \"windSpeed\": 2.06\n }\n }\n}\n```\n\n**With Tags (`showTags=true`):**\n```json\n{\n \"type\": \"Feature\",\n \"geometry\": {\n \"type\": \"Point\",\n \"coordinates\": [-0.45, 51.4833]\n },\n \"properties\": {\n \"tags\": {\n \"name\": \"London Weather Station\",\n \"mgID\": \"LDN001\"\n },\n \"2025-01-22T00:00:00Z\": {\n \"airTemp\": 3,\n \"windSpeed\": 2.06\n }\n }\n}\n```\n\n**Use Cases:**\n\n1. **Weather Dashboards**: Display station names alongside real-time observations\n2. **Data Analysis**: Identify observation sources in reports and visualizations\n3. **Mobile Apps**: Show user-friendly station names in weather apps\n4. **Integration**: Reduce API calls by getting station info with observations\n\n### Example Request\n\n```\nGET https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed,wbgt&startTime=2025-01-22T00:00:00Z&endTime=2025-01-22T01:00:00Z&obsProperties=true\n```\n\n**With Station Tags:**\n\n```\nGET https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed&startTime=2025-01-22T00:00:00Z&endTime=2025-01-22T01:00:00Z&showTags=true\n```\n\n### Notes\n\n* Maximum of 100 stations per request.\n* For detailed parameter definitions, see the `/parameters` endpoint documentation.\n* Station tags are included in the response only when `showTags=true` is explicitly set.","operationId":"get_observations_v2_observations_get","parameters":[{"description":"Comma-separated list of parameters, e.g. `airTemp,precipAcc60Min,windSpeed`. A full list of supported parameters and definitions is available through the parameters endpoint.","required":true,"schema":{"title":"Parameters","type":"string","description":"Comma-separated list of parameters, e.g. `airTemp,precipAcc60Min,windSpeed`. A full list of supported parameters and definitions is available through the parameters endpoint."},"name":"parameters","in":"query"},{"description":"Start of the time range, in the format `2023-04-30T19:00:00Z`","required":true,"schema":{"title":"Starttime","type":"string","description":"Start of the time range, in the format `2023-04-30T19:00:00Z`","format":"date-time"},"name":"startTime","in":"query"},{"description":"End of the time range, in the format `2023-04-30T19:00:00Z`. Limited to 1 month per query.","required":true,"schema":{"title":"Endtime","type":"string","description":"End of the time range, in the format `2023-04-30T19:00:00Z`. Limited to 1 month per query.","format":"date-time"},"name":"endTime","in":"query"},{"description":"Comma-separated list of up to 100 DTN station codes, e.g. `YNQXX,CPTR3,KNYC1`. You can request observations for multiple stations at once (maximum 100).","required":true,"schema":{"title":"Stationcode","type":"string","description":"Comma-separated list of up to 100 DTN station codes, e.g. `YNQXX,CPTR3,KNYC1`. You can request observations for multiple stations at once (maximum 100)."},"name":"stationCode","in":"query"},{"description":"Comma-separated list of obsTypes, e.g. `METAR,SYNOP,RWIS,AG` If unspecified, all types are shown.","required":false,"schema":{"title":"Obstypes","type":"string","description":"Comma-separated list of obsTypes, e.g. `METAR,SYNOP,RWIS,AG` If unspecified, all types are shown."},"name":"obsTypes","in":"query"},{"description":"Set to `True` to hide observations that have failed QC. QC flags may not be available for historic data.","required":false,"schema":{"title":"Onlygood","type":"boolean","description":"Set to `True` to hide observations that have failed QC.","default":false},"name":"onlyGood","in":"query"},{"description":"Set to `True` to view properties such as `qc` flag (result of checks: pass, suspicious or fail), `obsType` (see parameters endpoint documentation) and `isDerived` (True if the value is calculated by us from other parameters e.g. relativeHumidity from dewPoint and airTemp). Properties may not be available for historic data.","required":false,"schema":{"title":"Obsproperties","type":"boolean","description":"Set to `True` to view properties such as `qc` flag (result of checks: pass, suspicious or fail), `obsType` (see parameters endpoint documentation) and `isDerived` (True if the value is calculated by us from other parameters e.g. relativeHumidity from dewPoint and airTemp). Properties may not be available for historic data."},"name":"obsProperties","in":"query"},{"description":"Set to `True` to include station tags (such as name and management ID) in the response. When set to `True`, each feature in the response will include a `tags` object containing station metadata. Default is `False` to maintain backward compatibility.","required":false,"schema":{"title":"ShowTags","type":"boolean","description":"Set to `True` to include station tags (such as name and management ID) in the response. When set to `True`, each feature in the response will include a `tags` object containing station metadata. Default is `False` to maintain backward compatibility.","default":false},"name":"showTags","in":"query"},{"description":"Set to `15m` for 15-minute intervals, `1h` for hourly, `24h` for daily, or exclude for all observations received from the station. 15-minute interval data will be calculated on the fly and can only be used with parameters that end in the `15Min` suffix. Daily aggregated data will be calculated on the fly and the definition of 1 day is determined by the startTime. To get data aggregated from midnight to midnight, set the start time to your local midnight (expressed in UTC). Can only be used with parameters that end in the `24Hour` suffix. Data is representative of the 24 hours before the given timestamp. E.g. airTempMax24Hour at 2024-09-10T00:00 is the maximum temperature for the 9th September UTC day.","required":false,"schema":{"type":"string","pattern":"(^15m$|^1h$|^24h$)","title":"Interval","description":"Set to `15m` for 15-minute intervals, `1h` for hourly, `24h` for daily, or exclude for all observations received from the station. 15-minute interval data will be calculated on the fly and can only be used with parameters that end in the `15Min` suffix. Daily aggregated data will be calculated on the fly and the definition of 1 day is determined by the startTime. To get data aggregated from midnight to midnight, set the start time to your local midnight (expressed in UTC). Can only be used with parameters that end in the `24Hour` suffix. Data is representative of the 24 hours before the given timestamp. E.g. airTempMax24Hour at 2024-09-10T00:00 is the maximum temperature for the 9th September UTC day."},"name":"interval","in":"query"},{"description":"Set to `True` to fill gaps in hourly time-series with values from our gridded weather model. Hourly model data is available up to 10 years in the past for all locations and selected parameters. Requires gap-filling scope.","required":false,"schema":{"type":"boolean","title":"Gapfill","description":"Set to `True` to fill gaps in hourly time-series with values from our gridded weather model. Hourly model data is available from 1st January 2013 for all locations and selected parameters. Requires gap-filling scope.","default":false},"name":"gapFill","in":"query"},{"description":"Set to `us-std` to change units from `si-std` to Imperial Units. Default value is `si-std`","required":false,"schema":{"title":"Units","pattern":"(^si-std$|^us-std$)","type":"string","description":"Set to `us-std` to change units from `si-std` to Imperial Units. Default value is `si-std`","default":"si-std"},"name":"units","in":"query"},{"description":"Specifies how the timestamp is labeled in the response when using time-aggregated data (e.g., `interval=24h`).\n\nThis parameter controls whether the timestamp returned for each data point reflects the start or end of the aggregation window.\n\nSupported values:\n\n`end` (default) - The timestamp represents the end of the aggregation period.\n\n`start` - The timestamp represents the start of the aggregation period.\nNote: This parameter is only applicable when interval=24h.","required":false,"schema":{"title":"aggregationTimeLabel","pattern":"(^start$|^end$)","type":"string","description":"Specifies how the timestamp is labeled in the response when using time-aggregated data (e.g., `interval=24h`).\n\nThis parameter controls whether the timestamp returned for each data point reflects the start or end of the aggregation window.\n\nSupported values:\n\n`end` (default) - The timestamp represents the end of the aggregation period.\n\n`start` - The timestamp represents the start of the aggregation period.\nNote: This parameter is only applicable when interval=24h.","default":"end"},"name":"aggregationTimeLabel","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Observations V2 Observations Get","type":"array","items":{"$ref":"#/components/schemas/ObsDataRespModel"}},"examples":{"Observations Endpoint Core Scope":{"$ref":"#/components/examples/Observations Endpoint Core Scope"},"Observations Endpoint Plus Scope":{"$ref":"#/components/examples/Observations Endpoint Plus Scope"},"Observations with showTags=true":{"$ref":"#/components/examples/Observations with showTags=true"},"Observations with showTags=false":{"$ref":"#/components/examples/Observations with showTags=false"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTimeoutError"}}}}},"security":[{"clientCredentials":[]}],"x-codeSamples":[{"lang":"C + Libcurl","source":"#include \n#include \n\nint main(void) {\n CURL *curl;\n CURLcode res;\n \n curl = curl_easy_init();\n if(curl) {\n struct curl_slist *headers = NULL;\n headers = curl_slist_append(headers, \"Authorization: Bearer YOUR_ACCESS_TOKEN\");\n \n curl_easy_setopt(curl, CURLOPT_URL, \n \"https://obs.api.dtn.com/v2/observations?\"\n \"stationCode=CPTR3&\"\n \"parameters=airTemp,windSpeed&\"\n \"startTime=2025-01-22T00:00:00Z&\"\n \"endTime=2025-01-22T12:00:00Z\");\n curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);\n \n res = curl_easy_perform(curl);\n \n curl_slist_free_all(headers);\n curl_easy_cleanup(curl);\n }\n return 0;\n}"},{"lang":"Csharp + Restsharp","source":"using RestSharp;\nusing System;\n\nclass Program\n{\n static void Main()\n {\n var client = new RestClient(\"https://obs.api.dtn.com\");\n var request = new RestRequest(\"/v2/observations\", Method.Get);\n \n request.AddHeader(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\");\n request.AddParameter(\"stationCode\", \"CPTR3\");\n request.AddParameter(\"parameters\", \"airTemp,windSpeed\");\n request.AddParameter(\"startTime\", \"2025-01-22T00:00:00Z\");\n request.AddParameter(\"endTime\", \"2025-01-22T12:00:00Z\");\n \n var response = client.Execute(request);\n Console.WriteLine(response.Content);\n }\n}"},{"lang":"Go + Native","source":"package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n baseURL := \"https://obs.api.dtn.com/v2/observations\"\n \n params := url.Values{}\n params.Add(\"stationCode\", \"CPTR3\")\n params.Add(\"parameters\", \"airTemp,windSpeed\")\n params.Add(\"startTime\", \"2025-01-22T00:00:00Z\")\n params.Add(\"endTime\", \"2025-01-22T12:00:00Z\")\n \n req, _ := http.NewRequest(\"GET\", baseURL+\"?\"+params.Encode(), nil)\n req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n \n client := &http.Client{}\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n \n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}"},{"lang":"Java + Okhttp","source":"import okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.Response;\n\npublic class ObservationsExample {\n public static void main(String[] args) throws Exception {\n OkHttpClient client = new OkHttpClient();\n \n String url = \"https://obs.api.dtn.com/v2/observations?\" +\n \"stationCode=CPTR3&\" +\n \"parameters=airTemp,windSpeed&\" +\n \"startTime=2025-01-22T00:00:00Z&\" +\n \"endTime=2025-01-22T12:00:00Z\";\n \n Request request = new Request.Builder()\n .url(url)\n .addHeader(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n .build();\n \n try (Response response = client.newCall(request).execute()) {\n System.out.println(response.body().string());\n }\n }\n}"},{"lang":"Java + Unirest","source":"import kong.unirest.Unirest;\nimport kong.unirest.HttpResponse;\n\npublic class ObservationsExample {\n public static void main(String[] args) {\n HttpResponse response = Unirest.get(\"https://obs.api.dtn.com/v2/observations\")\n .header(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n .queryString(\"stationCode\", \"CPTR3\")\n .queryString(\"parameters\", \"airTemp,windSpeed\")\n .queryString(\"startTime\", \"2025-01-22T00:00:00Z\")\n .queryString(\"endTime\", \"2025-01-22T12:00:00Z\")\n .asString();\n \n System.out.println(response.getBody());\n }\n}"},{"lang":"Javascript + Jquery","source":"$.ajax({\n url: 'https://obs.api.dtn.com/v2/observations',\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n },\n data: {\n stationCode: 'CPTR3',\n parameters: 'airTemp,windSpeed',\n startTime: '2025-01-22T00:00:00Z',\n endTime: '2025-01-22T12:00:00Z'\n },\n success: function(data) {\n console.log(data);\n },\n error: function(error) {\n console.error(error);\n }\n});"},{"lang":"Javascript + Xhr","source":"const xhr = new XMLHttpRequest();\nconst params = new URLSearchParams({\n stationCode: 'CPTR3',\n parameters: 'airTemp,windSpeed',\n startTime: '2025-01-22T00:00:00Z',\n endTime: '2025-01-22T12:00:00Z'\n});\n\nxhr.open('GET', `https://obs.api.dtn.com/v2/observations?${params}`);\nxhr.setRequestHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');\n\nxhr.onload = function() {\n if (xhr.status === 200) {\n console.log(JSON.parse(xhr.responseText));\n }\n};\n\nxhr.send();"},{"lang":"Node + Native","source":"const https = require('https');\nconst querystring = require('querystring');\n\nconst params = querystring.stringify({\n stationCode: 'CPTR3',\n parameters: 'airTemp,windSpeed',\n startTime: '2025-01-22T00:00:00Z',\n endTime: '2025-01-22T12:00:00Z'\n});\n\nconst options = {\n hostname: 'obs.api.dtn.com',\n path: `/v2/observations?${params}`,\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n }\n};\n\nconst req = https.request(options, (res) => {\n let data = '';\n res.on('data', (chunk) => data += chunk);\n res.on('end', () => console.log(JSON.parse(data)));\n});\n\nreq.end();"},{"lang":"Node + Request","source":"const request = require('request');\n\nconst options = {\n url: 'https://obs.api.dtn.com/v2/observations',\n headers: {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n },\n qs: {\n stationCode: 'CPTR3',\n parameters: 'airTemp,windSpeed',\n startTime: '2025-01-22T00:00:00Z',\n endTime: '2025-01-22T12:00:00Z'\n },\n json: true\n};\n\nrequest.get(options, (error, response, body) => {\n if (!error && response.statusCode === 200) {\n console.log(body);\n }\n});"},{"lang":"Objc + Nsurlsession","source":"#import \n\nNSString *urlString = @\"https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed&startTime=2025-01-22T00:00:00Z&endTime=2025-01-22T12:00:00Z\";\nNSURL *url = [NSURL URLWithString:urlString];\n\nNSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];\n[request setHTTPMethod:@\"GET\"];\n[request setValue:@\"Bearer YOUR_ACCESS_TOKEN\" forHTTPHeaderField:@\"Authorization\"];\n\nNSURLSession *session = [NSURLSession sharedSession];\nNSURLSessionDataTask *task = [session dataTaskWithRequest:request\n completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {\n if (!error) {\n NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];\n NSLog(@\"%@\", result);\n }\n }];\n[task resume];"},{"lang":"Ocaml + Cohttp","source":"open Lwt\nopen Cohttp\nopen Cohttp_lwt_unix\n\nlet uri = Uri.of_string \n \"https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed&startTime=2025-01-22T00:00:00Z&endTime=2025-01-22T12:00:00Z\"\n\nlet headers = Header.init ()\n |> fun h -> Header.add h \"Authorization\" \"Bearer YOUR_ACCESS_TOKEN\"\n\nlet () =\n let body = Client.get ~headers uri >>= fun (resp, body) ->\n body |> Cohttp_lwt.Body.to_string >|= fun body ->\n print_endline body\n in\n Lwt_main.run body"},{"lang":"Php + Curl","source":" 'CPTR3',\n 'parameters' => 'airTemp,windSpeed',\n 'startTime' => '2025-01-22T00:00:00Z',\n 'endTime' => '2025-01-22T12:00:00Z'\n]);\n\ncurl_setopt($ch, CURLOPT_URL, \"https://obs.api.dtn.com/v2/observations?\" . $params);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n 'Authorization: Bearer YOUR_ACCESS_TOKEN'\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;\n?>"},{"lang":"Php + Http1","source":"setMethod(HTTP_REQUEST_METHOD_GET);\n$request->addHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');\n\n$url = $request->getUrl();\n$url->addQueryString('stationCode', 'CPTR3');\n$url->addQueryString('parameters', 'airTemp,windSpeed');\n$url->addQueryString('startTime', '2025-01-22T00:00:00Z');\n$url->addQueryString('endTime', '2025-01-22T12:00:00Z');\n\n$request->sendRequest();\necho $request->getResponseBody();\n?>"},{"lang":"Php + Http2","source":"setMethod(HTTP_Request2::METHOD_GET);\n$request->setHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');\n\n$url = $request->getUrl();\n$url->setQueryVariables([\n 'stationCode' => 'CPTR3',\n 'parameters' => 'airTemp,windSpeed',\n 'startTime' => '2025-01-22T00:00:00Z',\n 'endTime' => '2025-01-22T12:00:00Z'\n]);\n\n$response = $request->send();\necho $response->getBody();\n?>"},{"lang":"Python + Python3","source":"import requests\n\nurl = 'https://obs.api.dtn.com/v2/observations'\n\nheaders = {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n}\n\nparams = {\n 'stationCode': 'CPTR3',\n 'parameters': 'airTemp,windSpeed',\n 'startTime': '2025-01-22T00:00:00Z',\n 'endTime': '2025-01-22T12:00:00Z'\n}\n\nresponse = requests.get(url, headers=headers, params=params)\nprint(response.json())"},{"lang":"Python + Requests","source":"import requests\n\nurl = 'https://obs.api.dtn.com/v2/observations'\n\nheaders = {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n}\n\nparams = {\n 'stationCode': 'CPTR3',\n 'parameters': 'airTemp,windSpeed',\n 'startTime': '2025-01-22T00:00:00Z',\n 'endTime': '2025-01-22T12:00:00Z'\n}\n\nresponse = requests.get(url, headers=headers, params=params)\nprint(response.json())"},{"lang":"Ruby + Native","source":"require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://obs.api.dtn.com/v2/observations')\nparams = {\n stationCode: 'CPTR3',\n parameters: 'airTemp,windSpeed',\n startTime: '2025-01-22T00:00:00Z',\n endTime: '2025-01-22T12:00:00Z'\n}\nuri.query = URI.encode_www_form(params)\n\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|\n http.request(request)\nend\n\nputs JSON.parse(response.body)"},{"lang":"Shell + Curl","source":"curl -X GET \"https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed&startTime=2025-01-22T00:00:00Z&endTime=2025-01-22T12:00:00Z\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" "},{"lang":"Shell + Httpie","source":"http GET \"https://obs.api.dtn.com/v2/observations\" \\\n \"Authorization:Bearer YOUR_ACCESS_TOKEN\" \\\n stationCode==CPTR3 \\\n parameters==airTemp,windSpeed \\\n startTime==2025-01-22T00:00:00Z \\\n endTime==2025-01-22T12:00:00Z"},{"lang":"Shell + Wget","source":"wget --header=\"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n \"https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed&startTime=2025-01-22T00:00:00Z&endTime=2025-01-22T12:00:00Z\" \\\n -O -"},{"lang":"Swift + Nsurlsession","source":"import Foundation\n\nlet urlString = \"https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed&startTime=2025-01-22T00:00:00Z&endTime=2025-01-22T12:00:00Z\"\nlet url = URL(string: urlString)!\n\nvar request = URLRequest(url: url)\nrequest.httpMethod = \"GET\"\nrequest.setValue(\"Bearer YOUR_ACCESS_TOKEN\", forHTTPHeaderField: \"Authorization\")\n\nlet task = URLSession.shared.dataTask(with: request) { data, response, error in\n if let data = data {\n let result = String(data: data, encoding: .utf8)\n print(result ?? \"\")\n }\n}\ntask.resume()"}]}},"/v2/observations/stations":{"get":{"tags":["API Endpoints"],"summary":"Stations","description":"Use this endpoint to retrieve station metadata and details about available observation types. You can search for one or more stations by providing their `stationCodes` in a single request.\n\n### Station Metadata\n\nEach station record includes key metadata fields such as:\n\n- **Elevation** — height above mean sea level, expressed in meters (SI units)\n- **Location** — latitude and longitude\n- **Observation Types (obsTypes)** — list of supported observation categories (see table below)\n- **Available Parameters (parameters)** — list of observation parameters that can be requested from this station via the `/observations` endpoint\n- **Archive Availability (isArchived)** — indicates whether historical data is available\n- **Observation Timestamps** — includes both the first and latest observation times for that station\n- **Tags** — identifiers and metadata such as ICAO, WMO, IATA, GHCND, and station name\n\n### Quota Usage\n\nQuota usage is calculated **per returned station**, not per API request.\n\n**Example:** If you request metadata for 50 stations and all 50 are returned, your quota usage is 50 stations. The quota is applied based on the number of stations returned in the response, regardless of how many you requested.\n\n### Access Scopes\n\nYour account scope determines which stations you can access:\n\n| Feature | Core Scope | Plus Scope |\n|---------|------------|------------|\n| **Station Access** | Public stations only | Public stations + DTN EU stations |\n| **Coverage** | Global public networks (METAR, SYNOP, etc.) | All public networks + DTN's European private network |\n| **Typical Use Cases** | General weather monitoring, basic applications | Professional applications requiring comprehensive European coverage |\n\n> **Note:** To check your current scope or upgrade, contact apisupport@dtn.com\n\n### Observation Types (obsTypes)\n\nThe `obsTypes` field identifies the type or source network of a weather station's observations. Each observation type reflects a specific network, instrumentation standard, or operational purpose, which determines the kind of data available, its frequency, and its reliability.\n\n| obsType | Description |\n|---------|-------------|\n| **SYNOP** | Surface synoptic observation stations (typically WMO official sites, government-operated). |\n| **METAR** | Meteorological Terminal Air Reports, primarily for aviation use. Global coverage across airfields. |\n| **Citizen** | Individually operated stations (primarily report `precipAcc60Min` data). |\n| **HFM** | High-Frequency METAR stations providing more frequent updates. |\n| **AG** | Agricultural or farm-based stations (including some DAVIS non-agricultural units). |\n| **RWIS** | Road Weather Information Systems — roadside sensors for monitoring road conditions, often operated by local or state agencies. |\n| **SHIP** | Observations collected aboard vessels. |\n| **BUOY** | Observations from floating buoys. |\n| **Hydro** | Hydrological stations (e.g., river or water-level monitoring). |\n| **Others** |Stations that don’t fall into the above obs types. |\n\n\n\n### Search Methods\n\nThe stations endpoint supports multiple search methods via the `by` parameter. Each method requires different parameters:\n\n| Search Method | Required Parameters | Optional Parameters | Description |\n|---------------|---------------------|---------------------|-------------|\n| `by=stationCodes` | `stationCodes` | `obsTypes`, `archiveCounts` | Search for specific stations by their station codes (up to 100). |\n| `by=radius` | `lat`, `lon` | `radius`, `obsTypes`, `showBest` | Find stations within a radius (km) of a geographic point. Default radius: 25km, max: 100km. |\n| `by=boundingBox` | `minLat`, `maxLat`, `minLon`, `maxLon` | `obsTypes`, `showBest` | Find stations within a rectangular geographic area. |\n| `by=tags` | `tags` | `obsTypes` | Search stations by metadata tags (e.g., ICAO, WMO, IATA, GHCND, name). |\n\n\nDeep Dive to Search Methods
\n\n### Use Cases\n\n- **Discover nearby stations** → `by=radius` with `lat`, `lon`, and `radius`\n- **Get all stations in a region** → `by=boundingBox` with geographic boundaries\n- **Retrieve known stations directly** → `by=stationCodes` with specific codes\n- **Search by identifiers** → `by=tags` using `icao`, `wmo`, `iata`, `ghcnd`, or `name` tags\n\n### Understanding `showBest`\n\nWhen using `by=radius` or `by=boundingBox`, you can add `showBest=true` to optimize results.\n\n**What showBest Does:**\n- Prioritizes stations with the most complete parameter coverage\n- Favors stations with recent observations\n- Prefers official networks (METAR, SYNOP) over citizen stations\n- Reduces redundant stations in dense areas\n\n**Example:**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=radius&lat=51.5074&lon=-0.1278&radius=50&showBest=true\n```\n\n### Searching by Tags\n\nTags allow you to find stations using standard identifiers or names.\n\n**Supported Tag Types:**\n\n| Tag Type | Format | Example | Description |\n|----------|--------|---------|-------------|\n| ICAO | `icao:CODE` | `icao:EGLL` | International Civil Aviation Organization code (airports) |\n| WMO | `wmo:CODE` | `wmo:03772` | World Meteorological Organization code |\n| GHCND | `ghcnd:CODE` | `ghcnd:USW00094728` | Global Historical Climatology Network Daily |\n| IATA | `iata:CODE` | `iata:LHR` | International Air Transport Association code (airports) |\n| Name | `name:TEXT` | `name:Heathrow` | Station name (partial match supported) |\n\n**Example Requests:**\n\n**Find by ICAO code:**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=tags&tags={\"icao\": \"EGLL\"}\n```\n\n**Find by WMO code:**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=tags&tags={\"wmo\": \"3240\"}\n```\n\n**Find by IATA code:**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=tags&tags={\"iata\": \"LHR\"}\n```\n\n**Find by station name:**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=tags&tags={\"name\": \"London\"}\n```\nReturns all stations with London in their name.\n\n**Wildcard search (searches across all tag types):**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=tags&tags=3240\n```\nSearches for \"3240\" in all tag fields (WMO, ICAO, IATA, GHCND, name).\n\n**Multiple values for same tag type:**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=tags&tags={\"icao\": [\"KLXY\", \"KDHT\"]}\n```\nReturns stations matching either ICAO code.\n\n### Usage Notes\n\n- You can request up to 100 stations per call.\n- The `archiveCounts` parameter is only valid when requesting metadata for a single station.\n- Use the `/parameters` endpoint to discover available parameters for each observation type.\n- This endpoint returns data in GeoJSON FeatureCollection format for easy spatial processing.\n\n### Example Requests\n\n**Search by Station Codes:**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,WXYZ1\n```\n\n**Search by Radius:**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=radius&lat=44.55194&lon=-70.544170&radius=10\n```\n\n**Search by Bounding Box:**\n```\nGET https://obs.api.dtn.com/v2/observations/stations?by=boundingBox&minLat=50.85&maxLat=54.85&minLon=-1.85&maxLon=0.85\n```\n\n ","operationId":"get_stations_v2_observations_stations_get","parameters":[{"description":"Get stations by `radius`|`boundingBox`|`stationCodes`|`tags`","required":true,"schema":{"title":"By","pattern":"(^radius$|^boundingBox$|^stationCodes$|^tags$)","type":"string","description":"Get stations by `radius`|`boundingBox`|`stationCodes`|`tags`"},"name":"by","in":"query"},{"description":"Comma-separated list of up to 100 DTN station codes, e.g. `YNQXX,CPTR3,KNYC1`. Supports retrieving metadata for multiple stations at once.","required":false,"schema":{"title":"Stationcodes","type":"string","description":"Comma-separated list of up to 100 DTN station codes, e.g. `YNQXX,CPTR3,KNYC1`. Supports retrieving metadata for multiple stations (maximum 100). **Quota Usage:** Quota is calculated per returned station, not per request."},"name":"stationCodes","in":"query"},{"description":"Latitude for radial search in decimal degrees, e.g. `54.85`. Valid range: -90 to 90.","required":false,"schema":{"title":"Lat","type":"number","minimum":-90,"maximum":90,"description":"Latitude for radial search in decimal degrees, e.g. `54.85`. Valid range: -90 to 90."},"name":"lat","in":"query"},{"description":"Longitude for radial search in decimal degrees, e.g. `-0.50`. Valid range: -180 to 180.","required":false,"schema":{"title":"Lon","type":"number","minimum":-180,"maximum":180,"description":"Longitude for radial search in decimal degrees, e.g. `-0.50`. Valid range: -180 to 180."},"name":"lon","in":"query"},{"description":"Radius for radial search in kilometres. If not set, default is `25`.","required":false,"schema":{"title":"Radius","maximum":100,"minimum":0,"type":"number","description":"Radius for radial search in kilometres. If not set, default is `25`.","default":25},"name":"radius","in":"query"},{"description":"Minimum latitude for boundingBox search in decimal degrees, e.g. `50.85`. Valid range: -90 to 90.","required":false,"schema":{"title":"Minlat","type":"number","minimum":-90,"maximum":90,"description":"Minimum latitude for boundingBox search in decimal degrees, e.g. `50.85`. Valid range: -90 to 90."},"name":"minLat","in":"query"},{"description":"Maximum latitude for boundingBox search in decimal degrees, e.g. `54.85`","required":false,"schema":{"title":"Maxlat","type":"number","minimum":-90,"maximum":90,"description":"Maximum latitude for boundingBox search in decimal degrees, e.g. `54.85`"},"name":"maxLat","in":"query"},{"description":"Minimum longitude for boundingBox search in decimal degrees, e.g. `-1.85`","required":false,"schema":{"title":"Minlon","type":"number","minimum":-180,"maximum":180,"description":"Minimum longitude for boundingBox search in decimal degrees, e.g. `-1.85`"},"name":"minLon","in":"query"},{"description":"Maximum longitude for boundingBox search in decimal degrees, e.g. `0.85`","required":false,"schema":{"title":"Maxlon","type":"number","minimum":-180,"maximum":180,"description":"Maximum longitude for boundingBox search in decimal degrees, e.g. `0.85`"},"name":"maxLon","in":"query"},{"description":"Comma-separated list of obsTypes, e.g. `METAR,SYNOP,RWIS,AG`. If not set, default are `METAR,SYNOP`.","required":false,"schema":{"title":"Obstypes","type":"string","description":"Comma-separated list of obsTypes, e.g. `METAR,SYNOP,RWIS,AG`. If not set, default are `METAR,SYNOP`."},"name":"obsTypes","in":"query"},{"description":"Set to `True` to include station tags (such as name and management ID) in the response. When set to `True`, each feature in the response will include a `tags` object containing station metadata. Default is `False` to maintain backward compatibility.","required":false,"schema":{"title":"ShowTags","type":"boolean","description":"Set to `True` to include station tags (such as name and management ID) in the response. When set to `True`, each feature in the response will include a `tags` object containing station metadata. Default is `False` to maintain backward compatibility.","default":false},"name":"showTags","in":"query"},{"description":"Set to `True` to rank stations by how representative they are of the entered location. This accounts for elevation differences (measured in meters) between stations.","required":false,"schema":{"title":"Showbest","type":"boolean","description":"Set to `True` to rank stations by how representative they are of the entered location. This accounts for elevation differences (measured in meters) between stations.","default":false},"name":"showBest","in":"query"},{"description":"URL encoded json string or a free hand string for wild card search. For multiple tags, they are filtered individually (OR), e.g. `{\"icao\": \"KJFK\", \"wmo\": \"3240\"}` means you're searching for stations with the ICAO code KJFK **OR** WMO code 3240. For wild card search, results will show what matches your entry.","required":false,"schema":{"title":"Tags","type":"string","description":"URL encoded json string or a free hand string for wild card search. For multiple tags, they are filtered individually (OR), e.g. `{\"icao\": \"KJFK\", \"wmo\": \"3240\"}` means you're searching for stations with the ICAO code KJFK **OR** WMO code 3240. For wild card search, results will show what matches your entry."},"name":"tags","in":"query"},{"description":"Set to `True` to only return stations where data is available older than 1 month.","required":false,"schema":{"title":"Isarchived","type":"boolean","description":"Set to `True` to only return stations where data is available older than 1 month."},"name":"isArchived","in":"query"},{"description":"Set to `True` to view how many historical observations are available per parameter, month, and year for a single stationCode. **Restriction:** When `archiveCounts=True`, you must provide only one stationCode. Multiple stations are not supported with this parameter.","required":false,"schema":{"title":"Archivecounts","type":"boolean","description":"Set to `True` to view how many historical observations are available per parameter, month, and year for a single stationCode. **Restriction:** When `archiveCounts=True`, you must provide only one stationCode.","default":false},"name":"archiveCounts","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StnDataRespModel"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTimeoutError"}}}}},"security":[{"clientCredentials":[]}],"x-codeSamples":[{"lang":"C + Libcurl","source":"#include \n#include \n\nint main(void) {\n CURL *curl;\n CURLcode res;\n \n curl = curl_easy_init();\n if(curl) {\n struct curl_slist *headers = NULL;\n headers = curl_slist_append(headers, \"Authorization: Bearer YOUR_ACCESS_TOKEN\");\n \n curl_easy_setopt(curl, CURLOPT_URL, \n \"https://obs.api.dtn.com/v2/observations/stations?\"\n \"by=stationCodes&\"\n \"stationCodes=CPTR3,KNYC\");\n curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);\n \n res = curl_easy_perform(curl);\n \n curl_slist_free_all(headers);\n curl_easy_cleanup(curl);\n }\n return 0;\n}"},{"lang":"Csharp + Restsharp","source":"using RestSharp;\nusing System;\n\nclass Program\n{\n static void Main()\n {\n var client = new RestClient(\"https://obs.api.dtn.com\");\n var request = new RestRequest(\"/v2/observations/stations\", Method.Get);\n \n request.AddHeader(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\");\n request.AddParameter(\"by\", \"stationCodes\");\n request.AddParameter(\"stationCodes\", \"CPTR3,KNYC\");\n \n var response = client.Execute(request);\n Console.WriteLine(response.Content);\n }\n}"},{"lang":"Go + Native","source":"package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n baseURL := \"https://obs.api.dtn.com/v2/observations/stations\"\n \n params := url.Values{}\n params.Add(\"by\", \"stationCodes\")\n params.Add(\"stationCodes\", \"CPTR3,KNYC\")\n \n req, _ := http.NewRequest(\"GET\", baseURL+\"?\"+params.Encode(), nil)\n req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n \n client := &http.Client{}\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n \n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}"},{"lang":"Java + Okhttp","source":"import okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.Response;\n\npublic class StationsExample {\n public static void main(String[] args) throws Exception {\n OkHttpClient client = new OkHttpClient();\n \n String url = \"https://obs.api.dtn.com/v2/observations/stations?\" +\n \"by=stationCodes&\" +\n \"stationCodes=CPTR3,KNYC\";\n \n Request request = new Request.Builder()\n .url(url)\n .addHeader(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n .build();\n \n try (Response response = client.newCall(request).execute()) {\n System.out.println(response.body().string());\n }\n }\n}"},{"lang":"Java + Unirest","source":"import kong.unirest.Unirest;\nimport kong.unirest.HttpResponse;\n\npublic class StationsExample {\n public static void main(String[] args) {\n HttpResponse response = Unirest.get(\"https://obs.api.dtn.com/v2/observations/stations\")\n .header(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n .queryString(\"by\", \"stationCodes\")\n .queryString(\"stationCodes\", \"CPTR3,KNYC\")\n .asString();\n \n System.out.println(response.getBody());\n }\n}"},{"lang":"Javascript + Jquery","source":"$.ajax({\n url: 'https://obs.api.dtn.com/v2/observations/stations',\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n },\n data: {\n by: 'stationCodes',\n stationCodes: 'CPTR3,KNYC'\n },\n success: function(data) {\n console.log(data);\n }\n});"},{"lang":"Javascript + Xhr","source":"const xhr = new XMLHttpRequest();\nxhr.open('GET', 'https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC');\nxhr.setRequestHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');\n\nxhr.onload = function() {\n if (xhr.status === 200) {\n console.log(JSON.parse(xhr.responseText));\n }\n};\n\nxhr.send();"},{"lang":"Node + Native","source":"const https = require('https');\n\nconst options = {\n hostname: 'obs.api.dtn.com',\n path: '/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC',\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n }\n};\n\nconst req = https.request(options, (res) => {\n let data = '';\n res.on('data', (chunk) => { data += chunk; });\n res.on('end', () => { console.log(JSON.parse(data)); });\n});\n\nreq.end();"},{"lang":"Node + Request","source":"const request = require('request');\n\nconst options = {\n url: 'https://obs.api.dtn.com/v2/observations/stations',\n qs: {\n by: 'stationCodes',\n stationCodes: 'CPTR3,KNYC'\n },\n headers: {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n }\n};\n\nrequest.get(options, (error, response, body) => {\n if (!error && response.statusCode === 200) {\n console.log(JSON.parse(body));\n }\n});"},{"lang":"Objc + Nsurlsession","source":"NSURL *url = [NSURL URLWithString:@\"https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC\"];\nNSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];\n[request setHTTPMethod:@\"GET\"];\n[request setValue:@\"Bearer YOUR_ACCESS_TOKEN\" forHTTPHeaderField:@\"Authorization\"];\n\nNSURLSession *session = [NSURLSession sharedSession];\nNSURLSessionDataTask *task = [session dataTaskWithRequest:request\n completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {\n if (!error) {\n NSLog(@\"%@\", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);\n }\n }];\n[task resume];"},{"lang":"Ocaml + Cohttp","source":"open Lwt\nopen Cohttp\nopen Cohttp_lwt_unix\n\nlet uri = Uri.of_string \"https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC\" in\nlet headers = Header.init ()\n |> fun h -> Header.add h \"Authorization\" \"Bearer YOUR_ACCESS_TOKEN\" in\n\nClient.get ~headers uri >>= fun (resp, body) ->\n body |> Cohttp_lwt.Body.to_string >|= fun body ->\n print_endline body"},{"lang":"Php + Curl","source":" \"https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n ],\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\necho $response;\n?>"},{"lang":"Php + Http1","source":"setMethod(HTTP_REQUEST_METHOD_GET);\n$request->addHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');\n\n$request->sendRequest();\necho $request->getResponseBody();\n?>"},{"lang":"Php + Http2","source":"setMethod(HTTP_Request2::METHOD_GET);\n$request->setHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');\n\n$response = $request->send();\necho $response->getBody();\n?>"},{"lang":"Python + Python3","source":"import urllib.request\nimport json\n\nurl = 'https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC'\n\nreq = urllib.request.Request(url)\nreq.add_header('Authorization', 'Bearer YOUR_ACCESS_TOKEN')\n\nwith urllib.request.urlopen(req) as response:\n data = json.loads(response.read().decode())\n print(data)"},{"lang":"Python + Requests","source":"import requests\n\nurl = 'https://obs.api.dtn.com/v2/observations/stations'\n\nheaders = {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n}\n\nparams = {\n 'by': 'stationCodes',\n 'stationCodes': 'CPTR3,KNYC'\n}\n\nresponse = requests.get(url, headers=headers, params=params)\nprint(response.json())"},{"lang":"Ruby + Native","source":"require 'net/http'\nrequire 'json'\n\nuri = URI('https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC')\n\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|\n http.request(request)\nend\n\nputs JSON.parse(response.body)"},{"lang":"Shell + Curl","source":"curl -X GET \"https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" "},{"lang":"Shell + Httpie","source":"http GET \"https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC\" \\\n \"Authorization: Bearer YOUR_ACCESS_TOKEN\" "},{"lang":"Shell + Wget","source":"wget --header=\"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n \"https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC\" \\\n -O -"},{"lang":"Swift + Nsurlsession","source":"let url = URL(string: \"https://obs.api.dtn.com/v2/observations/stations?by=stationCodes&stationCodes=CPTR3,KNYC\")!\nvar request = URLRequest(url: url)\nrequest.httpMethod = \"GET\"\nrequest.setValue(\"Bearer YOUR_ACCESS_TOKEN\", forHTTPHeaderField: \"Authorization\")\n\nlet task = URLSession.shared.dataTask(with: request) { data, response, error in\n if let data = data {\n print(String(data: data, encoding: .utf8) ?? \"\")\n }\n}\ntask.resume()"}]}},"/v2/observations/parameters":{"get":{"tags":["API Endpoints"],"summary":"Parameters","description":"Use this endpoint to retrieve a complete list of supported observation parameters, including their descriptions, units, and availability across networks. This is your authoritative source of truth for which parameters can be queried from `/observations` and `/stations`.\n\n### Purpose\n\nEach parameter represents a specific type of meteorological or environmental observation — such as temperature, precipitation, humidity, radiation, or wind. Parameters define what data can be retrieved for a given station or time range.\n\n### Access Scopes\n\nYour account scope determines which parameters you can query:\n\n| Feature | Core Scope | Plus Scope |\n|---------|------------|------------|\n| **Available Parameters** | Limited to parameters marked with \"Y\" in the Core column | Access to all parameters (Core and Non-Core) |\n| **Total Parameters** | ~40 core parameters | 150+ parameters including specialized measurements |\n| **Use Cases** | General weather monitoring, basic applications | Professional applications, specialized industries (agriculture, road weather, marine) |\n\n> **Note:** Parameters not available in your scope will be ignored in `/observations` requests without returning an error.\n\n### Getting Full Parameter Details\n\n**For complete, up-to-date parameter information, call the API endpoint directly:**\n\n```\nGET https://obs.api.dtn.com/v2/observations/parameters\n```\n\nThe API response includes detailed descriptions, units, gap-filling support, and scope availability for each parameter. The table below provides a quick reference, but the API endpoint is the authoritative source.\n\n**Example API Request:**\n```\nGET https://obs.api.dtn.com/v2/observations/parameters?names=airTemp,precipAcc60Min,windSpeed\n```\n\n### Parameter Catalog\n\nThe table below groups related parameters together for easy discovery. Each base parameter may have multiple time-aggregated or variant forms listed in the \"Related Parameters\" column.\n\n**Column Definitions:**\n\n- **Base Parameter:** The primary parameter name (instantaneous or default measurement).\n- **Description:** Brief description of what the parameter measures\n- **Metric Unit:** Unit when `units=si-std` (default)\n- **Imperial Unit:** Unit when `units=us-std`\n- **Related Parameters:** Time-aggregated or variant parameters (full names for API requests)\n- **Gapfillable:** Indicates if the parameter supports gap-filling with model data\n - `Y` = Supports gap-filling with `interval=1h`\n - `Y*` = Supports gap-filling only with `interval=24h` (daily aggregations)\n- **Measurement Type:** Indicates how the data was obtained or derived\n - `SRC` = Source (Direct): Raw measurements directly from sensors or instruments\n - `AGG` = Aggregation: Data derived from statistical operations on source measurements (e.g., hourly averages, daily maximums)\n - `CAL` = Calculated (Derived): Values computed using formulas or algorithms from other measurements (e.g., heat index, wind chill)\n - `INTP` = Interpolation (15-minute interval aggregated using hourly values)\n - Combined types (e.g., `SRC/AGG`, `SRC/CAL`, `SRC/INTP`) indicate the parameter can be obtained through multiple methods\n- **Core:** `Y` indicates the parameter is available to Core Scope accounts\n\n**Understanding Measurement Types:**\n\n- **SRC** Source (Direct): Raw measurements directly from sensors or instruments\n- **AGG** Aggregation: Data derived from statistical operations on source measurements (e.g., hourly averages, daily maximums)\n- **CAL** Calculated (Derived): Values computed using formulas or algorithms from other measurements (e.g., heat index, wind chill)\n- **INTP** Interpolation (15-minute interval aggregated using hourly values)\n- Combined types (e.g., `SRC/AGG`, `SRC/CAL`) indicate the parameter can be obtained through multiple methods\n\n**Gap-Filling Requirements:**\n- Requires gap-filling scope enabled on your account\n- Available from January 1, 2013 onwards\n- See the `/observations` endpoint documentation for details\n\n---\n\n### Temperature Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|-------------|-------------|---------------|-------------------|-------------|------|------|\n| airTemp | Air temperature 2m above surface | C | F | airTemp
airTemp15Min
airTempMax1Hour
airTempMax6Hour
airTempMax12Hour
airTempMax24Hour
airTempMin1Hour
airTempMin6Hour
airTempMin12Hour
airTempMin24Hour
airTempAvg24Hour
airTempAvg
airTempMax
airTempMin | Y
Y
Y
-
-
Y*
Y
-
-
Y*
Y*
-
-
-
|SRC
INTP
SRC/AGG
SRC
SRC
SRC/AGG
SRC/AGG
SRC
SRC
SRC/AGG
SRC/AGG
SRC
SRC
SRC| Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
-
-
-
|\n| airTemp5cm | Temperature at 5cm height | C | F | airTemp5cm
airTemp5cm15Min
airTemp5cmMax1Hour
airTemp5cmMax12Hour
airTemp5cmMax24Hour
airTemp5cmMin1Hour
airTemp5cmMin12Hour
airTemp5cmMin24Hour
airTemp5cmAvg24Hour
airTempMax5cm
airTempMin5cm | Y
Y
Y
Y
-
Y*
Y
-
Y*
Y*
-
-
|SRC
INTP
SRC/AGG
SRC
SRC/AGG
SRC/AGG
SRC
SRC/AGG
SRC/AGG
SRC
SRC| Y
Y
Y
Y
Y
Y
Y
Y
Y
-
-
|\n| dewPoint | Dew point temperature 2m above surface | C | F | dewPoint
dewPoint15Min
dewPointMax
dewPointMin | Y
Y
-
-
|SRC/AGG
INTP
SRC
SRC| Y
Y
-
-
|\n| feelsLikeTemp | Human perceived temperature | C | F | feelsLikeTemp
feelsLikeTemp15Min
feelsLikeTempAvg24Hour
feelsLikeTempMax1Hour
feelsLikeTempMax24Hour
feelsLikeTempMin1Hour
feelsLikeTempMin24Hour | Y
Y
Y*
Y
Y*
Y
Y* |SRC/CAL
INTP
SRC/AGG
AGG
SRC/AGG
AGG
SRC/AGG| Y
Y
-
-
-
-
- |\n| heatIndex | Apparent temperature (temp + humidity) | C | F | heatIndex
heatIndexAvg24Hour
heatIndexMax1Hour
heatIndexMax24Hour
heatIndexMin1Hour
heatIndexMin24Hour | Y
Y*
Y
Y*
Y
Y* |SRC/CAL
SRC/AGG
AGG
SRC/AGG
AGG
SRC/AGG| -
-
-
-
-
- |\n| windChill | Perceived temperature (temp + wind) | C | F | windChill
windChillAvg24Hour
windChillMax1Hour
windChillMax24Hour
windChillMin1Hour
windChillMin24Hour | Y
Y*
Y
Y*
Y
Y* |SRC/CAL
SRC/AGG
AGG
SRC/AGG
AGG
SRC/AGG| -
-
-
-
-
- |\n| wetBulb | Water-soaked thermometer temperature | C | F | wetBulb | - | SRC/CAL | - |\n| wbgt | Wet Bulb Globe Temperature (heat stress) | C | F | wbgt | Y |SRC/CAL| - |\n| freezingTemp | Water freezing threshold temperature | C | F | freezingTemp
freezingTemp2
freezingTemp3
freezingTemp4
freezingTemp5 | -
-
-
-
- | SRC
SRC
SRC
SRC
SRC | -
-
-
-
- |\n\n### Precipitation Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|----------------|-------------|-------------|---------------|-------------------|-------------|------|\n| precipAcc | Liquid precipitation (rain) | mm | in | precipAcc10Min
precipAcc15Min
precipAcc60Min
precipAcc3Hour
precipAcc6Hour
precipAcc12Hour
precipAcc24Hour | -
Y
Y
Y
Y
Y
Y*|SRC
SRC/INTP
SRC/AGG
SRC
SRC
SRC
SRC/AGG | Y
Y
Y
Y
Y
Y
Y | \n| precipDuration | Duration of precipitation event | minutes | minutes | precipDuration | - | SRC | - |\n| precipPresence | Indicates if precipitation is present | dimensionless | dimensionless | precipPresence | - | SRC | - |\n| precipRate | Precipitation rate/intensity | mm/hr | in/hr | precipRate | - | SRC |- |\n| precipType | Type of precipitation | dimensionless | dimensionless | precipType | - | SRC |- |\n| precipStartTime | Precipitation event start time | n/a | n/a | precipStartTime | - | SRC |- |\n| precipEndTime | Precipitation event end time | n/a | n/a | precipEndTime | - | SRC |- |\n| precipIntensity | Rate of precipitation falling | n/a | n/a | precipIntensity | - | SRC |- |\n| snowDepth | Accumulated snow thickness | mm | in | snowDepth | - | SRC |- |\n| freshSnowDepth | Newly added snow | mm | in | freshSnowDepth | Y | SRC |- |\n| adjacentSnowDepth | Undisturbed snow depth | mm | in | adjacentSnowDepth | - | SRC |- |\n\n### Wind Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|----------------|-------------|-------------|---------------|-------------------|-------------|------|\n| windSpeed | Wind speed 10m above surface | m/s | mph | windSpeed
windSpeed15Min
windSpeedMax60Min
windSpeedMax24Hour
windSpeedAvg24Hour | Y
Y
Y
Y*
Y* |SRC
INTP
SRC/AGG
SRC/AGG
SRC/AGG| Y
Y
Y
Y |\n| windSpeed2m | Wind speed 2m above surface | m/s | mph | windSpeed2m
windSpeed2m15Min
windSpeed2mMax60Min | Y
Y
Y | SRC
INTP
SRC/AGG|Y
- |\n| windDirection | Wind direction (10m height) | degrees | degrees | windDirection
windDirection15Min
windDirectionAvg24Hour | Y
Y
Y* | SRC
INTP
SRC/AGG |Y
Y
Y |\n| windDirection2m | Wind direction (2m height) | degrees | degrees | windDirection2m | - |SRC| Y |\n| windGust | Wind gust speed 10m above surface | m/s | mph | windGust
windGust15Min
windGust60Min
windGust3Hour
windGust6Hour
windGustMax24Hour
windGustDirectionMax | Y
Y
Y
Y
Y
Y*
-
|SRC
INTP
SRC/AGG
SRC
SRC
SRC/AGG
SRC| Y
Y
Y
Y
Y
Y
-
|\n| windGust2m | Wind gust speed 2m above surface | m/s | mph | windGust2m | Y | SRC |Y |\n\n### Pressure Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|----------------|-------------|-------------|---------------|-------------------|-------------|------|\n| stationPressure | Air pressure at station elevation | hPa | mb | stationPressure
stationPressure15Min | Y
Y | SRC/CAL
INTP| Y
Y |\n| mslPressure | Air pressure at mean sea level | hPa | mb | mslPressure | Y | SRC/CAL |- |\n| altimeter | Pressure for aircraft calibration | hPa | mb | altimeter | - | SRC |- |\n| pressureChange3Hour | Pressure change over 3 hours | hPa | mb | pressureChange3Hour
pressureChange6Hour
pressureChange12Hour
pressureChange24Hour | -
-
-
- |SRC
SRC
SRC
SRC |-
-
-
- |\n| pressureTendency | The character and amount of atmospheric pressure change during a specified period of time | dimentionless | dimentionless | pressureTendency | - | SRC/CAL| - |\n| pressureTendencyInCode | Pressure tendency (coded) | dimentionless | dimentionless | pressureTendencyInCode | - | SRC| - |\n\n### Humidity & Moisture Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|----------------|-------------|-------------|---------------|-------------------|-------------|------|\n| relativeHumidity | Ratio of actual to max water vapor | % | % | relativeHumidity
relativeHUmidity15Min | Y
Y | SRC/CAL
INTP |Y
Y |\n| soilMoisture | Soil moisture level | % | % | soilMoisture | - | SRC |- |\n| leafWetness | Surface moisture on crop | index | index | leafWetness | - |SRC |- |\n| evapotranspiration | Water transfer to atmosphere | mm | in | evapotranspiration | Y | SRC |- |\n| fuelMoisture | Water in vegetation (fire weather) | % | % | fuelMoisture | - | SRC |- |\n\n### Radiation & Solar Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|----------------|-------------|-------------|---------------|-------------------|-------------|------|\n| shortWaveRadiation | Instantaneous solar radiation (GHI) | W/m² | W/m² | shortWaveRadiation
shortWaveRadiation15Min | Y
Y | SRC
INTP |Y
Y |\n| globalRadiation | Solar radiation | j/cm² | j/cm² | globalRadiation10Min
globalRadiation15Min
globalRadiation60Min
globalRadiation24Hour | -
-
Y
Y* | SRC
INTP
SRC/AGG
SRC/AGG|-
Y
Y
Y |\n| sunshine | Duration of sunshine | min | min | sunshine10Min
sunshine15Min
sunshine60Min
sunshine24Hour | -
Y
Y
Y* |SRC
INTP
SRC/AGG
SRC/AGG |Y
Y
Y
Y |\n| sunrise | UTC time of sunrise | UTC | UTC | sunrise | -|SRC/CAL | Y |\n| sunset | UTC time of sunset | UTC | UTC | sunset | -|SRC/CAL| Y |\n\n### Visibility & Cloud Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|-------------|-------------|-------------|---------------|-------------------|-------------|------|\n| visibility | Horizontal visibility | km | mi | visibility
visibility15Min | Y
Y |SRC
INTP| Y
Y |\n| cloudCover | Sky covered by cloud | % | % | cloudCover
cloudCover15Min | Y
Y |SRC
INTP |Y
Y |\n| cloudBase | Cloud base altitude | m | ft | cloudBase | Y | SRC|- |\n| metarSky | METAR cloud code (aviation) | dimensionless | dimensionless | metarSky | - | SRC|- |\n\n### Road Weather (RWIS) Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|-------------|-------------|-------------|---------------|-------------------|-------------|------|\n| surfaceTemp | Road/pavement surface temperature | C | F | surfaceTemp
surfaceTemp2
surfaceTemp3
surfaceTemp4
surfaceTemp5
surfaceTemp6
surfaceTemp7
surfaceTemp8
surfaceTemp9
surfaceTemp10
surfaceTemp11
surfaceTemp12
surfaceTemp13
surfaceTemp14
surfaceTemp15
surfaceTemp16
surfaceTemp17
surfaceTemp18
surfaceTemp19
surfaceTemp20
surfaceTemp21
surfaceTemp22
surfaceTemp23
surfaceTemp24 | -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- | SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC |-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |\n| surfaceCondition | Road/bridge surface state | dimensionless | dimensionless | surfaceCondition
surfaceCondition1 | -
-| SRC
SRC | -
- |\n| surfaceConductivity | Road surface electrical conductivity | mhos/cm | mhos/cm | surfaceConductivity
surfaceConductivity2
surfaceConductivity3
surfaceConductivity4
surfaceConductivity5
surfaceConductivity6
surfaceConductivity7
surfaceConductivity8
surfaceConductivity9
surfaceConductivity10
surfaceConductivity11
surfaceConductivity12 | -
-
-
-
-
-
-
-
-
-
-
- |SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC |-
-
-
-
-
-
-
-
-
-
-
- |\n| bridgeTemp | Bridge surface temperature | C | F | bridgeTemp
bridgeTemp2
bridgeTemp3
bridgeTemp4
bridgeTemp5
bridgeTemp6
bridgeTemp7
bridgeTemp8
bridgeTemp9
bridgeTemp10 | -
-
-
-
-
-
-
-
-
- |SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC |-
-
-
-
-
-
-
-
-
- |\n| bridgeConductivity | Bridge surface conductivity | mhos/cm | mhos/cm | bridgeConductivity
bridgeConductivity2
bridgeConductivity3
bridgeConductivity4
bridgeConductivity5
bridgeConductivity6 | -
-
-
-
-
- | SRC
SRC
SRC
SRC
SRC
SRC |-
-
-
-
-
- |\n| cycleTemp | Cycle surface temperature | C | F | cycleTemp
cycleTemp2
cycleTemp3
cycleTemp4
cycleTemp5
cycleTemp6 | -
-
-
-
-
- | SRC
SRC
SRC
SRC
SRC
SRC | -
-
-
-
-
- |\n| cycleConductivity | Cycle surface conductivity | mhos/cm | mhos/cm | cycleConductivity
cycleConductivity2
cycleConductivity3
cycleConductivity4
cycleConductivity5
cycleConductivity6 | -
-
-
-
-
- | SRC
SRC
SRC
SRC
SRC
SRC | -
-
-
-
-
- |\n| friction | Road/tire grip | mu | mu | friction | - | SRC | - |\n| icePercent | Ice proportion in surface moisture | % | % | icePercent | - | SRC | - |\n| iceThickness | Solid ice depth | mm | in | iceThickness | - | SRC | - |\n| iceOrWaterDepth | Ice or standing water depth | mm | in | iceOrWaterDepth | - | SRC |- |\n| waterThickness | Water film depth on surface | mm | in | waterThickness | - | SRC |- |\n| waterLevel | Water level or accumulated depth | mm | in | waterLevel | - | SRC |- |\n| chemicalPercent | Chemical concentration on road | % | % | chemicalPercent | - | SRC | - |\n| chemicalFactor | De-icing chemical effectiveness | n/a | n/a | chemicalFactor | - | SRC | - |\n\n### Soil & Subsurface Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|-------------|-------------|---------------|---------------|-------------------|-------------|------|\n| soilTemp | Soil temperature at depth | C | F | soilTemp100cm | - | SRC | - |\n| subsurfaceTemp | Temperature below surface | C | F | subsurfaceTemp
subsurfaceTemp2
subsurfaceTemp3
subsurfaceTemp4
subsurfaceTemp5
subsurfaceTemp6
subsurfaceTemp7
subsurfaceTemp8
subsurfaceTemp9
subsurfaceTemp10
subsurfaceTemp11
subsurfaceTemp12
subsurfaceTemp13
subsurfaceTemp14
subsurfaceTemp15
subsurfaceTemp5cm
subsurfaceTemp10cm
subsurfaceTemp20cm
subsurfaceTemp50cm
subsurfaceTemp100cm
subsurfaceTemp150cm | -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- | SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC
SRC | -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |\n\n### Marine Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|-------------|-------------|---------------|---------------|-------------------|-------------|------|\n| seaSurfaceTemp | Seawater temperature at surface | C | F | seaSurfaceTemp | - | SRC |- |\n| seaWaterTemp | Water temperature near ocean surface | C | F | seaWaterTemp | - | SRC | - |\n| seaWaterSalinity | Salt concentration in sea water | g/kg | ppt | seaWaterSalinity | - | SRC | - |\n| significantWaveHeight | Mean height of highest waves | m | ft | significantWaveHeight | - | SRC |- |\n| waveDirection | Direction of ocean/sea waves | degrees | degrees | waveDirection | - | SRC | - |\n| wavePeakPeriod | Period of most energetic waves | sec | sec | wavePeakPeriod | - | SRC | - |\n| eastwardCurrent | Eastward sea current speed | m/s | mph | eastwardCurrent | - | SRC | - |\n| northwardCurrent | Northward sea current speed | m/s | mph | northwardCurrent | - | SRC | - |\n\n### Weather Condition Codes\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|-------------|-------------|-------------|---------------|-------------------|-------------|------|\n| weatherCode | DTN-specific weather code | dimensionless | dimensionless | weatherCode | Y | CAL | Y |\n| wmoWeatherCode | WMO weather code (table 4677) | dimensionless | dimensionless | wmoWeatherCode
wmoWeatherCode15Min | Y
Y | SRC/CAL
INTP| Y
Y |\n| wmoWeatherCode4561 | WMO recent phenomenon (table 4561) | dimensionless | dimensionless | wmoWeatherCode4561 | - | SRC | Y |\n| metarWx | METAR weather description | dimensionless | dimensionless | metarWx | - | SRC | - |\n\n### Degree Days & Specialized Parameters\n\n| Base Parameter | Description | Metric Unit | Imperial Unit | Related Parameters | Gapfillable | Measurement Type | Core |\n|----------------|-------------|-------------|-------------|---------------|-------------------|-------------|------|\n| heatingDegreeUS24Hour | Heating demand (base 65°F) | C | F | heatingDegreeUS24Hour | - | SRC | - |\n| coolingDegreeUS24Hour | Cooling demand (base 65°F) | C | F | coolingDegreeUS24Hour | - | CAL | - |\n| gradtagzahl24Hour | German heating degree day (+2°C) | C | F | gradtagzahl24Hour | - | CAL | - |\n| gradtagzahlBasic24Hour | German heating degree day (base 20°C) | C | F | gradtagzahlBasic24Hour | - | CAL | - |\n\n---\n\n### Code Value Reference Tables\n\nSeveral parameters return coded values rather than numeric measurements. The tables below provide comprehensive lookup references for interpreting these codes.\n\n**Parameters with Code Values:**\n- `metarSky` - METAR/TAF aviation weather abbreviations\n- `pressureTendencyInCode` - Atmospheric pressure change characteristics\n- `surfaceCondition` - Road and pavement surface states (RWIS)\n- `weatherCode` - DTN proprietary weather condition codes with icons\n- `wmoWeatherCode` - WMO present weather observations (Table 4677)\n- `wmoWeatherCode4561` - WMO past weather conditions (Table 020004)\n\n---\n\n\nmetarSky - METAR/TAF Aviation Weather Abbreviations
\n\nCommon METAR (Meteorological Aerodrome Report) and TAF (Terminal Aerodrome Forecast) abbreviations for sky conditions and weather phenomena used in aviation.\n\n| Code | Category | Description |\n|------|----------|-------------|\n| **SKC** | Sky Condition | Sky clear |\n| **CLR** | Sky Condition | Clear (automated stations) |\n| **FEW** | Sky Condition | Few clouds (1/8 to 2/8 coverage) |\n| **SCT** | Sky Condition | Scattered (3/8 to 4/8 coverage) |\n| **BKN** | Sky Condition | Broken (5/8 to 7/8 coverage) |\n| **OVC** | Sky Condition | Overcast (8/8 coverage) |\n| **VV** | Sky Condition | Vertical visibility (obscured sky) |\n| **CB** | Cloud Type | Cumulonimbus |\n| **TCU** | Cloud Type | Towering cumulus |\n| **ACC** | Cloud Type | Altocumulus castellanus |\n| **ACSL** | Cloud Type | Altocumulus standing lenticular |\n| **CCSL** | Cloud Type | Cirrocumulus standing lenticular |\n| **SCSL** | Cloud Type | Stratocumulus standing lenticular |\n| **-** | Descriptor | Light intensity |\n| **+** | Descriptor | Heavy intensity |\n| **VC** | Descriptor | In the vicinity |\n| **MI** | Descriptor | Shallow |\n| **BC** | Descriptor | Patches |\n| **PR** | Descriptor | Partial |\n| **DR** | Descriptor | Low drifting |\n| **BL** | Descriptor | Blowing |\n| **SH** | Descriptor | Shower(s) |\n| **TS** | Descriptor | Thunderstorm |\n| **FZ** | Descriptor | Freezing |\n| **DZ** | Precipitation | Drizzle |\n| **RA** | Precipitation | Rain |\n| **SN** | Precipitation | Snow |\n| **SG** | Precipitation | Snow grains |\n| **IC** | Precipitation | Ice crystals |\n| **PL** | Precipitation | Ice pellets |\n| **GR** | Precipitation | Hail |\n| **GS** | Precipitation | Small hail/snow pellets |\n| **UP** | Precipitation | Unknown precipitation |\n| **BR** | Obscuration | Mist |\n| **FG** | Obscuration | Fog |\n| **FU** | Obscuration | Smoke |\n| **VA** | Obscuration | Volcanic ash |\n| **DU** | Obscuration | Widespread dust |\n| **SA** | Obscuration | Sand |\n| **HZ** | Obscuration | Haze |\n| **PY** | Obscuration | Spray |\n| **SQ** | Other | Squalls |\n| **PO** | Other | Dust/sand whirls |\n| **DS** | Other | Duststorm |\n| **SS** | Other | Sandstorm |\n| **FC** | Other | Funnel cloud |\n\n \n\n\npressureTendencyInCode - Atmospheric Pressure Tendency
\n\nWMO code table for element 010063 describing the characteristic of atmospheric pressure change over the past 3 hours.\n\n| Code | Description |\n|------|-------------|\n| 0 | Increasing, then decreasing; pressure same or higher than 3 hours ago |\n| 1 | Increasing, then steady; or increasing, then increasing more slowly |\n| 2 | Increasing (steadily or unsteadily) |\n| 3 | Decreasing or steady, then increasing; or increasing, then increasing more rapidly |\n| 4 | Steady; atmospheric pressure the same as 3 hours ago |\n| 5 | Decreasing, then increasing; pressure same or lower than 3 hours ago |\n| 6 | Decreasing, then steady; or decreasing, then decreasing more slowly |\n| 7 | Decreasing (steadily or unsteadily) |\n| 8 | Steady or increasing, then decreasing; or decreasing, then decreasing more rapidly |\n\n \n\n\nsurfaceCondition - Road Surface Conditions
\n\nRoadMaster codes for road and pavement surface states from Road Weather Information Systems (RWIS).\n\n| Code | Description |\n|------|-------------|\n| 0 | Short road surface sensor not in operation |\n| 100 | Dry - road surface dry, no ice or snow |\n| 101 | Wet - liquid water on road surface, no ice, no deicing chemical |\n| 106 | Frosty - frost on the road surface |\n| 108 | Icy - ice on road surface, not formed as frost, no snow |\n| 111 | Snowy - snow on the road surface |\n| 121 | Wet and chemical - liquid water containing deicing chemical, no ice |\n| 123 | Moist and chemical - road surface moist with de-icing chemical, no ice, no snow |\n| 124 | Moist - moisture in road surface, but only a little, no ice, no deicing chemical |\n\n \n\n\nweatherCode - DTN Weather Condition Codes
\n\nDTN proprietary weather codes with corresponding icon filenames. Icons available at: `https://static-assets.dtn.com/icons/weather-conditions/v1/{filename}`\n\n**Note:** For codes 1-4, append `_night` suffix for nighttime icons (e.g., `clear_skies_night.svg`).\n\n| Code | Description | Icon Filenames |\n|------|-------------|----------------|\n| 1 | Clear skies | clear_skies.svg, clear_skies_night.svg |\n| 2 | Fair | fair.svg, fair_night.svg |\n| 3 | Partly cloudy | partly_cloudy.svg, partly_cloudy_night.svg |\n| 4 | Mostly cloudy | mostly_cloudy.svg, mostly_cloudy_night.svg |\n| 5 | Cloudy | cloudy.svg |\n| 6 | Mist | mist.svg |\n| 7 | Fog | fog.svg |\n| 8 | Drizzle | drizzle.svg |\n| 9 | Rain | rain.svg |\n| 10 | Heavy rain | heavy_rain.svg |\n| 11 | Freezing drizzle | freezing_drizzle.svg |\n| 12 | Freezing rain | freezing_rain.svg |\n| 13 | Freezing heavy rain | freezing_heavy_rain.svg |\n| 14 | Rain and snow | rain_and_snow.svg |\n| 15 | Heavy rain and snow | heavy_rain_and_snow.svg |\n| 16 | Snow | snow.svg |\n| 17 | Heavy snow | heavy_snow.svg |\n| 18 | Blizzard | blizzard.svg |\n| 19 | Ice pellets | ice_pellets.svg |\n| 20 | Rain showers | rain_showers.svg |\n| 21 | Heavy rain showers | heavy_rain_showers.svg |\n| 22 | Freezing rain showers | freezing_rain_showers.svg |\n| 23 | Heavy freezing rain showers | heavy_freezing_rain_showers.svg |\n| 24 | Rain and snow showers | rain_and_snow_showers.svg |\n| 25 | Heavy rain and snow showers | heavy_rain_and_snow_showers.svg |\n| 26 | Snow showers | snow_showers.svg |\n| 27 | Heavy snow showers | heavy_snow_showers.svg |\n| 28 | Hail showers | hail_showers.svg |\n| 29 | Heavy hail showers | heavy_hail_showers.svg |\n| 30 | Thunderstorms | thunderstorms.svg |\n| 31 | Severe thunderstorms | heavy_thunderstorms.svg |\n| 32 | Windy | windy.svg |\n\n \n\n\nwmoWeatherCode - WMO Present Weather Observations
\n\nWorld Meteorological Organization present weather codes (Table 4677) reported from manned weather stations.\n\n**Codes 00-19: No precipitation, fog, or thunderstorm at time of observation**\n\n| Code | Description |\n|------|-------------|\n| 00 | Cloud development not observed or not observable |\n| 01 | Clouds generally dissolving or becoming less developed |\n| 02 | State of sky on the whole unchanged |\n| 03 | Clouds generally forming or developing |\n| 04 | Visibility reduced by smoke |\n| 05 | Haze |\n| 06 | Widespread dust in suspension in the air |\n| 07 | Dust or sand raised by wind at or near the station |\n| 08 | Well developed dust whirl(s) or sand whirl(s) |\n| 09 | Duststorm or sandstorm within sight |\n| 10 | Mist |\n| 11 | Patches of shallow fog or ice fog |\n| 12 | More or less continuous shallow fog or ice fog |\n| 13 | Lightning visible, no thunder heard |\n| 14 | Precipitation within sight, not reaching the ground |\n| 15 | Precipitation within sight, reaching ground, distant (>5 km) |\n| 16 | Precipitation within sight, reaching ground, near but not at station |\n| 17 | Thunderstorm, but no precipitation at time of observation |\n| 18 | Squalls at or within sight |\n| 19 | Funnel cloud(s) (tornado or waterspout) |\n\n**Codes 20-29: Precipitation, fog, or thunderstorm during preceding hour but not at time of observation**\n\n| Code | Description |\n|------|-------------|\n| 20 | Drizzle (not freezing) or snow grains |\n| 21 | Rain (not freezing) |\n| 22 | Snow |\n| 23 | Rain and snow or ice pellets |\n| 24 | Freezing drizzle or freezing rain |\n| 25 | Shower(s) of rain |\n| 26 | Shower(s) of snow, or of rain and snow |\n| 27 | Shower(s) of hail or rain and hail |\n| 28 | Fog or ice fog |\n| 29 | Thunderstorm (with or without precipitation) |\n\n**Codes 30-39: Duststorm, sandstorm, drifting or blowing snow**\n\n| Code | Description |\n|------|-------------|\n| 30 | Slight/moderate duststorm or sandstorm - decreased during preceding hour |\n| 31 | Slight/moderate duststorm or sandstorm - no appreciable change |\n| 32 | Slight/moderate duststorm or sandstorm - begun or increased |\n| 33 | Severe duststorm or sandstorm - decreased during preceding hour |\n| 34 | Severe duststorm or sandstorm - no appreciable change |\n| 35 | Severe duststorm or sandstorm - begun or increased |\n| 36 | Slight/moderate drifting snow, generally low (below eye level) |\n| 37 | Heavy drifting snow, generally low |\n| 38 | Slight/moderate blowing snow, generally high (above eye level) |\n| 39 | Heavy blowing snow, generally high |\n\n**Codes 40-49: Fog or ice fog at time of observation**\n\n| Code | Description |\n|------|-------------|\n| 40 | Fog at distance, not at station during preceding hour |\n| 41 | Fog in patches |\n| 42 | Fog, sky visible, has become thinner |\n| 43 | Fog, sky invisible, has become thinner |\n| 44 | Fog, sky visible, no appreciable change |\n| 45 | Fog, sky invisible, no appreciable change |\n| 46 | Fog, sky visible, has begun or become thicker |\n| 47 | Fog, sky invisible, has begun or become thicker |\n| 48 | Fog, depositing rime, sky visible |\n| 49 | Fog, depositing rime, sky invisible |\n\n**Codes 50-59: Drizzle**\n\n| Code | Description |\n|------|-------------|\n| 50 | Drizzle, not freezing, intermittent, slight |\n| 51 | Drizzle, not freezing, continuous, slight |\n| 52 | Drizzle, not freezing, intermittent, moderate |\n| 53 | Drizzle, not freezing, continuous, moderate |\n| 54 | Drizzle, not freezing, intermittent, heavy |\n| 55 | Drizzle, not freezing, continuous, heavy |\n| 56 | Drizzle, freezing, slight |\n| 57 | Drizzle, freezing, moderate or heavy |\n| 58 | Drizzle and rain, slight |\n| 59 | Drizzle and rain, moderate or heavy |\n\n**Codes 60-69: Rain**\n\n| Code | Description |\n|------|-------------|\n| 60 | Rain, not freezing, intermittent, slight |\n| 61 | Rain, not freezing, continuous, slight |\n| 62 | Rain, not freezing, intermittent, moderate |\n| 63 | Rain, not freezing, continuous, moderate |\n| 64 | Rain, not freezing, intermittent, heavy |\n| 65 | Rain, not freezing, continuous, heavy |\n| 66 | Rain, freezing, slight |\n| 67 | Rain, freezing, moderate or heavy |\n| 68 | Rain or drizzle and snow, slight |\n| 69 | Rain or drizzle and snow, moderate or heavy |\n\n**Codes 70-79: Solid precipitation not in showers**\n\n| Code | Description |\n|------|-------------|\n| 70 | Intermittent fall of snowflakes, slight |\n| 71 | Continuous fall of snowflakes, slight |\n| 72 | Intermittent fall of snowflakes, moderate |\n| 73 | Continuous fall of snowflakes, moderate |\n| 74 | Intermittent fall of snowflakes, heavy |\n| 75 | Continuous fall of snowflakes, heavy |\n| 76 | Diamond dust (with or without fog) |\n| 77 | Snow grains (with or without fog) |\n| 78 | Isolated star-like snow crystals (with or without fog) |\n| 79 | Ice pellets |\n\n**Codes 80-99: Showery precipitation or precipitation with thunderstorm**\n\n| Code | Description |\n|------|-------------|\n| 80 | Rain shower(s), slight |\n| 81 | Rain shower(s), moderate or heavy |\n| 82 | Rain shower(s), violent |\n| 83 | Shower(s) of rain and snow mixed, slight |\n| 84 | Shower(s) of rain and snow mixed, moderate or heavy |\n| 85 | Snow shower(s), slight |\n| 86 | Snow shower(s), moderate or heavy |\n| 87 | Shower(s) of snow pellets or small hail, slight |\n| 88 | Shower(s) of snow pellets or small hail, moderate or heavy |\n| 89 | Shower(s) of hail, not with thunder, slight |\n| 90 | Shower(s) of hail, not with thunder, moderate or heavy |\n| 91 | Slight rain, thunderstorm during preceding hour |\n| 92 | Moderate or heavy rain, thunderstorm during preceding hour |\n| 93 | Slight snow/rain and snow/hail, thunderstorm during preceding hour |\n| 94 | Moderate or heavy snow/rain and snow/hail, thunderstorm during preceding hour |\n| 95 | Thunderstorm, slight or moderate, with rain/snow at time of observation |\n| 96 | Thunderstorm, slight or moderate, with hail at time of observation |\n| 97 | Thunderstorm, heavy, with rain/snow at time of observation |\n| 98 | Thunderstorm combined with duststorm or sandstorm |\n| 99 | Thunderstorm, heavy, with hail at time of observation |\n\n \n\n\nwmoWeatherCode4561 - WMO Past Weather Conditions
\n\nWorld Meteorological Organization past weather codes (Table 020004). Past weather is defined as weather occurring in the past 6 hours (at 00, 06, 12, 18 UTC) or past 3 hours (at 03, 09, 15, 21 UTC).\n\n| Code | Description |\n|------|-------------|\n| 0 | Cloud covering half or less of the sky throughout the period |\n| 1 | Cloud covering more than half the sky during part of the period and half or less for the rest |\n| 2 | Cloud covering more than half the sky throughout the period |\n| 3 | Sandstorm, duststorm or blowing snow |\n| 4 | Fog or ice fog or thick haze |\n| 5 | Drizzle |\n| 6 | Rain |\n| 7 | Snow, or rain and snow mixed |\n| 8 | Shower(s) |\n| 9 | Thunderstorm(s) with or without precipitation |\n\n \n\n---\n\n### Notes\n\n- **Related Parameters** column shows all time-aggregated or variant forms of the base parameter\n- Parameters without related variants are shown with a dash (-)\n- For RWIS and subsurface parameters, sensor variants (2-6 or 2-15) represent multiple sensors at different locations\n- For coded parameters, refer to the Code Value Reference Tables above for interpretation\n- Call the `/parameters` API endpoint for complete, detailed descriptions of each parameter","operationId":"get_parameters_v2_observations_parameters_get","parameters":[{"description":"Comma-separated list of parameter names to include in the response, eg. `airTemp,precipAcc60Min,windSpeed`","required":false,"schema":{"title":"Names","type":"string","description":"Comma-separated list of parameter names to include in the response, eg. `airTemp,precipAcc60Min,windSpeed`"},"name":"names","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Parameters V2 Observations Parameters Get","type":"array","items":{"$ref":"#/components/schemas/ParametersListResp"}},"examples":{"Parameter Endpoint Example":{"$ref":"#/components/examples/Parameter Endpoint Example"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"504":{"description":"Gateway Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTimeoutError"}}}}},"security":[{"clientCredentials":[]}],"x-codeSamples":[{"lang":"C + Libcurl","source":"#include \n#include \n\nint main(void) {\n CURL *curl;\n CURLcode res;\n \n curl = curl_easy_init();\n if(curl) {\n struct curl_slist *headers = NULL;\n headers = curl_slist_append(headers, \"Authorization: Bearer YOUR_ACCESS_TOKEN\");\n \n curl_easy_setopt(curl, CURLOPT_URL, \n \"https://obs.api.dtn.com/v2/observations/parameters\");\n curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);\n \n res = curl_easy_perform(curl);\n \n curl_slist_free_all(headers);\n curl_easy_cleanup(curl);\n }\n return 0;\n}"},{"lang":"Csharp + Restsharp","source":"using RestSharp;\nusing System;\n\nclass Program\n{\n static void Main()\n {\n var client = new RestClient(\"https://obs.api.dtn.com\");\n var request = new RestRequest(\"/v2/observations/parameters\", Method.Get);\n \n request.AddHeader(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\");\n \n var response = client.Execute(request);\n Console.WriteLine(response.Content);\n }\n}"},{"lang":"Go + Native","source":"package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n)\n\nfunc main() {\n url := \"https://obs.api.dtn.com/v2/observations/parameters\"\n \n req, _ := http.NewRequest(\"GET\", url, nil)\n req.Header.Add(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n \n client := &http.Client{}\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n \n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}"},{"lang":"Java + Okhttp","source":"import okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.Response;\n\npublic class ParametersExample {\n public static void main(String[] args) throws Exception {\n OkHttpClient client = new OkHttpClient();\n \n String url = \"https://obs.api.dtn.com/v2/observations/parameters\";\n \n Request request = new Request.Builder()\n .url(url)\n .addHeader(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n .build();\n \n try (Response response = client.newCall(request).execute()) {\n System.out.println(response.body().string());\n }\n }\n}"},{"lang":"Java + Unirest","source":"import kong.unirest.Unirest;\nimport kong.unirest.HttpResponse;\n\npublic class ParametersExample {\n public static void main(String[] args) {\n HttpResponse response = Unirest.get(\"https://obs.api.dtn.com/v2/observations/parameters\")\n .header(\"Authorization\", \"Bearer YOUR_ACCESS_TOKEN\")\n .asString();\n \n System.out.println(response.getBody());\n }\n}"},{"lang":"Javascript + Jquery","source":"$.ajax({\n url: 'https://obs.api.dtn.com/v2/observations/parameters',\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n },\n success: function(data) {\n console.log(data);\n }\n});"},{"lang":"Javascript + Xhr","source":"const xhr = new XMLHttpRequest();\nxhr.open('GET', 'https://obs.api.dtn.com/v2/observations/parameters');\nxhr.setRequestHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');\n\nxhr.onload = function() {\n if (xhr.status === 200) {\n console.log(JSON.parse(xhr.responseText));\n }\n};\n\nxhr.send();"},{"lang":"Node + Native","source":"const https = require('https');\n\nconst options = {\n hostname: 'obs.api.dtn.com',\n path: '/v2/observations/parameters',\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n }\n};\n\nconst req = https.request(options, (res) => {\n let data = '';\n res.on('data', (chunk) => { data += chunk; });\n res.on('end', () => { console.log(JSON.parse(data)); });\n});\n\nreq.end();"},{"lang":"Node + Request","source":"const request = require('request');\n\nconst options = {\n url: 'https://obs.api.dtn.com/v2/observations/parameters',\n headers: {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n }\n};\n\nrequest.get(options, (error, response, body) => {\n if (!error && response.statusCode === 200) {\n console.log(JSON.parse(body));\n }\n});"},{"lang":"Objc + Nsurlsession","source":"NSURL *url = [NSURL URLWithString:@\"https://obs.api.dtn.com/v2/observations/parameters\"];\nNSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];\n[request setHTTPMethod:@\"GET\"];\n[request setValue:@\"Bearer YOUR_ACCESS_TOKEN\" forHTTPHeaderField:@\"Authorization\"];\n\nNSURLSession *session = [NSURLSession sharedSession];\nNSURLSessionDataTask *task = [session dataTaskWithRequest:request\n completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {\n if (!error) {\n NSLog(@\"%@\", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);\n }\n }];\n[task resume];"},{"lang":"Ocaml + Cohttp","source":"open Lwt\nopen Cohttp\nopen Cohttp_lwt_unix\n\nlet uri = Uri.of_string \"https://obs.api.dtn.com/v2/observations/parameters\" in\nlet headers = Header.init ()\n |> fun h -> Header.add h \"Authorization\" \"Bearer YOUR_ACCESS_TOKEN\" in\n\nClient.get ~headers uri >>= fun (resp, body) ->\n body |> Cohttp_lwt.Body.to_string >|= fun body ->\n print_endline body"},{"lang":"Php + Curl","source":" \"https://obs.api.dtn.com/v2/observations/parameters\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer YOUR_ACCESS_TOKEN\"\n ],\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\necho $response;\n?>"},{"lang":"Php + Http1","source":"setMethod(HTTP_REQUEST_METHOD_GET);\n$request->addHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');\n\n$request->sendRequest();\necho $request->getResponseBody();\n?>"},{"lang":"Php + Http2","source":"setMethod(HTTP_Request2::METHOD_GET);\n$request->setHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');\n\n$response = $request->send();\necho $response->getBody();\n?>"},{"lang":"Python + Python3","source":"import urllib.request\nimport json\n\nurl = 'https://obs.api.dtn.com/v2/observations/parameters'\n\nreq = urllib.request.Request(url)\nreq.add_header('Authorization', 'Bearer YOUR_ACCESS_TOKEN')\n\nwith urllib.request.urlopen(req) as response:\n data = json.loads(response.read().decode())\n print(data)"},{"lang":"Python + Requests","source":"import requests\n\nurl = 'https://obs.api.dtn.com/v2/observations/parameters'\n\nheaders = {\n 'Authorization': 'Bearer YOUR_ACCESS_TOKEN'\n}\n\nresponse = requests.get(url, headers=headers)\nprint(response.json())"},{"lang":"Ruby + Native","source":"require 'net/http'\nrequire 'json'\n\nuri = URI('https://obs.api.dtn.com/v2/observations/parameters')\n\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = 'Bearer YOUR_ACCESS_TOKEN'\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|\n http.request(request)\nend\n\nputs JSON.parse(response.body)"},{"lang":"Shell + Curl","source":"curl -X GET \"https://obs.api.dtn.com/v2/observations/parameters\" \\\n -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" "},{"lang":"Shell + Httpie","source":"http GET \"https://obs.api.dtn.com/v2/observations/parameters\" \\\n \"Authorization: Bearer YOUR_ACCESS_TOKEN\" "},{"lang":"Shell + Wget","source":"wget --header=\"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n \"https://obs.api.dtn.com/v2/observations/parameters\" \\\n -O -"},{"lang":"Swift + Nsurlsession","source":"let url = URL(string: \"https://obs.api.dtn.com/v2/observations/parameters\")!\nvar request = URLRequest(url: url)\nrequest.httpMethod = \"GET\"\nrequest.setValue(\"Bearer YOUR_ACCESS_TOKEN\", forHTTPHeaderField: \"Authorization\")\n\nlet task = URLSession.shared.dataTask(with: request) { data, response, error in\n if let data = data {\n print(String(data: data, encoding: .utf8) ?? \"\")\n }\n}\ntask.resume()"}]}}},"components":{"schemas":{"ArchiveCounts":{"title":"ArchiveCounts","required":["yearMonth"],"type":"object","properties":{"yearMonth":{"title":"Yearmonth","type":"integer"}}},"ArchiveParameter":{"title":"ArchiveParameter","required":["parameter"],"type":"object","properties":{"parameter":{"$ref":"#/components/schemas/ArchiveCounts"}}},"UnauthorizedError":{"title":"UnauthorizedError","type":"object","properties":{"detail":{"title":"Detail","type":"string","description":"Error message describing the authorization failure"}},"example":{"detail":"JWT is expired"}},"GatewayTimeoutError":{"title":"GatewayTimeoutError","type":"object","properties":{"detail":{"title":"Detail","type":"string","description":"Error message describing the timeout"}},"example":{"detail":"stream timeout"}},"HTTPValidationError":{"title":"HTTPValidationError","type":"object","properties":{"detail":{"title":"Detail","oneOf":[{"type":"string","description":"Simple validation error message"},{"type":"array","description":"Detailed validation errors","items":{"$ref":"#/components/schemas/ValidationError"}}]}},"examples":{"missing_field":{"summary":"Missing required field","value":{"detail":"Validation error. Message: stationCode field is required."}},"time_range_exceeded":{"summary":"Time range validation","value":{"detail":"Validation error. Message: Maximum hours for time range query is 45 days. You've provided: startTime = 2025-09-01 00:00:00, endTime = 2025-11-30 00:00:00."}},"invalid_format":{"summary":"Invalid field format","value":{"detail":[{"loc":["query","endTime"],"msg":"invalid datetime format","type":"value_error.datetime"}]}}}},"ObsDataRespModel":{"title":"ObsDataRespModel","required":["url","type","features"],"type":"object","properties":{"url":{"title":"Url","type":"string"},"type":{"type":"string"},"features":{"title":"Features","type":"array","items":{"$ref":"#/components/schemas/ObservationsFeature"}}}},"Observation":{"title":"Observation","required":["parameter","parameterProperties"],"type":"object","properties":{"parameter":{"title":"Parameter","type":"number"},"parameterProperties":{"$ref":"#/components/schemas/ObservationProperties"}}},"ObservationProperties":{"title":"ObservationProperties","required":["obsType","isDerived","qc"],"type":"object","properties":{"obsType":{"title":"Obstype","type":"string"},"isDerived":{"title":"Isderived","type":"boolean"},"qc":{"title":"Qc","type":"string"}}},"ParametersListResp":{"title":"ParametersListResp","required":["name","unit","type"],"type":"object","properties":{"name":{"type":"string","title":"Name"},"unit":{"type":"string","title":"Unit"},"imperial_unit":{"type":"string","title":"Imperialunit"},"type":{"type":"string","title":"Type"},"precision":{"type":"integer","title":"Precision"},"description":{"type":"string","title":"Description"},"notes":{"type":"string","title":"Notes"},"requiredScope":{"type":"string","title":"Requiredscope"}}},"StnDataRespModel":{"title":"StnDataRespModel","required":["url","type","features"],"type":"object","properties":{"url":{"title":"Url","type":"string"},"type":{"title":"Type","type":"string"},"features":{"title":"Features","type":"array","items":{"$ref":"#/components/schemas/StationsFeature"}}},"example":{"url":"https://obs.api.dtn.com/v2/observations/stations?by=boundingBox&minLat=51&maxLat=51.5&minLon=0&maxLon=0.5&obsTypes=SYNOP","type":"FeatureCollection","features":[{"stationCode":"DNL35","type":"Feature","geometry":{"type":"Point","coordinates":[0.4595,51.0772]},"properties":{"tags":{"wmo":"99126","mgID":"99126","name":"Goudhurst"},"parameters":["airTemp","airTempMax12Hour","airTempMin12Hour","dewPoint","precipAcc12Hour","precipAcc24Hour","precipAcc60Min","precipAcc6Hour","relativeHumidity","sunrise","sunset","wmoWeatherCode"],"elevation":85,"isArchived":true,"lastObsTimestamp":"2024-03-22T16:00:00Z","obsTypes":["SYNOP"]}},{"stationCode":"K6C7N","type":"Feature","geometry":{"type":"Point","coordinates":[0.45,51.283]},"properties":{"tags":{"wmo":"99008","mgID":"99008","name":"East malling"},"parameters":["airTemp","airTempMax12Hour","airTempMin12Hour","dewPoint","globalRadiation24Hour","globalRadiation60Min","mslPressure","precipAcc12Hour","precipAcc24Hour","precipAcc60Min","precipAcc6Hour","relativeHumidity","stationPressure","sunrise","sunset","sunshine60Min","windDirection","windGust","windSpeed","wmoWeatherCode"],"elevation":50,"isArchived":true,"lastObsTimestamp":"2024-03-22T16:00:00Z","obsTypes":["SYNOP"]}}]}},"ValidationError":{"title":"ValidationError","required":["loc","msg","type"],"type":"object","properties":{"loc":{"title":"Location","type":"array","items":{"type":"string"}},"msg":{"title":"Message","type":"string"},"type":{"title":"Error Type","type":"string"}}},"ObservationsFeature":{"title":"Feature","required":["type","geometry","properties"],"type":"object","properties":{"type":{"title":"Type","type":"string"},"geometry":{"$ref":"#/components/schemas/ObservationsGeometry"},"properties":{"$ref":"#/components/schemas/ObservationsProperties"}}},"ObservationsGeometry":{"title":"Geometry","required":["type","coordinates"],"type":"object","properties":{"type":{"title":"Type","type":"string"},"coordinates":{"title":"Coordinates","type":"array","items":{"type":"number"}}}},"ObservationsProperties":{"title":"Properties","required":["timestamp"],"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/Observation"}}},"StationsFeature":{"title":"Feature","required":["stationCode","type","geometry","properties"],"type":"object","properties":{"stationCode":{"title":"Stationcode","type":"string"},"type":{"title":"Type","type":"string"},"geometry":{"$ref":"#/components/schemas/StationsGeometry"},"properties":{"$ref":"#/components/schemas/StationsProperties"}}},"StationsGeometry":{"title":"Geometry","required":["type","coordinates"],"type":"object","properties":{"type":{"title":"Type","type":"string"},"coordinates":{"title":"Coordinates","type":"array","items":{"type":"number"}}}},"StationsProperties":{"title":"Properties","required":["parameters","elevation","isArchived","lastObsTimestamp","obsTypes"],"type":"object","properties":{"tags":{"title":"Tags","type":"object"},"parameters":{"title":"Parameters","type":"array","items":{"type":"string"}},"elevation":{"title":"Elevation","type":"number"},"isArchived":{"title":"Isarchived","type":"boolean"},"lastObsTimestamp":{"title":"Lastobstimestamp","type":"string"},"obsTypes":{"title":"Obstypes","type":"array","items":{"type":"string"}},"archiveCounts":{"$ref":"#/components/schemas/ArchiveParameter"}}}},"examples":{"Parameter Endpoint Example":{"summary":"Example of Response for Parameter Endpoint","value":[{"name":"airTemp","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Instantaneous air temperature 2m above the surface.","notes":"Exact height of measurement is 2m for networks which conform to WMO standards (Metar and Synop). This cannot be guaranteed for all sources but deviations in air temperatures at most surface measurement heights will be trivial.","requiredScope":"read:one-observations-public, weather.observations.core:read"},{"name":"surfaceTemp","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"RWIS stations often have multiple sensors, where a station has more than 1 these are labelled as surfaceTemp2 to surfaceTemp6. surfaceTemp is not exclusive to networkType RWIS, other networkTypes may have this parameter.","requiredScope":"read:one-observations-public"},{"name":"windSpeed","unit":"m/s","imperial_unit":"mph","type":"float","precision":2,"description":"Wind speed 10m above the surface averaged over 10 minutes.","notes":"Exact height of measurement is 10m for networks which conform to WMO standards (METAR and SYNOP).","requiredScope":"read:one-observations-public, weather.observations.core:read"},{"name":"bridgeTemp7","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the bridge surface, usually used for winter road maintenance.","notes":null,"requiredScope":""},{"name":"bridgeTemp8","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the bridge surface, usually used for winter road maintenance.","notes":null,"requiredScope":""},{"name":"bridgeTemp9","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the bridge surface, usually used for winter road maintenance.","notes":null,"requiredScope":""},{"name":"bridgeTemp10","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the bridge surface, usually used for winter road maintenance.","notes":null,"requiredScope":""},{"name":"feelsLikeTempAvg24Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Average feels like temperature over the 24 hours before the valid time.","notes":"Can be reported at source or aggregated by our API over any daily period by specifying interval=24h in observations endpoint.","requiredScope":""},{"name":"feelsLikeTempMax1Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Maximum feels like temperature over the 1 hour before the valid time.","notes":null,"requiredScope":""},{"name":"feelsLikeTempMax24Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Maximum feels like temperature over the 24 hours before the valid time.","notes":"Can be reported at source or aggregated by our API over any daily period by specifying interval=24h in observations endpoint.","requiredScope":""},{"name":"feelsLikeTempMin1Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Minimum feels like temperature over the 1 hour before the valid time.","notes":null,"requiredScope":""},{"name":"feelsLikeTempMin24Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Minimum feels like temperature over the 24 hours before the valid time.","notes":null,"requiredScope":""},{"name":"freezingTemp2","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"A parameter that indicates the threshold air temperature at or below which water freezes. Typically used to detect freeze events that can affect agriculture, road safety, infrastructure, and ecosystems.","notes":null,"requiredScope":""},{"name":"freezingTemp3","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"A parameter that indicates the threshold air temperature at or below which water freezes. Typically used to detect freeze events that can affect agriculture, road safety, infrastructure, and ecosystems.","notes":null,"requiredScope":""},{"name":"freezingTemp4","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"A parameter that indicates the threshold air temperature at or below which water freezes. Typically used to detect freeze events that can affect agriculture, road safety, infrastructure, and ecosystems.","notes":null,"requiredScope":""},{"name":"freezingTemp5","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"A parameter that indicates the threshold air temperature at or below which water freezes. Typically used to detect freeze events that can affect agriculture, road safety, infrastructure, and ecosystems.","notes":null,"requiredScope":""},{"name":"heatIndexAvg24Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Average heat index over the 24 hours before the valid time.","notes":"Can be reported at source or aggregated by our API over any daily period by specifying interval=24h in observations endpoint.","requiredScope":""},{"name":"heatIndexMax1Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Maximum heat index over the 1 hour before the valid time.","notes":null,"requiredScope":""},{"name":"heatIndexMax24Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Maximum heat index over the 24 hours before the valid time.","notes":"Can be reported at source or aggregated by our API over any daily period by specifying interval=24h in observations endpoint.","requiredScope":""},{"name":"heatIndexMin1Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Minimum heat index over the 1 hour before the valid time.","notes":null,"requiredScope":""},{"name":"heatIndexMin24Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Minimum heat index over the 24 hours before the valid time.","notes":null,"requiredScope":""},{"name":"precipDuration","unit":"minutes","imperial_unit":"minutes","type":"float","precision":0,"description":"Total length of time during which measurable precipitation is expected or has occurred.","notes":null,"requiredScope":""},{"name":"precipPresence","unit":"boolean","imperial_unit":"boolean","type":"boolean","precision":0,"description":"Indicates whether precipitation is present.","notes":null,"requiredScope":""},{"name":"pressureChange6Hour","unit":"hPA","imperial_unit":"mb","type":"float","precision":0,"description":"The change in air pressure over a 6-hour period.","notes":null,"requiredScope":""},{"name":"pressureChange12Hour","unit":"hPA","imperial_unit":"mb","type":"float","precision":0,"description":"The change in air pressure over a 12-hour period.","notes":null,"requiredScope":""},{"name":"pressureChange24Hour","unit":"hPA","imperial_unit":"mb","type":"float","precision":0,"description":"The change in air pressure over a 24-hour period.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp3","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp4","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp6","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp7","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp8","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp9","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp11","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp12","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp13","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"subsurfaceTemp14","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"The temperature measured below the surface, typically in soil, rock, or other underground materials.","notes":null,"requiredScope":""},{"name":"surfaceConductivity7","unit":"mhos/cm","imperial_unit":"mhos/cm","type":"float","precision":2,"description":"An RWIS parameter. Indicates the ability of the road surface to conduct electrical current, which can be useful for assessing the presence of moisture, salts, or other substances that affect road conditions.","notes":null,"requiredScope":""},{"name":"surfaceConductivity8","unit":"mhos/cm","imperial_unit":"mhos/cm","type":"float","precision":2,"description":"An RWIS parameter. Indicates the ability of the road surface to conduct electrical current, which can be useful for assessing the presence of moisture, salts, or other substances that affect road conditions.","notes":null,"requiredScope":""},{"name":"surfaceConductivity9","unit":"mhos/cm","imperial_unit":"mhos/cm","type":"float","precision":2,"description":"An RWIS parameter. Indicates the ability of the road surface to conduct electrical current, which can be useful for assessing the presence of moisture, salts, or other substances that affect road conditions.","notes":null,"requiredScope":""},{"name":"surfaceConductivity10","unit":"mhos/cm","imperial_unit":"mhos/cm","type":"float","precision":2,"description":"An RWIS parameter. Indicates the ability of the road surface to conduct electrical current, which can be useful for assessing the presence of moisture, salts, or other substances that affect road conditions.","notes":null,"requiredScope":""},{"name":"surfaceConductivity11","unit":"mhos/cm","imperial_unit":"mhos/cm","type":"float","precision":2,"description":"An RWIS parameter. Indicates the ability of the road surface to conduct electrical current, which can be useful for assessing the presence of moisture, salts, or other substances that affect road conditions.","notes":null,"requiredScope":""},{"name":"surfaceConductivity12","unit":"mhos/cm","imperial_unit":"mhos/cm","type":"float","precision":2,"description":"An RWIS parameter. Indicates the ability of the road surface to conduct electrical current, which can be useful for assessing the presence of moisture, salts, or other substances that affect road conditions.","notes":null,"requiredScope":""},{"name":"surfaceTemp7","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp8","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp9","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp11","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp12","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp13","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp14","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp16","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp17","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp18","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp19","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp21","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp22","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp23","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"surfaceTemp24","unit":"Celsius","imperial_unit":"F","type":"float","precision":1,"description":"Temperature of the road (pavement) surface, usually used for winter road maintenance.","notes":"","requiredScope":""},{"name":"windChillAvg24Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":2,"description":"Average wind chill over the 24 hours before the valid time.","notes":"Can be reported at source or aggregated by our API over any daily period by specifying interval=24h in observations endpoint.","requiredScope":""},{"name":"windChillMax1Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":2,"description":"Maximum wind chill over the 1 hour before the valid time.","notes":null,"requiredScope":""},{"name":"windChillMax24Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":2,"description":"Maximum wind chill over the 24 hours before the valid time.","notes":"Can be reported at source or aggregated by our API over any daily period by specifying interval=24h in observations endpoint.","requiredScope":""},{"name":"windChillMin1Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":2,"description":"Minimum wind chill over the 1 hour before the valid time.","notes":null,"requiredScope":""},{"name":"windChillMin24Hour","unit":"Celsius","imperial_unit":"F","type":"float","precision":2,"description":"Minimum wind chill over the 24 hours before the valid time.","notes":"Represents the lowest apparent temperature felt by exposed skin due to the combined effects of air temperature and wind speed during the 24-hour period. Can be reported at source or aggregated by our API over any daily period by specifying interval=24h in observations endpoint.","requiredScope":""},{"name":"windSpeed2mMax60Min","unit":"m/s","imperial_unit":"mph","type":"float","precision":2,"description":"Maximum wind speed at 2m above the surface over the 60 minutes before the valid timestamp.","notes":"This height is an approximation for data sources where we know or it is reasonable to assume that winds will be measured closer to 2m than 10m. As a general rule 10m wind speeds will be 30% higher than 2m.","requiredScope":""}]},"Observations Endpoint Plus Scope":{"summary":"Response for the accounts with Plus Scope","value":{"url":"https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed,wbgt&startTime=2025-01-22T00%3A00%3A00Z&endTime=2025-01-22T01%3A00%3A00Z&obsProperties=True","type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.45,51.4833]},"properties":{"2025-01-22T00:00:00Z":{"airTemp":3,"airTempProperties":{"obsType":"SYNOP","isDerived":false,"qc":"pass"},"windSpeed":2.06,"windSpeedProperties":{"obsType":"SYNOP","isDerived":false,"qc":"pass"},"wbgt":2.4,"wbgtProperties":{"obsType":"SYNOP","isDerived":true,"qc":"pass"}},"2025-01-22T00:20:00Z":{"airTemp":3,"airTempProperties":{"obsType":"METAR","isDerived":false,"qc":"pass"},"windSpeed":1.54,"windSpeedProperties":{"obsType":"METAR","isDerived":false,"qc":"pass"},"wbgt":2.2,"wbgtProperties":{"obsType":"METAR","isDerived":true,"qc":"pass"}},"2025-01-22T00:50:00Z":{"airTemp":3,"airTempProperties":{"obsType":"METAR","isDerived":false,"qc":"pass"},"windSpeed":1.54,"windSpeedProperties":{"obsType":"METAR","isDerived":false,"qc":"pass"},"wbgt":2.2,"wbgtProperties":{"obsType":"METAR","isDerived":true,"qc":"pass"}},"2025-01-22T01:00:00Z":{"airTemp":2.9,"airTempProperties":{"obsType":"SYNOP","isDerived":false,"qc":"pass"},"windSpeed":1.54,"windSpeedProperties":{"obsType":"SYNOP","isDerived":false,"qc":"pass"},"wbgt":2.4,"wbgtProperties":{"obsType":"SYNOP","isDerived":true,"qc":"pass"}}}}]}},"Observations Endpoint Core Scope":{"summary":"Response for the accounts with Core Scope","value":{"url":"https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed,wbgt&startTime=2025-01-22T00%3A00%3A00Z&endTime=2025-01-22T01%3A00%3A00Z&obsProperties=True","type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.45,51.4833]},"properties":{"2025-01-22T00:00:00Z":{"airTemp":3,"airTempProperties":{"obsType":"SYNOP","isDerived":false,"qc":"pass"},"windSpeed":2.06,"windSpeedProperties":{"obsType":"SYNOP","isDerived":false,"qc":"pass"}},"2025-01-22T00:20:00Z":{"airTemp":3,"airTempProperties":{"obsType":"METAR","isDerived":false,"qc":"pass"},"windSpeed":1.54,"windSpeedProperties":{"obsType":"METAR","isDerived":false,"qc":"pass"}},"2025-01-22T00:50:00Z":{"airTemp":3,"airTempProperties":{"obsType":"METAR","isDerived":false,"qc":"pass"},"windSpeed":1.54,"windSpeedProperties":{"obsType":"METAR","isDerived":false,"qc":"pass"}},"2025-01-22T01:00:00Z":{"airTemp":2.9,"airTempProperties":{"obsType":"SYNOP","isDerived":false,"qc":"pass"},"windSpeed":1.54,"windSpeedProperties":{"obsType":"SYNOP","isDerived":false,"qc":"pass"}}}}]}},"Observations with showTags=true":{"summary":"Response with station tags included (showTags=true)","value":{"url":"https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed&startTime=2025-01-22T00%3A00%3A00Z&endTime=2025-01-22T01%3A00%3A00Z&showTags=true","type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.45,51.4833]},"properties":{"tags":{"name":"London Weather Station","mgID":"LDN001"},"2025-01-22T00:00:00Z":{"airTemp":3,"windSpeed":2.06},"2025-01-22T00:20:00Z":{"airTemp":3,"windSpeed":1.54},"2025-01-22T00:50:00Z":{"airTemp":3,"windSpeed":1.54},"2025-01-22T01:00:00Z":{"airTemp":2.9,"windSpeed":1.54}}}]}},"Observations with showTags=false":{"summary":"Response without station tags (showTags=false or omitted)","value":{"url":"https://obs.api.dtn.com/v2/observations?stationCode=CPTR3¶meters=airTemp,windSpeed&startTime=2025-01-22T00%3A00%3A00Z&endTime=2025-01-22T01%3A00%3A00Z&showTags=false","type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-0.45,51.4833]},"properties":{"2025-01-22T00:00:00Z":{"airTemp":3,"windSpeed":2.06},"2025-01-22T00:20:00Z":{"airTemp":3,"windSpeed":1.54},"2025-01-22T00:50:00Z":{"airTemp":3,"windSpeed":1.54},"2025-01-22T01:00:00Z":{"airTemp":2.9,"windSpeed":1.54}}}]}}},"securitySchemes":{"clientCredentials":{"type":"oauth2","x-receive-token-in":"request-body","flows":{"clientCredentials":{"tokenUrl":"https://api.auth.dtn.com/v1/tokens/authorize"}},"description":"# Using DAIS for M2M/API Auth\nYou have been given a Client ID and a Client Secret, which are used to request a DTN Access Token. DTN Access Tokens are required when making calls to each and every DTN API endpoint. The following information provides additional details on these tokens and how they are generated.\n## What is an Access Token and how is it different from an API Key?\nAn API Key is a random string of characters that an API uses to authorize whether or not a calling client has approved access to an endpoint. These keys are a non-standard approach to API authorization and are generally issued on a per-API basis.\n\nAn Access Token is also a string of characters but is a base-64 encoded JavaScript Object Notation Web Token, or JWT. JWTs are a widely accepted standard that use OAuth concepts and approaches. \n\nBoth API Keys and Access Tokens are used in an Authorization Request Header as a Bearer, meaning there is no difference in where you put this string of characters when you make calls to DTN APIs.\n## How to generate an Access Token?\nWhen requested, an Access Token is generated for your specific Client (ID/Secret) and for a specific API. The DTN Auth and Identity Service (DAIS) generates new Access Tokens for your client. The DAIS endpoint is `POST https://api.auth.dtn.com/v1/tokens/authorize`.\n\nThis endpoint takes two Header parameters:\n * `Content-Type: application/json`\n * `Accept: application/json`\n\nThis endpoint takes four parameters in the Request Body:\n * `grant_type`: this should always be client_credentials for generating machine-to-machine tokens.\n * `client_id`: this is the Client ID or Application ID using the token and is given to you by DTN's Identity Team. This ID will never change for your client/application.\n * `client_secret`: this is the Client Secret that is associated with the Application ID and is given to you by DTN's Identity Team. This key is subject to rotation for security purposes but always with the client's knowledge.\n * `audience`: this is the API for which this Access Token will be used. For the DTN Observation API, you need to use the following audience: https://weather.api.dtn.com/observations\n\nYou can use this CURL command template as a reference for obtaining an access token:\n ```\n curl --location --request POST 'https://api.auth.dtn.com/v1/tokens/authorize' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n\"grant_type\": \"client_credentials\",\n\"client_id\": \"insert your client id here\",\n\"client_secret\": \"insert your client secret here\",\n\"audience\": \"insert your audience here\"\n}' \n ```\n\n*This document, for demonstration purposes, supplies a client_id and client_secret in all code examples. This client/application is for a fictitious API and cannot be used in practice to gain unauthorized access to any other DTN API.*\nUpon generating a new Access Token, you should receive an HTTP Response from DAIS similar to this:\n ```\n {\n \"data\": {\n \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InpfX21pZW13NGhoTmdvQWQxR3N6ciJ9.eyJodHRwczovL2F1dGguZHRuLmNvbS9jdXN0b21lcklkIjoiMTIzNDU2Nzg5MERlbW8iLCJodHRwczovL2F1dGguZHRuLmNvbS9wcm9kdWN0Q29kZSI6IkRlbW9BcGlQIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcmVxdWVzdGVySXAiOiIxOC4yMTMuMTc0LjI3IiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcnBzIjoiMTAwIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vdGllciI6IkJhc2ljIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcXVvdGEiOiI5OTk5OTkiLCJpc3MiOiJodHRwczovL2lkLmF1dGguZHRuLmNvbS8iLCJzdWIiOiJuZnlPM0tpS1BSOE4wREtSNUNMOGpTOUdGQkNEZXlGTUBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZW1vLWFwaS5hdXRoLmR0bi5jb20vIiwiaWF0IjoxNjU2MDk5MDY4LCJleHAiOjE2NTYwOTkxNTgsImF6cCI6Im5meU8zS2lLUFI4TjBES1I1Q0w4alM5R0ZCQ0RleUZNIiwic2NvcGUiOiJyZWFkOmRlbW8gY3JlYXRlOmRlbW8gdXBkYXRlOmRlbW8iLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJwZXJtaXNzaW9ucyI6WyJyZWFkOmRlbW8iLCJjcmVhdGU6ZGVtbyIsInVwZGF0ZTpkZW1vIl19.0VHdyp1w9PPFVI0FPheAwuKZwb5C25rwP-LPMXcSNoRmouvga1DZtNLA67ZzE_sAlc_VpaDRr6daLKr_Alw4347mw9sdjP8wKR27kCZa9JZK5PGQMmXHscATbzBEJYpCPklfyGaajgymqTBGnedcv8F0UvlRzQPsFeRPnVoX7BWOSXpMbyToGiXWkQLBQT7r96KAmLZOPJFZspPtjw-wH2mSL2WNa_nkB4j5vMGhGxlKiNRsKb30TH_WAel2hsxNlcPK3XHCmrMTYsNnu7HNqOTMn2i0__0rvBrhSWEw-_grqQDmWFJuWd7Qhi1q81AaJcdqgoSa_efz93QFclJUNw\",\n \"scope\": \"read:demo create:demo update:demo\",\n \"expires_in\": 90,\n \"token_type\": \"Bearer\"\n },\n \"meta\": {\n \"date_time\": \"2022-06-24T19:09:42.963Z\",\n \"name\": \"v1.tokens.authorize\",\n \"uuid\": \"ee6f9feb-dcf8-4421-a6fd-efd6beabdaa9\",\n \"start_timestamp\": 1656097782509,\n \"end_timestamp\": 1656097782963,\n \"execution_time\": 454\n }\n }\n ```\nLooking at this Response, you will see:\n * `access_token`: contains the JWT Access Token string you will use as your Bearer token.\n * `scope`: contains the scopes that this Access Token gives you permissions to access.\n * `expires_in`: contains the length of time before this Access Token will expire, in seconds.\n * `token_type`: verifies that this Access Token should be used as a Bearer token.\n\n## How to use an Access Token after one is generated?\nOnce a new Access Token is obtained, it is used in each call to a DTN API endpoint as a Bearer token in an Authorization Request Header. For example:\n ```\n Header: 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InpfX21pZW13NGhoTmdvQWQxR3N6ciJ9.eyJodHRwczovL2F1dGguZHRuLmNvbS9jdXN0b21lcklkIjoiMTIzNDU2Nzg5MERlbW8iLCJodHRwczovL2F1dGguZHRuLmNvbS9wcm9kdWN0Q29kZSI6IkRlbW9BcGlQIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcmVxdWVzdGVySXAiOiIxOC4yMTMuMTc0LjI3IiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcnBzIjoiMTAwIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vdGllciI6IkJhc2ljIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcXVvdGEiOiI5OTk5OTkiLCJpc3MiOiJodHRwczovL2lkLmF1dGguZHRuLmNvbS8iLCJzdWIiOiJuZnlPM0tpS1BSOE4wREtSNUNMOGpTOUdGQkNEZXlGTUBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZW1vLWFwaS5hdXRoLmR0bi5jb20vIiwiaWF0IjoxNjU2MDk5MDY4LCJleHAiOjE2NTYwOTkxNTgsImF6cCI6Im5meU8zS2lLUFI4TjBES1I1Q0w4alM5R0ZCQ0RleUZNIiwic2NvcGUiOiJyZWFkOmRlbW8gY3JlYXRlOmRlbW8gdXBkYXRlOmRlbW8iLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJwZXJtaXNzaW9ucyI6WyJyZWFkOmRlbW8iLCJjcmVhdGU6ZGVtbyIsInVwZGF0ZTpkZW1vIl19.0VHdyp1w9PPFVI0FPheAwuKZwb5C25rwP-LPMXcSNoRmouvga1DZtNLA67ZzE_sAlc_VpaDRr6daLKr_Alw4347mw9sdjP8wKR27kCZa9JZK5PGQMmXHscATbzBEJYpCPklfyGaajgymqTBGnedcv8F0UvlRzQPsFeRPnVoX7BWOSXpMbyToGiXWkQLBQT7r96KAmLZOPJFZspPtjw-wH2mSL2WNa_nkB4j5vMGhGxlKiNRsKb30TH_WAel2hsxNlcPK3XHCmrMTYsNnu7HNqOTMn2i0__0rvBrhSWEw-_grqQDmWFJuWd7Qhi1q81AaJcdqgoSa_efz93QFclJUNw'\n ```\n\n## Deconstructing the Access Token\nA DTN Access Token carries information within its JWT Body that is available on every API call. By deconstructing the JWT token, our Access Tokens will resemble:\n ```\n {\n \"https://auth.dtn.com/customerId\": \"1234567890Demo\",\n \"https://auth.dtn.com/productCode\": \"DemoApiP\",\n \"https://auth.dtn.com/requesterIp\": \"18.213.174.27\",\n \"https://auth.dtn.com/rps\": \"100\",\n \"https://auth.dtn.com/tier\": \"Basic\",\n \"https://auth.dtn.com/quota\": \"999999\",\n \"iss\": \"https://id.auth.dtn.com/\",\n \"sub\": \"nfyO3KiKPR8N0DKR5CL8jS9GFBCDeyFM@clients\",\n \"aud\": \"https://demo-api.auth.dtn.com/\",\n \"iat\": 1656099068,\n \"exp\": 1656099158,\n \"azp\": \"nfyO3KiKPR8N0DKR5CL8jS9GFBCDeyFM\",\n \"scope\": \"read:demo create:demo update:demo\",\n \"gty\": \"client-credentials\",\n \"permissions\": [\n \"read:demo\",\n \"create:demo\",\n \"update:demo\"\n ]\n }\n ```\n### Description of Claims\n\n | Claim | Type | Description |\n | -----------------------------------| --------------------------------------------| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n | `https://auth.dtn.com/customerId` | String | Custom DTN claim containing the Customer ID found in the DTN Order Management/Salesforce system associated with this token. |\n | `https://auth.dtn.com/productCode` | String | Custom DTN claim containing the Identity product code associated with this token. |\n | `https://auth.dtn.com/requesterIp` | String | Custom DTN claim containing the IP address of the requesting client. |\n | `https://auth.dtn.com/rps` | String | Custom DTN claim containing the maximum rate per second this customer is authorized to utilize. |\n | `https://auth.dtn.com/tier` | String | Custom DTN claim containing the data tier the customer purchased for the requested access. |\n | `https://auth.dtn.com/quota` | String | Custom DTN claim containing the maximum yearly quota the customer purchased for calling DTN endpoints for the specific product. |\n | `iss` | String (URI) | The Security Token Service (STS) that issues and returns the token. If this value is not from `https://id.auth.dtn.com/`, the token should not be considered trusted. |\n | `sub` | String (URI) | The principle about which the token asserts information (the User ID or Client ID within the Identity Provider). A User ID will start with a prefix of `auth0\\|`, while the Client ID will end with the suffix `@clients`. |\n | `aud` | String \\| Array (Strings) (URI \\| [URI, …]) | Identifies the intended recipient(s) of the token – its audience. The token should be rejected if the audience does not contain values expected by the calling application. |\n | `iat` | Number (Timestamp) | “Issued At” indicates when the authentication for this token occurred. |\n | `exp` | Number (Timestamp) | The “expiration time” on or after which the JWT must not be accepted for processing. |\n | `azp` | String | The application/client ID of the client using the token. The application can cat as itself or on behalf of a user. |\n | `gty` | String (Space-delimited) | The grant type that was used to request the token – not an RFC 7519 registered claim (Auth0-specific). |\n | `permissions` | Array (Strings) | The grant type that was used to request the token – not an RFC 7519 registered claim (Auth0-specific). |\n\n "}}},"tags":[{"name":"API Endpoints"},{"name":"Parameters","description":"Use this endpoint to retrieve available parameters and their metadata. See the parameters endpoint documentation for the complete parameter list."}]}