addedOutput schema / properties / freshness
Added value: +{
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Rows are each feed's LATEST PUBLISHED reading, NOT a synchronized snapshot: {basis, us_mix_source, stale_mix_threshold_hours, stale_mix_rows[], how_to_read}. Read this before narrating any row as current"
+}
changedOutput schema / properties / grids / anyOf
Previous value: -[
- {
- "items": {
- "additionalProperties": {},
- "properties": {
- "avg_price_usd_per_mwh": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Average wholesale price in USD/MWh (where the feed carries price)"
- },
- "country": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Country (code or name)"
- },
- "demand_mw": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Current demand in MW"
- },
- "fuel_mw": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {},
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Fuel mix in MW, e.g. {gas, nuclear, coal, wind, solar, hydro, …}"
- },
- "gas_share_pct": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Gas share of generation, % (null where the feed cannot honestly split gas out, e.g. Brazil ONS thermal)"
- },
- "generation_total_mw": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Total generation in MW"
- },
- "iso": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Grid operator / bidding-zone code, e.g. PJM, ERCOT, NESO, DE, JP-TOKYO"
- },
- "mix_period": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Timestamp / period of the fuel-mix reading"
- },
- "note": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Per-grid caveat"
- },
- "partial_feed": {
- "description": "Set when the feed is partial (no full fuel split) — why the grid is unranked"
- },
- "region": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Human-readable region name"
- },
- "renewable_share_pct": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Wind+solar+hydro share of generation, % (the ranking key)"
- },
- "variable_renewable_pct": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Wind+solar-only share, % (partial feeds)"
- }
- },
- "type": "object"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "avg_price_usd_per_mwh": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Average wholesale price in USD/MWh (where the feed carries price)"
+ },
+ "country": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Country (code or name)"
+ },
+ "demand_age_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Age of the demand reading against the current UTC clock"
+ },
+ "demand_mw": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Current demand in MW"
+ },
+ "demand_period": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Period of the demand reading — a DIFFERENT clock from mix_period on US rows"
+ },
+ "demand_vs_mix_lag_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How far the fuel mix trails demand WITHIN this row. Non-zero means the two figures are from different hours"
+ },
+ "freshness_basis": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which clock the ages on this row are measured against"
+ },
+ "fuel_mw": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fuel mix in MW, e.g. {gas, nuclear, coal, wind, solar, hydro, …}"
+ },
+ "gas_share_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Gas share of generation, % (null where the feed cannot honestly split gas out, e.g. Brazil ONS thermal)"
+ },
+ "generation_total_mw": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Total generation in MW"
+ },
+ "iso": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Grid operator / bidding-zone code, e.g. PJM, ERCOT, NESO, DE, JP-TOKYO"
+ },
+ "mix_age_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How old the fuel-mix reading is against the CURRENT UTC clock. US rows are routinely 18-24h overnight — check this before calling a row current"
+ },
+ "mix_is_stale": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Set when mix_age_hours is at or over the stale threshold — do not narrate this row as the mix \"right now\""
+ },
+ "mix_note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Plain-language warning composed for a stale mix reading"
+ },
+ "mix_period": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Timestamp / period of the fuel-mix reading"
+ },
+ "mix_vs_demand_warning": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Present when generation and demand are hours apart: their difference is a clock gap, NOT net imports"
+ },
+ "note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Per-grid caveat"
+ },
+ "partial_feed": {
+ "description": "Set when the feed is partial (no full fuel split) — why the grid is unranked"
+ },
+ "region": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Human-readable region name"
+ },
+ "renewable_definition": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Exactly what renewable_share_pct counts, identical on every ranked feed"
+ },
+ "renewable_share_incl_geothermal_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Same share WITH geothermal in the numerator — present only where geothermal > 0. This is the figure get_grid_intelligence publishes for US ISOs; renewable_share_pct above is the cross-feed-comparable one used for the ranking"
+ },
+ "renewable_share_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Wind+solar+hydro share of generation, % (the ranking key)"
+ },
+ "variable_renewable_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Wind+solar-only share, % (partial feeds)"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / partial_grids / anyOf
Previous value: -[
- {
- "items": {
- "additionalProperties": {},
- "properties": {
- "avg_price_usd_per_mwh": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Average wholesale price in USD/MWh (where the feed carries price)"
- },
- "country": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Country (code or name)"
- },
- "demand_mw": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Current demand in MW"
- },
- "fuel_mw": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {},
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Fuel mix in MW, e.g. {gas, nuclear, coal, wind, solar, hydro, …}"
- },
- "gas_share_pct": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Gas share of generation, % (null where the feed cannot honestly split gas out, e.g. Brazil ONS thermal)"
- },
- "generation_total_mw": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Total generation in MW"
- },
- "iso": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Grid operator / bidding-zone code, e.g. PJM, ERCOT, NESO, DE, JP-TOKYO"
- },
- "mix_period": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Timestamp / period of the fuel-mix reading"
- },
- "note": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Per-grid caveat"
- },
- "partial_feed": {
- "description": "Set when the feed is partial (no full fuel split) — why the grid is unranked"
- },
- "region": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Human-readable region name"
- },
- "renewable_share_pct": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Wind+solar+hydro share of generation, % (the ranking key)"
- },
- "variable_renewable_pct": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ],
- "description": "Wind+solar-only share, % (partial feeds)"
- }
- },
- "type": "object"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "avg_price_usd_per_mwh": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Average wholesale price in USD/MWh (where the feed carries price)"
+ },
+ "country": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Country (code or name)"
+ },
+ "demand_age_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Age of the demand reading against the current UTC clock"
+ },
+ "demand_mw": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Current demand in MW"
+ },
+ "demand_period": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Period of the demand reading — a DIFFERENT clock from mix_period on US rows"
+ },
+ "demand_vs_mix_lag_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How far the fuel mix trails demand WITHIN this row. Non-zero means the two figures are from different hours"
+ },
+ "freshness_basis": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which clock the ages on this row are measured against"
+ },
+ "fuel_mw": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fuel mix in MW, e.g. {gas, nuclear, coal, wind, solar, hydro, …}"
+ },
+ "gas_share_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Gas share of generation, % (null where the feed cannot honestly split gas out, e.g. Brazil ONS thermal)"
+ },
+ "generation_total_mw": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Total generation in MW"
+ },
+ "iso": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Grid operator / bidding-zone code, e.g. PJM, ERCOT, NESO, DE, JP-TOKYO"
+ },
+ "mix_age_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How old the fuel-mix reading is against the CURRENT UTC clock. US rows are routinely 18-24h overnight — check this before calling a row current"
+ },
+ "mix_is_stale": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Set when mix_age_hours is at or over the stale threshold — do not narrate this row as the mix \"right now\""
+ },
+ "mix_note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Plain-language warning composed for a stale mix reading"
+ },
+ "mix_period": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Timestamp / period of the fuel-mix reading"
+ },
+ "mix_vs_demand_warning": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Present when generation and demand are hours apart: their difference is a clock gap, NOT net imports"
+ },
+ "note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Per-grid caveat"
+ },
+ "partial_feed": {
+ "description": "Set when the feed is partial (no full fuel split) — why the grid is unranked"
+ },
+ "region": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Human-readable region name"
+ },
+ "renewable_definition": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Exactly what renewable_share_pct counts, identical on every ranked feed"
+ },
+ "renewable_share_incl_geothermal_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Same share WITH geothermal in the numerator — present only where geothermal > 0. This is the figure get_grid_intelligence publishes for US ISOs; renewable_share_pct above is the cross-feed-comparable one used for the ranking"
+ },
+ "renewable_share_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Wind+solar+hydro share of generation, % (the ranking key)"
+ },
+ "variable_renewable_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Wind+solar-only share, % (partial feeds)"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / ranked_by / description
Previous value: -"Ranking criterion (renewable share = wind+solar+hydro, greenest first)"New value: +"Ranking criterion (renewable share = wind+solar+hydro, greenest first) plus the full definition — identical on every feed, geothermal and biomass excluded from the numerator"