openapi: 3.0.0 info: contact: email: support@meteomatics.com name: Meteomatics API Support url: 'http://api.meteomatics.com' description: > **The awesome API in the Weather World** title: Meteomatics Weather API version: 1.0.0 servers: - url: https://api.meteomatics.com - url: http://api.meteomatics.com # - url: / # description: > # Local dev only: reverse-proxied through the `gateway` service in docker-compose.yml # (docker-compose --profile local up). Select this from the server dropdown above when # running swagger-ui and the api on the same machine to avoid CORS. paths: /{validdatetime}/{parameters}/{location}/{format}/: get: summary: Get data for one or more coordinates. parameters: - name: validdatetime in: path required: true $ref: '#/components/parameters/timeParam' - name: parameters in: path required: true $ref: '#/components/parameters/parameters_in_path' - name: location in: path required: true schema: oneOf: - $ref: '#/components/parameters/latslons_in_path' - $ref: '#/components/parameters/lines_in_path' description: > You must provide either `latslons_in_path` or `lines_in_path`, but not both. - name: format in: path required: true $ref: '#/components/parameters/formatParam' - name: source $ref: '#/components/parameters/source_in_query' - name: calibrated $ref: '#/components/parameters/calibration_in_query' - name: mask $ref: '#/components/parameters/mask_in_query' - name: ens_select $ref: '#/components/parameters/ensSelect' - name: cluster_select $ref: '#/components/parameters/clusterSelect' - name: timeout $ref: '#/components/parameters/timeout' - name: temporal_interpolation $ref: '#/components/parameters/temporalInterpol' - name: on_invalid $ref: '#/components/parameters/behavior_on_invalid' responses: '200': description: Ok content: text/plain; charset=utf-8: schema: $ref: '#/components/schemas/CsvOkRequest' text/html: schema: $ref: '#/components/schemas/CsvOkRequest' text/csv: schema: $ref: '#/components/schemas/CsvOkRequest' application/json: schema: $ref: '#/components/schemas/BasicJSONRequest' application/xml: schema: $ref: '#/components/schemas/BasicXMLRequest' '400': description: Bad request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /{validdatetime}/{parameters}/{boundingbox}:{gridOption}/{format}/: get: summary: Get data for an area. parameters: - name: validdatetime in: path required: true $ref: '#/components/parameters/timeParam' - name: parameters in: path required: true $ref: '#/components/parameters/parameters_in_path' - name: boundingbox in: path required: true $ref: '#/components/parameters/bounding_box_in_path' - name: gridOption in: path required: true schema: oneOf: - $ref: '#/components/parameters/resolutionLatLon_in_path' - $ref: '#/components/parameters/pointsLatLon_in_path' - name: format in: path required: true $ref: '#/components/parameters/formatParam' - name: source $ref: '#/components/parameters/source_in_query' - name: calibrated $ref: '#/components/parameters/calibration_in_query' - name: mask $ref: '#/components/parameters/mask_in_query' - name: ens_select $ref: '#/components/parameters/ensSelect' - name: cluster_select $ref: '#/components/parameters/clusterSelect' - name: timeout $ref: '#/components/parameters/timeout' - name: temporal_interpolation $ref: '#/components/parameters/temporalInterpol' - name: on_invalid $ref: '#/components/parameters/behavior_on_invalid' responses: '200': description: Ok content: text/plain; charset=utf-8: schema: $ref: '#/components/schemas/CsvOkRequest' text/html: schema: $ref: '#/components/schemas/CsvOkRequest' text/csv: schema: $ref: '#/components/schemas/CsvOkRequest' application/json: schema: $ref: '#/components/schemas/BasicJSONRequest' application/xml: schema: $ref: '#/components/schemas/BasicXMLRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /{validdatetime}/{parameters}/{polygons}/{format}/: get: summary: Get aggregated data for one or more polygons. parameters: - name: validdatetime in: path required: true $ref: '#/components/parameters/timeParam' - name: parameters in: path required: true $ref: '#/components/parameters/parameters_in_path' - name: polygons in: path required: true $ref: '#/components/parameters/polygons_in_path' - name: format in: path required: true $ref: '#/components/parameters/formatParam' - name: source $ref: '#/components/parameters/source_in_query' - name: calibrated $ref: '#/components/parameters/calibration_in_query' - name: mask $ref: '#/components/parameters/mask_in_query' - name: ens_select $ref: '#/components/parameters/ensSelect' - name: cluster_select $ref: '#/components/parameters/clusterSelect' - name: timeout $ref: '#/components/parameters/timeout' - name: temporal_interpolation $ref: '#/components/parameters/temporalInterpol' - name: optionals $ref: '#/components/parameters/polygons_optionals' - name: on_invalid $ref: '#/components/parameters/behavior_on_invalid' responses: '200': description: Ok content: text/csv: schema: $ref: '#/components/schemas/CsvOkRequest' application/json: schema: $ref: '#/components/schemas/BasicJSONRequest' application/xml: schema: $ref: '#/components/schemas/BasicXMLRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /{validdatetime}/{parameters}/{zip_code}/{format}/: get: summary: Get data for one or more zip codes. parameters: - name: validdatetime in: path required: true $ref: '#/components/parameters/timeParam' - name: parameters in: path required: true $ref: '#/components/parameters/parameters_in_path' - name: zip_code in: path required: true $ref: '#/components/parameters/paramZipCodes' - name: format in: path required: true $ref: '#/components/parameters/formatParam' - name: source $ref: '#/components/parameters/source_in_query' - name: calibrated $ref: '#/components/parameters/calibration_in_query' - name: mask $ref: '#/components/parameters/mask_in_query' - name: ens_select $ref: '#/components/parameters/ensSelect' - name: cluster_select $ref: '#/components/parameters/clusterSelect' - name: timeout $ref: '#/components/parameters/timeout' - name: temporal_interpolation $ref: '#/components/parameters/temporalInterpol' - name: route $ref: '#/components/parameters/route_optional' - name: on_invalid $ref: '#/components/parameters/behavior_on_invalid' responses: '200': description: Ok content: text/plain; charset=utf-8: schema: $ref: '#/components/schemas/CsvOkRequest' text/html: schema: $ref: '#/components/schemas/CsvOkRequest' text/csv: schema: $ref: '#/components/schemas/CsvOkRequest' application/json: schema: $ref: '#/components/schemas/BasicJSONRequest' application/xml: schema: $ref: '#/components/schemas/BasicXMLRequest' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /{validdatetime}/{parameters}/didok_{dst_id}/{format}/: get: summary: Get data for one or more didok service station by ID or abbreviation. parameters: - name: validdatetime $ref: '#/components/parameters/timeParam' - name: parameters $ref: '#/components/parameters/parameters_in_path' - name: didok_{dst_id} $ref: '#/components/parameters/paramDstNr' - name: format $ref: '#/components/parameters/formatParam' - name: source $ref: '#/components/parameters/source_in_query' - name: calibrated $ref: '#/components/parameters/calibration_in_query' - name: mask $ref: '#/components/parameters/mask_in_query' - name: ens_select $ref: '#/components/parameters/ensSelect' - name: cluster_select $ref: '#/components/parameters/clusterSelect' - name: timeout $ref: '#/components/parameters/timeout' - name: temporal_interpolation $ref: '#/components/parameters/temporalInterpol' - name: route $ref: '#/components/parameters/route_optional' - name: on_invalid $ref: '#/components/parameters/behavior_on_invalid' responses: '200': description: Ok content: text/plain; charset=utf-8: schema: $ref: '#/components/schemas/CsvOkRequest' text/html: schema: $ref: '#/components/schemas/CsvOkRequest' text/csv: schema: $ref: '#/components/schemas/CsvOkRequest' application/json: schema: $ref: '#/components/schemas/BasicJSONRequest' application/xml: schema: $ref: '#/components/schemas/BasicXMLRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /{validdatetime}: post: summary: Get data by POST request (useful especially for large point lists). parameters: - name: validdatetime $ref: '#/components/parameters/timeParam' requestBody: description: > **Request Body** - **Parameters** are given as a list of strings. - **Locations** can be given as `"lat,lon"` strings, zip codes, `didok IDs` or `didok abbreviations` (or a mix of these). - **Format** is one of the generally accepted format strings. - Other optional parameters are available as they would be for GET requests. required: true content: application/xml: schema: type: object required: - parameters - location - format properties: parameters: $ref: '#/components/parameters/parameters_in_path' location: oneOf: - $ref: '#/components/parameters/latslons_in_path' - $ref: '#/components/parameters/lines_in_path' description: > You must provide either `latslons_in_path` or `lines_in_path`, but not both. format: $ref: '#/components/parameters/formatParam' source: $ref: '#/components/parameters/source_in_query' calibrated: $ref: '#/components/parameters/calibration_in_query' mask: $ref: '#/components/parameters/mask_in_query' ens_select: $ref: '#/components/parameters/ensSelect' cluster_select: $ref: '#/components/parameters/clusterSelect' temporal_interpolation: $ref: '#/components/parameters/temporalInterpol' timeout: $ref: '#/components/parameters/timeout' on_invalid: $ref: '#/components/parameters/behavior_on_invalid' responses: '200': description: Ok content: text/plain; charset=utf-8: schema: $ref: '#/components/schemas/CsvOkRequest' text/html: schema: $ref: '#/components/schemas/CsvOkRequest' text/csv: schema: $ref: '#/components/schemas/CsvOkRequest' application/json: schema: $ref: '#/components/schemas/BasicJSONRequest' application/xml: schema: $ref: '#/components/schemas/BasicXMLRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /get_init_date/{model}/{validdate}/{parameter_list}: get: summary: Find out when the data was computed. parameters: - name: model in: path required: true schema: $ref: '#/components/schemas/AllAvailableModels' - name: validdate in: path required: true schema: $ref: '#/components/parameters/valid_date_in_query' - name: parameter_list in: path required: true schema: $ref: '#/components/parameters/parameters_in_query' responses: '200': description: Ok content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/CsvOkRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /get_time_range: get: summary: Find out the available valid dates for one or more parameters within the API. parameters: - name: source schema: $ref: '#/components/parameters/source_in_path' in: query required: true - name: parameters schema: $ref: '#/components/parameters/parameters_in_query' in: query required: true responses: '200': description: Ok content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/CsvOkRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /get_lightning_list: get: summary: Find all lightning flashes between the start and end date within the given bounding box. parameters: - name: time_range schema: $ref: '#/components/parameters/time_range_in_query' in: query required: true - name: bounding_box schema: $ref: '#/components/schemas/UnderscoreBoundingBox' in: query required: true - name: format schema: $ref: '#/components/parameters/format_in_get_lightning_list' in: query required: true responses: '200': description: Ok content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/LightningCSVResponse' application/json: schema: $ref: '#/components/schemas/LightningJSONResponse' application/xml: schema: $ref: '#/components/schemas/LightningJSONResponse' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /get_colormap/{parameter}/{style}/{format}: get: summary: Get a colormap for a given parameter and a style. parameters: - name: parameter schema: $ref: '#/components/parameters/parameters_in_query' in: path required: true - name: style schema: $ref: '#/components/parameters/styles_in_query' in: path required: true - name: format schema: $ref: '#/components/parameters/format_in_get_colormap' in: path required: true responses: '200': description: Ok content: text/csv: schema: $ref: '#/components/schemas/CsvOkRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /find_station: get: summary: Get a list of available weather stations matching one or more conditions. parameters: - name: location $ref: '#/components/parameters/location_in_query' - name: elevation $ref: '#/components/parameters/elevation_in_query' - name: parameters $ref: '#/components/parameters/parameters_in_query' - name: startdate $ref: '#/components/parameters/startdate_in_query' - name: enddate $ref: '#/components/parameters/enddate_in_query' responses: '200': description: Ok content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/CsvOkRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /get_isolines: get: summary: Get isolines for different parameters within a selected area. description: > In case all values within a selected area (bounding box) are larger or equal than a given isovalue, no isoline will be returned! parameters: - $ref: '#/components/parameters/parameter_in_iso_queries' - name: bbox schema: $ref: '#/components/schemas/CommaBoundingBox' in: query required: true - $ref: '#/components/parameters/datetime_in_query' - $ref: '#/components/parameters/isoline_range_in_query' - $ref: '#/components/parameters/isoline_values_in_query' - $ref: '#/components/parameters/resolution_in_query' - $ref: '#/components/parameters/source_in_query' - $ref: '#/components/parameters/radius_median_filter_in_query' - $ref: '#/components/parameters/radius_gaussian_filter_in_query' - $ref: '#/components/parameters/isoline_min_points_in_query' responses: '200': description: Ok content: application/geo+json: schema: $ref: './components/geojson-schemas.yaml#/components/schemas/IsolinesCollection' '400': description: Bad Request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' '500': description: Internal Server Error content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/InternalServerError' security: - BasicAuth: [ ] /get_isobands: get: summary: Get isobands for different parameters within the selected area. description: > In case all values within the selected area (bounding box) are larger or equal than a given isovalue, a polygon representing the bounding box will be returned! Hence, even if the `/get_isolines` response for identical parameters does **NOT** return any isolines, `/get_isobands` might return a polygon. The response format follows the GeoJSON [RFC 7946](https://datatracker.ietf.org/doc/html/rfc7946). This means, that the order of coordinate points is counter-clockwise for isobands and in case of holes within an isoband, points are ordered clockwise. For each isovalue, the response contains a feature. In case no isobands exist for the isovalue, the geometry is set to `null`. parameters: - $ref: '#/components/parameters/parameter_in_iso_queries' - name: bbox schema: $ref: '#/components/schemas/CommaBoundingBox' in: query required: true - $ref: '#/components/parameters/datetime_in_query' - $ref: '#/components/parameters/isoline_range_in_query' - $ref: '#/components/parameters/isoline_values_in_query' - $ref: '#/components/parameters/isoband_intervals_in_query' - $ref: '#/components/parameters/isoband_aggregations_in_query' - $ref: '#/components/parameters/resolution_in_query' - $ref: '#/components/parameters/source_in_query' - $ref: '#/components/parameters/radius_median_filter_in_query' - $ref: '#/components/parameters/radius_gaussian_filter_in_query' - $ref: '#/components/parameters/isoline_min_points_in_query' responses: '200': description: Ok content: application/geo+json: schema: $ref: './components/geojson-schemas.yaml#/components/schemas/IsobandsCollection' examples: non-aggregation: summary: Example response without aggregations value: version: "3.0" user: api-user dateGenerated: "2025-08-15T10:33:49Z" status: OK type: FeatureCollection features: - type: Feature geometry: null properties: isovalue: 40.0 lower_isovalue: 40.0 upper_isovalue: 60.0 - type: Feature geometry: type: MultiPolygon coordinates: - - [ [ -10, -10 ], [ -10, 10 ], [ 10, 10 ], [ 10, -10 ], [ -10, -10 ] ] - [ [ -8, -8 ], [ -8, -4 ], [ 8, -4 ], [ 8, -8 ], [ -8, -8 ] ] - [ [ 0, 0 ], [ 0, 8 ], [ 8, 8 ], [ 8, 0 ], [ 0, 0 ] ] properties: isovalue: 24.0 lower_isovalue: 40.0 upper_isovalue: 60.0 aggregation: summary: Example response with aggregations value: version: "3.0" user: api-user dateGenerated: "2025-08-15T10:33:49Z" status: OK type: FeatureCollection features: - type: Feature geometry: null properties: lower_isovalue: 0.0 upper_isovalue: 2.0 aggregations: "max:t_2m:C": -999 "quantile0.5:wind_speed_10m:ms": -999 - type: Feature geometry: type: Polygon coordinates: - [ [ 8.5, 47.3 ], [ 8.7, 47.3 ], [ 8.7, 47.5 ], [ 8.5, 47.5 ], [ 8.5, 47.3 ] ] properties: lower_isovalue: 0.0 upper_isovalue: 2.0 aggregations: "max:t_2m:C": 4.0 "quantile0.5:wind_speed_10m:ms": 3.5 '400': description: Bad Request content: text/plain; charset=UTF-8: schema: type: string example: "Invalid values in isoline range. Expected: 'start,stop,stepsize', e.g. 'isoline_range=0.0,10.0,2.0" '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: type: string example: 'Parameter t_800 not available at time 2030-02-02T00:00:00Z. Available between 2013-12-30T00:00:00Z and 2026-02-11T00:00:00Z (possibly without interval borders).' '500': description: Internal Server Error content: text/plain; charset=UTF-8: schema: type: string example: 'An internal error occurred, please contact support@meteomatics.com if this error persists.' security: - BasicAuth: [ ] /get_highs_lows: get: summary: Get minima and maxima of mean sea level pressure within the bounding box. parameters: - $ref: '#/components/parameters/parameter_in_iso_queries' - name: bbox schema: $ref: '#/components/schemas/CommaBoundingBox' in: query required: true - $ref: '#/components/parameters/datetime_in_query' - $ref: '#/components/parameters/isoline_range_in_query' - $ref: '#/components/parameters/isoline_values_in_query' - $ref: '#/components/parameters/resolution_in_query' - $ref: '#/components/parameters/source_in_query' - $ref: '#/components/parameters/radius_median_filter_in_query' - $ref: '#/components/parameters/radius_gaussian_filter_in_query' responses: '200': description: Ok content: application/geo+json: schema: $ref: './components/geojson-schemas.yaml#/components/schemas/HighsLowsCollection' '400': description: Bad Request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' '500': description: Internal Server Error content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/InternalServerError' security: - BasicAuth: [ ] /get_weather_fronts: get: summary: Get automatically identified weather fronts at given time and within the bounding box, including cold fronts, warm fronts, stationary fronts and upper-level fronts, along with direction. parameters: - name: datetime schema: $ref: '#/components/parameters/datetime_in_query' in: query required: true - name: bbox schema: $ref: '#/components/schemas/CommaBoundingBox' in: query required: true - name: source schema: $ref: '#/components/parameters/source_in_path' in: query required: false responses: '200': description: Ok content: application/geo+json: schema: $ref: './components/geojson-schemas.yaml#/components/schemas/WeatherFrontsCollection' '400': description: Bad Request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' '500': description: Internal Server Error content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/InternalServerError' security: - BasicAuth: [ ] /get_jet_streams: get: summary: Get jet streams for a given datetime and bounding box. parameters: - name: datetime schema: $ref: '#/components/parameters/datetime_in_query' in: query required: true - name: bbox schema: $ref: '#/components/schemas/CommaBoundingBox' in: query required: true responses: '200': description: Ok content: application/geo+json: schema: $ref: './components/geojson-schemas.yaml#/components/schemas/JetStreamCollection' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /get_flood_alerts: get: summary: Get flood alerts parameters: - name: datetime schema: $ref: '#/components/parameters/datetime_in_query' description: If unspecified, current time and date is assumed in: query required: false - name: bbox schema: $ref: '#/components/schemas/CommaBoundingBox' description: The order of coordinates is min lon, min lat, max lon, max lat. If unspecified, whole world is queried in: query required: false - name: source schema: type: string description: If unspecified, all sources are queried in: query required: false - name: with_area_geometry schema: type: boolean default: false description: Is flood area geometry included in the query, or not. in: query required: false responses: '200': description: Ok content: application/json; charset=UTF-8: schema: $ref: '#/components/schemas/FloodAlertsOkResponse' security: - BasicAuth: [ ] /get_earthquakes: get: summary: Get recent earthquakes description: > Returns earthquakes in GeoJSON format. If no query parameters are specified, the default is the last 24 hours worldwide. parameters: - in: query name: time_range schema: type: string example: "2025-08-26T00:00:00ZP1D" description: > ISO8601 time range. If unspecified, the last 24 hours are used. - in: query name: bbox schema: type: string example: "-10.0,49.0,2.0,61.0" description: > Bounding box filter in the order: `min_lon,min_lat,max_lon,max_lat`. If unspecified, the entire world is queried. responses: "200": description: A GeoJSON FeatureCollection of earthquakes content: application/geo+json: schema: type: object required: - type - features properties: type: type: string example: FeatureCollection features: type: array items: type: object required: - type - geometry - properties properties: type: type: string example: Feature geometry: type: object required: - type - coordinates properties: type: type: string example: Point coordinates: type: array items: type: number minItems: 2 description: [ longitude, latitude ] properties: type: object required: - depth_km - magnitude_type - magnitude - issue_time - source properties: depth_km: type: string example: "10" magnitude_type: type: string example: "mwr" magnitude: type: string example: "4.3" issue_time: type: string format: date-time example: "2025-08-27 02:46:20.605+00" source: type: string example: "usgs: us" examples: sample: summary: Example response value: type: FeatureCollection features: - type: Feature geometry: type: Point coordinates: [ 28.2462, 39.1504 ] properties: depth_km: "10" magnitude_type: "mwr" magnitude: "4.3" issue_time: "2025-08-27 02:46:20.605+00" source: "usgs: us" - type: Feature geometry: type: Point coordinates: [ -4.408, 52.942 ] properties: depth_km: "8" magnitude_type: "ml" magnitude: "1.6" issue_time: "2025-08-26 21:24:34+00" source: "bgs" "400": description: Invalid request (bad time range or bbox) "500": description: Internal server error security: - BasicAuth: [ ] /bulletins/{datetime}/{bulletin_type}/{location}/{format}: get: summary: Get the current snapshot of bulletins at a single point in time. description: > Returns the latest known advisory as of the given point in time, as a GeoJSON `FeatureCollection`. For each WMO document identifier (e.g. `WTPN33`, which corresponds to one storm), the most recent advisory issued at or before `datetime` is selected, provided it is still valid at that time (its `valid_to` is not before `datetime`). Advisories without a `valid_to` are not returned. Each feature represents one section (e.g. the current center fix, a forecast track point, or a wind-speed-probability envelope) of a selected advisory, merged with that advisory's own fields (issuer, validity period, raw text, ...). The `location` filter is applied to the advisory as a whole: an advisory is included if its overall bounding box intersects `location`, and then all of its sections are returned, including those whose geometry lies outside `location`. Use `/bulletins-history` instead to retrieve every advisory received within a time range, rather than only the most recent state at one instant. Query parameters (`optionals`) are not yet available; passing any will return HTTP 501. parameters: - name: datetime in: path required: true description: > A single point in time, as an ISO-8601 UTC datetime (or a supported time shortcut, e.g. `now`). Must resolve to a single timestamp, not a range — use `/bulletins-history` for a time range. schema: type: string example: "2026-08-24T09:00:00Z" - name: bulletin_type in: path required: true description: > Type of bulletin to retrieve. Currently only `tropical_cyclone` is available. schema: type: string enum: - tropical_cyclone example: "tropical_cyclone" - name: location in: path required: true description: > Spatial scope of the query: either a named shortcut (e.g. `global`, `switzerland`) or an explicit bounding box in the form `,_,`. schema: type: string example: "global" - name: format in: path required: true description: > Response format. Currently only `geojson` is supported. schema: type: string enum: - geojson example: "geojson" - name: optionals in: query required: false description: > Additional filter and display options. **Not yet available** — passing any value returns HTTP 501. schema: type: string responses: "200": description: A GeoJSON FeatureCollection with the latest valid advisory per WMO document identifier. content: application/geo+json: schema: $ref: '#/components/schemas/BulletinsGeoJsonResponse' examples: sample: summary: Current center fix of one tropical cyclone advisory (ATSANI, 24 Aug 2026) value: version: "3.0" user: "api-user" dateGenerated: "2026-08-28T13:09:16Z" status: "OK" type: "FeatureCollection" product: "tropical_cyclone" features: - type: "Feature" properties: issuer: "PGTW" issued_at: "2026-08-24T09:00:00Z" wmo_document_identifier: "WTPN33" valid_from: "2026-08-24T06:00:00Z" valid_to: "2026-08-25T18:00:00Z" raw_message: "WTPN33 PGTW 240900\nMSGID/GENADMIN/JOINT TYPHOON WRNCEN PEARL HARBOR HI//\nSUBJ/TROPICAL DEPRESSION 19W (ATSANI) WARNING NR 008//\n..." inserted_at: "2026-08-24T07:45:05Z" basin: "WP" storm_id: "19W" storm_name: "ATSANI" advisory_number: 8 unique_id: "ATSANI_PGTW_WTPN33_20260824T090000Z_center_20260824T090000Z" kind: "center" time: "2026-08-24T09:00:00Z" wind_speed: value: 30 unit: "knots" wind_gust: value: 40 unit: "knots" report_type: "observation" geometry: type: "Point" coordinates: [ 137.4, 14.2 ] "400": description: > Bad request (e.g. malformed datetime, a time range given instead of a single timestamp, unsupported bulletin_type, invalid location/bounding box, or format) content: text/plain; charset=UTF-8: schema: type: string example: " must be a single timestamp for /bulletins (use /bulletins-history for a time range)" "401": description: Unauthorized content: text/plain; charset=UTF-8: schema: type: string example: "Username/Password Authentication Failed." "403": description: Forbidden (the authenticated user does not have access to this data) content: text/plain; charset=UTF-8: schema: type: string "500": description: Internal server error content: text/plain; charset=UTF-8: schema: type: string example: "Internal server error. If this issue persists, please contact support@meteomatics.com" "501": description: Not implemented (returned when query parameters / optionals are supplied) content: text/plain; charset=UTF-8: schema: type: string example: " are currently not available" security: - BasicAuth: [] /bulletins-history/{time_range}/{bulletin_type}/{location}/{format}: get: summary: Get bulletins over a time range. description: > Returns every advisory bulletin of the specified type that was ingested (`inserted_at`) within the given time range, as a GeoJSON `FeatureCollection`. Note that the time range is matched against the ingestion time, not against the advisory's `issued_at` or validity period (`valid_from`/`valid_to`). Each feature represents one section (e.g. the center fix, a forecast track point, or a wind-speed-probability envelope) of one advisory bulletin, merged with that bulletin's own fields (issuer, validity period, raw text, ...). A geometry is attached per feature when the underlying section has one (e.g. a `Point` for a center fix); it is `null` for sections that carry no spatial extent. The `location` filter is applied to the advisory as a whole: an advisory is included if its overall bounding box intersects `location`, and then all of its sections are returned, including those whose geometry lies outside `location`. Use `/bulletins` instead to retrieve only the latest known advisory at a single point in time. Query parameters (`optionals`) are not yet available; passing any will return HTTP 501. parameters: - name: time_range in: path required: true description: > Time range in the form `--`, both as ISO-8601 UTC datetimes (or supported time shortcuts, e.g. `now`). `start_timestamp` must not be later than `end_timestamp`. Matched against the ingestion time (`inserted_at`) of the advisories. schema: type: string example: "2026-08-25T00:00:00Z--2026-08-26T00:00:00Z" - name: bulletin_type in: path required: true description: > Type of bulletin to retrieve. Currently only `tropical_cyclone` is available. schema: type: string enum: - tropical_cyclone example: "tropical_cyclone" - name: location in: path required: true description: > Spatial scope of the query: either a named shortcut (e.g. `global`, `switzerland`) or an explicit bounding box in the form `,_,`. schema: type: string example: "global" - name: format in: path required: true description: > Response format. Currently only `geojson` is supported. schema: type: string enum: - geojson example: "geojson" - name: optionals in: query required: false description: > Additional filter and display options. **Not yet available** — passing any value returns HTTP 501. schema: type: string responses: "200": description: A GeoJSON FeatureCollection of tropical cyclone advisory bulletins. content: application/geo+json: schema: $ref: '#/components/schemas/BulletinsGeoJsonResponse' examples: sample: summary: Two tropical cyclone advisories (ATSANI and NARRA, 24 Aug 2026) value: version: "3.0" user: "api-user" dateGenerated: "2026-08-28T13:09:16Z" status: "OK" type: "FeatureCollection" product: "tropical_cyclone" features: - type: "Feature" properties: issuer: "PGTW" issued_at: "2026-08-24T09:00:00Z" wmo_document_identifier: "WTPN33" valid_from: "2026-08-24T06:00:00Z" valid_to: "2026-08-25T18:00:00Z" raw_message: "WTPN33 PGTW 240900\nMSGID/GENADMIN/JOINT TYPHOON WRNCEN PEARL HARBOR HI//\nSUBJ/TROPICAL DEPRESSION 19W (ATSANI) WARNING NR 008//\n..." inserted_at: "2026-08-24T07:45:05Z" basin: "WP" storm_id: "19W" storm_name: "ATSANI" advisory_number: 8 unique_id: "ATSANI_PGTW_WTPN33_20260824T090000Z_center_20260824T090000Z" kind: "center" time: "2026-08-24T09:00:00Z" wind_speed: value: 30 unit: "knots" wind_gust: value: 40 unit: "knots" report_type: "observation" geometry: type: "Point" coordinates: [ 137.4, 14.2 ] - type: "Feature" properties: issuer: "PGTW" issued_at: "2026-08-24T09:00:00Z" wmo_document_identifier: "WTPN32" valid_from: "2026-08-24T06:00:00Z" valid_to: "2026-08-26T18:00:00Z" raw_message: "WTPN32 PGTW 240900\nMSGID/GENADMIN/JOINT TYPHOON WRNCEN PEARL HARBOR HI//\nSUBJ/TROPICAL STORM 18W (NARRA) WARNING NR 015//\n..." inserted_at: "2026-08-24T07:50:05Z" basin: "WP" storm_id: "18W" storm_name: "NARRA" advisory_number: 15 unique_id: "NARRA_PGTW_WTPN32_20260824T090000Z_dissipated_20260824T090000Z" kind: "dissipated" time: "2026-08-24T09:00:00Z" classification: value: "DISSIPATED" unit: "string" geometry: null "400": description: > Bad request (e.g. malformed time range, end before start, unsupported bulletin_type, invalid location/bounding box, or format) content: text/plain; charset=UTF-8: schema: type: string example: " must not be greater than " "401": description: Unauthorized content: text/plain; charset=UTF-8: schema: type: string example: "Username/Password Authentication Failed." "403": description: Forbidden (the authenticated user does not have access to this data) content: text/plain; charset=UTF-8: schema: type: string "500": description: Internal server error content: text/plain; charset=UTF-8: schema: type: string example: "Internal server error. If this issue persists, please contact support@meteomatics.com" "501": description: Not implemented (returned when query parameters / optionals are supplied) content: text/plain; charset=UTF-8: schema: type: string example: " are currently not available" security: - BasicAuth: [] /user_stats: get: summary: Get your current usage and limits. parameters: [ ] responses: '200': description: Ok content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/CsvOkRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' security: - BasicAuth: [ ] /user_stats_json: get: summary: Get your current usage and limits in json format. parameters: [ ] responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/CsvOkRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' security: - BasicAuth: [ ] /wms: get: summary: Perform WMS operations based on the request type. parameters: - name: SERVICE in: query required: true schema: type: string enum: [ 'WMS' ] description: Specifies the service type. Must be WMS. - name: VERSION in: query required: true schema: type: string enum: [ '1.3.0' ] description: Specifies the WMS version. Must be 1.3.0. - name: REQUEST in: query required: true schema: type: string enum: [ 'GetCapabilities', 'GetMap', 'GetLegendGraphic', 'GetFeatureInfo' ] description: Specifies the WMS operation to perform. # Parameters for GetCapabilities - name: FORMAT in: query required: false schema: type: string enum: [ 'application/xml' ] description: Used only for GetCapabilities request. Specifies the format of the response. # Parameters for GetMap - name: LAYERS in: query required: false schema: type: string description: Used for GetMap and GetLegendGraphic requests. Specifies the layer(s) for the request. - name: CRS in: query required: false schema: type: string description: Used for GetMap requests. Specifies the coordinate reference system. - name: BBOX in: query required: false schema: type: string pattern: '^-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?$' description: Used for GetMap and GetFeatureInfo requests. Specifies the bounding box of the requested area. - name: WIDTH in: query required: false schema: type: integer description: Used for GetMap requests. Specifies the width of the requested map image. - name: HEIGHT in: query required: false schema: type: integer description: Used for GetMap requests. Specifies the height of the requested map image. # Parameters for GetFeatureInfo - name: I in: query required: false schema: type: integer description: Used for GetFeatureInfo requests. Specifies the x-coordinate of the pixel. - name: J in: query required: false schema: type: integer description: Used for GetFeatureInfo requests. Specifies the y-coordinate of the pixel. # Parameters for GetLegendGraphic - name: STYLES in: query required: false schema: type: string description: Used for GetLegendGraphic requests. Specifies the style(s) for the legend graphic. - name: TRANSPARENT in: query required: false schema: type: string enum: [ 'true', 'false' ] description: Used for GetLegendGraphic requests. Specifies whether the legend background should be transparent. responses: '200': description: Successful response based on the WMS operation. content: application/xml: schema: $ref: '#/components/schemas/CsvOkRequest' image/png: schema: $ref: '#/components/schemas/CsvOkRequest' image/svg+xml: schema: $ref: '#/components/schemas/CsvOkRequest' text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/CsvOkRequest' '400': description: Bad Request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' security: - BasicAuth: [ ] /wfs: get: summary: Perform WFS operations based on the request type. parameters: - name: SERVICE in: query required: true schema: type: string enum: [ 'WFS' ] description: Specifies the service type. Must be WFS. - name: VERSION in: query required: true schema: type: string enum: [ '1.0.0' ] description: Specifies the WFS version. Must be 1.0.0. - name: REQUEST in: query required: true schema: type: string enum: [ 'DescribeFeatureType', 'GetFeature', 'GetCapabilities' ] description: Specifies the WFS operation to perform. # Parameters for DescribeFeatureType - name: TYPENAME in: query required: false schema: type: string enum: - 'stations_mix-obs' - 'stations_mm-mos' - 'lightnings' description: Used for DescribeFeatureType requests. Specify feature type of interest. # Parameters for GetFeature - name: BBOX in: query required: false schema: type: string pattern: '^-?[0-9]+(.?[0-9]+)?,-?[0-9]+(.?[0-9]+)?,-?[0-9]+(.?[0-9]+)?,-?[0-9]+(.?[0-9]+)?$' description: Used for GetFeature requests. Defines the area of the requested data. - name: MAXFEATURES in: query required: false schema: type: integer description: Used for GetFeature requests. Specifies the maximum amount of features in the response. - name: TIME in: query required: false schema: type: string description: Used for GetFeature requests. A single point in time (UTC) for the feature data. - name: PARAMETERS in: query required: false schema: type: array items: type: string description: Used for GetFeature requests. The parameters to query formatted as a comma-separated list. - name: level_of_detail in: query required: false schema: type: string description: Used for GetFeature requests. Specify if all station data or just capital cities should be fetched. responses: '200': description: Successful response based on the WFS operation. content: application/xml: schema: $ref: '#/components/schemas/CsvOkRequest' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' security: - BasicAuth: [ ] /mvt/isolines/{parameters}/style.json: get: summary: Request the data necessary to visualise isolines in your client. parameters: - name: parameter $ref: '#/components/parameters/parameters_in_path' - name: optional schema: $ref: '#/components/parameters/isoline_optionals' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/CsvOkRequest' '400': description: Bad request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /mvt/symbols/{parameter}/style.json: get: summary: Request the data necessary to visualise weather symbols in your client. parameters: - name: parameter $ref: '#/components/parameters/symbol_parameter_in_path' - name: optional $ref: '#/components/parameters/symbol_optionals' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/CsvOkRequest' '400': description: Bad request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /mvt/barbs/{parameter}/style.json: get: summary: Request the data necessary to visualise wind barbs in your client. parameters: - name: parameter $ref: '#/components/parameters/wind_barbs_parameter_in_path' - name: optional $ref: '#/components/parameters/wind_barbs_optionals' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/CsvOkRequest' '400': description: Bad request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /mvt/aviation_reports/taf:0/style.json: get: summary: Request the data necessary to visualise TAF report symbols in your client. parameters: - name: optional $ref: '#/components/parameters/taf_optionals' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/CsvOkRequest' '400': description: Bad request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /mvt/aviation_reports/metar:0/style.json: get: summary: Request the data necessary to visualise METAR report symbols in your client. parameters: - name: optional $ref: '#/components/parameters/date_token_optionals' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/CsvOkRequest' '400': description: Bad request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /mvt/aviation_reports/sigmet:0/style.json: get: summary: Request the data necessary to visualise SIGMET data in your client. parameters: - name: optional $ref: '#/components/parameters/date_token_optionals' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/CsvOkRequest' '400': description: Bad request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] /mvt/weather_reports/nwa:0/style.json: get: summary: Request the data necessary to visualise National Weather Alerts in your client. parameters: - name: optional $ref: '#/components/parameters/date_token_optionals' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/CsvOkRequest' '400': description: Bad request content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/BadRequestText' $ref: '#/components/schemas/BadRequestText' '401': description: Unauthorized content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/UnauthorizedText' '404': description: Not found content: text/plain; charset=UTF-8: schema: $ref: '#/components/schemas/NotFoundText' security: - BasicAuth: [ ] components: securitySchemes: BasicAuth: type: http scheme: basic schemas: BulletinValue: type: object description: > A scalar measurement paired with its physical unit, or a free-text value tagged with `unit: "string"` (e.g. `classification`). required: - value - unit properties: value: oneOf: - type: number - type: string unit: type: string example: "knots" BulletinQuadrantRadii: type: object description: Radii extent per compass quadrant for a threshold-based envelope. required: - north_east - south_east - south_west - north_west properties: north_east: $ref: '#/components/schemas/BulletinValue' south_east: $ref: '#/components/schemas/BulletinValue' south_west: $ref: '#/components/schemas/BulletinValue' north_west: $ref: '#/components/schemas/BulletinValue' BulletinsGeoJsonResponse: type: object description: > GeoJSON FeatureCollection returned by the `/bulletins` and `/bulletins-history` endpoints. Wraps the standard Meteomatics JSON header fields around a GeoJSON FeatureCollection. Each feature represents one section of one raw advisory bulletin (e.g. its current center fix, a forecast track point, or a wind-speed-probability envelope), with that bulletin's own fields merged into the same `properties` object. required: - version - user - dateGenerated - status - type - product - features properties: version: type: string description: API response format version. example: "3.0" user: type: string description: Authenticated username. example: "api-user" dateGenerated: type: string format: date-time description: UTC timestamp when the response was generated. example: "2026-08-28T13:09:16Z" status: type: string enum: ["OK"] example: "OK" type: type: string enum: ["FeatureCollection"] example: "FeatureCollection" product: type: string description: The requested `bulletin_type`. example: "tropical_cyclone" features: type: array items: type: object required: - type - properties - geometry properties: type: type: string enum: ["Feature"] example: "Feature" geometry: nullable: true description: > A GeoJSON geometry (e.g. `Point` for a center fix, `Polygon` for an envelope) when the underlying section has one, otherwise `null`. example: type: "Point" coordinates: [ 137.4, 14.2 ] properties: type: object description: > Per-bulletin fields (repeated on every feature of that bulletin), merged with per-section fields (`unique_id`, `kind`, `time`) and with fields specific to the section's `kind` (see below — which of these are present depends on `kind`). required: - issuer - issued_at - wmo_document_identifier - valid_from - valid_to - raw_message - inserted_at - basin - storm_id - storm_name - advisory_number - unique_id - kind - time properties: issuer: type: string description: WMO originating/transmitting centre abbreviation. example: "PGTW" issued_at: type: string description: UTC timestamp when the bulletin was issued. example: "2026-08-24T09:00:00Z" wmo_document_identifier: type: string description: WMO abbreviated heading. example: "WTPN33" valid_from: type: string description: > Start of the bulletin's validity period. For `kind=wind_swath` and `kind=storm_track` features, this is instead the more specific validity window of that section itself. example: "2026-08-24T06:00:00Z" valid_to: type: string description: > End of the bulletin's validity period, or `""` if not present. For `kind=wind_swath` and `kind=storm_track` features, this is instead the more specific validity window of that section itself. example: "2026-08-25T18:00:00Z" raw_message: type: string description: Full text of the original bulletin as received. example: "WTPN33 PGTW 240900\nMSGID/GENADMIN/JOINT TYPHOON WRNCEN PEARL HARBOR HI//\nSUBJ/TROPICAL DEPRESSION 19W (ATSANI) WARNING NR 008//\n..." inserted_at: type: string description: UTC timestamp when the bulletin was ingested into the database. example: "2026-08-24T07:45:05Z" basin: type: string description: Ocean basin code the storm was tracked in (ATCF basin code). example: "WP" storm_id: type: string description: Identifier of the storm, stable across all of its advisories. example: "19W" storm_name: type: string description: > Name of the storm, normalized to upper case letters, with runs of dashes collapsed into a single dash (e.g. `ATSANI`, `NARRA`, `MAN-YI`). example: "ATSANI" advisory_number: type: integer description: Sequence number of this advisory within the storm's lifetime. example: 8 unique_id: type: string description: > Identifier for this feature (one section of one advisory), composed as `_____