{
  "openapi": "3.0.3",
  "info": {
    "title": "ECMWF HISTORY | a Weather Source API",
    "description": "**Description:**\n\nDaily and hourly historical weather data from the ECMWF dataset for latitude/longitude points, Zip/Postal Codes, Designated Market Areas, and OnPoint™ points.\n\nWeather Source APIs are built upon the [OnPoint™ Platform](https://www.pelmorex.com/en/products-and-solutions/weather-source/onpoint-weather-data-suite/) which ensures data that is gap-free, homogeneous, and ready for immediate analysis. We offer one of the highest resolution grids on the market, covering every landmass in the world and up to 200 miles offshore.\n\n**Authorization:**\n\nRequests are authorized by a header named `X-API-KEY` with a value of your API key. If you do not have a Weather Source API key [sign up for a free developer account](https://developer.weathersourceapis.com/account/sign-up/) to trial the data, or contact sales at [weathersource@pelmorex.com](mailto:weathersource@pelmorex.com) to explore the right subscription package for your business.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, your API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page. You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n",
    "termsOfService": "https://weathersource.com/company/legal/terms-of-service/",
    "contact": {
      "name": "Weather Source APIs",
      "url": "https://developer.weathersourceapis.com/",
      "email": "weathersource@pelmorex.com"
    },
    "version": "2.0.0"
  },
  "servers": [
    {
      "url": "https://ecmwfhistory.weathersourceapis.com/v2"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/points/{latitude},{longitude}/days/{date}": {
      "get": {
        "tags": [
          "points"
        ],
        "summary": "A day of weather history for a Latitude/Longitude point.",
        "description": "Returns a single day of historical weather data for a Latitude/Longitude point.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "latitude",
            "in": "path",
            "description": "A latitude value between -90° and 90°.",
            "required": true,
            "schema": {
              "maximum": 90,
              "minimum": -90,
              "type": "number",
              "format": "float",
              "example": 38.8552
            }
          },
          {
            "name": "longitude",
            "in": "path",
            "description": "A longitude value between -180° (West) and 180° (East).",
            "required": true,
            "schema": {
              "maximum": 180,
              "minimum": -180,
              "type": "number",
              "format": "float",
              "example": -77.0513
            }
          },
          {
            "name": "date",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The date field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are supported:\n* all *(all fields)*\n* allCldCvr *(derivatives of cldCvr)*\n* allHum *(derivatives of relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(derivatives of mslPres, sfcPres)*\n* allRad *(derivatives of radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(derivatives of dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(derivatives of windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(derivatives of cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvrMin",
                  "cldCvrAvg",
                  "cldCvrMax",
                  "dewPtMin",
                  "dewPtAvg",
                  "dewPtMax",
                  "feelsLikeMin",
                  "feelsLikeAvg",
                  "feelsLikeMax",
                  "heatIndexMin",
                  "heatIndexAvg",
                  "heatIndexMax",
                  "mslPresMin",
                  "mslPresAvg",
                  "mslPresMax",
                  "precip",
                  "radSolarMin",
                  "radSolarAvg",
                  "radSolarMax",
                  "radSolarTot",
                  "radSolarDirectMin",
                  "radSolarDirectAvg",
                  "radSolarDirectMax",
                  "radSolarDirectTot",
                  "radSolarDirectPMin",
                  "radSolarDirectPAvg",
                  "radSolarDirectPMax",
                  "radSolarDirectPTot",
                  "relHumMin",
                  "relHumAvg",
                  "relHumMax",
                  "sfcPresMin",
                  "sfcPresAvg",
                  "sfcPresMax",
                  "snowfall",
                  "spcHumMin",
                  "spcHumAvg",
                  "spcHumMax",
                  "tempMin",
                  "tempAvg",
                  "tempMax",
                  "wetBulbMin",
                  "wetBulbAvg",
                  "wetBulbMax",
                  "windChillMin",
                  "windChillAvg",
                  "windChillMax",
                  "windDirAvg",
                  "windDir80mAvg",
                  "windDir100mAvg",
                  "windGustMax",
                  "windSpdMin",
                  "windSpdAvg",
                  "windSpdMax",
                  "windSpd80mMin",
                  "windSpd80mAvg",
                  "windSpd80mMax",
                  "windSpd100mMin",
                  "windSpd100mAvg",
                  "windSpd100mMax",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Daily historical weather response for a Latitude/Longitude point.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryPointDayObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/points/{latitude},{longitude}/days/{dateStart},{dateEnd}": {
      "get": {
        "tags": [
          "points"
        ],
        "summary": "A contiguous range of daily weather history for a Latitude/Longitude point.",
        "description": "Returns a contiguous range of daily historical weather data for a Latitude/Longitude point. The temporal range provided must not exceed 1 year in duration.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "latitude",
            "in": "path",
            "description": "A latitude value between -90° and 90°.",
            "required": true,
            "schema": {
              "maximum": 90,
              "minimum": -90,
              "type": "number",
              "format": "float",
              "example": 38.8552
            }
          },
          {
            "name": "longitude",
            "in": "path",
            "description": "A longitude value between -180° (West) and 180° (East).",
            "required": true,
            "schema": {
              "maximum": 180,
              "minimum": -180,
              "type": "number",
              "format": "float",
              "example": -77.0513
            }
          },
          {
            "name": "dateStart",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value that must occur temporally before dateEnd.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "dateEnd",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value that must occur temporally after dateStart.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The date field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are supported:\n* all *(all fields)*\n* allCldCvr *(derivatives of cldCvr)*\n* allHum *(derivatives of relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(derivatives of mslPres, sfcPres)*\n* allRad *(derivatives of radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(derivatives of dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(derivatives of windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(derivatives of cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvrMin",
                  "cldCvrAvg",
                  "cldCvrMax",
                  "dewPtMin",
                  "dewPtAvg",
                  "dewPtMax",
                  "feelsLikeMin",
                  "feelsLikeAvg",
                  "feelsLikeMax",
                  "heatIndexMin",
                  "heatIndexAvg",
                  "heatIndexMax",
                  "mslPresMin",
                  "mslPresAvg",
                  "mslPresMax",
                  "precip",
                  "radSolarMin",
                  "radSolarAvg",
                  "radSolarMax",
                  "radSolarTot",
                  "radSolarDirectMin",
                  "radSolarDirectAvg",
                  "radSolarDirectMax",
                  "radSolarDirectTot",
                  "radSolarDirectPMin",
                  "radSolarDirectPAvg",
                  "radSolarDirectPMax",
                  "radSolarDirectPTot",
                  "relHumMin",
                  "relHumAvg",
                  "relHumMax",
                  "sfcPresMin",
                  "sfcPresAvg",
                  "sfcPresMax",
                  "snowfall",
                  "spcHumMin",
                  "spcHumAvg",
                  "spcHumMax",
                  "tempMin",
                  "tempAvg",
                  "tempMax",
                  "wetBulbMin",
                  "wetBulbAvg",
                  "wetBulbMax",
                  "windChillMin",
                  "windChillAvg",
                  "windChillMax",
                  "windDirAvg",
                  "windDir80mAvg",
                  "windDir100mAvg",
                  "windGustMax",
                  "windSpdMin",
                  "windSpdAvg",
                  "windSpdMax",
                  "windSpd80mMin",
                  "windSpd80mAvg",
                  "windSpd80mMax",
                  "windSpd100mMin",
                  "windSpd100mAvg",
                  "windSpd100mMax",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Daily historical weather response for a Latitude/Longitude point.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryPointDayObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/points/{latitude},{longitude}/hours/{timestamp}": {
      "get": {
        "tags": [
          "points"
        ],
        "summary": "An hour of weather history for a Latitude/Longitude point.",
        "description": "Returns a single hour of historical weather data for a Latitude/Longitude point.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "latitude",
            "in": "path",
            "description": "A latitude value between -90° and 90°.",
            "required": true,
            "schema": {
              "maximum": 90,
              "minimum": -90,
              "type": "number",
              "format": "float",
              "example": 38.8552
            }
          },
          {
            "name": "longitude",
            "in": "path",
            "description": "A longitude value between -180° (West) and 180° (East).",
            "required": true,
            "schema": {
              "maximum": 180,
              "minimum": -180,
              "type": "number",
              "format": "float",
              "example": -77.0513
            }
          },
          {
            "name": "timestamp",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The timestamp field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are also supported:\n* all *(all fields)*\n* allCldCvr *(cldCvr)*\n* allHum *(relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(mslPres, sfcPres)*\n* allRad *(radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvr",
                  "dewPt",
                  "feelsLike",
                  "heatIndex",
                  "mslPres",
                  "precip",
                  "radSolar",
                  "radSolarDirect",
                  "radSolarDirectP",
                  "relHum",
                  "sfcPres",
                  "snowfall",
                  "spcHum",
                  "temp",
                  "wetBulb",
                  "windChill",
                  "windDir",
                  "windDir80m",
                  "windDir100m",
                  "windGust",
                  "windSpd",
                  "windSpd80m",
                  "windSpd100m",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hourly historical weather response for a Latitude/Longitude point.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryPointHourObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/points/{latitude},{longitude}/hours/{timestampStart},{timestampEnd}": {
      "get": {
        "tags": [
          "points"
        ],
        "summary": "A contiguous range of hourly weather history for a Latitude/Longitude point.",
        "description": "Returns a contiguous range of hourly historical weather data for a Latitude/Longitude point. The temporal range provided must not exceed 1 year in duration.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "latitude",
            "in": "path",
            "description": "A latitude value between -90° and 90°.",
            "required": true,
            "schema": {
              "maximum": 90,
              "minimum": -90,
              "type": "number",
              "format": "float",
              "example": 38.8552
            }
          },
          {
            "name": "longitude",
            "in": "path",
            "description": "A longitude value between -180° (West) and 180° (East).",
            "required": true,
            "schema": {
              "maximum": 180,
              "minimum": -180,
              "type": "number",
              "format": "float",
              "example": -77.0513
            }
          },
          {
            "name": "timestampStart",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally before timestampEnd. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "timestampEnd",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally after timestampStart. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The timestamp field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are also supported:\n* all *(all fields)*\n* allCldCvr *(cldCvr)*\n* allHum *(relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(mslPres, sfcPres)*\n* allRad *(radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvr",
                  "dewPt",
                  "feelsLike",
                  "heatIndex",
                  "mslPres",
                  "precip",
                  "radSolar",
                  "radSolarDirect",
                  "radSolarDirectP",
                  "relHum",
                  "sfcPres",
                  "snowfall",
                  "spcHum",
                  "temp",
                  "wetBulb",
                  "windChill",
                  "windDir",
                  "windDir80m",
                  "windDir100m",
                  "windGust",
                  "windSpd",
                  "windSpd80m",
                  "windSpd100m",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hourly historical weather response for a Latitude/Longitude point.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryPointHourObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/postcodes/{postcode},{countryCode}/days/{date}": {
      "get": {
        "tags": [
          "postcodes"
        ],
        "summary": "A day of weather history for a postcode.",
        "description": "Returns a single day of historical weather data for a postcode.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "postcode",
            "in": "path",
            "description": "A postcode string.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "22222"
            }
          },
          {
            "name": "countryCode",
            "in": "path",
            "description": "An uppercase 2-character [ISO 3166-1 Alpha-2 country code](https://developer.weathersourceapis.com/apis/countries-with-postal-code-support/).",
            "required": true,
            "schema": {
              "pattern": "^([A-Z]){2}$",
              "type": "string",
              "example": "US"
            }
          },
          {
            "name": "date",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The date field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are supported:\n* all *(all fields)*\n* allCldCvr *(derivatives of cldCvr)*\n* allHum *(derivatives of relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(derivatives of mslPres, sfcPres)*\n* allRad *(derivatives of radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(derivatives of dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(derivatives of windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(derivatives of cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvrMin",
                  "cldCvrAvg",
                  "cldCvrMax",
                  "dewPtMin",
                  "dewPtAvg",
                  "dewPtMax",
                  "feelsLikeMin",
                  "feelsLikeAvg",
                  "feelsLikeMax",
                  "heatIndexMin",
                  "heatIndexAvg",
                  "heatIndexMax",
                  "mslPresMin",
                  "mslPresAvg",
                  "mslPresMax",
                  "precip",
                  "radSolarMin",
                  "radSolarAvg",
                  "radSolarMax",
                  "radSolarTot",
                  "radSolarDirectMin",
                  "radSolarDirectAvg",
                  "radSolarDirectMax",
                  "radSolarDirectTot",
                  "radSolarDirectPMin",
                  "radSolarDirectPAvg",
                  "radSolarDirectPMax",
                  "radSolarDirectPTot",
                  "relHumMin",
                  "relHumAvg",
                  "relHumMax",
                  "sfcPresMin",
                  "sfcPresAvg",
                  "sfcPresMax",
                  "snowfall",
                  "spcHumMin",
                  "spcHumAvg",
                  "spcHumMax",
                  "tempMin",
                  "tempAvg",
                  "tempMax",
                  "wetBulbMin",
                  "wetBulbAvg",
                  "wetBulbMax",
                  "windChillMin",
                  "windChillAvg",
                  "windChillMax",
                  "windDirAvg",
                  "windDir80mAvg",
                  "windDir100mAvg",
                  "windGustMax",
                  "windSpdMin",
                  "windSpdAvg",
                  "windSpdMax",
                  "windSpd80mMin",
                  "windSpd80mAvg",
                  "windSpd80mMax",
                  "windSpd100mMin",
                  "windSpd100mAvg",
                  "windSpd100mMax",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Daily historical weather response for a postcode.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryPostcodeDayObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/postcodes/{postcode},{countryCode}/days/{dateStart},{dateEnd}": {
      "get": {
        "tags": [
          "postcodes"
        ],
        "summary": "A contiguous range of daily weather history for a postcode.",
        "description": "Returns a contiguous range of daily historical weather data for a postcode. The temporal range provided must not exceed 1 year in duration.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "postcode",
            "in": "path",
            "description": "A postcode string.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "22222"
            }
          },
          {
            "name": "countryCode",
            "in": "path",
            "description": "An uppercase 2-character [ISO 3166-1 Alpha-2 country code](https://developer.weathersourceapis.com/apis/countries-with-postal-code-support/).",
            "required": true,
            "schema": {
              "pattern": "^([A-Z]){2}$",
              "type": "string",
              "example": "US"
            }
          },
          {
            "name": "dateStart",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value that must occur temporally before dateEnd.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "dateEnd",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value that must occur temporally after dateStart.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The date field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are supported:\n* all *(all fields)*\n* allCldCvr *(derivatives of cldCvr)*\n* allHum *(derivatives of relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(derivatives of mslPres, sfcPres)*\n* allRad *(derivatives of radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(derivatives of dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(derivatives of windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(derivatives of cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvrMin",
                  "cldCvrAvg",
                  "cldCvrMax",
                  "dewPtMin",
                  "dewPtAvg",
                  "dewPtMax",
                  "feelsLikeMin",
                  "feelsLikeAvg",
                  "feelsLikeMax",
                  "heatIndexMin",
                  "heatIndexAvg",
                  "heatIndexMax",
                  "mslPresMin",
                  "mslPresAvg",
                  "mslPresMax",
                  "precip",
                  "radSolarMin",
                  "radSolarAvg",
                  "radSolarMax",
                  "radSolarTot",
                  "radSolarDirectMin",
                  "radSolarDirectAvg",
                  "radSolarDirectMax",
                  "radSolarDirectTot",
                  "radSolarDirectPMin",
                  "radSolarDirectPAvg",
                  "radSolarDirectPMax",
                  "radSolarDirectPTot",
                  "relHumMin",
                  "relHumAvg",
                  "relHumMax",
                  "sfcPresMin",
                  "sfcPresAvg",
                  "sfcPresMax",
                  "snowfall",
                  "spcHumMin",
                  "spcHumAvg",
                  "spcHumMax",
                  "tempMin",
                  "tempAvg",
                  "tempMax",
                  "wetBulbMin",
                  "wetBulbAvg",
                  "wetBulbMax",
                  "windChillMin",
                  "windChillAvg",
                  "windChillMax",
                  "windDirAvg",
                  "windDir80mAvg",
                  "windDir100mAvg",
                  "windGustMax",
                  "windSpdMin",
                  "windSpdAvg",
                  "windSpdMax",
                  "windSpd80mMin",
                  "windSpd80mAvg",
                  "windSpd80mMax",
                  "windSpd100mMin",
                  "windSpd100mAvg",
                  "windSpd100mMax",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Daily historical weather response for a postcode.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryPostcodeDayObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/postcodes/{postcode},{countryCode}/hours/{timestamp}": {
      "get": {
        "tags": [
          "postcodes"
        ],
        "summary": "An hour of weather history for a postcode.",
        "description": "Returns a single hour of historical weather data for a postcode.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "postcode",
            "in": "path",
            "description": "A postcode string.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "22222"
            }
          },
          {
            "name": "countryCode",
            "in": "path",
            "description": "An uppercase 2-character [ISO 3166-1 Alpha-2 country code](https://developer.weathersourceapis.com/apis/countries-with-postal-code-support/).",
            "required": true,
            "schema": {
              "pattern": "^([A-Z]){2}$",
              "type": "string",
              "example": "US"
            }
          },
          {
            "name": "timestamp",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The timestamp field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are also supported:\n* all *(all fields)*\n* allCldCvr *(cldCvr)*\n* allHum *(relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(mslPres, sfcPres)*\n* allRad *(radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvr",
                  "dewPt",
                  "feelsLike",
                  "heatIndex",
                  "mslPres",
                  "precip",
                  "radSolar",
                  "radSolarDirect",
                  "radSolarDirectP",
                  "relHum",
                  "sfcPres",
                  "snowfall",
                  "spcHum",
                  "temp",
                  "wetBulb",
                  "windChill",
                  "windDir",
                  "windDir80m",
                  "windDir100m",
                  "windGust",
                  "windSpd",
                  "windSpd80m",
                  "windSpd100m",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hourly historical weather response for a postcode.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryPostcodeHourObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/postcodes/{postcode},{countryCode}/hours/{timestampStart},{timestampEnd}": {
      "get": {
        "tags": [
          "postcodes"
        ],
        "summary": "A contiguous range of hourly weather history for a postcode.",
        "description": "Returns a contiguous range of hourly historical weather data for a postcode. The temporal range provided must not exceed 1 year in duration.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "postcode",
            "in": "path",
            "description": "A postcode string.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "22222"
            }
          },
          {
            "name": "countryCode",
            "in": "path",
            "description": "An uppercase 2-character [ISO 3166-1 Alpha-2 country code](https://developer.weathersourceapis.com/apis/countries-with-postal-code-support/).",
            "required": true,
            "schema": {
              "pattern": "^([A-Z]){2}$",
              "type": "string",
              "example": "US"
            }
          },
          {
            "name": "timestampStart",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally before timestampEnd. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "timestampEnd",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally after timestampStart. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The timestamp field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are also supported:\n* all *(all fields)*\n* allCldCvr *(cldCvr)*\n* allHum *(relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(mslPres, sfcPres)*\n* allRad *(radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvr",
                  "dewPt",
                  "feelsLike",
                  "heatIndex",
                  "mslPres",
                  "precip",
                  "radSolar",
                  "radSolarDirect",
                  "radSolarDirectP",
                  "relHum",
                  "sfcPres",
                  "snowfall",
                  "spcHum",
                  "temp",
                  "wetBulb",
                  "windChill",
                  "windDir",
                  "windDir80m",
                  "windDir100m",
                  "windGust",
                  "windSpd",
                  "windSpd80m",
                  "windSpd100m",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hourly historical weather response for a postcode.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryPostcodeHourObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/dmas/{dmaId}/days/{date}": {
      "get": {
        "tags": [
          "dmas"
        ],
        "summary": "A day of weather history for a DMA.",
        "description": "Returns a single day of historical weather data for a Designated Market Area.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "dmaId",
            "in": "path",
            "description": "A [Designated Market Area ID](https://developer.weathersourceapis.com/apis/supported-dmas/).",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 529
            }
          },
          {
            "name": "date",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The date field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are supported:\n* all *(all fields)*\n* allCldCvr *(derivatives of cldCvr)*\n* allHum *(derivatives of relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(derivatives of mslPres, sfcPres)*\n* allRad *(derivatives of radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(derivatives of dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(derivatives of windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(derivatives of cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvrMin",
                  "cldCvrAvg",
                  "cldCvrMax",
                  "dewPtMin",
                  "dewPtAvg",
                  "dewPtMax",
                  "feelsLikeMin",
                  "feelsLikeAvg",
                  "feelsLikeMax",
                  "heatIndexMin",
                  "heatIndexAvg",
                  "heatIndexMax",
                  "mslPresMin",
                  "mslPresAvg",
                  "mslPresMax",
                  "precip",
                  "radSolarMin",
                  "radSolarAvg",
                  "radSolarMax",
                  "radSolarTot",
                  "radSolarDirectMin",
                  "radSolarDirectAvg",
                  "radSolarDirectMax",
                  "radSolarDirectTot",
                  "radSolarDirectPMin",
                  "radSolarDirectPAvg",
                  "radSolarDirectPMax",
                  "radSolarDirectPTot",
                  "relHumMin",
                  "relHumAvg",
                  "relHumMax",
                  "sfcPresMin",
                  "sfcPresAvg",
                  "sfcPresMax",
                  "snowfall",
                  "spcHumMin",
                  "spcHumAvg",
                  "spcHumMax",
                  "tempMin",
                  "tempAvg",
                  "tempMax",
                  "wetBulbMin",
                  "wetBulbAvg",
                  "wetBulbMax",
                  "windChillMin",
                  "windChillAvg",
                  "windChillMax",
                  "windDirAvg",
                  "windDir80mAvg",
                  "windDir100mAvg",
                  "windGustMax",
                  "windSpdMin",
                  "windSpdAvg",
                  "windSpdMax",
                  "windSpd80mMin",
                  "windSpd80mAvg",
                  "windSpd80mMax",
                  "windSpd100mMin",
                  "windSpd100mAvg",
                  "windSpd100mMax",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Daily historical weather response for a Designated Market Area.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryDmaDayObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/dmas/{dmaId}/days/{dateStart},{dateEnd}": {
      "get": {
        "tags": [
          "dmas"
        ],
        "summary": "A contiguous range of daily weather history for a DMA.",
        "description": "Returns a contiguous range of daily historical weather data for a Designated Market Area. The temporal range provided must not exceed 1 year in duration.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "dmaId",
            "in": "path",
            "description": "A [Designated Market Area ID](https://developer.weathersourceapis.com/apis/supported-dmas/).",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 529
            }
          },
          {
            "name": "dateStart",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value that must occur temporally before dateEnd.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "dateEnd",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value that must occur temporally after dateStart.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The date field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are supported:\n* all *(all fields)*\n* allCldCvr *(derivatives of cldCvr)*\n* allHum *(derivatives of relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(derivatives of mslPres, sfcPres)*\n* allRad *(derivatives of radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(derivatives of dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(derivatives of windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(derivatives of cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvrMin",
                  "cldCvrAvg",
                  "cldCvrMax",
                  "dewPtMin",
                  "dewPtAvg",
                  "dewPtMax",
                  "feelsLikeMin",
                  "feelsLikeAvg",
                  "feelsLikeMax",
                  "heatIndexMin",
                  "heatIndexAvg",
                  "heatIndexMax",
                  "mslPresMin",
                  "mslPresAvg",
                  "mslPresMax",
                  "precip",
                  "radSolarMin",
                  "radSolarAvg",
                  "radSolarMax",
                  "radSolarTot",
                  "radSolarDirectMin",
                  "radSolarDirectAvg",
                  "radSolarDirectMax",
                  "radSolarDirectTot",
                  "radSolarDirectPMin",
                  "radSolarDirectPAvg",
                  "radSolarDirectPMax",
                  "radSolarDirectPTot",
                  "relHumMin",
                  "relHumAvg",
                  "relHumMax",
                  "sfcPresMin",
                  "sfcPresAvg",
                  "sfcPresMax",
                  "snowfall",
                  "spcHumMin",
                  "spcHumAvg",
                  "spcHumMax",
                  "tempMin",
                  "tempAvg",
                  "tempMax",
                  "wetBulbMin",
                  "wetBulbAvg",
                  "wetBulbMax",
                  "windChillMin",
                  "windChillAvg",
                  "windChillMax",
                  "windDirAvg",
                  "windDir80mAvg",
                  "windDir100mAvg",
                  "windGustMax",
                  "windSpdMin",
                  "windSpdAvg",
                  "windSpdMax",
                  "windSpd80mMin",
                  "windSpd80mAvg",
                  "windSpd80mMax",
                  "windSpd100mMin",
                  "windSpd100mAvg",
                  "windSpd100mMax",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Daily historical weather response for a Designated Market Area.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryDmaDayObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/dmas/{dmaId}/hours/{timestamp}": {
      "get": {
        "tags": [
          "dmas"
        ],
        "summary": "An hour of weather history for a DMA",
        "description": "Returns a single hour of historical weather data for a Designated Market Area.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "dmaId",
            "in": "path",
            "description": "A [Designated Market Area ID](https://developer.weathersourceapis.com/apis/supported-dmas/).",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 529
            }
          },
          {
            "name": "timestamp",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The timestamp field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are also supported:\n* all *(all fields)*\n* allCldCvr *(cldCvr)*\n* allHum *(relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(mslPres, sfcPres)*\n* allRad *(radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvr",
                  "dewPt",
                  "feelsLike",
                  "heatIndex",
                  "mslPres",
                  "precip",
                  "radSolar",
                  "radSolarDirect",
                  "radSolarDirectP",
                  "relHum",
                  "sfcPres",
                  "snowfall",
                  "spcHum",
                  "temp",
                  "wetBulb",
                  "windChill",
                  "windDir",
                  "windDir80m",
                  "windDir100m",
                  "windGust",
                  "windSpd",
                  "windSpd80m",
                  "windSpd100m",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hourly historical weather response for a Designated Market Area.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryDmaHourObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/dmas/{dmaId}/hours/{timestampStart},{timestampEnd}": {
      "get": {
        "tags": [
          "dmas"
        ],
        "summary": "A contiguous range of hourly weather history for a DMA.",
        "description": "Returns a contiguous range of hourly historical weather data for a Designated Market Area. The temporal range provided must not exceed 1 year in duration.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "dmaId",
            "in": "path",
            "description": "A [Designated Market Area ID](https://developer.weathersourceapis.com/apis/supported-dmas/).",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 529
            }
          },
          {
            "name": "timestampStart",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally before timestampEnd. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "timestampEnd",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally after timestampStart. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The timestamp field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are also supported:\n* all *(all fields)*\n* allCldCvr *(cldCvr)*\n* allHum *(relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(mslPres, sfcPres)*\n* allRad *(radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvr",
                  "dewPt",
                  "feelsLike",
                  "heatIndex",
                  "mslPres",
                  "precip",
                  "radSolar",
                  "radSolarDirect",
                  "radSolarDirectP",
                  "relHum",
                  "sfcPres",
                  "snowfall",
                  "spcHum",
                  "temp",
                  "wetBulb",
                  "windChill",
                  "windDir",
                  "windDir80m",
                  "windDir100m",
                  "windGust",
                  "windSpd",
                  "windSpd80m",
                  "windSpd100m",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hourly historical weather response for a Designated Market Area.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryDmaHourObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/onpoints/{onpointId}/days/{date}": {
      "get": {
        "tags": [
          "onpoints"
        ],
        "summary": "A day of weather history for an OnPoint™ point.",
        "description": "Returns a single day of historical weather data for an OnPoint™ point.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "onpointId",
            "in": "path",
            "description": "An OnPoint™ ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 10725864
            }
          },
          {
            "name": "date",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The date field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are supported:\n* all *(all fields)*\n* allCldCvr *(derivatives of cldCvr)*\n* allHum *(derivatives of relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(derivatives of mslPres, sfcPres)*\n* allRad *(derivatives of radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(derivatives of dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(derivatives of windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(derivatives of cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvrMin",
                  "cldCvrAvg",
                  "cldCvrMax",
                  "dewPtMin",
                  "dewPtAvg",
                  "dewPtMax",
                  "feelsLikeMin",
                  "feelsLikeAvg",
                  "feelsLikeMax",
                  "heatIndexMin",
                  "heatIndexAvg",
                  "heatIndexMax",
                  "mslPresMin",
                  "mslPresAvg",
                  "mslPresMax",
                  "precip",
                  "radSolarMin",
                  "radSolarAvg",
                  "radSolarMax",
                  "radSolarTot",
                  "radSolarDirectMin",
                  "radSolarDirectAvg",
                  "radSolarDirectMax",
                  "radSolarDirectTot",
                  "radSolarDirectPMin",
                  "radSolarDirectPAvg",
                  "radSolarDirectPMax",
                  "radSolarDirectPTot",
                  "relHumMin",
                  "relHumAvg",
                  "relHumMax",
                  "sfcPresMin",
                  "sfcPresAvg",
                  "sfcPresMax",
                  "snowfall",
                  "spcHumMin",
                  "spcHumAvg",
                  "spcHumMax",
                  "tempMin",
                  "tempAvg",
                  "tempMax",
                  "wetBulbMin",
                  "wetBulbAvg",
                  "wetBulbMax",
                  "windChillMin",
                  "windChillAvg",
                  "windChillMax",
                  "windDirAvg",
                  "windDir80mAvg",
                  "windDir100mAvg",
                  "windGustMax",
                  "windSpdMin",
                  "windSpdAvg",
                  "windSpdMax",
                  "windSpd80mMin",
                  "windSpd80mAvg",
                  "windSpd80mMax",
                  "windSpd100mMin",
                  "windSpd100mAvg",
                  "windSpd100mMax",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Daily historical weather response for an OnPoint™ point.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryOnpointDayObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/onpoints/{onpointId}/days/{dateStart},{dateEnd}": {
      "get": {
        "tags": [
          "onpoints"
        ],
        "summary": "A contiguous range of daily weather history for an OnPoint™ point.",
        "description": "Returns a contiguous range of daily historical weather data for an OnPoint™ point. The temporal range provided must not exceed 1 year in duration.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "onpointId",
            "in": "path",
            "description": "An OnPoint™ ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 10725864
            }
          },
          {
            "name": "dateStart",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value that must occur temporally before dateEnd.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "dateEnd",
            "in": "path",
            "description": "An date formatted as a RFC3339 date value that must occur temporally after dateStart.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2019-12-20"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The date field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are supported:\n* all *(all fields)*\n* allCldCvr *(derivatives of cldCvr)*\n* allHum *(derivatives of relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(derivatives of mslPres, sfcPres)*\n* allRad *(derivatives of radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(derivatives of dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(derivatives of windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(derivatives of cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvrMin",
                  "cldCvrAvg",
                  "cldCvrMax",
                  "dewPtMin",
                  "dewPtAvg",
                  "dewPtMax",
                  "feelsLikeMin",
                  "feelsLikeAvg",
                  "feelsLikeMax",
                  "heatIndexMin",
                  "heatIndexAvg",
                  "heatIndexMax",
                  "mslPresMin",
                  "mslPresAvg",
                  "mslPresMax",
                  "precip",
                  "radSolarMin",
                  "radSolarAvg",
                  "radSolarMax",
                  "radSolarTot",
                  "radSolarDirectMin",
                  "radSolarDirectAvg",
                  "radSolarDirectMax",
                  "radSolarDirectTot",
                  "radSolarDirectPMin",
                  "radSolarDirectPAvg",
                  "radSolarDirectPMax",
                  "radSolarDirectPTot",
                  "relHumMin",
                  "relHumAvg",
                  "relHumMax",
                  "sfcPresMin",
                  "sfcPresAvg",
                  "sfcPresMax",
                  "snowfall",
                  "spcHumMin",
                  "spcHumAvg",
                  "spcHumMax",
                  "tempMin",
                  "tempAvg",
                  "tempMax",
                  "wetBulbMin",
                  "wetBulbAvg",
                  "wetBulbMax",
                  "windChillMin",
                  "windChillAvg",
                  "windChillMax",
                  "windDirAvg",
                  "windDir80mAvg",
                  "windDir100mAvg",
                  "windGustMax",
                  "windSpdMin",
                  "windSpdAvg",
                  "windSpdMax",
                  "windSpd80mMin",
                  "windSpd80mAvg",
                  "windSpd80mMax",
                  "windSpd100mMin",
                  "windSpd100mAvg",
                  "windSpd100mMax",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Daily historical weather response for an OnPoint™ point.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryOnpointDayObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/onpoints/{onpointId}/hours/{timestamp}": {
      "get": {
        "tags": [
          "onpoints"
        ],
        "summary": "An hour of weather history for an OnPoint™ point.",
        "description": "Returns a single hour of historical weather data for an OnPoint™ point.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "onpointId",
            "in": "path",
            "description": "An OnPoint™ ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 10725864
            }
          },
          {
            "name": "timestamp",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The timestamp field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are also supported:\n* all *(all fields)*\n* allCldCvr *(cldCvr)*\n* allHum *(relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(mslPres, sfcPres)*\n* allRad *(radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvr",
                  "dewPt",
                  "feelsLike",
                  "heatIndex",
                  "mslPres",
                  "precip",
                  "radSolar",
                  "radSolarDirect",
                  "radSolarDirectP",
                  "relHum",
                  "sfcPres",
                  "snowfall",
                  "spcHum",
                  "temp",
                  "wetBulb",
                  "windChill",
                  "windDir",
                  "windDir80m",
                  "windDir100m",
                  "windGust",
                  "windSpd",
                  "windSpd80m",
                  "windSpd100m",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hourly historical weather response for an OnPoint™ point.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryOnpointHourObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    },
    "/onpoints/{onpointId}/hours/{timestampStart},{timestampEnd}": {
      "get": {
        "tags": [
          "onpoints"
        ],
        "summary": "A contiguous range of hourly weather history for an OnPoint™ point.",
        "description": "Returns a contiguous range of hourly historical weather data for an OnPoint™ point. The temporal range provided must not exceed 1 year in duration.\n\n**IMPORTANT:** To authenticate to the Weather Source ECMWF History API, each request must contain your API key set to a custom header named `X-API-KEY`. If you do not have a Weather Source API key [sign up for a free 30-day developer account](https://developer.weathersourceapis.com/account/sign-up/). You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n\nWhen using the \\\"Try it out\\\" capability in the documentation, the API key should be added by clicking the green \\\"Authorize\\\" button at the top of the page.\n",
        "parameters": [
          {
            "name": "onpointId",
            "in": "path",
            "description": "An OnPoint™ ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 10725864
            }
          },
          {
            "name": "timestampStart",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally before timestampEnd. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "timestampEnd",
            "in": "path",
            "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally after timestampStart. The UTC offset is required.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2019-12-20T23:00:00-05:00"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "A comma separated list of field names to return. The timestamp field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are also supported:\n* all *(all fields)*\n* allCldCvr *(cldCvr)*\n* allHum *(relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(mslPres, sfcPres)*\n* allRad *(radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "example": [
                "all"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "dataState",
                  "cldCvr",
                  "dewPt",
                  "feelsLike",
                  "heatIndex",
                  "mslPres",
                  "precip",
                  "radSolar",
                  "radSolarDirect",
                  "radSolarDirectP",
                  "relHum",
                  "sfcPres",
                  "snowfall",
                  "spcHum",
                  "temp",
                  "wetBulb",
                  "windChill",
                  "windDir",
                  "windDir80m",
                  "windDir100m",
                  "windGust",
                  "windSpd",
                  "windSpd80m",
                  "windSpd100m",
                  "all",
                  "allCldCvr",
                  "allHum",
                  "allPrecip",
                  "allPres",
                  "allRad",
                  "allTemp",
                  "allWind",
                  "popular"
                ]
              }
            }
          },
          {
            "name": "unitScale",
            "in": "query",
            "description": "The unit scale for returned values.<br>",
            "required": false,
            "schema": {
              "type": "string",
              "example": "IMPERIAL",
              "default": "IMPERIAL",
              "enum": [
                "IMPERIAL",
                "METRIC",
                "SI"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hourly historical weather response for an OnPoint™ point.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecmwfhistoryOnpointHourObj"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/errorResponse"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ecmwfhistoryDayArr": {
        "type": "array",
        "description": "An array of daily ECMWF weather history objects.",
        "items": {
          "$ref": "#/components/schemas/ecmwfhistoryDayObj"
        }
      },
      "ecmwfhistoryDayObj": {
        "required": [
          "dataState",
          "date"
        ],
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/date"
          },
          "dataState": {
            "$ref": "#/components/schemas/dataState"
          },
          "cldCvrMin": {
            "$ref": "#/components/schemas/cldCvrMin"
          },
          "cldCvrAvg": {
            "$ref": "#/components/schemas/cldCvrAvg"
          },
          "cldCvrMax": {
            "$ref": "#/components/schemas/cldCvrMax"
          },
          "dewPtMin": {
            "$ref": "#/components/schemas/dewPtMin"
          },
          "dewPtAvg": {
            "$ref": "#/components/schemas/dewPtAvg"
          },
          "dewPtMax": {
            "$ref": "#/components/schemas/dewPtMax"
          },
          "feelsLikeMin": {
            "$ref": "#/components/schemas/feelsLikeMin"
          },
          "feelsLikeAvg": {
            "$ref": "#/components/schemas/feelsLikeAvg"
          },
          "feelsLikeMax": {
            "$ref": "#/components/schemas/feelsLikeMax"
          },
          "heatIndexMin": {
            "$ref": "#/components/schemas/heatIndexMin"
          },
          "heatIndexAvg": {
            "$ref": "#/components/schemas/heatIndexAvg"
          },
          "heatIndexMax": {
            "$ref": "#/components/schemas/heatIndexMax"
          },
          "mslPresMin": {
            "$ref": "#/components/schemas/mslPresMin"
          },
          "mslPresAvg": {
            "$ref": "#/components/schemas/mslPresAvg"
          },
          "mslPresMax": {
            "$ref": "#/components/schemas/mslPresMax"
          },
          "precip": {
            "$ref": "#/components/schemas/precip"
          },
          "radSolarMin": {
            "$ref": "#/components/schemas/radSolarMin"
          },
          "radSolarAvg": {
            "$ref": "#/components/schemas/radSolarAvg"
          },
          "radSolarMax": {
            "$ref": "#/components/schemas/radSolarMax"
          },
          "radSolarTot": {
            "$ref": "#/components/schemas/radSolarTot"
          },
          "radSolarDirectMin": {
            "$ref": "#/components/schemas/radSolarDirectMin"
          },
          "radSolarDirectAvg": {
            "$ref": "#/components/schemas/radSolarDirectAvg"
          },
          "radSolarDirectMax": {
            "$ref": "#/components/schemas/radSolarDirectMax"
          },
          "radSolarDirectTot": {
            "$ref": "#/components/schemas/radSolarDirectTot"
          },
          "radSolarDirectPMin": {
            "$ref": "#/components/schemas/radSolarDirectPMin"
          },
          "radSolarDirectPAvg": {
            "$ref": "#/components/schemas/radSolarDirectPAvg"
          },
          "radSolarDirectPMax": {
            "$ref": "#/components/schemas/radSolarDirectPMax"
          },
          "radSolarDirectPTot": {
            "$ref": "#/components/schemas/radSolarDirectPTot"
          },
          "relHumMin": {
            "$ref": "#/components/schemas/relHumMin"
          },
          "relHumAvg": {
            "$ref": "#/components/schemas/relHumAvg"
          },
          "relHumMax": {
            "$ref": "#/components/schemas/relHumMax"
          },
          "sfcPresMin": {
            "$ref": "#/components/schemas/sfcPresMin"
          },
          "sfcPresAvg": {
            "$ref": "#/components/schemas/sfcPresAvg"
          },
          "sfcPresMax": {
            "$ref": "#/components/schemas/sfcPresMax"
          },
          "snowfall": {
            "$ref": "#/components/schemas/snowfall"
          },
          "spcHumMin": {
            "$ref": "#/components/schemas/spcHumMin"
          },
          "spcHumAvg": {
            "$ref": "#/components/schemas/spcHumAvg"
          },
          "spcHumMax": {
            "$ref": "#/components/schemas/spcHumMax"
          },
          "tempMin": {
            "$ref": "#/components/schemas/tempMin"
          },
          "tempAvg": {
            "$ref": "#/components/schemas/tempAvg"
          },
          "tempMax": {
            "$ref": "#/components/schemas/tempMax"
          },
          "wetBulbMin": {
            "$ref": "#/components/schemas/wetBulbMin"
          },
          "wetBulbAvg": {
            "$ref": "#/components/schemas/wetBulbAvg"
          },
          "wetBulbMax": {
            "$ref": "#/components/schemas/wetBulbMax"
          },
          "windChillMin": {
            "$ref": "#/components/schemas/windChillMin"
          },
          "windChillAvg": {
            "$ref": "#/components/schemas/windChillAvg"
          },
          "windChillMax": {
            "$ref": "#/components/schemas/windChillMax"
          },
          "windDirAvg": {
            "$ref": "#/components/schemas/windDirAvg"
          },
          "windDir80mAvg": {
            "$ref": "#/components/schemas/windDir80mAvg"
          },
          "windDir100mAvg": {
            "$ref": "#/components/schemas/windDir100mAvg"
          },
          "windGustMax": {
            "$ref": "#/components/schemas/windGustMax"
          },
          "windSpdMin": {
            "$ref": "#/components/schemas/windSpdMin"
          },
          "windSpdAvg": {
            "$ref": "#/components/schemas/windSpdAvg"
          },
          "windSpdMax": {
            "$ref": "#/components/schemas/windSpdMax"
          },
          "windSpd80mMin": {
            "$ref": "#/components/schemas/windSpd80mMin"
          },
          "windSpd80mAvg": {
            "$ref": "#/components/schemas/windSpd80mAvg"
          },
          "windSpd80mMax": {
            "$ref": "#/components/schemas/windSpd80mMax"
          },
          "windSpd100mMin": {
            "$ref": "#/components/schemas/windSpd100mMin"
          },
          "windSpd100mAvg": {
            "$ref": "#/components/schemas/windSpd100mAvg"
          },
          "windSpd100mMax": {
            "$ref": "#/components/schemas/windSpd100mMax"
          }
        },
        "description": "A daily ECMWF weather history object."
      },
      "ecmwfhistoryHourArr": {
        "type": "array",
        "description": "An array of hourly ECMWF weather history objects.",
        "items": {
          "$ref": "#/components/schemas/ecmwfhistoryHourObj"
        }
      },
      "ecmwfhistoryHourObj": {
        "required": [
          "dataState",
          "timestamp"
        ],
        "type": "object",
        "properties": {
          "timestamp": {
            "$ref": "#/components/schemas/timestamp"
          },
          "dataState": {
            "$ref": "#/components/schemas/dataState"
          },
          "cldCvr": {
            "$ref": "#/components/schemas/cldCvr"
          },
          "dewPt": {
            "$ref": "#/components/schemas/dewPt"
          },
          "feelsLike": {
            "$ref": "#/components/schemas/feelsLike"
          },
          "heatIndex": {
            "$ref": "#/components/schemas/heatIndex"
          },
          "mslPres": {
            "$ref": "#/components/schemas/mslPres"
          },
          "precip": {
            "$ref": "#/components/schemas/precip"
          },
          "radSolar": {
            "$ref": "#/components/schemas/radSolar"
          },
          "radSolarDirect": {
            "$ref": "#/components/schemas/radSolarDirect"
          },
          "radSolarDirectP": {
            "$ref": "#/components/schemas/radSolarDirectP"
          },
          "relHum": {
            "$ref": "#/components/schemas/relHum"
          },
          "sfcPres": {
            "$ref": "#/components/schemas/sfcPres"
          },
          "snowfall": {
            "$ref": "#/components/schemas/snowfall"
          },
          "spcHum": {
            "$ref": "#/components/schemas/spcHum"
          },
          "temp": {
            "$ref": "#/components/schemas/temp"
          },
          "wetBulb": {
            "$ref": "#/components/schemas/wetBulb"
          },
          "windChill": {
            "$ref": "#/components/schemas/windChill"
          },
          "windDir": {
            "$ref": "#/components/schemas/windDir"
          },
          "windDir80m": {
            "$ref": "#/components/schemas/windDir80m"
          },
          "windDir100m": {
            "$ref": "#/components/schemas/windDir100m"
          },
          "windGust": {
            "$ref": "#/components/schemas/windGust"
          },
          "windSpd": {
            "$ref": "#/components/schemas/windSpd"
          },
          "windSpd80m": {
            "$ref": "#/components/schemas/windSpd80m"
          },
          "windSpd100m": {
            "$ref": "#/components/schemas/windSpd100m"
          }
        },
        "description": "An hourly ECMWF weather history object."
      },
      "ecmwfhistoryPointDayObj": {
        "required": [
          "dateRange",
          "fieldList",
          "history",
          "location"
        ],
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/pointObj"
          },
          "dateRange": {
            "$ref": "#/components/schemas/dateRangeObj"
          },
          "fieldList": {
            "$ref": "#/components/schemas/fieldListDayObj"
          },
          "history": {
            "$ref": "#/components/schemas/ecmwfhistoryDayArr"
          }
        },
        "description": "Daily Latitude/Longitude ECMWF historical weather object"
      },
      "ecmwfhistoryPointHourObj": {
        "required": [
          "fieldList",
          "history",
          "location",
          "timestampRange"
        ],
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/pointObj"
          },
          "timestampRange": {
            "$ref": "#/components/schemas/timestampRangeObj"
          },
          "fieldList": {
            "$ref": "#/components/schemas/fieldListHourObj"
          },
          "history": {
            "$ref": "#/components/schemas/ecmwfhistoryHourArr"
          }
        },
        "description": "Hourly Latitude/Longitude ECMWF historical weather object"
      },
      "ecmwfhistoryPostcodeDayObj": {
        "required": [
          "dateRange",
          "fieldList",
          "history",
          "location"
        ],
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/postcodeObj"
          },
          "dateRange": {
            "$ref": "#/components/schemas/dateRangeObj"
          },
          "fieldList": {
            "$ref": "#/components/schemas/fieldListDayObj"
          },
          "history": {
            "$ref": "#/components/schemas/ecmwfhistoryDayArr"
          }
        },
        "description": "Daily Postcode ECMWF historical weather object"
      },
      "ecmwfhistoryPostcodeHourObj": {
        "required": [
          "fieldList",
          "history",
          "location",
          "timestampRange"
        ],
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/postcodeObj"
          },
          "timestampRange": {
            "$ref": "#/components/schemas/timestampRangeObj"
          },
          "fieldList": {
            "$ref": "#/components/schemas/fieldListHourObj"
          },
          "history": {
            "$ref": "#/components/schemas/ecmwfhistoryHourArr"
          }
        },
        "description": "Hourly Postcode ECMWF historical weather object"
      },
      "ecmwfhistoryDmaDayObj": {
        "required": [
          "dateRange",
          "fieldList",
          "history",
          "location"
        ],
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/dmaObj"
          },
          "dateRange": {
            "$ref": "#/components/schemas/dateRangeObj"
          },
          "fieldList": {
            "$ref": "#/components/schemas/fieldListDayObj"
          },
          "history": {
            "$ref": "#/components/schemas/ecmwfhistoryDayArr"
          }
        },
        "description": "Daily Designated Market Area ECMWF historical weather object"
      },
      "ecmwfhistoryDmaHourObj": {
        "required": [
          "fieldList",
          "history",
          "location",
          "timestampRange"
        ],
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/dmaObj"
          },
          "timestampRange": {
            "$ref": "#/components/schemas/timestampRangeObj"
          },
          "fieldList": {
            "$ref": "#/components/schemas/fieldListHourObj"
          },
          "history": {
            "$ref": "#/components/schemas/ecmwfhistoryHourArr"
          }
        },
        "description": "Hourly Designated Market Area ECMWF historical weather object"
      },
      "ecmwfhistoryOnpointDayObj": {
        "required": [
          "dateRange",
          "fieldList",
          "history",
          "location"
        ],
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/onpointObj"
          },
          "dateRange": {
            "$ref": "#/components/schemas/dateRangeObj"
          },
          "fieldList": {
            "$ref": "#/components/schemas/fieldListDayObj"
          },
          "history": {
            "$ref": "#/components/schemas/ecmwfhistoryDayArr"
          }
        },
        "description": "Daily OnPoint™ ECMWF historical weather object"
      },
      "ecmwfhistoryOnpointHourObj": {
        "required": [
          "fieldList",
          "history",
          "location",
          "timestampRange"
        ],
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/onpointObj"
          },
          "timestampRange": {
            "$ref": "#/components/schemas/timestampRangeObj"
          },
          "fieldList": {
            "$ref": "#/components/schemas/fieldListHourObj"
          },
          "history": {
            "$ref": "#/components/schemas/ecmwfhistoryHourArr"
          }
        },
        "description": "Hourly OnPoint™ ECMWF historical weather object"
      },
      "fieldListDayObj": {
        "title": "fieldListObj",
        "required": [
          "fields"
        ],
        "type": "object",
        "properties": {
          "fields": {
            "$ref": "#/components/schemas/fields"
          }
        },
        "description": "A list of returned field names the associated units."
      },
      "fieldListHourObj": {
        "title": "fieldListObj",
        "required": [
          "fields"
        ],
        "type": "object",
        "properties": {
          "fields": {
            "$ref": "#/components/schemas/fields"
          }
        },
        "description": "A list of returned field names the associated units."
      },
      "dataState": {
        "type": "string",
        "description": "Data State indicates if the source data is provisional, interim, or final.",
        "example": "FINAL",
        "enum": [
          "UNKNOWN",
          "PROVISIONAL",
          "INTERIM",
          "FINAL"
        ]
      },
      "cldCvr": {
        "maximum": 100,
        "minimum": 0,
        "type": "number",
        "description": "Cloud Cover as a percent value.",
        "format": "float",
        "example": 100
      },
      "cldCvrMin": {
        "maximum": 100,
        "minimum": 0,
        "type": "number",
        "description": "Minimum Cloud Cover as a percent value.",
        "format": "float",
        "example": 22
      },
      "cldCvrAvg": {
        "maximum": 100,
        "minimum": 0,
        "type": "number",
        "description": "Average Cloud Cover as a percent value.",
        "format": "float",
        "example": 78
      },
      "cldCvrMax": {
        "maximum": 100,
        "minimum": 0,
        "type": "number",
        "description": "Maximum Cloud Cover as a percent value.",
        "format": "float",
        "example": 100
      },
      "dewPt": {
        "type": "number",
        "description": "Dew Point in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 45.92
      },
      "dewPtMin": {
        "type": "number",
        "description": "Minimum Dew Point in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 33.8
      },
      "dewPtAvg": {
        "type": "number",
        "description": "Average Dew Point in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 43.5
      },
      "dewPtMax": {
        "type": "number",
        "description": "Maximum Dew Point in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 50.6
      },
      "feelsLike": {
        "type": "number",
        "description": "Feels Like Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 46.75
      },
      "feelsLikeMin": {
        "type": "number",
        "description": "Minimum Feels Like Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 42.3
      },
      "feelsLikeAvg": {
        "type": "number",
        "description": "Average Feels Like Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 49.8
      },
      "feelsLikeMax": {
        "type": "number",
        "description": "Maximum Feels Like Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 55.2
      },
      "heatIndex": {
        "type": "number",
        "description": "Heat Index in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 46.75
      },
      "heatIndexMin": {
        "type": "number",
        "description": "Minimum Heat Index in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 43.5
      },
      "heatIndexAvg": {
        "type": "number",
        "description": "Average Heat Index in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 50.2
      },
      "heatIndexMax": {
        "type": "number",
        "description": "Maximum Heat Index in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 55.3
      },
      "mslPres": {
        "type": "number",
        "description": "Mean Sea Level Pressure in millibars.",
        "format": "float",
        "example": 1017.46
      },
      "mslPresMin": {
        "type": "number",
        "description": "Minimum Mean Sea Level Pressure in millibars.",
        "format": "float",
        "example": 1017.9
      },
      "mslPresAvg": {
        "type": "number",
        "description": "Average Mean Sea Level Pressure in millibars.",
        "format": "float",
        "example": 1020
      },
      "mslPresMax": {
        "type": "number",
        "description": "Maximum Mean Sea Level Pressure in millibars.",
        "format": "float",
        "example": 1021.9
      },
      "precip": {
        "type": "number",
        "description": "Total precipitation in inches (imperial) or centimeters (metric, si).",
        "format": "float",
        "example": 0
      },
      "radSolar": {
        "type": "number",
        "description": "Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 0
      },
      "radSolarMin": {
        "type": "number",
        "description": "Minimum Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 0
      },
      "radSolarAvg": {
        "type": "number",
        "description": "Average Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 84.3
      },
      "radSolarMax": {
        "type": "number",
        "description": "Maximum Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 436.5
      },
      "radSolarTot": {
        "type": "number",
        "description": "Total Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 2023.1
      },
      "radSolarDirect": {
        "type": "number",
        "description": "Direct Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 245.3
      },
      "radSolarDirectMin": {
        "type": "number",
        "description": "Minimum Direct Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 0
      },
      "radSolarDirectAvg": {
        "type": "number",
        "description": "Average Direct Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 56.1
      },
      "radSolarDirectMax": {
        "type": "number",
        "description": "Maximum Direct Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 310.8
      },
      "radSolarDirectTot": {
        "type": "number",
        "description": "Total Direct Solar Radiation in watts per square meter.",
        "format": "float",
        "example": 1456.2
      },
      "radSolarDirectP": {
        "type": "number",
        "description": "Direct Solar Radiation on a plane perpendicular to the direction of the Sun in watts per square meter.",
        "format": "float",
        "example": 251.7
      },
      "radSolarDirectPMin": {
        "type": "number",
        "description": "Minimum Direct Solar Radiation on a plane perpendicular to the direction of the Sun in watts per square meter.",
        "format": "float",
        "example": 0
      },
      "radSolarDirectPAvg": {
        "type": "number",
        "description": "Average Direct Solar Radiation on a plane perpendicular to the direction of the Sun in watts per square meter.",
        "format": "float",
        "example": 59.2
      },
      "radSolarDirectPMax": {
        "type": "number",
        "description": "Maximum Direct Solar Radiation on a plane perpendicular to the direction of the Sun in watts per square meter.",
        "format": "float",
        "example": 325.6
      },
      "radSolarDirectPTot": {
        "type": "number",
        "description": "Total Direct Solar Radiation on a plane perpendicular to the direction of the Sun in watts per square meter.",
        "format": "float",
        "example": 1540.8
      },
      "relHum": {
        "maximum": 100,
        "minimum": 0,
        "type": "number",
        "description": "Relative humidity as a percent value.",
        "format": "float",
        "example": 96.87
      },
      "relHumMin": {
        "maximum": 100,
        "minimum": 0,
        "type": "number",
        "description": "Minimum Relative humidity as a percent value.",
        "format": "float",
        "example": 62.1
      },
      "relHumAvg": {
        "maximum": 100,
        "minimum": 0,
        "type": "number",
        "description": "Average Relative humidity as a percent value.",
        "format": "float",
        "example": 79
      },
      "relHumMax": {
        "maximum": 100,
        "minimum": 0,
        "type": "number",
        "description": "Maximum Relative humidity as a percent value.",
        "format": "float",
        "example": 98
      },
      "sfcPres": {
        "type": "number",
        "description": "Surface pressure in millibars.",
        "format": "float",
        "example": 1013.83
      },
      "sfcPresMin": {
        "type": "number",
        "description": "Minimum Surface pressure in millibars.",
        "format": "float",
        "example": 1015.6
      },
      "sfcPresAvg": {
        "type": "number",
        "description": "Average Surface pressure in millibars.",
        "format": "float",
        "example": 1018.3
      },
      "sfcPresMax": {
        "type": "number",
        "description": "Maximum Surface pressure in millibars.",
        "format": "float",
        "example": 1020.8
      },
      "snowfall": {
        "type": "number",
        "description": "Total snowfall in inches (imperial) or centimeters (metric, si).",
        "format": "float",
        "example": 0
      },
      "spcHum": {
        "type": "number",
        "description": "Specific humidity in grams per kilograms.",
        "format": "float",
        "example": 6.49
      },
      "spcHumMin": {
        "type": "number",
        "description": "Minimum Specific humidity in grams per kilograms.",
        "format": "float",
        "example": 4
      },
      "spcHumAvg": {
        "type": "number",
        "description": "Average Specific humidity in grams per kilograms.",
        "format": "float",
        "example": 6
      },
      "spcHumMax": {
        "type": "number",
        "description": "Maximum Specific humidity in grams per kilograms.",
        "format": "float",
        "example": 7.7
      },
      "temp": {
        "type": "number",
        "description": "Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 46.75
      },
      "tempMin": {
        "type": "number",
        "description": "Minimum Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 43.5
      },
      "tempAvg": {
        "type": "number",
        "description": "Average Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 50.2
      },
      "tempMax": {
        "type": "number",
        "description": "Maximum Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 55.3
      },
      "wetBulb": {
        "type": "number",
        "description": "Wet Bulb Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 46.32
      },
      "wetBulbMin": {
        "type": "number",
        "description": "Minimum Wet Bulb Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 39.5
      },
      "wetBulbAvg": {
        "type": "number",
        "description": "Average Wet Bulb Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 47
      },
      "wetBulbMax": {
        "type": "number",
        "description": "Maximum Wet Bulb Temperature in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 51
      },
      "windChill": {
        "type": "number",
        "description": "Wind Chill in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 46.75
      },
      "windChillMin": {
        "type": "number",
        "description": "Minimum Wind Chill in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 42.3
      },
      "windChillAvg": {
        "type": "number",
        "description": "Average Wind Chill in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 49.8
      },
      "windChillMax": {
        "type": "number",
        "description": "Maximum Wind Chill in Degrees Fahrenheit (imperial), Celsius (metric), or Kelvin (si).",
        "format": "float",
        "example": 55.2
      },
      "windDir": {
        "maximum": 360,
        "minimum": 0,
        "type": "number",
        "description": "Wind direction at 10 meters in Degrees (0 or 360 = North, 90 = East, South = 180, West = 270).",
        "format": "float",
        "example": 302.6
      },
      "windDirAvg": {
        "maximum": 360,
        "minimum": 0,
        "type": "number",
        "description": "Average Wind direction at 10 meters in Degrees (0 or 360 = North, 90 = East, South = 180, West = 270).",
        "format": "float",
        "example": 354
      },
      "windDir80m": {
        "maximum": 360,
        "minimum": 0,
        "type": "number",
        "description": "Wind direction at 80 meters in Degrees (0 or 360 = North, 90 = East, South = 180, West = 270).",
        "format": "float",
        "example": 111.89
      },
      "windDir80mAvg": {
        "maximum": 360,
        "minimum": 0,
        "type": "number",
        "description": "Average Wind direction at 80 meters in Degrees (0 or 360 = North, 90 = East, South = 180, West = 270).",
        "format": "float",
        "example": 334
      },
      "windDir100m": {
        "maximum": 360,
        "minimum": 0,
        "type": "number",
        "description": "Wind direction at 100 meters in Degrees (0 or 360 = North, 90 = East, South = 180, West = 270).",
        "format": "float",
        "example": 148.96
      },
      "windDir100mAvg": {
        "maximum": 360,
        "minimum": 0,
        "type": "number",
        "description": "Average Wind direction at 100 meters in Degrees (0 or 360 = North, 90 = East, South = 180, West = 270).",
        "format": "float",
        "example": 334
      },
      "windGust": {
        "type": "number",
        "description": "Wind gust speed at 10 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 8.5
      },
      "windGustMax": {
        "type": "number",
        "description": "Maximum Wind gust speed at 10 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 12.3
      },
      "windSpd": {
        "type": "number",
        "description": "Wind speed at 10 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 0.84
      },
      "windSpdMin": {
        "type": "number",
        "description": "Minimum Wind speed at 10 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 0.3
      },
      "windSpdAvg": {
        "type": "number",
        "description": "Average Wind speed at 10 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 2.3
      },
      "windSpdMax": {
        "type": "number",
        "description": "Maximum Wind speed at 10 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 5.1
      },
      "windSpd80m": {
        "type": "number",
        "description": "Wind speed at 80 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 4.38
      },
      "windSpd80mMin": {
        "type": "number",
        "description": "Minimum Wind speed at 80 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 1.4
      },
      "windSpd80mAvg": {
        "type": "number",
        "description": "Average Wind speed at 80 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 6.8
      },
      "windSpd80mMax": {
        "type": "number",
        "description": "Maximum Wind speed at 80 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 11.6
      },
      "windSpd100m": {
        "type": "number",
        "description": "Wind speed at 100 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 5.12
      },
      "windSpd100mMin": {
        "type": "number",
        "description": "Minimum Wind speed at 100 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 1.8
      },
      "windSpd100mAvg": {
        "type": "number",
        "description": "Average Wind speed at 100 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 7.5
      },
      "windSpd100mMax": {
        "type": "number",
        "description": "Maximum Wind speed at 100 meters in miles per hour (imperial) or km/hour (metric, si).",
        "format": "float",
        "example": 13.2
      },
      "errorObj": {
        "type": "object",
        "properties": {
          "errorCode": {
            "maximum": 600,
            "minimum": 100,
            "type": "integer",
            "example": 404
          },
          "errorMessage": {
            "type": "string",
            "example": "NOT FOUND. Item not found."
          }
        }
      },
      "date": {
        "type": "string",
        "description": "A date formatted as an RFC3339 date value.",
        "format": "date",
        "example": "2019-12-20"
      },
      "timestamp": {
        "type": "string",
        "description": "A timestamp formatted as an RFC3339 date-time value.",
        "format": "date-time",
        "example": "2019-12-20T23:00:00-05:00"
      },
      "pointObj": {
        "required": [
          "boundingPoints",
          "elevation",
          "grid",
          "latitude",
          "longitude",
          "timezone"
        ],
        "type": "object",
        "properties": {
          "latitude": {
            "$ref": "#/components/schemas/latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/longitude"
          },
          "timezone": {
            "$ref": "#/components/schemas/timezone"
          },
          "countryCode": {
            "$ref": "#/components/schemas/countryCode"
          },
          "countryName": {
            "$ref": "#/components/schemas/countryName"
          },
          "subdivCode": {
            "$ref": "#/components/schemas/subdivCode"
          },
          "subdivName": {
            "$ref": "#/components/schemas/subdivName"
          },
          "boundingPoints": {
            "$ref": "#/components/schemas/boundingPoints"
          },
          "grid": {
            "$ref": "#/components/schemas/grid"
          },
          "elevation": {
            "$ref": "#/components/schemas/elevation"
          }
        },
        "description": "Metadata object for a postcode"
      },
      "latitude": {
        "maximum": 90,
        "minimum": -90,
        "type": "number",
        "description": "A latitude value between -90° and 90°.",
        "format": "float",
        "example": 38.8552
      },
      "longitude": {
        "maximum": 180,
        "minimum": -180,
        "type": "number",
        "description": "A longitude value between -180° (West) and 180° (East).",
        "format": "float",
        "example": -77.0513
      },
      "timezone": {
        "type": "string",
        "description": "An Olson timezone ID.",
        "example": "America/New_York"
      },
      "countryCode": {
        "type": "string",
        "description": "An [ISO 3166-1 Alpha-2 country code](https://developer.weathersourceapis.com/apis/countries-with-postal-code-support/).",
        "example": "US"
      },
      "countryName": {
        "type": "string",
        "description": "A common country name.",
        "example": "United States of America"
      },
      "subdivCode": {
        "type": "string",
        "description": "An ISO 3166-2 country subdivision code.",
        "example": "US-VA"
      },
      "subdivName": {
        "type": "string",
        "description": "A common country subdivision name.",
        "example": "Virginia"
      },
      "boundingPoints": {
        "type": "array",
        "description": "A list of OnPoint™ points related to the location",
        "items": {
          "$ref": "#/components/schemas/boundingPoints_inner"
        }
      },
      "onpointId": {
        "type": "integer",
        "description": "An OnPoint™ ID.",
        "example": 10725864
      },
      "grid": {
        "type": "string",
        "description": "The OnPoint™ grid on which the resource exists.",
        "example": "NORTH_AMERICA_GRID",
        "enum": [
          "GLOBAL_GRID",
          "NORTH_AMERICA_GRID"
        ]
      },
      "distance": {
        "type": "number",
        "description": "A distance from the provided point in miles.",
        "format": "float",
        "example": 2.6772
      },
      "elevation": {
        "type": "number",
        "description": "The elevation above sea level of a location in meters",
        "format": "float",
        "example": 173.5
      },
      "dateRangeObj": {
        "required": [
          "dateEnd",
          "dateStart"
        ],
        "type": "object",
        "properties": {
          "dateStart": {
            "$ref": "#/components/schemas/dateStart"
          },
          "dateEnd": {
            "$ref": "#/components/schemas/dateEnd"
          }
        },
        "description": "A date range object."
      },
      "dateStart": {
        "type": "string",
        "description": "A start date for a date range formatted as an RFC3339 date value.",
        "format": "date",
        "example": "2019-12-20"
      },
      "dateEnd": {
        "type": "string",
        "description": "An end date for a date range formatted as an RFC3339 date value.",
        "format": "date",
        "example": "2019-12-20"
      },
      "timestampRangeObj": {
        "required": [
          "timestampEnd",
          "timestampStart"
        ],
        "type": "object",
        "properties": {
          "timestampStart": {
            "$ref": "#/components/schemas/timestampStart"
          },
          "timestampEnd": {
            "$ref": "#/components/schemas/timestampEnd"
          }
        },
        "description": "A timestamp range object"
      },
      "timestampStart": {
        "type": "string",
        "description": "A start timestamp for a timestamp range formatted as an RFC3339 date-time value.",
        "format": "date-time",
        "example": "2019-12-20T23:00:00-05:00"
      },
      "timestampEnd": {
        "type": "string",
        "description": "An end timestamp for a timestamp range formatted as an RFC3339 date-time value.",
        "format": "date-time",
        "example": "2019-12-20T23:00:00-05:00"
      },
      "postcodeObj": {
        "required": [
          "boundingPoints",
          "countryCode",
          "countryName",
          "elevation",
          "grid",
          "latitude",
          "longitude",
          "postcode",
          "timezone"
        ],
        "type": "object",
        "properties": {
          "postcode": {
            "$ref": "#/components/schemas/postcode"
          },
          "latitude": {
            "$ref": "#/components/schemas/latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/longitude"
          },
          "timezone": {
            "$ref": "#/components/schemas/timezone"
          },
          "countryCode": {
            "$ref": "#/components/schemas/countryCode"
          },
          "countryName": {
            "$ref": "#/components/schemas/countryName"
          },
          "subdivCode": {
            "$ref": "#/components/schemas/subdivCode"
          },
          "subdivName": {
            "$ref": "#/components/schemas/subdivName"
          },
          "boundingPoints": {
            "$ref": "#/components/schemas/boundingPoints"
          },
          "grid": {
            "$ref": "#/components/schemas/grid"
          },
          "elevation": {
            "$ref": "#/components/schemas/elevation"
          }
        },
        "description": "A postcode location metadata object"
      },
      "postcode": {
        "type": "string",
        "description": "A postcode string.",
        "example": "22222"
      },
      "dmaObj": {
        "required": [
          "countryCode",
          "countryName",
          "dmaId",
          "dmaName",
          "grid",
          "population",
          "samplePoints",
          "timezone"
        ],
        "type": "object",
        "properties": {
          "dmaId": {
            "$ref": "#/components/schemas/dmaId"
          },
          "dmaName": {
            "$ref": "#/components/schemas/dmaName"
          },
          "timezone": {
            "$ref": "#/components/schemas/timezone"
          },
          "population": {
            "$ref": "#/components/schemas/population"
          },
          "countryCode": {
            "$ref": "#/components/schemas/countryCode"
          },
          "countryName": {
            "$ref": "#/components/schemas/countryName"
          },
          "samplePoints": {
            "$ref": "#/components/schemas/samplePoints"
          },
          "grid": {
            "$ref": "#/components/schemas/grid"
          }
        },
        "description": "A Designated Market Area location metadata object"
      },
      "dmaId": {
        "type": "integer",
        "description": "A [Designated Market Area ID](https://developer.weathersourceapis.com/apis/supported-dmas/).",
        "example": 529
      },
      "dmaName": {
        "type": "string",
        "description": "A Designated Market Area name.",
        "example": "Louisville"
      },
      "population": {
        "type": "integer",
        "description": "The population as represented in the 2010 census.",
        "example": 1584746
      },
      "samplePoints": {
        "type": "array",
        "description": "A list of OnPoint™ points used for interpolation for the Designated Market Area. These points are the OnPoint™ ID closest to the centroid of the 10 most populous  postcodes within the target DMA.",
        "items": {
          "$ref": "#/components/schemas/samplePoints_inner"
        }
      },
      "distancePop": {
        "type": "integer",
        "description": "The difference in population for the whole Designated Market Area and the population for the postcode represented by this sample point.",
        "example": 1536552
      },
      "onpointObj": {
        "required": [
          "elevation",
          "grid",
          "latitude",
          "longitude",
          "onpointId",
          "timezone"
        ],
        "type": "object",
        "properties": {
          "onpointId": {
            "$ref": "#/components/schemas/onpointId"
          },
          "latitude": {
            "$ref": "#/components/schemas/latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/longitude"
          },
          "timezone": {
            "$ref": "#/components/schemas/timezone"
          },
          "countryCode": {
            "$ref": "#/components/schemas/countryCode"
          },
          "countryName": {
            "$ref": "#/components/schemas/countryName"
          },
          "subdivCode": {
            "$ref": "#/components/schemas/subdivCode"
          },
          "subdivName": {
            "$ref": "#/components/schemas/subdivName"
          },
          "grid": {
            "$ref": "#/components/schemas/grid"
          },
          "elevation": {
            "$ref": "#/components/schemas/elevation"
          }
        },
        "description": "An OnPoint™ point location metadata object"
      },
      "fields": {
        "type": "object",
        "additionalProperties": {
          "type": "string",
          "description": "Unit value for field identified in the related key.",
          "example": "Fahrenheit"
        }
      },
      "boundingPoints_inner": {
        "required": [
          "distance",
          "elevation",
          "grid",
          "latitude",
          "longitude",
          "onpointId"
        ],
        "type": "object",
        "properties": {
          "onpointId": {
            "$ref": "#/components/schemas/onpointId"
          },
          "latitude": {
            "$ref": "#/components/schemas/latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/longitude"
          },
          "grid": {
            "$ref": "#/components/schemas/grid"
          },
          "distance": {
            "$ref": "#/components/schemas/distance"
          },
          "elevation": {
            "$ref": "#/components/schemas/elevation"
          }
        }
      },
      "samplePoints_inner": {
        "required": [
          "distance",
          "elevation",
          "grid",
          "latitude",
          "longitude",
          "onpointId"
        ],
        "type": "object",
        "properties": {
          "onpointId": {
            "$ref": "#/components/schemas/onpointId"
          },
          "latitude": {
            "$ref": "#/components/schemas/latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/longitude"
          },
          "grid": {
            "$ref": "#/components/schemas/grid"
          },
          "distance": {
            "$ref": "#/components/schemas/distancePop"
          },
          "elevation": {
            "$ref": "#/components/schemas/elevation"
          }
        }
      }
    },
    "responses": {
      "errorResponse": {
        "description": "Unexpected error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errorObj"
            }
          }
        }
      }
    },
    "parameters": {
      "fieldsDay": {
        "name": "fields",
        "in": "query",
        "description": "A comma separated list of field names to return. The date field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are supported:\n* all *(all fields)*\n* allCldCvr *(derivatives of cldCvr)*\n* allHum *(derivatives of relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(derivatives of mslPres, sfcPres)*\n* allRad *(derivatives of radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(derivatives of dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(derivatives of windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(derivatives of cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
        "required": true,
        "style": "form",
        "explode": false,
        "schema": {
          "type": "array",
          "example": [
            "all"
          ],
          "items": {
            "type": "string",
            "enum": [
              "dataState",
              "cldCvrMin",
              "cldCvrAvg",
              "cldCvrMax",
              "dewPtMin",
              "dewPtAvg",
              "dewPtMax",
              "feelsLikeMin",
              "feelsLikeAvg",
              "feelsLikeMax",
              "heatIndexMin",
              "heatIndexAvg",
              "heatIndexMax",
              "mslPresMin",
              "mslPresAvg",
              "mslPresMax",
              "precip",
              "radSolarMin",
              "radSolarAvg",
              "radSolarMax",
              "radSolarTot",
              "radSolarDirectMin",
              "radSolarDirectAvg",
              "radSolarDirectMax",
              "radSolarDirectTot",
              "radSolarDirectPMin",
              "radSolarDirectPAvg",
              "radSolarDirectPMax",
              "radSolarDirectPTot",
              "relHumMin",
              "relHumAvg",
              "relHumMax",
              "sfcPresMin",
              "sfcPresAvg",
              "sfcPresMax",
              "snowfall",
              "spcHumMin",
              "spcHumAvg",
              "spcHumMax",
              "tempMin",
              "tempAvg",
              "tempMax",
              "wetBulbMin",
              "wetBulbAvg",
              "wetBulbMax",
              "windChillMin",
              "windChillAvg",
              "windChillMax",
              "windDirAvg",
              "windDir80mAvg",
              "windDir100mAvg",
              "windGustMax",
              "windSpdMin",
              "windSpdAvg",
              "windSpdMax",
              "windSpd80mMin",
              "windSpd80mAvg",
              "windSpd80mMax",
              "windSpd100mMin",
              "windSpd100mAvg",
              "windSpd100mMax",
              "all",
              "allCldCvr",
              "allHum",
              "allPrecip",
              "allPres",
              "allRad",
              "allTemp",
              "allWind",
              "popular"
            ]
          }
        }
      },
      "fieldsHour": {
        "name": "fields",
        "in": "query",
        "description": "A comma separated list of field names to return. The timestamp field is always returned.\n\n**Limiting the query to needed fields will improve the query response time.**\n\nIn addition to individual field names, following convenience field groups are also supported:\n* all *(all fields)*\n* allCldCvr *(cldCvr)*\n* allHum *(relHum, spcHum)*\n* allPrecip *(precip, snowfall)*\n* allPres *(mslPres, sfcPres)*\n* allRad *(radSolar, radSolarDirect, radSolarDirectP)*\n* allTemp *(dewPt, feelsLike, heatIndex, temp, wetBulb, windChill)*\n* allWind *(windDir, windDir80m, windDir100m, windGust, windSpd, windSpd80m, windSpd100m)*\n* popular *(cldCvr, feelsLike, precip, relHum, snowfall, temp, windDir, windSpd)*\n",
        "required": true,
        "style": "form",
        "explode": false,
        "schema": {
          "type": "array",
          "example": [
            "all"
          ],
          "items": {
            "type": "string",
            "enum": [
              "dataState",
              "cldCvr",
              "dewPt",
              "feelsLike",
              "heatIndex",
              "mslPres",
              "precip",
              "radSolar",
              "radSolarDirect",
              "radSolarDirectP",
              "relHum",
              "sfcPres",
              "snowfall",
              "spcHum",
              "temp",
              "wetBulb",
              "windChill",
              "windDir",
              "windDir80m",
              "windDir100m",
              "windGust",
              "windSpd",
              "windSpd80m",
              "windSpd100m",
              "all",
              "allCldCvr",
              "allHum",
              "allPrecip",
              "allPres",
              "allRad",
              "allTemp",
              "allWind",
              "popular"
            ]
          }
        }
      },
      "latitude": {
        "name": "latitude",
        "in": "path",
        "description": "A latitude value between -90° and 90°.",
        "required": true,
        "schema": {
          "maximum": 90,
          "minimum": -90,
          "type": "number",
          "format": "float",
          "example": 38.8552
        }
      },
      "longitude": {
        "name": "longitude",
        "in": "path",
        "description": "A longitude value between -180° (West) and 180° (East).",
        "required": true,
        "schema": {
          "maximum": 180,
          "minimum": -180,
          "type": "number",
          "format": "float",
          "example": -77.0513
        }
      },
      "date": {
        "name": "date",
        "in": "path",
        "description": "An date formatted as a RFC3339 date value.",
        "required": true,
        "schema": {
          "type": "string",
          "format": "date",
          "example": "2019-12-20"
        }
      },
      "unitScale": {
        "name": "unitScale",
        "in": "query",
        "description": "The unit scale for returned values.<br>",
        "required": false,
        "schema": {
          "type": "string",
          "example": "IMPERIAL",
          "default": "IMPERIAL",
          "enum": [
            "IMPERIAL",
            "METRIC",
            "SI"
          ]
        }
      },
      "dateStart": {
        "name": "dateStart",
        "in": "path",
        "description": "An date formatted as a RFC3339 date value that must occur temporally before dateEnd.",
        "required": true,
        "schema": {
          "type": "string",
          "format": "date",
          "example": "2019-12-20"
        }
      },
      "dateEnd": {
        "name": "dateEnd",
        "in": "path",
        "description": "An date formatted as a RFC3339 date value that must occur temporally after dateStart.",
        "required": true,
        "schema": {
          "type": "string",
          "format": "date",
          "example": "2019-12-20"
        }
      },
      "timestamp": {
        "name": "timestamp",
        "in": "path",
        "description": "A timestamp formatted as an RFC3339 date-time value. The UTC offset is required.",
        "required": true,
        "schema": {
          "type": "string",
          "format": "date-time",
          "example": "2019-12-20T23:00:00-05:00"
        }
      },
      "timestampStart": {
        "name": "timestampStart",
        "in": "path",
        "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally before timestampEnd. The UTC offset is required.",
        "required": true,
        "schema": {
          "type": "string",
          "format": "date-time",
          "example": "2019-12-20T23:00:00-05:00"
        }
      },
      "timestampEnd": {
        "name": "timestampEnd",
        "in": "path",
        "description": "A timestamp formatted as an RFC3339 date-time value that must occur temporally after timestampStart. The UTC offset is required.",
        "required": true,
        "schema": {
          "type": "string",
          "format": "date-time",
          "example": "2019-12-20T23:00:00-05:00"
        }
      },
      "postcode": {
        "name": "postcode",
        "in": "path",
        "description": "A postcode string.",
        "required": true,
        "schema": {
          "type": "string",
          "example": "22222"
        }
      },
      "countryCode": {
        "name": "countryCode",
        "in": "path",
        "description": "An uppercase 2-character [ISO 3166-1 Alpha-2 country code](https://developer.weathersourceapis.com/apis/countries-with-postal-code-support/).",
        "required": true,
        "schema": {
          "pattern": "^([A-Z]){2}$",
          "type": "string",
          "example": "US"
        }
      },
      "dmaId": {
        "name": "dmaId",
        "in": "path",
        "description": "A [Designated Market Area ID](https://developer.weathersourceapis.com/apis/supported-dmas/).",
        "required": true,
        "schema": {
          "type": "integer",
          "example": 529
        }
      },
      "onpointId": {
        "name": "onpointId",
        "in": "path",
        "description": "An OnPoint™ ID.",
        "required": true,
        "schema": {
          "type": "integer",
          "example": 10725864
        }
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "description": "API key to authorize requests. If you do not have a Weather Source API key [sign up for a free developer account](https://developer.weathersourceapis.com/account/sign-up/) to trial the data, or contact sales at [weathersource@pelmorex.com](mailto:weathersource@pelmorex.com) to explore the right subscription package for your business. You may use the evaluation API Key `C0W60UOFRML47ytbXk4xlLBfv` to access example locations found in this documentation.\n",
        "name": "X-API-KEY",
        "in": "header"
      }
    }
  }
}