{"openapi":"3.1.0","info":{"title":"Agency Bulletin API","description":"\n# Introduction \n \nWelcome to the Agency Bulletin API (ABA) documentation. \n\n\nThe ABA is designed to provide developers with a seamless and convenient way to access the latest weather bulletins \npublished by the national meteorological agencies across the globe (e.g. NWS, UKMO, BoM) all in a standardized and \neasily interpretable GeoJSON format. By unifying the global weather bulletins data into one standardized API, \nwe aim to simplify the process of working with such weather alerts, eliminating the need to understand \nmultiple systems or formats. \n\n\n**Key Features**\n\n* Unified access to latest weather bulletins from national meteorological agencies worldwide.\n* Standardized GeoJSON format for all the weather bulletins, eliminating the need to grapple with various \ndata formats and data pipelines, facilitating easy data visualization and integration with mapping and GIS solutions. \n* Exact geometries of affected areas' polygons included in the response, facilitating precise and granular \nmapping of weather bulletins.\n* Inclusion of a Common Alerting Protocol (CAP) section in our GeoJSON response, preserving the original CAP data \nwhen issued by a national agency.\n\n**Applications**\n\nThis API caters to a wide range of users and applications, including:\n\n* Emergency alert systems\n* Software developers building weather applications\n* Travel planning websites\n* Climate research projects \n\n\nThis interactive documentation will get you up to speed on setting up requests, understanding responses, \nand leveraging the DTN Weather API for your needs.\n\n\n# Getting Started\n## Obtaining Credentials \nTo start making requests, you will first need your API credentials that includes your client ID and client secret. \nPlease contact an account manager or the [DTN sales team](https://www.dtn.com/contact-us/) to obtain these. \nThen, review the `Authentication` section to learn how to request an API access token. Do not share or use others' \nAPI credentials, since doing so may compromise information security.\n\n## Making requests\nStarting off your journey with the the Agency Bulletin API (ABA) couldn't be easier. \nWe've provided a variety of options to suit your needs and comfort level:\nInteractive Documentation: Our interactive documentation is a great starting point. \nSimply navigate to the \"Authentication\" section, insert your credentials, and you'll obtain an access token behind \nthe scenes. Then, explore the API endpoints described in the Endpoints section.\n\n**a) Interactive Documentation:** Our interactive documentation is a great starting point. Simply navigate to \nthe `Authentication` section, insert your credentials, and you'll obtain an access token behind the scenes. \nThen, explore the API endpoints described in the `Endpoints` section.\n\n**b) Postman Collection:** If you prefer a more hands-on approach, consider downloading [this Postman collection](https://dtn.box.com/s/vpuanadvzarpfvh8jujq1hue0ikjxfom) \nAfter inserting your credentials, you can start testing and using the API in a highly interactive \nenvironment.\n\n**c) Writing Code:** Ready to start coding? Try the Python example below, \nreplacing `client_id` and `client_secret` with proper credentials. \nThis invokes the /bulletins endpoint with a GET request and prints the response.\n\n\n\n\n\n```python\n#--- Obtain an API access token ---\nimport requests\n\n# --- Obtain an API access token ---\nauth_url = 'https://api.auth.dtn.com/v1/tokens/authorize'\nbody = {\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'\n}\n\nresponse = requests.post(auth_url, json=body)\naccess_token = response.json()['data']['access_token']\n\n# --- Invoke the API ---\napi_base_url = 'https://wxbulletin.api.dtn.com/v2'\nquery_parameters = '&'.join([\n 'showTotal=True',\n 'country=US',\n 'excludeGeometry=True',\n 'agency=NWS',\n])\n\nendpoint = '/bulletins?' + query_parameters\nheaders = {'Authorization': 'Bearer ' + access_token}\nresponse = requests.get(api_base_url + endpoint, headers=headers)\n\n# --- Print the response ---\nprint(response.json()) \n```\n\n\n","version":"2.0","x-logo":{"url":"https://www.dtn.com/wp-content/uploads/2019/03/dtn-logo-tag.png"}},"paths":{"/v2/bulletins":{"get":{"tags":["Endpoints"],"summary":"Bulletins","description":"```shell \nGET https://wxbulletin.api.dtn.com/v2/bulletins\n```\n\nThis endpoint returns the latest active weather bulletins from the requested national meteorological agency. \nIt is the primary source of information for real-time weather alerts and updates.\n\nUnderstanding and Utilizing Key Query Parameters:\n- **Country:** \nUse this parameter to access all active weather bulletins within a specific country. \nThis parameter accepts ISO 3166-1 alpha-2 codes.\nExample: country=US\n\n- **startTime:**\nThis parameter allows you to filter alerts sent from a specific date and time onward, \nreturning all subsequent alerts. It requires timestamps in ISO 8601 date-time format as specified in RFC 3339.\nExample: startTime=2022-11-25T00:00:00\n\n- **endTime:**\nUse this parameter to receive alerts up to a specific timestamp, \nfiltering out any alerts sent after this date and time. The expected format is ISO 8601 date-time as per RFC 3339.\nExample: endTime=2022-11-26T00:00:00\n\n- **excludeGeometry:**\nThis parameter is crucial and is set to false by default, meaning the response will include detailed geometry of the \npolygons corresponding to each active warning. This can be particularly useful for understanding the exact impacted \nareas or for visualizing warnings in GIS applications. However, be mindful that including this detailed information \nmight substantially increase the payload size when dealing with numerous active bulletins. \nIf you prefer to exclude the detailed geometry and reduce payload size, set this parameter to true.\n\nQuery Example: `https://wxbulletin.api.dtn.com/v2/bulletins?country=US&showTotal=true&agency=NWS&startTime=2023-09-25T12:45:00&endTime=2023-09-25T12:47:00`","operationId":"get_bulletins_v2_bulletins_get","parameters":[{"description":"Specify the country code of the alerts request. This is a required parameter. The reference for acceptable values is ISO 3166 two-letter codes (alpha-2). example: US","required":false,"schema":{"type":"string","title":"Country","description":"Specify the country code of the alerts request. This is a required parameter. The reference for acceptable values is ISO 3166 two-letter codes (alpha-2). example: US"},"name":"country","in":"query"},{"description":"Specify the language the language to use in the text values of the alert. Values should follow RFC 3066. example: en-US","required":false,"schema":{"type":"string","title":"Language","description":"Specify the language the language to use in the text values of the alert. Values should follow RFC 3066. example: en-US"},"name":"language","in":"query"},{"description":"Specify the agency of the alert request. example: NWS","required":false,"schema":{"type":"string","title":"Agency","description":"Specify the agency of the alert request. example: NWS"},"name":"agency","in":"query"},{"description":"Specify the sender of the alerts request. example: w-nws.webmaster@noaa.gov","required":false,"schema":{"type":"string","title":"Sender","description":"Specify the sender of the alerts request. example: w-nws.webmaster@noaa.gov"},"name":"sender","in":"query"},{"description":"When specified, the API will return only alerts that match the specified event types. example: Flood Warning","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Event","description":"When specified, the API will return only alerts that match the specified event types. example: Flood Warning"},"name":"event","in":"query"},{"description":"Specify the date and time alerts are sent. When set, all alerts sent from this timestamp are returned. ISO8601 date-time format specified int RFC 3339. example: 2022-11-25T00:00:00","required":false,"schema":{"type":"string","format":"date-time","title":"Starttime","description":"Specify the date and time alerts are sent. When set, all alerts sent from this timestamp are returned. ISO8601 date-time format specified int RFC 3339. example: 2022-11-25T00:00:00"},"name":"startTime","in":"query"},{"description":"Specify the date and time alerts are sent. When set, all alerts sent until this timestamp are returned. ISO8601 date-time format specified int RFC 3339. example: 2022-11-26T00:00:00","required":false,"schema":{"type":"string","format":"date-time","title":"Endtime","description":"Specify the date and time alerts are sent. When set, all alerts sent until this timestamp are returned. ISO8601 date-time format specified int RFC 3339. example: 2022-11-26T00:00:00"},"name":"endTime","in":"query"},{"description":"Specify whether or not to include the geojson geometry for each alert.","required":false,"schema":{"type":"boolean","title":"Excludegeometry","description":"Specify whether or not to include the geojson geometry for each alert.","default":false},"name":"excludeGeometry","in":"query"},{"description":"Specify whether or not to include total number of alerts.","required":false,"schema":{"type":"boolean","title":"Showtotal","description":"Specify whether or not to include total number of alerts.","default":false},"name":"showTotal","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoJsonAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"clientCredentials":[]}]}},"/v2/metadata":{"get":{"tags":["Endpoints"],"summary":"Metadata","description":"```shell \nGET https://wxbulletin.api.dtn.com/v2/metadata\n```\nThis endpoint provides metadata from each national meteorological agency, \ndetailing what events are published and in which languages, allowing developers to understand the range and scope of \navailable bulletins.\n\nUnderstanding and Utilizing Key Query Parameters:\n\n- Access this endpoint to retrieve a comprehensive list of all available meteorological agencies, \nthe events they publish, and the languages they support. As we continuously integrate support for new agencies into \nthis API, this endpoint serves as an excellent resource to stay updated on the most recent agencies and \ntheir corresponding published events.\n- event: Use this parameter to pinpoint a particular event. It also aids in identifying which agencies \nbroadcast that specific event type.\n\nQuery Example: `https://wxbulletin.api.dtn.com/v2/metadata?country=US&event=Flash`","operationId":"get_metadata_v2_metadata_get","parameters":[{"description":"Specify the country of the event type example: US","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Country","description":"Specify the country of the event type example: US"},"name":"country","in":"query"},{"description":"Specify the agency of the event type example: NWS","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Agency","description":"Specify the agency of the event type example: NWS"},"name":"agency","in":"query"},{"description":"Specify the language of the event types follow RFC 3066. example: en-US","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Language","description":"Specify the language of the event types follow RFC 3066. example: en-US"},"name":"language","in":"query"},{"description":"When specified, the API allows filtering based on specific event types. This can be used to narrow down search result. example: event=flood would return events like Flash Flood Watch, Flood Warning, Flash Flood Statement, Severe Flood Warning","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Event","description":"When specified, the API allows filtering based on specific event types. This can be used to narrow down search result. example: event=flood would return events like Flash Flood Watch, Flood Warning, Flash Flood Statement, Severe Flood Warning"},"name":"event","in":"query"},{"description":"When specified, the API allows filtering based on specific dtnEvent. This can be used to narrow down search result. example: dtnEvent=Wind would return events like Brisk Wind Advisory, Extreme Wind Warning, Lake Wind Advisory, High Wind Warning","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Dtnevent","description":"When specified, the API allows filtering based on specific dtnEvent. This can be used to narrow down search result. example: dtnEvent=Wind would return events like Brisk Wind Advisory, Extreme Wind Warning, Lake Wind Advisory, High Wind Warning"},"name":"dtnEvent","in":"query"},{"description":"When specified, the API allows filtering based on specific dtnEventCode. This can be used to narrow down search result. example: dtnEventCode=1 would return events under Snow likeLake Effect Snow Watch, Lake Effect Snow Warning, Lake Effect Snow Advisory, Snow Squall Warning","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Dtneventcode","description":"When specified, the API allows filtering based on specific dtnEventCode. This can be used to narrow down search result. example: dtnEventCode=1 would return events under Snow likeLake Effect Snow Watch, Lake Effect Snow Warning, Lake Effect Snow Advisory, Snow Squall Warning"},"name":"dtnEventCode","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"clientCredentials":[]}]}},"/v2/metadata/dtn":{"get":{"tags":["Endpoints"],"summary":"Metadata/dtn","description":"```shell \nGET https://wxbulletin.api.dtn.com/v2/metadata/dtn\n```\nThis endpoint provides metadata of dtn events.\n\nUnderstanding and Utilizing Key Query Parameters:\n\n- Access this endpoint to retrieve a comprehensive list of all available dtn events. \n- dtnEvent: Use this parameter to pinpoint a particular dtn event.\n\nQuery Example: `https://wxbulletin.api.dtn.com/v2/metadata/dtn?dtnEvent=Snow`","operationId":"get_metadata_dtn_v2_metadata_dtn_get","parameters":[{"description":"Specify the event code of dtn event example: NWS","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Dtneventcode","description":"Specify the event code of dtn event example: NWS"},"name":"dtnEventCode","in":"query"},{"description":"Specify the event name of dtn event example: Low Temperature","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Dtnevent","description":"Specify the event name of dtn event example: Low Temperature"},"name":"dtnEvent","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataDTNResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"clientCredentials":[]}]}}},"components":{"schemas":{"GeoJsonAlert":{"properties":{"id":{"type":"string","title":"Id","description":"The identifier of the alert message"},"agency":{"type":"string","title":"Agency","description":"Agency issuing the alert"},"country":{"type":"string","title":"Country","description":"Country code of the alert"},"type":{"type":"string","title":"Type","description":"Type of the GeoJSON object"},"geometry":{"anyOf":[{"type":"object"},{"type":"object"},{"type":"object"}],"title":"Geometry","description":"Geometry of the alert area"},"properties":{"allOf":[{"$ref":"#/components/schemas/GeoJsonAlertProperties"}],"title":"Properties","description":"Properties of the alert"},"dtnInfo":{"type":"object","title":"Dtninfo","description":"Additional DTN information about the alert"}},"type":"object","required":["id","agency","country","type","properties","dtnInfo"],"title":"GeoJsonAlert"},"GeoJsonAlertInfo":{"properties":{"event":{"type":"string","title":"Event","description":"The text denoting the type of the subject event of the alert message"},"eventCode":{"items":{},"type":"array","title":"Eventcode","description":"A system- specific code identifying the event type of the alert message"},"category":{"type":"string","title":"Category","description":"The code denoting the category of the subject event of the alert message"},"language":{"type":"string","title":"Language","description":"The code denoting the language of the info sub- element of the alert message"},"urgency":{"type":"string","title":"Urgency","description":"The code denoting the urgency of the subject event of the alert message"},"severity":{"type":"string","title":"Severity","description":"The code denoting the severity of the subject event of the alert message"},"certainty":{"type":"string","title":"Certainty","description":"The code denoting the certainty of the subject event of the alert message"},"responseType":{"type":"string","title":"Responsetype","description":"The code denoting the type of action recommended for the target audience"},"effective":{"type":"string","format":"date-time","title":"Effective","description":"The effective time of the information of the alert message"},"onset":{"type":"string","format":"date-time","title":"Onset","description":"The expected time of the beginning of the subject event of the alert message"},"expires":{"type":"string","format":"date-time","title":"Expires","description":"The expiry time of the information of the alert message"},"audience":{"type":"string","title":"Audience","description":"The text describing the intended audience of the alert message"},"senderName":{"type":"string","title":"Sendername","description":"The text naming the originator of the alert message"},"headline":{"type":"string","title":"Headline","description":"The text headline of the alert message"},"description":{"type":"string","title":"Description","description":"The text describing the subject event of the alert message"},"instruction":{"type":"string","title":"Instruction","description":"The text describing the recommended action to be taken by recipients of the alert message"},"web":{"type":"string","title":"Web","description":"The identifier of the hyperlink associating additional information with the alert message"},"contact":{"type":"string","title":"Contact","description":"The text describing the contact for follow-up and confirmation of the alert message"},"parameters":{"items":{"type":"object"},"type":"array","title":"Parameters","description":"A system- specific additional parameter associated with the alert message"},"area":{"items":{"$ref":"#/components/schemas/GeoJsonAlertInfoArea"},"type":"array","title":"Area","description":"The container for all component parts of the area sub-element of the info sub- element of the alert message"}},"type":"object","required":["event","category","language","urgency","severity","certainty","expires","area"],"title":"GeoJsonAlertInfo"},"GeoJsonAlertInfoArea":{"properties":{"areaDesc":{"type":"string","title":"Areadesc","description":"The text describing the affected area of the alert message"},"polygon":{"type":"object","title":"Polygon","description":"The paired values of points defining a polygon that delineates the affected area of the alert message"},"circle":{"type":"string","title":"Circle","description":"The paired values of a point and radius delineating the affected area of the alert message"},"ceiling":{"type":"number","title":"Ceiling","description":"The maximum altitude of the affected area of the alert message"},"altitude":{"type":"number","title":"Altitude","description":"The specific or minimum altitude of the affected area of the alert message"},"geocodes":{"items":{"$ref":"#/components/schemas/Values"},"type":"array","title":"Geocodes","description":"The geographic code delineating the affected area of the alert message"}},"type":"object","required":["areaDesc"],"title":"GeoJsonAlertInfoArea"},"GeoJsonAlertProperties":{"properties":{"identifier":{"type":"string","title":"Identifier","description":"The identifier of the alert message"},"sender":{"type":"string","title":"Sender","description":"The identifier of the sender of the alert message"},"sent":{"type":"string","format":"date-time","title":"Sent","description":"The time and date of the origination of the alert message"},"status":{"type":"string","title":"Status","description":"The code denoting the appropriate handling of the alert message"},"msgType":{"type":"string","title":"Msgtype","description":"The code denoting the nature of the alert message"},"scope":{"type":"string","title":"Scope","description":"The code denoting the intended distribution of the alert message"},"code":{"type":"string","title":"Code","description":"The code denoting the special handling of the alert message"},"source":{"type":"string","title":"Source","description":"The text identifying the source of the alert message"},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Date when the alert was last updated"},"restriction":{"type":"string","title":"Restriction","description":"The text describing the rule for limiting distribution of the restricted alert message"},"addresses":{"type":"string","title":"Addresses","description":"The group listing of intended recipients of the alert message"},"note":{"type":"string","title":"Note","description":"The text describing the purpose or significance of the alert message"},"references":{"type":"string","title":"References","description":"The group listing identifying earlier message(s) referenced by alert message"},"info":{"items":{"$ref":"#/components/schemas/GeoJsonAlertInfo"},"type":"array","title":"Info","description":"Additional information about the alert"}},"type":"object","required":["identifier","sender","sent","status","msgType","scope","updated","info"],"title":"GeoJsonAlertProperties"},"GeoJsonAlertResponse":{"properties":{"url":{"type":"string","title":"Url","description":"The complete URL to access the alert data, including any query parameters"},"totalAlerts":{"type":"integer","title":"Totalalerts","description":"Total number of alerts"},"type":{"type":"string","title":"Type","description":"Type of the GeoJSON object"},"features":{"items":{"$ref":"#/components/schemas/GeoJsonAlert"},"type":"array","title":"Features","description":"List of alert features"}},"type":"object","required":["url","type","features"],"title":"GeoJsonAlertResponse","example":{"url":"https://wxbulletin.api.dtn.com/v2/bulletins?excludeGeometry=true&showTotal=true&country=US&startTime=2024-06-24T20%3A49%3A00&event=heat+advisory","totalAlerts":1,"type":"FeatureCollection","features":[{"id":"nws1364c1bdd210c7f036b66585590bcff39d46ea0f7c77a0a2e8f1db8651256caa","agency":"NWS","country":"US","type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-98,40],[-98,41],[-97,41],[-97,40],[-98,40]]]},"properties":{"identifier":"nws1364c1bdd210c7f036b66585590bcff39d46ea0f7c77a0a2e8f1db8651256caa","sender":"w-nws.webmaster@noaa.gov","sent":"2024-06-24T20:49:00","status":"Actual","msgType":"Update","scope":"Public","code":"IPAWSv1.0","updated":"2024-06-24T20:49:00","references":"w-nws.webmaster@noaa.gov,urn:oid:2.49.0.1.840.0.29e524a2edad47b728e81f62a538ac730e40e49a.001.1,2024-06-24T02:54:00-05:00","info":[{"event":"Heat Advisory","eventCode":[{"valueName":"SAME","value":"NWS"},{"valueName":"NationalWeatherService","value":"HTY"}],"category":"Met","language":"en-US","urgency":"Expected","severity":"Moderate","certainty":"Likely","responseType":"Execute","effective":"2024-06-24T20:49:00","onset":"2024-06-25T18:00:00","expires":"2024-06-26T00:00:00","senderName":"NWS Hastings NE","headline":"Heat Advisory issued June 24 at 3:49PM CDT until June 25 at 7:00PM CDT by NWS Hastings NE","description":"* WHAT...For the first Heat Advisory, heat index values up to 110\npossible. For the second Heat Advisory, heat index values around\n105 expected.\n\n* WHERE...In Kansas, Jewell, Mitchell, Osborne, Phillips, Rooks, and\nSmith Counties. In Nebraska, Nuckolls and Thayer Counties.\n\n* WHEN...For the first Heat Advisory, until 8 PM CDT this evening.\nFor the second Heat Advisory, from 1 PM to 7 PM CDT Tuesday.\n\n* IMPACTS...Hot temperatures and high humidity may cause heat\nillnesses.","instruction":"Take extra precautions when outside. Wear lightweight and loose\nfitting clothing. Try to limit strenuous activities to early morning\nor evening. Take action when you see symptoms of heat exhaustion and\nheat stroke. Drink plenty of fluids, stay in an air-conditioned\nroom, stay out of\nthe sun, and check up on relatives and neighbors.","web":"http://www.weather.gov","parameters":[{"valueName":"AWIPSidentifier","value":"NPWGID"},{"valueName":"WMOidentifier","value":"WWUS73 KGID 242049"},{"valueName":"NWSheadline","value":"HEAT ADVISORY REMAINS IN EFFECT UNTIL 8 PM CDT THIS EVENING... ...HEAT ADVISORY REMAINS IN EFFECT FROM 1 PM TO 7 PM CDT TUESDAY"},{"valueName":"BLOCKCHANNEL","value":"EAS,NWEM,CMAS"},{"valueName":"VTEC","value":"/O.CON.KGID.HT.Y.0002.240625T1800Z-240626T0000Z/"},{"valueName":"eventEndingTime","value":"2024-06-26T00:00:00+0000"},{"valueName":"CAPversion","value":"1.2"},{"valueName":"originalID","value":"2.49.0.1.840.0.f950770a5e0de71a60b45e3820f5c39fcdfe4222.001.2"}],"area":[{"areaDesc":"Phillips; Smith; Jewell; Rooks; Osborne; Mitchell; Nuckolls; Thayer","geocodes":[{"valueName":"UGC","value":"KSZ005"},{"valueName":"UGC","value":"KSZ006"},{"valueName":"UGC","value":"KSZ007"},{"valueName":"UGC","value":"KSZ017"},{"valueName":"UGC","value":"KSZ018"},{"valueName":"UGC","value":"KSZ019"},{"valueName":"UGC","value":"NEZ086"},{"valueName":"UGC","value":"NEZ087"}]}]}]},"dtnInfo":{"dtnMsgType":"Update","dtnExpires":"2024-06-26T00:00:00","dtnEvent":"Heat","dtnEventCode":"4","dtnDisclaimer":"Any DTN expiration dates, times, and message types shown here are automatically generated by the DTN's system, not by the alerting agencies themselves. Additionally, the dtnEvent and dtnEventCode are DTN's normalized event parameters for uniformity and do not necessarily reflect the exact terminology of the issuing agency. To access the original event name as published by the agency, please refer to the event parameter in the response."}}]}},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MetadataDTNResponse":{"properties":{"url":{"type":"string","title":"Url"},"dtnEvents":{"additionalProperties":{"type":"string"},"type":"object","title":"Dtnevents"}},"type":"object","required":["url","dtnEvents"],"title":"MetadataDTNResponse","example":{"url":"https://wxbulletin.api.dtn.com/v2/metadata/dtn","dtnEvents":{"0":"Uncategorized","1":"Snow","2":"Low Temperature","3":"Fog","4":"Heat","5":"Marine and Coastal","6":"Winter Storm","7":"Tropical Storm, Hurricane, and Typhoon","8":"Thunderstorm","9":"Tornado","10":"Radiological Hazard","11":"Volcano","12":"Avalanche","13":"Tsunami","14":"Wind","15":"Smoke","16":"Flood","17":"Rain","18":"Weather Conditions","19":"Administrative Message","20":"Air Quality","21":"Civil Emergency Message","22":"Dust","23":"Fire","24":"Test","25":"Earthquake","26":"Agriculture"}}},"MetadataResponse":{"properties":{"url":{"type":"string","title":"Url"},"metadata":{"additionalProperties":{"additionalProperties":{"additionalProperties":{"additionalProperties":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},"type":"object"},"type":"object"},"type":"object"},"type":"object","title":"Metadata"}},"type":"object","required":["url","metadata"],"title":"MetadataResponse","example":{"url":"https://wxbulletin.api.dtn.com/v2/metadata","metadata":{"US":{"NWS":{"event":{"en-US":{"Wind":["Brisk Wind Advisory","Extreme Wind Warning","Wind Advisory","High Wind Watch","Gale Warning","Gale Watch","Lake Wind Advisory","High Wind Warning"],"Low Temperature":["Wind Chill Advisory","Wind Chill Warning","Extreme Cold Warning","Extreme Cold Watch","Freeze Warning","Freeze Watch","Frost Advisory","Hard Freeze Warning","Hard Freeze Watch","Winter Weather Advisory","Wind Chill Watch","Cold Weather Advisory"],"Smoke":["Dense Smoke Advisory"],"Flood":["Flood Advisory","Flood Statement","Small Stream Flood Advisory","Urban And Small Stream Flood Advisory","Flood Watch","Flood Warning","Coastal Flood Advisory","Coastal Flood Statement","Coastal Flood Warning","Coastal Flood Watch","Lakeshore Flood Advisory","Lakeshore Flood Statement","Lakeshore Flood Warning","Lakeshore Flood Watch","Flash Flood Statement","Flash Flood Warning","Flash Flood Watch","Hydrologic Advisory","Arroyo And Small Stream Flood Advisory","Hydrologic Outlook"],"Fog":["Dense Fog Advisory","Freezing Fog Advisory"],"Heat":["Excessive Heat Warning","Excessive Heat Watch","Heat Advisory","Extreme Heat Warning","Extreme Heat Watch"],"Marine and Coastal":["Small Craft Advisory","Small Craft Advisory For Rough Bar","Hazardous Seas Warning","Hazardous Seas Watch","Small Craft Advisory For Winds","Special Marine Warning","Marine Weather Statement","Rip Current Statement","Low Water Advisory","High Surf Advisory","High Surf Warning","Beach Hazards Statement","Freezing Spray Advisory","Heavy Freezing Spray Warning","Heavy Freezing Spray Watch","Small Craft Advisory For Hazardous Seas","Heavy Freezing Spray Advisory"],"Snow":["Lake Effect Snow Watch","Lake Effect Snow Warning","Lake Effect Snow Advisory","Snow Squall Warning"],"Winter Storm":["Storm Warning","Storm Watch","Blizzard Warning","Blizzard Watch","Winter Storm Warning","Winter Storm Watch","Ice Storm Warning"],"Tropical Storm, Hurricane, and Typhoon":["Tropical Storm Local Statement","Tropical Storm Warning","Tropical Storm Watch","Tropical Depression Local Statement","Storm Surge Warning","Storm Surge Watch","Hurricane Warning","Hurricane Watch","Hurricane Force Wind Warning","Hurricane Force Wind Watch","Typhoon Local Statement","Typhoon Warning","Typhoon Watch","Tropical Cyclone Statement","Hurricane Local Statement"],"Thunderstorm":["Severe Thunderstorm Watch","Severe Thunderstorm Warning"],"Tornado":["Tornado Warning","Tornado Watch"],"Radiological Hazard":["Radiological Hazard Warning"],"Volcano":["Volcano Warning","Ashfall Advisory","Ashfall Warning"],"Avalanche":["Avalanche Warning","Avalanche Watch","Avalanche Advisory"],"Tsunami":["Tsunami Advisory","Tsunami Warning","Tsunami Watch"],"Rain":["Freezing Rain Advisory"],"Weather Conditions":["Severe Weather Statement","Special Weather Statement","Short Term Forecast","Hazardous Weather Outlook"],"Administrative Message":["Administrative Message"],"Air Quality":["Air Quality Alert","Air Stagnation Advisory"],"Civil Emergency Message":["Child Abduction Emergency","Civil Danger Warning","Civil Emergency Message","Evacuation - Immediate","Law Enforcement Warning","Local Area Emergency","Shelter In Place Warning","Hazardous Materials Warning","911 Telephone Outage Emergency","Nuclear Power Plant Warning","911 Telephone Outage"],"Dust":["Blowing Dust Advisory","Blowing Dust Warning","Dust Storm Warning","Dust Advisory"],"Fire":["Extreme Fire Danger","Fire Warning","Fire Weather Watch","Red Flag Warning"],"Test":["Test"],"Earthquake":["Earthquake Warning"]}}}},"AU":{"BOM":{"event":{"en-AU":{"Marine and Coastal":["Large Coastal Surf"],"Thunderstorm":["Thunderstorm"],"Wind":["Wind"],"Flood":["Riverine Flood"],"Weather Conditions":["Weather","Exposure"],"Agriculture":["Sheep Grazier Warning","Plant Disease"],"Civil Emergency Message":["Hazardous Road Conditions"],"Low Temperature":["Frost"],"Heat":["Extreme Heat"],"Fire":["Fire Weather"]}}}},"DE":{"DWD":{"event":{"en-US":{"Thunderstorm":["extreme thunderstorms with gale- or storm-force gusts","extreme thunderstorms with gale- or storm-force gusts, extremely heavy rain and hail","extreme thunderstorms with hurricane-force gusts, extremely heavy rain and hail","heavy thunderstorms","heavy thunderstorms with gale- or storm-force gusts","heavy thunderstorms with gale- or storm-force gusts and heavy rain","heavy thunderstorms with gale- or storm-force gusts and very heavy rain","heavy thunderstorms with gale- or storm-force gusts, heavy rain and hail","heavy thunderstorms with heavy rain","severe thunderstorms","severe thunderstorms with gale- or storm-force gusts, very heavy rain and hail","severe thunderstorms with violent storm or hurricane-force gusts","severe thunderstorms with violent storm or hurricane-force gusts and very heavy rain","severe thunderstorms with violent storm or hurricane-force gusts, very heavy rain, and hail","thunderstorms","thunderstorms, possibly with wind gusts","extreme thunderstorms","extreme thunderstorms with extreme hurricane-force gusts","extreme thunderstorms with extreme hurricane-force gusts and very heavy rain","extreme thunderstorms with extreme hurricane-force gusts, very heavy rain and hail"],"Wind":["wind gusts","gale-force gusts","storm-force gusts","violent storm gusts","hurricane-force gusts","extreme hurricane-force gusts","strong wind","storm","near gale","gale"],"Rain":["heavy rain","very heavy rain","persistent rain","heavy persistent rain","extremely persistent rain","extremely heavy rain","very heavy / persistent rain"],"Weather Conditions":["thaw","heavy thaw"],"Civil Emergency Message":["powerline vibrations"],"Test":["moderate test warning","severe test warning","test weather watch"],"Snow":["light snowfall","snowfall","heavy snowfall","extremely heavy snowfall","snow drifts","heavy snow drifts","extremely heavy snow drifts","heavy snowfall with snow drifts"],"Low Temperature":["frost","severe frost","slight risk of icy surfaces","black ice","extreme black ice","icy surfaces","significant icy surfaces"],"Fog":["fog"],"Heat":["high UV Index","strong heat","extreme heat"],"Marine and Coastal":["minor gusts (sea)","moderate gusts (sea)","severe gusts (sea)"]},"de-DE":{"Snow":["LEICHTER SCHNEEFALL","SCHNEEFALL","STARKER SCHNEEFALL","EXTREM STARKER SCHNEEFALL","SCHNEEVERWEHUNG","STARKE SCHNEEVERWEHUNG","EXTREM STARKE SCHNEEVERWEHUNG","VORABINFORMATION STARKER SCHNEEFALL / SCHNEEVERWEHUNG"],"Low Temperature":["FROST","STRENGER FROST","GERINGE GLÄTTE","GLATTEIS","EXTREMES GLATTEIS","VORABINFORMATION GLATTEIS","GLÄTTE","MARKANTE GLÄTTE"],"Fog":["NEBEL"],"Heat":["UV-INDEX","STARKE HITZE","EXTREME HITZE"],"Marine and Coastal":["Starkwind","Sturm","schwerer Sturm"],"Wind":["SCHWERE STURMBÖEN","ORKANARTIGE BÖEN","ORKANBÖEN","EXTREME ORKANBÖEN","STARKWIND","WINDBÖEN","STURMBÖEN","STURM","VORABINFORMATION ORKANBÖEN","BÖEN","WIND","ORKAN"],"Thunderstorm":["GEWITTER","STARKES GEWITTER","SCHWERES GEWITTER mit ORKANBÖEN","SCHWERES GEWITTER mit EXTREMEN ORKANBÖEN","SCHWERES GEWITTER mit HEFTIGEM STARKREGEN","SCHWERES GEWITTER mit ORKANBÖEN und HEFTIGEM STARKREGEN","SCHWERES GEWITTER mit EXTREMEN ORKANBÖEN und HEFTIGEM STARKREGEN","SCHWERES GEWITTER mit HEFTIGEM STARKREGEN und HAGEL","SCHWERES GEWITTER","EXTREMES GEWITTER","SCHWERES GEWITTER mit EXTREM HEFTIGEM STARKREGEN und HAGEL","SCHWERES GEWITTER mit ORKANBÖEN, HEFTIGEM STARKREGEN und HAGEL","SCHWERES GEWITTER mit EXTREMEN ORKANBÖEN, HEFTIGEM STARKREGEN und HAGEL","SCHWERES GEWITTER mit ORKANBÖEN, EXTREM HEFTIGEM STARKREGEN und HAGEL","VORABINFORMATION SCHWERES GEWITTER"],"Rain":["STARKREGEN","HEFTIGER STARKREGEN","DAUERREGEN","ERGIEBIGER DAUERREGEN","EXTREM ERGIEBIGER DAUERREGEN","EXTREM HEFTIGER STARKREGEN","VORABINFORMATION HEFTIGER / ERGIEBIGER REGEN"],"Weather Conditions":["TAUWETTER","STARKES TAUWETTER","VORABINFORMATION STARKES TAUWETTER"],"Civil Emergency Message":["LEITERSEILSCHWINGUNGEN"],"Test":["TEST-WARNUNG","TEST-UNWETTERWARNUNG","TEST-VORABINFORMATION UNWETTER"]}}}},"CH":{"METEOALARM":{"event":{"en-GB":{"Snow":["Danger of road icing","Heavy snowfall","Snowfall"],"Wind":["Gale force wind"],"Rain":["Strong rainfall","Continuous rain"]},"de-DE":{"Snow":["Strassenglättegefahr","Starker Schneefall","Schneefall"],"Wind":["Stürmischer Wind"],"Rain":["Starker Regen","Intensiver Dauerregen"]},"fr-FR":{"Snow":["Chaussées glissantes","Fortes chutes de neige","Chutes de neige"],"Wind":["Vent fort"],"Rain":["Fortes pluies","Précipitations abondantes"]},"it-IT":{"Snow":["Strade sdrucciolevoli","Forti nevicate","Nevicate"],"Wind":["Venti tempestosi"],"Rain":["Forti piogge"]},"rm-CH":{"Snow":["Privel da vias glischas","Navaglias","Naiv"],"Wind":["Vent burascus"],"Rain":["Plievgia ferma","Plievgia permanenta intensiva"]}}}},"UK":{"UKMO":{"event":{"en-GB":{"Low Temperature":["ICE"],"Fog":["FOG"],"Heat":["EXTREME HEAT"],"Thunderstorm":["THUNDERSTORM","LIGHTNING"],"Wind":["WIND"],"Rain":["RAIN"],"Snow":["SNOW"]}}},"UKENVA":{"event":{"en-GB":{"Flood":["Severe flood warning","Flood alert","Flood warning"]}}},"NATWALES":{"event":{"en-GB":{"Flood":["Severe Flood Warning","Flood Alert","Flood Warning"]},"cy-GB":{"Flood":["Severe Flood Warning","Flood Alert","Flood Warning"]}}}},"NL":{"METEOALARM":{"event":{"en-GB":{"Snow":["Minor snow-ice warning","Moderate snow-ice warning","Severe snow-ice warning","Extreme snow-ice warning"],"Low Temperature":["Minor low-temperature warning","Moderate low-temperature warning","Severe low-temperature warning","Extreme low-temperature warning"],"Fog":["Minor fog warning","Moderate fog warning","Severe fog warning","Extreme fog warning"],"Heat":["Minor high-temperature warning","Moderate high-temperature warning","Severe high-temperature warning","Extreme high-temperature warning"],"Marine and Coastal":["awareness_type=07,awareness_level=1.0","awareness_type=07,awareness_level=2.0","awareness_type=07,awareness_level=3.0","awareness_type=07,awareness_level=4.0"],"Thunderstorm":["Minor thunderstorm warning","Moderate thunderstorm warning","Severe thunderstorm warning","Extreme thunderstorm warning"],"Wind":["Minor Wind warning","Moderate Wind warning","Severe Wind warning","Extreme Wind warning"],"Flood":["awareness_type=12,awareness_level=1.0","awareness_type=12,awareness_level=2.0","awareness_type=12,awareness_level=3.0","awareness_type=12,awareness_level=4.0"],"Rain":["Minor rain warning","Moderate rain warning","Severe rain warning","Extreme rain warning"]},"nl-NL":{"Snow":["Minor snow-ice warning","Moderate snow-ice warning","Severe snow-ice warning","Extreme snow-ice warning"],"Low Temperature":["Minor low-temperature warning","Moderate low-temperature warning","Severe low-temperature warning","Extreme low-temperature warning"],"Fog":["Minor fog warning","Moderate fog warning","Severe fog warning","Extreme fog warning"],"Heat":["Minor high-temperature warning","Moderate high-temperature warning","Severe high-temperature warning","Extreme high-temperature warning"],"Marine and Coastal":["awareness_type=07,awareness_level=1.0","awareness_type=07,awareness_level=2.0","awareness_type=07,awareness_level=3.0","awareness_type=07,awareness_level=4.0"],"Thunderstorm":["Minor thunderstorm warning","Moderate thunderstorm warning","Severe thunderstorm warning","Extreme thunderstorm warning"],"Wind":["Minor Wind warning","Moderate Wind warning","Severe Wind warning","Extreme Wind warning"],"Flood":["awareness_type=12,awareness_level=1.0","awareness_type=12,awareness_level=2.0","awareness_type=12,awareness_level=3.0","awareness_type=12,awareness_level=4.0"],"Rain":["Minor rain warning","Moderate rain warning","Severe rain warning","Extreme rain warning"]}}}},"FR":{"METEOALARM":{"event":{"en-GB":{"Snow":["Moderate snow-ice warning","Severe snow-ice warning","Extreme snow-ice warning"],"Low Temperature":["Moderate low-temperature warning","Severe low-temperature warning","Extreme low-temperature warning"],"Fog":["Moderate fog warning","Severe fog warning","Extreme fog warning"],"Heat":["Moderate high-temperature warning","Severe high-temperature warning","Extreme high-temperature warning"],"Marine and Coastal":["Moderate coastalevent warning","Severe coastalevent warning","Extreme coastalevent warning"],"Thunderstorm":["Moderate thunderstorm warning","Severe thunderstorm warning","Extreme thunderstorm warning"],"Avalanche":["Moderate avalanches warning","Severe avalanches warning","Extreme avalanches warning"],"Wind":["Moderate wind warning","Severe wind warning","Extreme wind warning"],"Flood":["Moderate flooding warning","Severe flooding warning","Extreme flooding warning","Moderate rain-flood warning","Severe rain-flood warning","Extreme rain-flood warning"],"Rain":["Moderate rain warning","Severe rain warning","Extreme rain warning"],"Fire":["Moderate forest-fire warning","Severe forest-fire warning","Extreme forest-fire warning"]},"fr-FR":{"Snow":["Vigilance jaune neige-verglas","Vigilance orange neige-verglas","Vigilance rouge neige-verglas"],"Marine and Coastal":["Vigilance jaune vagues-submersion","Vigilance orange vagues-submersion","Vigilance rouge vagues-submersion"],"Thunderstorm":["Vigilance jaune orages","Vigilance orange orages","Vigilance rouge orages"],"Avalanche":["Vigilance jaune avalanches","Vigilance orange avalanches","Vigilance rouge avalanches"],"Wind":["Vigilance jaune vent-violent","Vigilance orange vent-violent","Vigilance rouge vent-violent"],"Flood":["Vigilance jaune inondations","Vigilance orange inondations","Vigilance rouge inondations","Vigilance jaune pluie-inondation","Vigilance orange pluie-inondation","Vigilance rouge pluie-inondation"]}}}},"IT":{"METEOALARM":{"event":{"en-GB":{"Rain":["Green Rain Warning","Yellow Rain Warning","Orange Rain Warning","Red Rain Warning"],"Wind":["Green Wind Warning","Yellow Wind Warning","Orange Wind Warning"],"Fog":["Green Fog Warning","Yellow Fog Warning"],"Thunderstorm":["Green Thunderstorm Warning","Yellow Thunderstorm Warning","Orange Thunderstorm Warning"],"Snow":["Red Snow-ice Warning","Yellow Snow-ice Warning","Orange Snow-ice Warning","Green Snow-ice Warning"],"Heat":["Yellow High-temperature Warning","Orange High-temperature Warning","Green High-temperature Warning"]},"it-IT":{"Rain":["Verde Pioggia Allerta","Giallo Pioggia Allerta","Arancione Pioggia Allerta","Rosso Pioggia Allerta"],"Wind":["Verde Vento Allerta","Giallo Vento Allerta","Arancione Vento Allerta"],"Fog":["Verde Nebbia Allerta","Giallo Nebbia Allerta"],"Thunderstorm":["Verde Temporali Allerta","Giallo Temporali Allerta","Arancione Temporali Allerta"],"Snow":["Rosso Neve-ghiaccio Allerta","Giallo Neve-ghiaccio Allerta","Arancione Neve-ghiaccio Allerta","Verde Neve-ghiaccio Allerta"],"Heat":["Giallo Onda Di Calore Allerta","Arancione Onda Di Calore Allerta","Verde Onda Di Calore Allerta"]}}}},"ES":{"METEOALARM":{"event":{"es-ES":{"Heat":["Aviso de temperaturas máximas de nivel verde","Aviso de temperaturas máximas de nivel amarillo","Aviso de temperaturas máximas de nivel naranja"],"Fog":["Aviso de nieblas de nivel verde","Aviso de nieblas de nivel amarillo"],"Marine and Coastal":["Aviso de costeros de nivel verde","Aviso de galernas de nivel verde","Aviso de rissagas de nivel verde","Aviso de costeros de nivel amarillo","Aviso de costeros de nivel naranja","Aviso de rissagas de nivel amarillo","Aviso de galernas de nivel amarillo","Aviso de rissagas de nivel naranja"],"Low Temperature":["Aviso de temperaturas mínimas de nivel verde","Aviso de temperaturas mínimas de nivel amarillo"],"Snow":["Aviso de nevadas de nivel verde","Aviso de nevadas de nivel amarillo","Aviso de nevadas de nivel naranja"],"Avalanche":["Aviso de aludes de nivel verde"],"Thunderstorm":["Aviso de tormentas de nivel verde","Aviso de tormentas de nivel amarillo","Aviso de tormentas de nivel naranja"],"Wind":["Aviso de vientos de nivel verde","Aviso de vientos de nivel amarillo","Aviso de vientos de nivel naranja"],"Rain":["Aviso de lluvias de nivel verde","Aviso de lluvias de nivel amarillo","Aviso de lluvias de nivel naranja"]},"en-GB":{"Heat":["Minor high-temperature warning","Moderate high-temperature warning","Severe high-temperature warning"],"Fog":["Minor fog warning","Moderate fog warning"],"Marine and Coastal":["Minor coastalevent warning","Minor galerna warning","Minor rissagas warning","Moderate coastalevent warning","Severe coastalevent warning","Moderate rissagas warning","Moderate galerna warning","Severe rissagas warning"],"Low Temperature":["Minor low-temperature warning","Moderate low-temperature warning","Minor low-temperature warning warning"],"Snow":["Minor snow warning","Moderate snow warning","Severe snow warning"],"Avalanche":["Minor avalanches warning"],"Thunderstorm":["Minor thunderstorm warning","Moderate thunderstorm warning","Severe thunderstorm warning"],"Wind":["Minor wind warning","Moderate wind warning","Severe wind warning"],"Rain":["Minor rain warning","Moderate rain warning","Severe rain warning"]}}}},"SE":{"METEOALARM":{"event":{"sv-SE":{"Flood":["High water discharge"]},"en-GB":{"Flood":["High water discharge"]}}}},"CA":{"ENVCA":{"event":{"en-CA":{"Wind":["arctic outflow","squall","wind","gale wind","storm force wind","strong wind","wind chill"],"Winter Storm":["blizzard","winter storm"],"Snow":["blowing snow","snowfall","snow squall"],"Dust":["dust storm"],"Low Temperature":["extreme cold","flash freeze","ice","ice pressure","special ice","iceberg","cold wave","frost"],"Fog":["fog"],"Rain":["freezing drizzle","freezing rain","rainfall"],"Heat":["heat","heat wave","high heat and humidity"],"Tropical Storm, Hurricane, and Typhoon":["hurricane","storm surge","tropical storm","hurricane force wind","storm"],"Thunderstorm":["severe thunderstorm","thunderstorm"],"Tornado":["tornado","waterpout"],"Tsunami":["tsunami"],"Weather Conditions":["weather"],"Flood":["flood","overland flow flood"],"Marine and Coastal":["high water level","rapid closing of coastal leads","marine","freezing spray","special marine"],"Air Quality":["air quality"]},"fr-CA":{"Wind":["poussée d'air arctique","vent","coup de vent","grain","grains","vent de tempête","vent fort","refroidissement éolien"],"Winter Storm":["blizzard","tempête hivernale"],"Snow":["poudrerie","chute de neige","bourrasque de neige"],"Dust":["tempête de poussière"],"Low Temperature":["gel soudain","glaces","pression des glaces","conditions particulières des glaces","iceberg","vague de froid","gel"],"Rain":["bruine verglaçante","pluie verglaçante","pluie"],"Tropical Storm, Hurricane, and Typhoon":["ouragan","onde de tempête","tempête tropicale","vent de la force d'un ouragan","tempête"],"Tornado":["tornade","trombe marine"],"Tsunami":["tsunami"],"Weather Conditions":["météo"],"Flood":["inondation","inondation par ruissellement"],"Marine and Coastal":["niveau élevé des eaux","fermeture rapide de chenaux côtiers","maritime","embruns verglaçants","incident maritime particulier"],"Thunderstorm":["orage","orages"],"Heat":["vague de chaleur","chaleur et humidité accablantes"],"Air Quality":["qualité de l'air"]}}}},"ID":{"BMKG":{"event":{"en-US":{"Rain":["Waspada Hujan Lebat - Minor","Waspada Hujan Lebat - Moderate","Waspada Hujan Lebat - Severe","Waspada Hujan Lebat - Extreme"]},"id-ID":{"Rain":["Waspada Hujan Lebat - Minor","Waspada Hujan Lebat - Moderate","Waspada Hujan Lebat - Severe","Waspada Hujan Lebat - Extreme"]}}}}}}},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Values":{"properties":{"valueName":{"type":"string","title":"Valuename","description":"Value name"},"value":{"type":"string","title":"Value","description":"Actual value"}},"type":"object","required":["valueName","value"],"title":"Values"}},"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 Agency Bulletin API, you need to use the following audience: https://weather.api.dtn.com\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":"Endpoints","description":"The the Agency Bulletin API (ABA) is designed around two major endpoints, each offering unique functionalities tailored to your diverse weather bulletin data needs. Whether you require forecast and historical data for a single location, data for multiple location/timestamp pairs, or the associated metadata, our API has got you covered."}],"servers":[{"url":"https://wxbulletin.api.dtn.com"}]}