openapi: 3.0.0 info: title: MeteoNetwork API v3 description: >- MeteoNetwork Weather Stations APIs
Before use these APIs, please read:

Prerequisites

You need a myMeteoNetwork account. Register here for free!
These APIs use the Bearer authentication scheme:
  1. Get a token by /login method
  2. To send a request to methods, include a HTTP Header
    Authorization: Bearer <token>
Some bulk methods require a BULK type token. Read the documentation to request a BULK token type through the /login method (additional information is required about the activity you are going to perform).
NOTE: a v1/v2 token (MT**********) is not valid for v3 APIs!

Environments

Public: https://api.meteonetwork.it/v3 (example, https://api.meteonetwork.it/v3/login)

Changes

REV5 (18/05/2023) REV4 (17/05/2023) REV3 (04/03/2023) REV2 (22/06/2020) REV1 (21/06/2020) version: REV5 termsOfService: "https://www.meteonetwork.it/informative/termini-e-condizioni-generali-duso-dei-servizi-meteonetwork/" contact: email: settore.tecnico@meteonetwork.it license: name: "CC-BY 4.0" url: "https://creativecommons.org/licenses/by/4.0/deed.en" servers: - url: https://api.meteonetwork.it/v3 tags: - name: User Login description: Credentials (e-mail and password) of myMeteoNetwork externalDocs: description: Register to myMeteoNetwork url: 'http://my.meteonetwork.it/' - name: Realtime Data description: Realtime weather stations data - name: Daily Data description: Daily weather stations data paths: /login: post: tags: - User Login summary: Login API description: >- With this method you obtain a token that never expires. Save/cache it because you can generate a new one in 1 hour. MeteoNetwork reserves the right to reject or revoke a token for activities that do not comply with the terms of service.

You can also request a BULK token type that allows access to bulk methods.
BULK token type is reserved to institutions, no-profit organizations or companies. To request a bulk token you need to provide additional information about your business (see properties). security: [] requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/Credentials' description: The email and password of my.meteonetwork.it required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Login' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' /stations/{station_code}: get: tags: - Weather stations summary: Access to single weather station attributes description: Access to single weather station attributes. security: - bearerAuth: [] parameters: - name: station_code in: path description: Weather station code required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: "array" items: $ref: '#/components/schemas/Station' '204': description: No results found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method not allowed (token not authorized for bulk methods) content: application/json: schema: $ref: '#/components/schemas/Error' /stations: get: tags: - Weather stations summary: (Bulk method) Access to single weather station attributes description: Access to single weather station attributes. This method requires a BULK token type security: - bearerAuth: [] parameters: - name: subnet in: query description: Get only specific subnet weather stations required: false schema: type: string - name: subnet_exclude in: query description: Esclude all weather stations in specific subnets (comma-separated string, ex. "metno,mistral") required: false schema: type: string - name: data_quality in: query description: The sensors of the weather stations are constantly monitored to provide the best quality of the meteorological data. Set to false to ignore these checks (usually you shouldn't use this feature) required: false schema: type: boolean default: true - name: country in: query description: ISO 3166-1 alpha-2 country code required: false example: IT schema: type: string - name: region in: query description: Region/State of country required: false example: lombardia schema: type: string - name: lat in: query description: Geocoding search - Latitude (required with lat, lon, range) required: false example: 45.5 schema: type: string - name: lon in: query description: Geocoding search - Longitude (required with lat, lon, range) required: false example: 9.3 schema: type: string - name: range in: query description: Geocoding search - Range (km) (required with lat, lon, range) required: false example: 100 schema: type: string responses: '200': description: OK content: application/json: schema: type: "array" items: $ref: '#/components/schemas/Station' '204': description: No results found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method not allowed (token not authorized for bulk methods) content: application/json: schema: $ref: '#/components/schemas/Error' /data-realtime/{station_code}: get: tags: - Realtime Data summary: Access to realtime weather data of single weather station description: Access to realtime weather data. There is a throttling of 5 requests in 1 minute. security: - bearerAuth: [] parameters: - name: station_code in: path description: Weather station code required: true schema: type: string - name: data_quality in: query description: The sensors of the weather stations are constantly monitored to provide the best quality of the meteorological data. Set to false to ignore these checks (usually you shouldn't use this feature) required: false schema: type: boolean default: true responses: '200': description: OK content: application/json: schema: type: "array" items: $ref: '#/components/schemas/Realtime' '204': description: No results found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method not allowed (token not authorized for bulk methods) content: application/json: schema: $ref: '#/components/schemas/Error' /data-realtime: get: tags: - Realtime Data summary: (Bulk method) Access to realtime weather data description: Access to last data from each weather station. This method requires a BULK token type security: - bearerAuth: [] parameters: - name: subnet in: query description: Get only specific subnet weather stations required: false schema: type: string - name: data_quality in: query description: The sensors of the weather stations are constantly monitored to provide the best quality of the meteorological data. Set to false to ignore these checks (usually you shouldn't use this feature) required: false schema: type: boolean default: true - name: country in: query description: ISO 3166-1 alpha-2 country code required: false example: IT schema: type: string - name: region in: query description: Region/State of country required: false example: lombardia schema: type: string - name: lat in: query description: Geocoding search - Latitude (required with lat, lon, range) required: false example: 45.5 schema: type: string - name: lon in: query description: Geocoding search - Longitude (required with lat, lon, range) required: false example: 9.3 schema: type: string - name: range in: query description: Geocoding search - Range (km) (required with lat, lon, range) required: false example: 100 schema: type: string responses: '200': description: OK content: application/json: schema: type: "array" items: $ref: '#/components/schemas/Realtime' '204': description: No results found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method not allowed (token not authorized for bulk methods) content: application/json: schema: $ref: '#/components/schemas/Error' /data-archive/{station_code}: get: tags: - Archive Data summary: (Bulk method) Access to archived raw weather data of a single weather station description: Access to archived raw weather data of a single weather station. This method requires a BULK token type. There is a throttling of 20 requests in 10 minutes security: - bearerAuth: [] parameters: - name: station_code in: path description: Weather station code required: true schema: type: string - name: observation_date in: query description: Date of observation date required: false schema: type: string format: date example: "2020-01-01" default: today - name: data_quality in: query description: The sensors of the weather stations are constantly monitored to provide the best quality of the meteorological data. Set to false to ignore these checks (usually you shouldn't use this feature) required: false schema: type: boolean default: true responses: '200': description: OK content: application/json: schema: type: "array" items: $ref: '#/components/schemas/Archive' '204': description: No results found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method not allowed (token not authorized for bulk methods) content: application/json: schema: $ref: '#/components/schemas/Error' /data-archive: get: tags: - Archive Data summary: (Reserved method) Access to archived raw weather data description: Access to archived raw weather data. This method requires a RESERVED token type. Please contact settore.tecnico@meteonetwork.it security: - bearerAuth: [] parameters: - name: observation_date in: query description: Date of observation date (from 00:00 to 23:59) required: true schema: type: string format: date example: "2020-01-01" default: today - name: code in: query description: Get only specific station code (without throttling restrictions) required: false schema: type: string - name: subnet in: query description: Get only specific subnet weather stations required: false schema: type: string - name: data_quality in: query description: The sensors of the weather stations are constantly monitored to provide the best quality of the meteorological data. Set to false to ignore these checks (usually you shouldn't use this feature) required: false schema: type: boolean default: true - name: country in: query description: ISO 3166-1 alpha-2 country code required: false example: IT schema: type: string - name: region in: query description: Region/State of country required: false example: lombardia schema: type: string - name: lat in: query description: Geocoding search - Latitude (required with lat, lon, range) required: false example: 45.5 schema: type: string - name: lon in: query description: Geocoding search - Longitude (required with lat, lon, range) required: false example: 9.3 schema: type: string - name: range in: query description: Geocoding search - Range (km) (required with lat, lon, range) required: false example: 100 schema: type: string responses: '200': description: OK content: application/json: schema: type: "array" items: $ref: '#/components/schemas/Archive' '204': description: No results found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method not allowed (token not authorized for bulk methods) content: application/json: schema: $ref: '#/components/schemas/Error' /data-daily/{station_code}: get: tags: - Daily Data summary: Access to daily weather data of a single weather station description: Access to daily weather data. There is a throttling of 5 requests in 1 minute. security: - bearerAuth: [] parameters: - name: station_code in: path description: Weather station code required: true schema: type: string - name: observation_date in: query description: Date of observation date required: false schema: type: string format: date example: "2020-01-01" default: today - name: data_quality in: query description: The sensors of the weather stations are constantly monitored to provide the best quality of the meteorological data. Set to false to ignore these checks (usually you shouldn't use this feature) required: false schema: type: boolean default: true responses: '200': description: OK content: application/json: schema: type: "array" items: $ref: '#/components/schemas/Daily' '204': description: No results found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method not allowed (token not authorized for bulk methods) content: application/json: schema: $ref: '#/components/schemas/Error' /data-daily: get: tags: - Daily Data summary: (Bulk method) Access to daily weather data description: Access to daily weather data. This method requires a BULK token type security: - bearerAuth: [] parameters: - name: observation_date in: query description: Date of observation date required: false schema: type: string format: date example: "2020-01-01" default: today - name: subnet in: query description: Get only specific subnet weather stations required: false schema: type: string - name: data_quality in: query description: The sensors of the weather stations are constantly monitored to provide the best quality of the meteorological data. Set to false to ignore these checks (usually you shouldn't use this feature) required: false schema: type: boolean default: true - name: country in: query description: ISO 3166-1 alpha-2 country code required: false example: IT schema: type: string - name: region in: query description: Region/State of country required: false example: lombardia schema: type: string - name: lat in: query description: Geocoding search - Latitude (required with lat, lon, range) required: false example: 45.5 schema: type: string - name: lon in: query description: Geocoding search - Longitude (required with lat, lon, range) required: false example: 9.3 schema: type: string - name: range in: query description: Geocoding search - Range (km) (required with lat, lon, range) required: false example: 100 schema: type: string responses: '200': description: OK content: application/json: schema: type: "array" items: $ref: '#/components/schemas/Daily' '204': description: No results found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method not allowed (token not authorized for bulk methods) content: application/json: schema: $ref: '#/components/schemas/Error' /interpolated-realtime: get: tags: - Interpolated Realtime Data summary: (BETA) Access to interpolated realtime weather data description: Access to MeteoNetwork interpolated data. The data provided does not come from weather stations but from a 2.5km x 2.5km grid of the MeteoNetwork interpolation system. Currently the coverage is only for the Italian territory. Useful if you need meteorological data not covered by a weather station and allow calculation error tolerance. security: - bearerAuth: [] parameters: - name: lat in: query description: Geocoding search - Latitude (required with lat, lon, range) required: false example: 45.5 schema: type: string - name: lon in: query description: Geocoding search - Longitude (required with lat, lon, range) required: false example: 9.3 schema: type: string responses: '200': description: OK content: application/json: schema: type: "array" items: $ref: '#/components/schemas/InterpolatedRealtime' '204': description: No results found content: application/json: schema: $ref: '#/components/schemas/Error' security: - bearerAuth: [] components: securitySchemes: bearerAuth: type: http scheme: bearer schemas: Credentials: type: object required: - email - password properties: email: type: string password: type: string bulk: type: boolean description: Request a bulk token type default: false company: type: string description: ONLY for bulk token request. Your institution, non-profit organization or company name description: type: string description: ONLY for bulk token request. Describe your activity and what are you doing with MeteoNetwork APIs contribution: type: string enum: [service, donation] description: > ONLY for bulk token request. Bulks are resource-intensive requests: we are a non-profit association and the entire IT infrastructure is maintained thanks to the valuable contribution of Members, Donors and Collaborations. So we ask for your help.

What can you do for MeteoNetwork and collaborators?
* `service` - Yes, I want to collaborate by offering our service
* `donation` - Yes, I want to contribute with a donation

You will be contacted by our team for the contribution you have chosen. Remember: we are a non-profit association that lives with your help!.
If you don't reply to our team, your token will be disabled. Login: type: object properties: status_code: type: number description: Response code example: 200 access_token: type: string example: 1|12345678900abcdefghikEkskksksks token_type: type: string description: Type of the token example: Bearer Error: type: object properties: error: type: boolean status_code: type: number example: 401 message: type: string example: "Error in login" Realtime: type: object properties: observation_time_local: type: string title: Date and time of observation time in local time example: '2020-06-22 10:29:00' observation_time_utc: type: string title: Date and time of observation time in UTC time example: '2020-06-22 08:29:00' name: type: string title: Weather station name example: 'Mantova - Borgochiesanuova' station_code: type: string title: Station Code example: lmb015 place: type: string title: Place example: Mantova area: type: string title: Area (neighborhood) example: 'Borgochiesanuova' latitude: type: string title: Latitude example: '40.14553' longitude: type: string title: Longitude example: '18.12654' altitude: type: integer title: Sea level altitude (m) default: 0 example: 99 country: type: string title: ISO 3166-1 alpha-2 country code example: IT region_name: type: string title: Region/State example: Puglia temperature: type: string title: Temperature (°C) example: '25.9' daily_rain: type: string title: Daily rain from 00:00 (mm) example: '0.0' rad: type: string title: Radiation (index) example: '694' rh: type: string title: Relative Humidity (%) example: '50' wind_speed: type: string title: Wind Speed (km/h) example: '8.21' smlp: type: string title: Sea level pressure (hPa) example: '1011.9' wind_direction: type: string title: Wind Direction (cardinals) example: S wind_direction_degree: type: string title: Wind Direction (degree) example: 44.5 wind_gust: type: string title: Wind gust (km/h) - if recorded by weather station example: '15.29' rain_rate: type: string title: Rain rate (mm/h) example: '0.0' dew_point: type: string title: Dew Point example: '14.6' uv: type: string title: UV (W/m2) example: '4' current_tmin: type: string title: Current daily low temperature example: '17.7' current_tmed: type: string title: Current daily average temperature example: '21.6' current_tmax: type: string title: Current daily high temperature example: '24.5' current_rhmin: type: string title: Current daily low relative humidity example: '49' current_rhmed: type: string title: Current daily average relative humidity example: '60' current_rhmax: type: string title: Current daily high relative humidity example: '71' current_wgustmax: type: string title: Current daily max wind gust (km/h) - if recorded by weather station example: '28.8' current_wspeedmax: type: string title: Current daily max wind speed (km/h) example: '16.9' current_wspeedmed: type: string title: Current daily average wind speed (km/h) example: '7.2' current_uvmed: type: string title: Current daily average UV (W/m2) example: '3' current_uvmax: type: string title: Current daily high UV (W/m2) example: '6' current_radmed: type: string title: Current daily average radiation (index) example: '484' current_radmax: type: string title: Current daily high radiation (index) example: '966' InterpolatedRealtime: type: object properties: latitude: type: string title: Latitude example: '40.14553' longitude: type: string title: Longitude example: '18.12654' temperature: type: string title: Temperature (°C) example: '25.9' daily_rain: type: string title: Daily rain from 00:00 (mm) example: '0.0' rh: type: string title: Relative Humidity (%) example: '50' wind_speed: type: string title: Wind Speed (km/h) example: '8.21' smlp: type: string title: Sea level pressure (hPa) example: '1011.9' wind_direction: type: string title: Wind Direction (degree) example: S wind_direction_cardinal: type: string title: Wind Direction (cardinals) example: 44.5 dew_point: type: string title: Dew Point example: '14.6' distance: type: string title: Distance in km from nearest grid point example: '0.8' Daily: type: object properties: observation_date: type: string title: Date of observation (yyyy-mm-dd) example: "2020-01-01" station_code: type: string title: Station Code example: lmb015 station_name: type: string title: Weather station name example: Mantova area: type: string title: Area (neighborhood) example: 'Borgochiesanuova' latitude: type: string title: Latitude example: '40.14553' longitude: type: string title: Longitude example: '18.12654' altitude: type: integer title: Sea level altitude (m) default: 0 example: 99 country: type: string title: ISO 3166-1 alpha-2 country code example: IT region_name: type: string title: Region/State example: Puglia t_min: type: string title: Low Temperature (°C) example: '25.9' t_med: type: string title: Average Temperature (°C) example: '25.9' t_max: type: string title: High Temperature (°C) example: '25.9' rh_min: type: string title: Low Relative Humidity (%) example: '50' rh_med: type: string title: Average Relative Humidity (%) example: '50' rh_max: type: string title: High Relative Humidity (%) example: '50' rain: type: string title: Daily rain from 00:00 (mm) example: '0.0' slpres: type: string title: Average Sea level pressure (hPa) example: '1011.9' w_max: type: string title: Max Wind Speed (km/h) example: '8.21' w_med: type: string title: Average Wind Speed (km/h) example: '8.21' w_dir: type: string title: Average Wind Direction (cardinals) example: S rad_med: type: string title: Average Radiation (index) example: '694' rad_max: type: string title: Average Radiation (index) example: '694' uv_med: type: string title: Average UV (W/m2) example: '1.1' uv_max: type: string title: High UV (W/m2) example: '1.5' Station: type: object properties: code: type: string title: Code of weather station example: "lmb015" latitude: type: string title: Latitude example: '40.14553' longitude: type: string title: Longitude example: '18.12654' is_valid: type: string title: Current status of weather station (Y is active weather station) example: Y insertion_date: type: string title: Insertion of weather station (yyyy-mm-dd) example: "2020-01-01" name: type: string title: Name of weather station example: Mantova - Borgochiesanuova place_name: type: string title: Place name (italian comune or city) of weather station example: Mantova area: type: string title: Area (neighborhood) example: 'Borgochiesanuova' country: type: string title: ISO 3166-1 alpha-2 country code example: IT region_name: type: string title: Region/State example: Puglia altitude: type: integer title: Sea level altitude (m) example: 99 strumentation: type: string title: Description of weather station manufacturer example: "Davis Vantage Vue" soil_height: type: integer title: Height of weather station sensors from soil (m) example: 220 shielding: type: string title: Shielding example: 'P' enum: ['X','C','P','W'] description: > * `X` - No shield * `C` - Meteorological shield * `P` - Naturally ventilated radiation shield * `W` - Forced ventilated radiation shield shielding_type: type: string title: Shielding type example: 'S' enum: ['U','S','E'] description: > * `S` - Standard * `A` - Self-made shielding_tested: type: string title: MeteoNetwork checks the type of shield (by selected manufacturer or by comparison) example: 'N' tipology: type: string title: Location tipology example: 'U' enum: ['U','S','E'] description: > * `U` - Urban * `S` - Semi-urban * `E` - Extra-urban buildings_distance: type: integer title: Distance from the nearest building (m) example: 5 solar_range_summer_begin: type: string title: When sunlight begins to illuminate the weather station (summer) example: "05:30:00" solar_range_summer_end: type: string title: When sunlight stops illuminate the weather station (summer) example: "21:00:00" solar_range_winter_begin: type: string title: When sunlight begins to illuminate the weather station (winter) example: "08:00:00" solar_range_winter_end: type: string title: When sunlight stops illuminate the weather station (winter) example: "16:30:00" webcam: type: string title: Webcam URL station_link: type: string title: Personal website of weather station owner software: type: string title: Code of weather station management software example: 'WL' removal_date: type: string title: Date of weather station removal default: null time_zone_name: type: string title: Weather station Time Zone example: 'Europe/Berlin' climate_zone: type: string title: Type of climate zone example: 'TCt' images: type: array items: type: string example: "http://my.meteonetwork.it/image.jpg" title: Array of weather station photos (URL) subnets: type: array items: type: string example: "mistral" title: Array of subnets Archive: type: object properties: observation_time_local: type: string title: Date and time of observation time in local time example: '2020-06-22 10:29:00' observation_time_utc: type: string title: Date and time of observation time in UTC time example: '2020-06-22 08:29:00' station_code: type: string title: Station Code example: lmb015 temperature: type: string title: Temperature (°C) example: '25.9' smlp: type: string title: Sea level pressure (hPa) example: '1011.9' rh: type: string title: Relative Humidity (%) example: '50' wind_speed: type: string title: Wind Speed (km/h) example: '8.21' wind_direction: type: string title: Wind Direction (cardinals) example: S wind_direction_degree: type: string title: Wind Direction (degree) example: 44.5 wind_gust: type: string title: Wind gust (km/h) - if recorded by weather station example: '15.29' rain_rate: type: string title: Rain rate (mm/h) example: '0.0' daily_rain: type: string title: Daily rain from 00:00 (mm) example: '0.0' dew_point: type: string title: Dew Point example: '14.6' rad: type: string title: Radiation (index) example: '694' uv: type: string title: UV (W/m2) example: '4'