EnergyDataPoint

A generalized energy data point — the single shape used to carry any quantitative observation in the energy and utilities domain. Covers retail meter intervals, wholesale-market LMP prints, EIA time-series observations, NREL solar irradiance samples, weather-driven load drivers, EV-charging session telemetry, and DERMS device telemetry. Where a MeterReading captures a specific physical meter's measurement, an EnergyDataPoint is the broader observation envelope used across providers.

EnergyUtilitiesElectricityGridSmart MeterMeter DataGreen ButtonDemand ResponseDERMSEV ChargingISO/RTORenewable EnergySolarWindWeatherOpen Data

Properties

Name Type Description
series string Provider-qualified time-series identifier. Examples: 'eia.electricity.rto.region-data.D.NYIS', 'caiso.lmp.SP15.5m', 'utilityapi.intervals.kwh', 'nrel.nsrdb.ghi'.
timestamp string UTC timestamp marking the start of the observation interval (ISO 8601).
intervalSeconds integer Length of the observation interval in seconds. 0 indicates an instantaneous reading. Common values: 60, 300, 900, 3600, 86400.
value number Numeric value of the observation, expressed in the units given by unit.
unit string Unit of measure for value. Includes energy, power, price, irradiance, temperature, and volumetric units commonly emitted by APIs in this catalog.
kind string What kind of measurement this is, independent of the unit. Helps consumers route a value through the right model.
location object Spatial reference for the data point.
asset object Physical or logical asset the observation belongs to (meter, charger, inverter, generator, sensor).
quality string Data quality marker.
source object Provenance of the observation — which API delivered it.
tags array Free-form tags for filtering and rollup.
metadata object Provider-specific extensions that do not map into the core envelope.
View JSON Schema on GitHub

JSON Schema

energy-utilities-energy-data-point-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/energy-utilities/refs/heads/main/json-schema/energy-utilities-energy-data-point-schema.json",
  "title": "EnergyDataPoint",
  "description": "A generalized energy data point — the single shape used to carry any quantitative observation in the energy and utilities domain. Covers retail meter intervals, wholesale-market LMP prints, EIA time-series observations, NREL solar irradiance samples, weather-driven load drivers, EV-charging session telemetry, and DERMS device telemetry. Where a MeterReading captures a specific physical meter's measurement, an EnergyDataPoint is the broader observation envelope used across providers.",
  "type": "object",
  "required": [
    "series",
    "timestamp",
    "value",
    "unit"
  ],
  "properties": {
    "series": {
      "type": "string",
      "description": "Provider-qualified time-series identifier. Examples: 'eia.electricity.rto.region-data.D.NYIS', 'caiso.lmp.SP15.5m', 'utilityapi.intervals.kwh', 'nrel.nsrdb.ghi'."
    },
    "timestamp": {
      "type": "string",
      "format": "date-time",
      "description": "UTC timestamp marking the start of the observation interval (ISO 8601)."
    },
    "intervalSeconds": {
      "type": "integer",
      "minimum": 0,
      "description": "Length of the observation interval in seconds. 0 indicates an instantaneous reading. Common values: 60, 300, 900, 3600, 86400."
    },
    "value": {
      "type": "number",
      "description": "Numeric value of the observation, expressed in the units given by unit."
    },
    "unit": {
      "type": "string",
      "description": "Unit of measure for value. Includes energy, power, price, irradiance, temperature, and volumetric units commonly emitted by APIs in this catalog.",
      "enum": [
        "Wh",
        "kWh",
        "MWh",
        "GWh",
        "W",
        "kW",
        "MW",
        "GW",
        "USD/MWh",
        "USD/kWh",
        "cents/kWh",
        "USD/MMBtu",
        "USD/therm",
        "W/m2",
        "Wh/m2",
        "celsius",
        "fahrenheit",
        "m/s",
        "mph",
        "ccf",
        "therms",
        "MMBtu",
        "m3",
        "gallons",
        "percent",
        "count"
      ]
    },
    "kind": {
      "type": "string",
      "description": "What kind of measurement this is, independent of the unit. Helps consumers route a value through the right model.",
      "enum": [
        "consumption",
        "generation",
        "demand",
        "price",
        "load",
        "forecast",
        "irradiance",
        "wind-speed",
        "temperature",
        "humidity",
        "outage-count",
        "soc",
        "session-energy"
      ]
    },
    "location": {
      "type": "object",
      "description": "Spatial reference for the data point.",
      "properties": {
        "latitude": { "type": "number", "minimum": -90, "maximum": 90 },
        "longitude": { "type": "number", "minimum": -180, "maximum": 180 },
        "marketNode": { "type": "string", "description": "ISO/RTO pricing node, hub, or zone (e.g., CAISO SP15, ERCOT HB_HOUSTON, PJM WESTERN HUB)." },
        "balancingAuthority": { "type": "string", "description": "NERC balancing authority code (e.g., CISO, ERCO, PJM, MISO, ISNE, NYIS, BPAT)." },
        "utility": { "type": "string", "description": "Retail utility name where applicable." },
        "serviceTerritory": { "type": "string", "description": "Utility service territory or DSO operating area." },
        "geohash": { "type": "string", "description": "Optional geohash for spatial bucketing." }
      },
      "additionalProperties": false
    },
    "asset": {
      "type": "object",
      "description": "Physical or logical asset the observation belongs to (meter, charger, inverter, generator, sensor).",
      "properties": {
        "id": { "type": "string" },
        "type": {
          "type": "string",
          "enum": [
            "meter",
            "submeter",
            "inverter",
            "battery",
            "ev-charger",
            "ev-session",
            "generator",
            "load",
            "sensor",
            "weather-station",
            "balancing-authority",
            "market-node"
          ]
        },
        "manufacturer": { "type": "string" },
        "model": { "type": "string" }
      },
      "required": ["type"],
      "additionalProperties": false
    },
    "quality": {
      "type": "string",
      "description": "Data quality marker.",
      "enum": [
        "valid",
        "estimated",
        "missing",
        "questionable",
        "preliminary",
        "final"
      ]
    },
    "source": {
      "type": "object",
      "description": "Provenance of the observation — which API delivered it.",
      "properties": {
        "providerId": { "type": "string", "description": "Provider key from this catalog (e.g., eia, caiso, ercot, pjm, nrel, utilityapi, bayou, arcadia, nws, openweather, openadr, ocpi)." },
        "endpoint": { "type": "string", "description": "Specific endpoint or report identifier the data came from." },
        "retrievedAt": { "type": "string", "format": "date-time" }
      },
      "required": ["providerId"],
      "additionalProperties": false
    },
    "tags": {
      "type": "array",
      "description": "Free-form tags for filtering and rollup.",
      "items": { "type": "string" }
    },
    "metadata": {
      "type": "object",
      "description": "Provider-specific extensions that do not map into the core envelope.",
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}