{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-azure-maps/json-schema/microsoft-azure-maps-daily-historical-actuals-result-schema.json",
  "title": "DailyHistoricalActualsResult",
  "description": "The response returned by the Get Daily Historical Actuals operation,\ncontaining one observed historical weather record per day for the queried\nlocation across the requested date range. The range is set by the\ncaller's requested start and end dates (up to 31 days), so `results`\ncarries one entry per day in chronological order - for example, a\n3-day request spanning *2012-01-20* through *2012-01-22* returns three\nentries with `date` values *2012-01-20T00:00:00-04:00*,\n*2012-01-21T00:00:00-04:00*, and *2012-01-22T00:00:00-04:00*. Each\nentry reports what actually happened that day - observed minimum,\nmaximum, and average temperature plus precipitation, snowfall, snow\ndepth, and heating/cooling degree-day totals - which makes the\nresponse useful for backfilling weather history into reports or\nclimatology studies.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-azure-maps-weather-api-openapi.yml#/components/schemas/DailyHistoricalActualsResult",
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "description": "The list of observed historical weather records for the queried\nlocation, one entry per day, in chronological order starting with\nthe earliest day in the requested range. The number of entries\nmatches the number of days from the requested start date through\nthe requested end date (up to 31 days). Each entry reports the\nday's `temperature` (`minimum`, `maximum`, and `average`),\n`precipitation`, `snowfall`, `snowDepth`, and `degreeDaySummary`\n(`heating` and `cooling`).",
      "items": {
        "$ref": "#/$defs/DailyHistoricalActuals"
      }
    },
    "nextLink": {
      "type": "string",
      "description": "The URL to retrieve the next page of results when the response is\npaginated, suitable for navigating through result sets too large to\nreturn in a single call. Empty when there are no further pages."
    }
  },
  "$defs": {
    "DailyHistoricalActuals": {
      "type": "object",
      "description": "The observed weather summary for a single past day at the queried\nlocation, returned as one entry in `DailyHistoricalActualsResult.results`.\nEach entry reports what was actually measured that day - minimum,\nmaximum, and average `temperature`; accumulated `precipitation`,\n`snowfall`, and `snowDepth`; and a `degreeDaySummary` of heating and\ncooling demand. Across the entries in a single response the values\nchange from day to day - in the example response the average daily\ntemperature warms from *-8.6 °C* on *2012-01-20* to *-5.3 °C* on\n*2012-01-21* to *-3.6 °C* on *2012-01-22*, while accumulated snow\ndepth on the ground falls from *15.2 cm* to *12.7 cm* to *10.2 cm*\nover the same three days.",
      "properties": {
        "date": {
          "type": "string",
          "format": "date-time",
          "description": "The day this observation covers, in [ISO\n8601](https://www.iso.org/iso-8601-date-and-time-format.html) format\n(yyyy-mm-ddThh:mm:ss+hh:mm) - for example,\n*2012-01-20T00:00:00-04:00*. Observation entries within a single\nresponse use sequential `date` values, one per day."
        },
        "temperature": {
          "$ref": "#/$defs/WeatherValueMaxMinAvg",
          "description": "The observed minimum, maximum, and average air temperature for the\nday at the queried location, in degrees Celsius (°C) or Fahrenheit\n(°F) depending on the unit specified in the request - for example,\nminimum *-11.1 °C*, maximum *-6.1 °C*, and average *-8.6 °C* on\n*2012-01-20*. The `WeatherValueMaxMinAvg` shape pairs naturally with\nthe same three-value pattern used by the records and normals\nresponses for the same calendar day."
        },
        "degreeDaySummary": {
          "$ref": "#/$defs/DegreeDaySummary",
          "description": "Observed heating and cooling degree-day totals for the day at the\nqueried location, used to estimate energy demand for building\nclimate control. Heating degree-days accumulate when the average\ntemperature is below the reference balance point and cooling\ndegree-days accumulate when it is above - for example, the cold\nwinter day *2012-01-20* records `degreeDaySummary.heating` of\n*27 °C* and `degreeDaySummary.cooling` of *0 °C*."
        },
        "precipitation": {
          "$ref": "#/$defs/WeatherValue",
          "description": "The amount of liquid-equivalent precipitation (rain plus melted\nsnow) that fell during the day at the queried location, in\nmillimeters (mm) or inches (in) depending on the unit specified in\nthe request - for example, *10.9 mm* on *2012-01-20* (a wet day)\ncompared with *0 mm* on the following two dry days."
        },
        "snowfall": {
          "$ref": "#/$defs/WeatherValue",
          "description": "The amount of new snow that fell during the day at the queried\nlocation, in centimeters (cm) or inches (in) depending on the unit\nspecified in the request - for example, *12.19 cm* on\n*2012-01-20*, *0.51 cm* on *2012-01-21*, and *0 cm* on\n*2012-01-22*. Snowfall is the day's fresh accumulation;\n`snowDepth` is the total depth left on the ground."
        },
        "snowDepth": {
          "$ref": "#/$defs/WeatherValue",
          "description": "The total depth of snow on the ground at the queried location at\nthe end of the day, in centimeters (cm) or inches (in) depending\non the unit specified in the request - for example, *15.2 cm*,\n*12.7 cm*, and *10.2 cm* on three consecutive days as the\nsnowpack settles and melts. Snow depth reflects the combined\neffect of all prior `snowfall` minus melting and compaction."
        }
      }
    },
    "DegreeDaySummary": {
      "type": "object",
      "description": "Heating and cooling degree-day totals for a single day, used to estimate\nthe energy demand for heating or cooling a building. Each value is the\nnumber of degrees by which the day's mean temperature differs from the\n**65°F (18°C)** baseline, in the temperature unit specified in the\nrequest - degrees below the baseline contribute to `heating`, degrees\nabove it contribute to `cooling`.",
      "properties": {
        "heating": {
          "$ref": "#/$defs/WeatherValue",
          "description": "Heating Degree Days (HDD) - the number of degrees the day's mean\ntemperature falls **below** the 65°F (18°C) baseline. Higher values\nindicate greater heating demand. Reported in degrees Celsius (°C) or\nFahrenheit (°F) depending on the unit specified in the request."
        },
        "cooling": {
          "$ref": "#/$defs/WeatherValue",
          "description": "Cooling Degree Days (CDD) - the number of degrees the day's mean\ntemperature rises **above** the 65°F (18°C) baseline. Higher values\nindicate greater cooling demand. Reported in degrees Celsius (°C) or\nFahrenheit (°F) depending on the unit specified in the request."
        }
      }
    },
    "UnitType": {
      "type": "number",
      "description": "An integer value associated with the type of unit being displayed.\nFor example, 17 for Celsius, 18 for Fahrenheit. Can be used for unit\ntranslation. For more information, see [Weather services in\nAzure Maps](/azure/azure-maps/weather-services-concepts#unit-types).",
      "enum": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
        21,
        22,
        31
      ],
      "x-ms-enum": {
        "name": "UnitType",
        "modelAsString": true,
        "values": [
          {
            "name": "Feet",
            "value": 0,
            "description": "feet"
          },
          {
            "name": "Inches",
            "value": 1,
            "description": "inches"
          },
          {
            "name": "Miles",
            "value": 2,
            "description": "miles"
          },
          {
            "name": "Millimeter",
            "value": 3,
            "description": "millimeter"
          },
          {
            "name": "Centimeter",
            "value": 4,
            "description": "centimeter"
          },
          {
            "name": "Meter",
            "value": 5,
            "description": "meter"
          },
          {
            "name": "Kilometer",
            "value": 6,
            "description": "kilometer"
          },
          {
            "name": "KilometersPerHour",
            "value": 7,
            "description": "kilometersPerHour"
          },
          {
            "name": "Knots",
            "value": 8,
            "description": "knots"
          },
          {
            "name": "MilesPerHour",
            "value": 9,
            "description": "milesPerHour"
          },
          {
            "name": "MetersPerSecond",
            "value": 10,
            "description": "metersPerSecond"
          },
          {
            "name": "HectoPascals",
            "value": 11,
            "description": "hectoPascals"
          },
          {
            "name": "InchesOfMercury",
            "value": 12,
            "description": "inchesOfMercury"
          },
          {
            "name": "KiloPascals",
            "value": 13,
            "description": "kiloPascals"
          },
          {
            "name": "Millibars",
            "value": 14,
            "description": "millibars"
          },
          {
            "name": "MillimetersOfMercury",
            "value": 15,
            "description": "millimetersOfMercury"
          },
          {
            "name": "PoundsPerSquareInch",
            "value": 16,
            "description": "poundsPerSquareInch"
          },
          {
            "name": "Celsius",
            "value": 17,
            "description": "Celsius"
          },
          {
            "name": "Fahrenheit",
            "value": 18,
            "description": "Fahrenheit"
          },
          {
            "name": "Kelvin",
            "value": 19,
            "description": "kelvin"
          },
          {
            "name": "Percent",
            "value": 20,
            "description": "percent"
          },
          {
            "name": "Float",
            "value": 21,
            "description": "float"
          },
          {
            "name": "Integer",
            "value": 22,
            "description": "integer"
          },
          {
            "name": "MicrogramsPerCubicMeterOfAir",
            "value": 31,
            "description": "MicrogramsPerCubicMeterOfAir"
          }
        ]
      }
    },
    "WeatherValue": {
      "type": "object",
      "description": "Values for weather-related metrics such as temperature, dew point, and wind\nspeed, presented in either metric or imperial units, as specified in the unit\nURI parameter. For more information, see [Unit\ntypes](/azure/azure-maps/weather-services-concepts#unit-types) in the article\nWeather services in Azure Maps.",
      "properties": {
        "value": {
          "type": "number",
          "format": "float",
          "description": "The measured value expressed in the specified unit."
        },
        "unit": {
          "type": "string",
          "description": "The unit of measurement used in the return value, such as \"C\" for Celsius,\n\"F\" for Fahrenheit."
        },
        "unitType": {
          "$ref": "#/$defs/UnitType",
          "description": "An integer representing the type of unit. For example, 0 for feet, 1 for\ninches, 2 for miles. For a complete list, see [Unit\ntypes](/azure/azure-maps/weather-services-concepts#unit-types) in the\narticle Weather services in Azure Maps."
        }
      }
    },
    "WeatherValueMaxMinAvg": {
      "type": "object",
      "description": "A three-value temperature summary - `minimum`, `maximum`, and `average` -\nfor a single day at the queried location, in degrees Celsius (°C) or\nFahrenheit (°F) depending on the unit specified in the request. Used for\nthe `temperature` field on `DailyHistoricalActuals` (what was actually\nobserved on the day) and on `DailyHistoricalNormals` (the 30-year average\nfor that calendar day) so the two responses can be compared\nfield-for-field. For example, on *2012-01-20* the observed reading was\nminimum *-11.1 °C*, maximum *-6.1 °C*, and average *-8.6 °C*, while the\n30-year normal for the same calendar day was minimum *-3.7 °C*, maximum\n*4.4 °C*, and average *0.4 °C* - the difference reveals an unusually\ncold day relative to climate normals.",
      "properties": {
        "maximum": {
          "$ref": "#/$defs/WeatherValue",
          "description": "The highest temperature for the day at the queried location, in\ndegrees Celsius (°C) or Fahrenheit (°F) depending on the unit\nspecified in the request - for example, *-6.1 °C* observed on\n*2012-01-20* or *4.4 °C* as the 30-year normal for that calendar\nday."
        },
        "minimum": {
          "$ref": "#/$defs/WeatherValue",
          "description": "The lowest temperature for the day at the queried location, in\ndegrees Celsius (°C) or Fahrenheit (°F) depending on the unit\nspecified in the request - for example, *-11.1 °C* observed on\n*2012-01-20* or *-3.7 °C* as the 30-year normal for that calendar\nday. Always less than or equal to `maximum`."
        },
        "average": {
          "$ref": "#/$defs/WeatherValue",
          "description": "The mean temperature for the day at the queried location, in\ndegrees Celsius (°C) or Fahrenheit (°F) depending on the unit\nspecified in the request - for example, *-8.6 °C* observed on\n*2012-01-20* or *0.4 °C* as the 30-year normal for that calendar\nday. Falls between `minimum` and `maximum`."
        }
      }
    }
  }
}